_

Automatyczna numeracja

Forum ogólne. Miejsce na pierwsze pytania w karierze projektanta. Wszelkie tematy, których nie można zakwalifikować do jednej z poniższych grup.

Automatyczna numeracja

Postprzez endriiuu13 » cze 05, 2017 08:08

Witam wszystkich
Potrzebuje pomocy w kwestii związanej z automatycznym wstawianiem kolejnych licz.
Mianowicie zajmuje się tworzeniem siatek pomiarowych do oświetlenia, gdzie wstawiane są kolejne punkty pomiarowe. Wygląda to tak, ze mam rzut obiektu (pomieszczenia) i dzielony jest on na pewną ilość kwadracików (pkt. pomiarowych) każdemu z nich muszę przypisać kolejny numer pomiarowy. Czy jest możliwość żeby automatycznie ponumerować te punkty? Takie rozwiązanie bardzo by mi uprościło pracę, ponieważ czasami zdarza się, że tych punktów jest kilka tysięcy, a ręczne ich wpisywanie jest bardzo żmudne. Z góry dziękuję za pomoc.
Złączam plik przedstawiający jak owa siatka ma wyglądać .
Dodam że mam AutoCAD LT 2008 Polski
Załączniki
Bez tytułu.jpg
endriiuu13
 
Posty: 3
Dołączył(a): cze 05, 2017 07:56

Re: Automatyczna numeracja

Postprzez ziele_o2k » cze 05, 2017 10:20

endriiuu13 napisał(a):(...)Dodam że mam AutoCAD LT 2008 Polski

I pozamiatane. W pełnym AC albo jakimkolwiek klonie z obsługą Lispa - bez problemu do osiągnięcia; LT nic nie poradzimy.
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 505
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: Automatyczna numeracja

Postprzez Kizior » cze 05, 2017 10:52

Moja propozycja:
Pomieszczenia nie zawsze da się podzielić na kwadraty - prostokąty są uniwersalne.
Ewentualna zamiana tekst na mtekst i justowanie to kosmetyka.
Kod: Zaznacz cały
(defun Text (pt hgt str)
  (entmakex (list (cons 0 "TEXT")
                  (cons 10  pt)
                  (cons 40 hgt)
                  (cons 1  str))))
