求助ssget选择图元后 在筛选的问题
求助ssget选择图元后在筛选的问题:选取图元后 筛选出18.0 20.022.0的圆移动到图层7 颜色bylayer
然后再筛选出8.0 10.0 的圆 移动到图层7 颜色bylayer
求助一下各位大师,这个怎么写呢?
(defun c:test(/ ed obj ss st n1 n2)
(setvar "cmdecho" 0)
(if(setq ss(ssget '((0 . "circle"))))
(progn
(setq st -1 n1 0 n2 0)
(repeat(sslength ss)
(setq
obj(vlax-ename->vla-object(ssname ss(setq st(1+ st))))
ed(vla-get-Diameter obj)
)
(cond
((or(= ed 8.0)(= ed 8.01)(= ed 10.0)(= ed 10.01))(vla-put-layer obj "7")(setq n1(1+ n1)))
((or(= ed 18.0)(= ed 20.0)(= ed 19.98)(= ed 20.02))(vla-put-layer obj "8")(setq n2(1+ n2)))
)
(vla-put-color obj 256)
)
(princ (strcat "\n成功执行: "(itoa n1)"个圆至7层,"(itoa n2)"个圆至8层"))
)
)
(prin1)
) 目前用的这个在输入命令后 要选择两次图元 要实现的效果是 只选择一次自动分离图元
(defun C:LHmovelocation78(/ lm_xiaoding lm_daozhu)
(if (not (tblsearch "layer" "7"))(command "-layer" "n" "7" "c" "4" "7" ""));endif
(if (not (tblsearch "layer" "8"))(command "-layer" "n" "8" "c" "2" "8" ""));endif
(setq lm_xiaoding (ssget'((0 . "circle")(-4 . "<or")(40 . 8)(40 . 8.01)(40 . 10)(40 . 10.01)(-4 . "or>")))
lm_daozhu (ssget'((0 . "circle")(-4 . "<or")(40 . 4)(40 . 19.98)(40 . 20.0)(40 . 20.02)(-4 . "or>"))));endsetq
(if lm_xiaoding (command "chprop" lm_xiaoding "" "la" "7" "c" "bylayer" ""))
(if lm_daozhu (command "chprop" lm_daozhu "" "la" "8" "c" "bylayer" ""))
(princ"\n转换分类完成")(princ)
);end defun xtjd 发表于 2023-2-22 07:45
(defun c:test(/ ed obj ss st n1 n2)
(setvar "cmdecho" 0)
(if(setq ss(ssget '((0 . "circle")))) ...
谢谢,终于解决了问题。谢谢帮忙。 xtjd 发表于 2023-2-21 21:27
(defun c:test(/ ed obj ss st n1 n2)
(setvar "cmdecho" 0)
(if(setq ss(ssget '((0 . "circle")))) ...
大师,您帮我看下是不是红色的地方不对?谢谢
(defun c:CH(/ ed obj ss st n1 n2 n3 n4)
(princ "转换图层")
(setvar "cmdecho" 0)
(if(setq ss(ssget))
(progn
(setq st -1 n1 0 n2 0 n3 0 n4 0)
(repeat(sslength ss)
(setq
obj(vlax-ename->vla-object(ssname ss(setq st(1+ st))))
ed (vla-get-layer obj)
)
(cond
((= ed 151)(vla-put-layer obj "MATER")(setq n1(1+ n1)))
((= ed 20) (vla-put-layer obj "MATER")(setq n2(1+ n2)))
((= ed 251)(vla-put-layer obj "A")(setq n3(1+ n3)))
((= ed 138)(vla-put-layer obj "A")(setq n4(1+ n4)))
)
)
)
)
(prin1)
) 刘炎华 发表于 2023-3-5 23:29
大师,您帮我看下是不是红色的地方不对?谢谢
(defun c:CH(/ ed obj ss st n1 n2 n3 n4)
(princ "转 ...
图层名称属于字符串,(= ed "151") 好的,谢谢! 本帖最后由 刘炎华 于 2023-3-6 10:47 编辑
xtjd 发表于 2023-3-6 07:45
图层名称属于字符串,(= ed "151")
大师,我这样做不行呢?
……又弄了下,可以了
页:
[1]