_

[LISP?] Nakładka przyspieszająca rysowanie sekwencji bloków

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

[LISP?] Nakładka przyspieszająca rysowanie sekwencji bloków

Postprzez Łasica » maja 09, 2017 08:51

Dzień dobry wszystkim, jestem nowy na tym forum. :)

Zarejestrowałem się, ponieważ chciałbym zwrócić się o pomoc/radę. Mam nieco programistycznego doświadczenia w takich językach jak C++ czy JavaScript, natomiast nigdy nie programowałem nic w LISPie. Zastanawiam się, czy byłoby trudne zrobienie takiej nakładki (a może takowa istnieje) rysującej bloki w równych odstępach na danym odcinku.

Przykładowo załóżmy, że chcę narysować barierkę wzdłuż chodnika o długości 15m. Odległość pomiędzy słupkami może wynosić maksymalnie 1,2m. Potrzebuję takiej nakładki, żebym tylko zaznaczył punkt początkowy i końcowy, a program sam wrysuje zaprogramowany blok (w tym przypadku słupek) w równych odległościach nie większych niż 1,2m.

To na początek, bo idealnie to byłoby jakby dało się rysować po polilinii w ten sposób :) Czy ktoś zna taką nakładkę?
Łasica
 
Posty: 4
Dołączył(a): maja 09, 2017 08:05

Re: [LISP?] Nakładka przyspieszająca rysowanie sekwencji blo

Postprzez Kizior » maja 09, 2017 09:37

Łasica napisał(a):Dzień dobry wszystkim, jestem nowy na tym forum. :)

Zarejestrowałem się, ponieważ chciałbym zwrócić się o pomoc/radę. Mam nieco programistycznego doświadczenia w takich językach jak C++ czy JavaScript, natomiast nigdy nie programowałem nic w LISPie. Zastanawiam się, czy byłoby trudne zrobienie takiej nakładki (a może takowa istnieje) rysującej bloki w równych odstępach na danym odcinku.

Przykładowo załóżmy, że chcę narysować barierkę wzdłuż chodnika o długości 15m. Odległość pomiędzy słupkami może wynosić maksymalnie 1,2m. Potrzebuję takiej nakładki, żebym tylko zaznaczył punkt początkowy i końcowy, a program sam wrysuje zaprogramowany blok (w tym przypadku słupek) w równych odległościach nie większych niż 1,2m.

To na początek, bo idealnie to byłoby jakby dało się rysować po polilinii w ten sposób :) Czy ktoś zna taką nakładkę?


AutoCAD ma taką funkcjonalność - szyk po ścieżce.
Avatar użytkownika
Kizior
 
Posty: 175
Dołączył(a): paź 12, 2011 22:01
Lokalizacja: Lublin

Re: [LISP?] Nakładka przyspieszająca rysowanie sekwencji blo

Postprzez Łasica » maja 09, 2017 10:20

Dzięki za radę, przetestuję, do tej pory korzystałem z szyku przy kopiowaniu a to wydaje się lepszym narzędziem.
Łasica
 
Posty: 4
Dołączył(a): maja 09, 2017 08:05

Re: [LISP?] Nakładka przyspieszająca rysowanie sekwencji blo

Postprzez Łasica » maja 09, 2017 10:45

Szyk po ścieżce nieco ułatwia zadanie, ale chciałbym to jeszcze bardziej zautomatyzować. Najlepiej byłoby tak:

1. Rysuję prostokąt.
2. Uruchamiam funkcję rysującą -> zaznaczam blok -> zaznaczam prostokąt -> wpisuję max. odległość pomiędzy blokami
3. Program sam rozmieszcza bloki tak, że mam blok w każdym narożniku i zarówno krótsze jak i dłuższe boki prostokąta podzielone blokami w odległościach nie większych niż zadana. Oczywiście na krótszym boku wyjdzie zapewne inny rozstaw niż na dłuższym.

Analogicznie. gdybym to robił na polilinii, to chciałbym żeby na każdym załamaniu pojawił się ten blok, a pomiędzy załamaniami podzielić proste blokami na odcinki nie większe niż zadana wartość.

