展开全部
以上是操作方法,一键编号计算复杂就不写了。直线62616964757a686964616fe59b9ee7ad9431333363393735一键定距等分:代码如下:
;直线等距插入块
(defun c:tes ( / &kw1 ang1 dis1 dis2 dis5 ent obj obj2 obj3 p1 p5 ss1 ss2 x y)
(vl-load-com)
(if (and (setq ent (entsel "\n请选择参考块"))
(setq ent (car ent))
(= (cdr (assoc 0 (entget ent))) "INSERT")
(setq obj (vlax-ename->vla-object ent))
(princ "\n请选择直线")
(setq &kw1 (ssget '((0 . "LINE"))))
)
(progn
(setq ss1 '())
(while (setq ent (ssname &kw1 0))
(setq &kw1 (ssdel ent &kw1) ss1 (cons (vlax-ename->vla-object ent) ss1))
);while
(vla-getboundingbox obj 'x 'y)
(setq ss2 (mapcar 'vlax-safearray->list (list x y)) p5 (Vlax-3d-Point (mapcar '* '(0.5 0.5) (mapcar '+ (car ss2) (cadr ss2)))))
(setq dis1 6000.0);如果图纸比例是1:1000,那么这个值修改为6.0
(while (setq obj2 (car ss1))
(setq ss1 (cdr ss1) ang1 (vla-get-Angle obj2) dis2 0.0)
(setq dis5 (vlax-curve-getDistAtParam obj2 (vlax-curve-getEndParam obj2)))
(while (and (setq p1 (vlax-curve-getPointAtDist obj2 (setq dis2 (+ dis2 dis1)))) (< dis2 dis5))
(setq p1 (vlax-3d-Point p1))
(vla-copy obj)
(setq obj3 (vlax-ename->vla-object (entlast)))
(vla-Rotate obj3 p5 ang1)
(vla-Move obj3 p5 p1)
);while
);while
)
)
(princ)
)