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

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie