Rekomendowane odpowiedzi

Opublikowano (edytowane)

Cześć.


Zastanawia mnie od kilku dni pewna sprawa... Czy jest możliwość stworzyć LISP, który automatycznie uzupełni nasz obiekt polilinią (a raczej szykiem polilinii) z uwzględnieniem odstępu od krawędzi obiektu, oraz odstępu między jedną linią a kolejną?

 

Przykładowo:

Mam narysowany prostokąt, który chce wypełnić szykiem polilinii z odstępem od krawędzi prostokąta X i odległością Y między jedną polilinią a drugą.

 

PRZED:
QIUTpVy.png
PO:
LsegBg8.png

Edytowane przez endriu66
Opublikowano (edytowane)
17 godzin temu, dmatusz3 napisał:

Myślę, że można zrobić coś takiego LISPem.

Ale być może w wersji 2021 wystarczy skorzystać z szyku dynamicznego.

szyk_dynamiczny1.gif

Edytowane przez endriu66
Opublikowano

Znam te opcje. Jednak ustawienie szyku dynamicznego i wartości w nim jest niewiele krótszą opcją od zwykłego szyku (a). Stąd moje pytanie, czy dałoby radę stworzyć lisp, dzięki któremu mógłbym zaznaczyć dany obiekt i wypełnić go poliliną, interesuje mnie również odległości polilinii od górnej i dolnej krawędzi, a nie tylko odstęp między kolumnami. Dzięki :)

Opublikowano

Dobrze, postaramy się coś przygotować.

Jakie dane mają być wprowadzone? Zakładam, że będzie to:

  • odległości od krawędzi prostokąta (mają być równe?)
  • ilość kresek,
  • odległości pomiędzy kreskami.

Czy może są jakieś zależności pomiędzy tymi wymiarami?

Opublikowano (edytowane)
56 minut temu, dmatusz3 napisał:

Dobrze, postaramy się coś przygotować.

Jakie dane mają być wprowadzone? Zakładam, że będzie to:

  • odległości od krawędzi prostokąta (mają być równe?)
  • ilość kresek,
  • odległości pomiędzy kreskami.

Czy może są jakieś zależności pomiędzy tymi wymiarami?

 

 odległości od krawędzi prostokąta (mają być równe?)
odległość ma być równa, po bokach (Y z lewej i prawej strony) oraz (X góra/dół) X =\= Y

ilość kresek
zależna od rozstawu (ma wypełnić cały obiekt z wyśrodkowaniem, czyli żeby z lewej i prawej strony odległość od polilinii do krawędzi była taka sama)


odległości pomiędzy kreskami
najlepiej wartość do wprowadzenia ręcznie, a standardowo to 150.

 

daje gotowy przykład jak miałoby to wyglądać po skorzystaniu z lipsa 😉
 

HRS8tlj.png

 

dziękuje bardzo za tak szybki odzew i zaangażowanie w mój pomysł, forum jak i użytkownicy na wysokim poziomie :)

Edytowane przez endriu66
Opublikowano (edytowane)
11 godzin temu, dmatusz3 napisał:

Czyli tak:

  1. Wskazujemy punkt w lewym dolnym rogu.
  2. Wskazujemy wysokość.
  3. Wskazujemy szerokość.
  4. Wprowadzamy x

2021-05-13 20_25_44-Window.png

Obliczamy y według wzorów (poniżej przykład).

2021-05-13 20_29_30-Window.png

Czy tak to ma wygląać?

 

 

Tak, jest w porządku. Lisp napisany w ten sposób mega ułatwi mi pracę, zauważyłem tylko jedno ale. Wzór podany przez Pana jako ilość linii pionowych to w rzeczywistości ilość pul, ale to kwestia podpisana wzoru.


Dzięki za odzew.

Edytowane przez endriu66
Opublikowano

Może coś takiego?

Polecenie "kreski"

rysowanie-kresek.gif

 

;;https://forum.cad.info.pl/topic/3515-pytaniepomys%C5%82-wype%C5%82nienie-obiektu-polilini%C4%85/?tab=comments#comment-19899
(defun c:kreski ()
	(setq p1 (getpoint "\nWskaz lewy dolny rog "))
	(setq p2 (getcorner p1 "\nWskaz przeciwlegly naroznik prostokata ") )
	(setq odleglosc 150)
	(setq h1 (+ (cadr p1) 10)) 
	(setq h2 (- (cadr p2) 10)) 
	(setq L (- (car p2) (car p1)))
	(setq ilosc (fix (/ (- L 30) odleglosc) ))
	(setq y (/ (- L (* ilosc odleglosc)) 2))
	(setq i 0)
	(repeat (+ ilosc 1)
		(setq  x (+ (* odleglosc i) (+ (car p1) y)))
		(command "_line" (list x h1)  (list x h2)   "")	
		(setq i (+ 1 i))
	)
	(command "_rectangle" p1 p2   "")	
)

kreski.lsp

Opublikowano (edytowane)
11 godzin temu, dmatusz3 napisał:

Może coś takiego?

Polecenie "kreski"

rysowanie-kresek.gif

 




;;https://forum.cad.info.pl/topic/3515-pytaniepomys%C5%82-wype%C5%82nienie-obiektu-polilini%C4%85/?tab=comments#comment-19899
(defun c:kreski ()
	(setq p1 (getpoint "\nWskaz lewy dolny rog "))
	(setq p2 (getcorner p1 "\nWskaz przeciwlegly naroznik prostokata ") )
	(setq odleglosc 150)
	(setq h1 (+ (cadr p1) 10)) 
	(setq h2 (- (cadr p2) 10)) 
	(setq L (- (car p2) (car p1)))
	(setq ilosc (fix (/ (- L 30) odleglosc) ))
	(setq y (/ (- L (* ilosc odleglosc)) 2))
	(setq i 0)
	(repeat (+ ilosc 1)
		(setq  x (+ (* odleglosc i) (+ (car p1) y)))
		(command "_line" (list x h1)  (list x h2)   "")	
		(setq i (+ 1 i))
	)
	(command "_rectangle" p1 p2   "")	
)

kreski.lsp 714 B · 0 pobrań

Działa nieziemsko, jestem pod wrażeniem. Mam tylko jedną prośbę. W moim wzorze poprosiłem o Y>10, a zależałoby mi finalnie aby Y było >46 (odstęp linii od lewej i prawej strony) Nie potrafię sam edytować Pana lispa. Jeśli uda się to załatwić to jestem dłużnikiem tego forum. Dziękuje!!

Edytowane przez endriu66

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się