Rysowanie równoległoboku
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:
1. Narysować prostokąt
2. Obrócić
3. Rozciągnąć
Dzięki temu przykładowi wystarczy wskazać trzy punkty. jak na załączonym poniżej przykładzie
(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 2015+
Wykonanie w ZWCAD Classic