明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 574|回复: 7

求助ssget选择图元后 在筛选的问题

  [复制链接]
发表于 2023-2-21 21:27 | 显示全部楼层 |阅读模式
2明经币
求助ssget选择图元后  在筛选的问题:

选取图元后   筛选出18.0   20.0  22.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")(s ...
发表于 2023-2-21 21:27 | 显示全部楼层
(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)
)
回复

使用道具 举报

 楼主| 发表于 2023-2-21 22:16 | 显示全部楼层
目前用的这个在输入命令后 要选择两次图元    要实现的效果是 只选择一次  自动分离图元
(defun CHmovelocation78  (/ 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
回复

使用道具 举报

 楼主| 发表于 2023-2-22 21:32 | 显示全部楼层
xtjd 发表于 2023-2-22 07:45
(defun c:test(/ ed obj ss st n1 n2)
  (setvar "cmdecho" 0)
  (if(setq ss(ssget '((0 . "circle")))) ...

谢谢,终于解决了问题。谢谢帮忙。
回复

使用道具 举报

发表于 2023-3-5 23:29 | 显示全部楼层
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-6 07:45 | 显示全部楼层
刘炎华 发表于 2023-3-5 23:29
大师,您帮我看下是不是红色的地方不对?谢谢
(defun c:CH(/ ed obj ss st n1 n2 n3 n4)
  (princ "转 ...

图层名称属于字符串,(= ed "151")
回复

使用道具 举报

发表于 2023-3-6 08:00 | 显示全部楼层
好的,谢谢!
回复

使用道具 举报

发表于 2023-3-6 08:55 | 显示全部楼层
本帖最后由 刘炎华 于 2023-3-6 10:47 编辑
xtjd 发表于 2023-3-6 07:45
图层名称属于字符串,(= ed "151")

大师,我这样做不行呢?

……又弄了下,可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 09:37 , Processed in 0.636043 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表