
Autolisp小程序有bug,求大神解惑
(setqss1(ssget"X"'((0."TEXT"))))(setqss2(ssget"X"'((0."MTEXT"))));合并"TEXT""MTEXT"层选择集...
(setq ss1 (ssget "X" '((0 . "TEXT"))))
(setq ss2 (ssget "X" '((0 . "MTEXT"))))
;合并 "TEXT""MTEXT"层选择集
(if (and ss1 ss2)
(progn
((setq n1 1)
(while (setq e1 (ssname ss2 n1));每次这里(ssname ss2 n1)都过不去,
;提示错误: 参数类型错误: numberp: nil
(ssadd e1 ss1)
(setq i (1+ i))
)
(setq ss3 ss1)
)
)
(progn
(if (= nil ss1)
(setq ss3 ss2)
(setq ss3 ss1)
)
)
) 展开
(setq ss2 (ssget "X" '((0 . "MTEXT"))))
;合并 "TEXT""MTEXT"层选择集
(if (and ss1 ss2)
(progn
((setq n1 1)
(while (setq e1 (ssname ss2 n1));每次这里(ssname ss2 n1)都过不去,
;提示错误: 参数类型错误: numberp: nil
(ssadd e1 ss1)
(setq i (1+ i))
)
(setq ss3 ss1)
)
)
(progn
(if (= nil ss1)
(setq ss3 ss2)
(setq ss3 ss1)
)
)
) 展开
推荐于2016-09-23 · 知道合伙人软件行家
关注

展开全部
(setq ss1 (ssget "X" '((0 . "TEXT"))))
(setq ss2 (ssget "X" '((0 . "MTEXT"))))
修改为:
(setq ss1 (ssget "X" '((0 . "TEXT,MTEXT"))));选择文字和多行文字
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;如果要合并选择集ss1,ss2
(if (and (/= ss1 nil) (/= ss2 nil))
(progn
(setq e1 (ssname ss1 0));取得第一个对象
(while e1
(setq ss2 (ssadd e1 ss2));这个对象加入选择集ss2
(setq ss1 (ssdel e1 ss1));这个对象从ss1选择集里取消
(setq e1 (ssname ss1 0));取得选择集ss1里面一个对象
);注意e1顺序;选择集加入不得为nil;你选择为第二个对象,会出现nil所以不对
)
);合并后选择集为ss2
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询