高手帮帮忙
如图,JMD内标注都被移动过了,不规整,现在想要批量把JMD内注记移动到封闭面中间位置,请大神帮忙改成居中(defun c:test1 (/ ss i en ent pt)
(setq ss (ssget '((0 . "text"))))
(command "justifytext" ss "" "m")
(repeat (setq i (sslength ss))
(setq en(ssname ss (setq i (1- i)))
ent (entget en)
pt(cdr (assoc 11 ent))
)
(vl-cmdf "_.boundary" pt "")
(vl-cmdf "region" (entlast) "")
(setq pt (vlax-safearray->list
(vlax-variant-value
(vlax-get-property
(vlax-ename->vla-object (entlast))
'Centroid
)
)
)
)
(entdel (entlast))
(setq ent (subst (cons 11 pt) (assoc 11 ent) ent))
(entmod ent)
(entupd en)
)
)
另一个方法
(defun c:test2 (/ ss i obj p1 p2 pt ptt)
(setq ss (ssget))
(repeat (setq i (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
(vla-getboundingbox obj 'p1 'p2)
(setq pt (mapcar '(lambda (x y) (* 0.5 (+ x y)))
(vlax-safearray->list p1)
(vlax-safearray->list p2)
)
)
(vl-cmdf "_.boundary" pt "")
(vl-cmdf "region" (entlast) "")
(setq ptt (vlax-safearray->list
(vlax-variant-value
(vlax-get-property
(vlax-ename->vla-object (entlast))
'Centroid
)
)
)
)
(entdel (entlast))
(vla-move obj (vlax-3d-point pt) (vlax-3d-point ptt))
)
) 不一定好使:lol
(defun c:test1 (/ ss i en ent pt)
(setq ss (ssget '((0 . "text"))))
(repeat (setq i (sslength ss))
(setq en(ssname ss (setq i (1- i)))
ent (entget en)
pt(cdr (assoc 10 ent))
)
(vl-cmdf "_.boundary" pt "")
(vl-cmdf "region" (entlast) "")
(setq pt (vlax-safearray->list
(vlax-variant-value
(vlax-get-property
(vlax-ename->vla-object (entlast))
'Centroid
)
)
)
)
(entdel (entlast))
(setq ent (subst (cons 10 pt) (assoc 10 ent) ent))
(entmod ent)
(entupd en)
)
) CASS内,recass命令研究一下,注意备份原图。 x_s_s_1 发表于 2019-12-28 12:46
不一定好使
无法运行:( satan421 发表于 2019-12-28 13:19
CASS内,recass命令研究一下,注意备份原图。
重构会很麻烦
zhangsk19 发表于 2019-12-28 16:16
无法运行
发图测试,我这里是可以的 x_s_s_1 发表于 2019-12-28 20:33
改成居中
加载程序时怎么提示我输入的字串符有缺陷 zhangsk19 发表于 2019-12-28 20:45
加载程序时怎么提示我输入的字串符有缺陷
拷贝代码没拷贝对吧,自己改一下,也就是个思路
页:
[1]
2