Here is the code I am working on:
This code insert "Straight Duct" block at required points and with required rotation.
But I am not able to insert "Elbow90" (Don't Know Why?). But I am working on it.
I want to know if I can move grips of that dynamic blocks to required points.
Can you help me?
Code:
(vl-load-com); if needed
(defun C:PtoDB (/ plent plobj coords num pt)
(setq
plent (car (entsel "\nSelect Polyline: "))
plobj (vlax-ename->vla-object plent)
coords (vlax-get plobj 'Coordinates); un-differentiated list of X Y [& Z if applicable] coordinate values
); setq
(setq num (if (= (cdr (assoc 0 (entget plent))) "LWPOLYLINE") 2 3))
; LW Polylines have only X & Y; "heavy" 2D & 3D have X Y & Z
(repeat (/ (length coords) num)
(repeat num ; number of coordinates to separate into a point list
(setq
pt (append pt (list (car coords)))
coords (cdr coords)
)
); repeat
); repeat
(setq pt (reverse pt)); list of coordinates divided up into point lists
(setq width (getint "Enter the width of duct:"))
(setq p1 (list (nth 1 pt) (nth 0 pt) 0))
(setq p2 (list (nth 3 pt) (nth 2 pt) 0))
(setq p3 (list (nth 5 pt) (nth 4 pt) 0))
(setq ang1 (angtos (angle p1 p2)))
(setq ang2 (angtos (angle p2 p3)))
(setq diff (+ 150 (/ width 2)))
;(princ diff)
(cond ((and (and (> (cadr p2) (cadr p1)) (= (cadr p2) (cadr p3))) (and (= (car p2) (car p1)) (> (car p2) (car p3))))
(setq ang3 (itoa 0))
(setq p4 (list (- (car p2) diff) (- (cadr p2) diff) 0))
)
((and (and (> (cadr p2) (cadr p1)) (= (cadr p2) (cadr p3))) (and (= (car p2) (car p1)) (< (car p2) (car p3))))
(setq ang3 (itoa 90))
(setq p4 (list (+ (car p2) diff) (- (cadr p2) diff) 0))
)
((and (and (= (cadr p2) (cadr p1)) (< (cadr p2) (cadr p3))) (and (< (car p2) (car p1)) (= (car p2) (car p3))))
(setq ang3 (itoa 180))
(setq p4 (list (+ (car p2) diff) (+ (cadr p2) diff) 0))
)
((and (and (= (cadr p2) (cadr p1)) (< (cadr p2) (cadr p3))) (and (> (car p2) (car p1)) (= (car p2) (car p3))))
(setq ang3 (itoa 270))
(setq p4 (list (- (car p2) diff) (+ (cadr p2) diff) 0))
)
)
(command "_Insert" "Straight Duct" "_mtp" p1 p2 1 "" ang1)
(command "_Insert" "Straight Duct" "_mtp" p2 p3 1 "" ang2)
;(command "_line" p2 p4 "")
(command "_Insert" "Elbow90" p4 1 1 ang3)
); defun