W przypadku, gdy chcemy narysować prostokąt lub równoległobok ale nierównoległy do osi układu współrzędnych musimy wykonać trzy operacje: narysować prostokąt, obrócić i rozciągnąć.

Dzięki temu skryptowi proces ten staje się znacznie prostszy, wystarczy uruchomić LISP i podać 3 wierzchołki figury.

 

Lisp do rysowania równoległoboku przez podanie trzech punktów

 

Polecenie do uruchomienia skryptu LISP: Rownoleglobok

 

Kod źródłowy z opisem

 

;;; Rysowanie równoległoboku przez wskazanie trzech punktów
;;; zwcad.pl
;;; Polecenie do uruchomienia skryptu LISP: Rownoleglobok
;;; Opis: https://www.zwcad.pl/materialy-edukacyjne/kurs-lisp/przyklady-lisp/120-rysowanie-rownolegloboku-przez-wskazanie-trzech-punktow.html
 (vl-load-com)
(setq *ZWCAD* (vlax-get-acad-object))
(setq *Rysunek* (vla-get-activedocument *ZWCAD*))
(defun C:rownoleglobok ( / )
;----------------------------------------------------------
;Funkcja pozwala na rysowanie rąbu przez wskazanie trzech punktów
;Argumenty: brak
;Wynik: brak
;----------------------------------------------------------
(setq *Model* (vla-get-Modelspace *Rysunek*))
(setq P1 (getpoint "Wskaż pierwszy narożnik")) ; współrzędne 3D
(setq P2 (getpoint P1 "Wskaż drugi narożnik"))
(setq P3 (getpoint P1 "Wskaż trzeci narożnik"))
(setq P4 (list (+ (car P3) (-(car P2)(car P1)) )
(+ (cadr P3) (-(cadr P2)(cadr P1))))) ; Współrzędne 2D
(setq P1 (trans P1 1 0 ) ; konwersja ze współrzędnych lokalnych na globalne
P2 (trans P2 1 0 )
P3 (trans P3 1 0 )
P4 (trans P4 1 0 )) ; prosze zauważyć.że konwersję współrzędnych można
; dokonać również dla punktów 2D
(setq LPts (list (car P1)(cadr P1)
(car P2)(cadr P2)
(car P4)(cadr P4)
(car P3)(cadr P3) ) )
(setq Vpts (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble (cons 0 (1- (length Lpts)))) Lpts ) ))
(setq RabObj(vlax-invoke-method *Model* 'addlightweightpolyline Vpts))
(vlax-put-property RabObj 'Closed :vlax-true )
)

 

Wykonanie w ZWCAD 2023

rownoleglobok przez 3 boki

 

Wykonanie w ZWCAD 2015

LISP Rownoleglobok 2015

 

Wykonanie w ZWCAD Classic

LISP Rownoleglobok Classic