大家看看这程序得怎么写?
;;;编一个功能的程序;;;创造动态图块选择集,获取选择集的基点坐标,图块的旋转角度,选择集图元的规格值
;;;如果角度是0 180,取坐标X值, 将所有坐标X(list)相减,得到一个值。将选择集图元移动x
;;;如果角度是90 270,取坐标y值, 将所有坐标y(list)相减,得到一个值。将选择集图元移动y
;;;下段代码功能,读取动态块的自定义属性!
;;;附件中附有动态块
(defun c:tt (/ obj pros proslst)
(setq obj (vlax-ename->vla-object (car (entsel))))
(setq Pros (vlax-invoke obj 'GetDynamicBlockProperties))
(setq Proslst
(mapcar
'(lambda (X)
(cons (vlax-get X 'PropertyName) (vlax-get X 'Value))
)
Pros
)
)
(princ proslst)
(princ)
)
没有大神试试么,速度来了哈,自己顶一下 附上段院长的代码,自定义函数部分没有研究明白
defun c:tt () ;tt(动态块排版)
(xyp-Start)
(defun abc (s1 / ob dp a)
(setq ob (vlax-ename->vla-object s1)
dp (vla-getdynamicblockproperties ob)
a(car (vlax-safearray->list (vlax-variant-value dp)))
a(distof (vlax-get a 'Value))
)
)
(if (setq ss (ssget '((0 . "insert"))))
(progn
(setq lst (vl-sort (xyp-Ss2List ss)
'(lambda (x y) (< (car (xyp-9pt x 1)) (car (xyp-9pt y 1))))
)
p0 (xyp-DXF 10 (car lst))
)
(foreach s1 lst
(xyp-move s1 (xyp-DXF 10 s1) p0)
(setq p0 (xyp-Pt2X p0 (abc s1)))
)
)
)
(xyp-End)
)
页:
[1]