(prompt "\nttt")
(defun c:ttt (/ k w c1 c2 xmin xmax ymin ymax h l hi li kol nli siat i th)
  (setq k (getint "\nIlosc kolumn"))
  (if (> k 1)
    (progn
      (setq w (getint "\nIlosc wierszy"))
      (if (> w 1)
   (progn
     (setq c1 (getpoint "\nPunkt: "))
     (setq c2 (getcorner c1 "\nPunkt przeciwlegly: "))
     (setq xmin (apply 'min (list (car c1) (car c2))))
     (setq xmax (apply 'max (list (car c1) (car c2))))
     (setq ymin (apply 'min (list (cadr c1) (cadr c2))))
     (setq ymax (apply 'max (list (cadr c1) (cadr c2))))
     (setq h (- ymax ymin))
     (setq l (- xmax xmin))
     (setq hi (/ h (float w)))
     (setq li (/ l (float k)))
     (setq kol (list (list (+ xmin (/ li 2.0)) (- ymax (/ hi 2.0)))))
     (repeat (1- w)
       (setq kol (append kol (list (list (car (car kol)) (- (cadr (last kol)) hi)))))
       );repeat
     (setq nli li)
     (repeat (1- k)
       (setq siat (append siat (mapcar '(lambda (a) (list (+ (car a) nli) (cadr a))) kol)))
       (setq nli (+ nli li))
       );repeat
     (setq siat (append kol siat))
     (setq i 0)
     (setq siat (mapcar '(lambda (a) (append (list (setq i (1+ i))) (list a))) siat))
     (setq th (* hi 0.2))
     (mapcar '(lambda (a) (Text (cadr a) th (itoa (car a)))) siat)
     );progn
   (princ "\nNieprawidlowa wartosc")
   );if
      );progn
    (princ "\nNieprawidlowa wartosc")
    );if
  (princ)
  )
Avatar użytkownika
Kizior
 
Posty: 175
Dołączył(a): paź 12, 2011 22:01
Lokalizacja: Lublin

Re: Automatyczna numeracja

Postprzez ziele_o2k » cze 05, 2017 12:07

Kizior napisał(a):Moja propozycja:
Pomieszczenia nie zawsze da się podzielić na kwadraty - prostokąty są uniwersalne.
Ewentualna zamiana tekst na mtekst i justowanie to kosmetyka.
Kod: Zaznacz cały
(defun Text (pt hgt str)
  (entmakex (list (cons 0 "TEXT")
                  (cons 10  pt)
                  (cons 40 hgt)
                  (cons 1  str))))
(prompt "\nttt")
(defun c:ttt (/ k w c1 c2 xmin xmax ymin ymax h l hi li kol nli siat i th)
  (setq k (getint "\nIlosc kolumn"))
  (if (> k 1)
    (progn
      (setq w (getint "\nIlosc wierszy"))
      (if (> w 1)
   (progn
     (setq c1 (getpoint "\nPunkt: "))
     (setq c2 (getcorner c1 "\nPunkt przeciwlegly: "))
     (setq xmin (apply 'min (list (car c1) (car c2))))
     (setq xmax (apply 'max (list (car c1) (car c2))))
     (setq ymin (apply 'min (list (cadr c1) (cadr c2))))
     (setq ymax (apply 'max (list (cadr c1) (cadr c2))))
     (setq h (- ymax ymin))
     (setq l (- xmax xmin))
     (setq hi (/ h (float w)))
     (setq li (/ l (float k)))
     (setq kol (list (list (+ xmin (/ li 2.0)) (- ymax (/ hi 2.0)))))
     (repeat (1- w)
       (setq kol (append kol (list (list (car (car kol)) (- (cadr (last kol)) hi)))))
       );repeat
     (setq nli li)
     (repeat (1- k)
       (setq siat (append siat (mapcar '(lambda (a) (list (+ (car a) nli) (cadr a))) kol)))
       (setq nli (+ nli li))
       );repeat
     (setq siat (append kol siat))
     (setq i 0)
     (setq siat (mapcar '(lambda (a) (append (list (setq i (1+ i))) (list a))) siat))
     (setq th (* hi 0.2))
     (mapcar '(lambda (a) (Text (cadr a) th (itoa (car a)))) siat)
     );progn
   (princ "\nNieprawidlowa wartosc")
   );if
      );progn
    (princ "\nNieprawidlowa wartosc")
    );if
  (princ)
  )

Jak wyżej napisałem, na LT nic nie poradzimy.
Jak już szukamy rozwiązań, to są istniejące:
napisane w lispie: http://www.lee-mac.com/numinc.html
albo dla cadów 2014 i wyżej: https://apps.autodesk.com/ACD/en/Detail/Index?id=8051485828049059617&appLang=en&os=Win32_64

Edit:
Patrząc na obrazek, z pierwszego posta, można jeszcze fajnie zastosować taką funkcję:
http://www.lee-mac.com/incrementalarray.html
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 505
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: Automatyczna numeracja

Postprzez endriiuu13 » cze 05, 2017 12:38

Ziele_o2k jak uruchomić tą funkcję ?
endriiuu13
 
Posty: 3
Dołączył(a): cze 05, 2017 07:56

Re: Automatyczna numeracja

Postprzez Tyomex » cze 05, 2017 18:11

Moim zdaniem bez autocada w pełnej wersji, nie da rady.
Avatar użytkownika
Tyomex
 
Posty: 374
Dołączył(a): paź 09, 2014 15:06

Re: Automatyczna numeracja

Postprzez ziele_o2k » cze 05, 2017 21:30

endriiuu13 napisał(a):Ziele_o2k jak uruchomić tą funkcję ?

Tak jak w pierwszym swoim poście napisałem z autocadem w wersji LT nie ma możliwości uruchomić lispów. Musisz mieć pełnego Autocada albo jakiegoś klona, który wspiera Lispy.
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 505
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań


Powrót do Pytania studentów, laików i początkujących

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników