[Pytanie/pomysł] Wypełnienie obiektu polilinią


Recommended Posts

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

Edited by endriu66
Link to post
Share on other sites

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 :)

Link to post
Share on other sites

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?

Link to post
Share on other sites
Posted (edited)
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 :)

Edited by endriu66
Link to post
Share on other sites
Posted (edited)
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.

Edited by endriu66
Link to post
Share on other sites

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

Link to post
Share on other sites
Posted (edited)
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!!

Edited by endriu66
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...