mstg007 发表于 2022-6-16 17:45:38

使用“分解”命令保留选择集

我试图找到一种方法,在那里我可以选择多行文字或MLeader和爆炸它,然后与新的单行文本;应用一个新命令,将文本移动到第0层。
我知道这是加粗的基本要求,但是我正在尝试使用以下内容将所有内容联系起来:
(defun C:test (/ ss)
(setq ss (ssget "x"))
(initcommandversion 2)   
(command "explode" "p" "")
(command "change" ss "" "p" "la" "0" "")
(princ))

我该怎么做呢?
**** Hidden Message *****

framednlv 发表于 2022-6-16 18:33:21


(defun C:test (/ ss)
(setvar "qaflags" 1)
(setq ss (ssget ))
(command "explode" ss "")
(command "change" "p" "" "p" "la" "0" "")
(setvar "qaflags" 0)
(princ))

mhupp 发表于 2022-8-2 09:40:33

;;;选项1
(defun c:test(/ss)
(setq ss(ss get " x "))
(initcommandversion 2)
(命令" explode " " P " ")
(setq ss(ss get " P "));_添加此行
(command " change " ss " " " p " " la " " 0 " ")
(princ)
;;;选项2
(defun c:test(/ss)
(setq ss(ss get " x "))
(initcommandversion 2)
(命令" explode " " p " ")

(setq ss(ss get " x));_添加此行
(command " change " ss " " " p " " la " " 0 " ")
(princ)
)

framednlv 发表于 2022-8-2 15:09:12

我认为“P”不起作用,因为所有“分解”项目都被认为是新的,而不是以前的
(setq poly (vlax-invoke (vlax-ename->vla-object ent) 'explode))
(foreach obj poly
Autolisp方法使用lastent设置“保存点”,然后分解选定实体的。创建的所有新实体都位于dxf文件中的lastent之后。en的while循环将这些添加到您定义的选择集中。
(setq LastEnt (entlast))
(command "_.Explode" SS)
(setq SS (ssadd))
(if (setq en (entnext LastEnt))
(while en ;add all new entity's created by explosion back into selection set.
    (ssadd en SS)
    (setq en (entnext en))
)
)
页: [1]
查看完整版本: 使用“分解”命令保留选择集