Czy taka funkcjonalność jest gdzieś dostępna?
Łasica
 
Posty: 4
Dołączył(a): maja 09, 2017 08:05

Re: [LISP?] Nakładka przyspieszająca rysowanie sekwencji blo

Postprzez daniel5 » maja 15, 2017 12:44

Raczej nie ma.
Trzeba byłoby coś napisać.
daniel5
 
Posty: 252
Dołączył(a): sty 31, 2008 15:39
Lokalizacja: Sochaczew

Re: [LISP?] Nakładka przyspieszająca rysowanie sekwencji blo

Postprzez mx2 » maja 15, 2017 19:44

daniel5 napisał(a):Raczej nie ma.
Trzeba byłoby coś napisać.


Wydaje mi się, że tak działa np rysowanie barierek w AutoCAD Architecture. Odstępy od min do maks - okreslone, bloki to "balusters", "posts" i "dynamic posts" (mam wersję GB), również zdefiniowane z bloków 3D; punkty stałe (lub nie) w załamaniach polilinii.

Ja tak rozwiązuję problem np z miejscami parkingowymi - szerokość od 2,3 do 2,5, na danym odcinku wchodzi równa ilość.

Ale sam LISP - nie wiem gdzie szukać... :)

Pozdr,
Maciej
mx2
 
Posty: 9
Dołączył(a): lip 30, 2012 18:18

Re: [LISP?] Nakładka przyspieszająca rysowanie sekwencji blo

Postprzez ziele_o2k » maja 15, 2017 22:41

Łasica napisał(a):Szyk po ścieżce nieco ułatwia zadanie, ale chciałbym to jeszcze bardziej zautomatyzować. Najlepiej byłoby tak:

1. Rysuję prostokąt.
2. Uruchamiam funkcję rysującą -> zaznaczam blok -> zaznaczam prostokąt -> wpisuję max. odległość pomiędzy blokami
3. Program sam rozmieszcza bloki tak, że mam blok w każdym narożniku i zarówno krótsze jak i dłuższe boki prostokąta podzielone blokami w odległościach nie większych niż zadana. Oczywiście na krótszym boku wyjdzie zapewne inny rozstaw niż na dłuższym.

Analogicznie. gdybym to robił na polilinii, to chciałbym żeby na każdym załamaniu pojawił się ten blok, a pomiędzy załamaniami podzielić proste blokami na odcinki nie większe niż zadana wartość.

Czy taka funkcjonalność jest gdzieś dostępna?

Zobacz, czy w tym poleceniu coś znajdziesz:
http://cadtips.cadalyst.com/2d-operations/divide-and-measure-plus
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 492
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [LISP?] Nakładka przyspieszająca rysowanie sekwencji blo

Postprzez daniel5 » maja 16, 2017 09:44

Tak na szybko, takie coś: wstawia blok w wierzchołkach polilini.
Kod: Zaznacz cały
(defun c:testy (/ bl pol dxf10 dxf2)
  (setq   bl
         (cd:USR_EntSelObj
      (list
        "\nWybierz blok : "
        "Nalezy wskazac blok "
        "Nic nie wybrano "
        "To nie blok "
        "Obiekt na zamknietej warstwie "
       )
      (list "INSERT")
      nil
      T
      nil
         )
   pol   (cd:USR_EntSelObj
      (list
        "\nWybierz polilinie : "
        "Nalezy wskazac polilinie "
        "Nic nie wybrano "
        "To nie blokpolilinia "
        "Obiekt na zamknietej warstwie "
       )
      (list "LWPOLYLINE")
      nil
      T
      nil
         )
   dxf10 (cd:DXF_Massoc 10 (entget (car pol)))
   dxf2  (cd:DXF_Massoc 2 (entget (car bl)))
  )
;;;;setq
  (mapcar (function
       (lambda (e1) (cd:BLK_InsertBlock e1 (car dxf2) nil 0 nil))
     )
     dxf10
  )
)
;;;defun

Musi być wczytany CADPL-Pack.
daniel5
 
Posty: 252
Dołączył(a): sty 31, 2008 15:39
Lokalizacja: Sochaczew


Powrót do AutoCAD

Kto przegląda forum

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