明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 845|回复: 14

[提问] 求帮改一下程序,框选内容

[复制链接]
发表于 2021-3-27 21:59 | 显示全部楼层 |阅读模式
3明经币
本帖最后由 wgij007 于 2021-4-1 22:10 编辑

   (defun c:sb (/ ss)
    (while (setq ss (ssget":s" '((0 . "DIMENSION,TEXT,*LEADER" (62.1) )))))
         )


能帮忙改一下吗,自己改的不能包括红色,要求:选择以上内容DIMENSION,TEXT,*LEADER与红色的所有。不是红色的以上。

最佳答案

查看完整内容

楼主有必要学一点基础知识, (ssget ":S" '((-4 . "") ) ) 蓝色的or,表示在or之间有若干个条件,满足其中一个即可 绿色,条件之一:对象类型包括尺寸标注、单行文字、引线或多重引线 红色,条件之二:对象类型包括直线、圆、圆弧,同时ACI颜色必须为1 --------------------------------------------------------------------------------------------------------- 如果你说的红色对象包含第一个条件中的对 ...
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-3-27 21:59 | 显示全部楼层
本帖最后由 caoyin 于 2021-4-2 00:22 编辑

楼主有必要学一点基础知识,
(ssget ":S" '((-4 . "<OR")
                (0 . "DIMENSION,TEXT,*LEADER")
                (-4 . "<AND")
                  (0 . "LINE,CIRCLE,ARC")
                  (62 . 1)
                (-4 . "AND>")

              (-4 . "OR>")
             )
)
蓝色的or,表示在or之间有若干个条件,满足其中一个即可
绿色,条件之一:对象类型包括尺寸标注、单行文字、引线或多重引线
红色,条件之二:对象类型包括直线、圆、圆弧,同时ACI颜色必须为1
---------------------------------------------------------------------------------------------------------
如果你说的红色对象包含第一个条件中的对象,代码则为:

(ssget ":S" '((0 . "DIMENSION,TEXT,*LEADER,LINE,CIRCLE,ARC")
              (62 . 1)
             )
)
------------------------------------------------------------------------------------------------------------
再如果,严格按照你上面的描述,把你的SB 和SB2 两处代码合并,
(ssget ":S" '((-4 . "<OR")
                (0 . "DIMENSION,TEXT,*LEADER")
                (62 . 1)
             (-4 . "OR>")
             )
)
绿色,条件之一:对象类型包括尺寸标注、单行文字、引线或多重引线
红色,条件之二:ACI颜色为1 的任何对象类型
------------------------------------------------------------------------------------------------------------
总结,写代码,本身是很严谨的问题,所以问问题,描述也要清晰、完整、准确!





点评

现场教学啊,学习了  发表于 2021-4-2 00:50
回复

使用道具 举报

发表于 2021-3-27 22:49 | 显示全部楼层
(setq ss (ssget ":s" '((0 . "DIMENSION,TEXT,*LEADER") (62 . 1))))
回复

使用道具 举报

 楼主| 发表于 2021-3-28 22:54 | 显示全部楼层
caoyin 发表于 2021-3-27 22:49
(setq ss (ssget ":s" '((0 . "DIMENSION,TEXT,*LEADER") (62 . 1))))

不行呀,带红色的还是没选中
回复

使用道具 举报

发表于 2021-3-29 08:47 | 显示全部楼层
楼主要检查下,你要选择的对象颜色是对象色还是图层色(bylayer,但图层整体是红色),dxf码是不一样的。
回复

使用道具 举报

 楼主| 发表于 2021-3-29 23:11 | 显示全部楼层
G〆h 发表于 2021-3-29 08:47
楼主要检查下,你要选择的对象颜色是对象色还是图层色(bylayer,但图层整体是红色),dxf码是不一样的。

如选择标注,与其他红色的(如红色的线等等)
回复

使用道具 举报

发表于 2021-3-30 01:20 | 显示全部楼层
本帖最后由 caoyin 于 2021-3-30 14:48 编辑

(defun C:TT (/ X LAYS)
(defun X (E)
  (if (setq E (tblnext "LAYER" (not E)))
    (if (= (cdr (assoc 62 E)) 1)
      (cons (cdr (assoc 2 E)) (X E))
      (X E)
    )
  )
)
(foreach X (X nil) (setq LAYS (strcat X ",")))
(setq ss (ssget ":S" (append
                     '((0 . "DIMENSION,TEXT,*LEADER")
                       (-4 . "<OR")
                       (62 . 1)
                      )
                      (if LAYS
                        (list '(-4 . "<AND")
                              (cons 8 LAYS)
                              '(62 . 256)
                              '(-4 . "AND>")
                        )
                      )
                      '((-4 . "OR>"))
                    )
           )
  )
)
回复

使用道具 举报

 楼主| 发表于 2021-3-30 11:30 | 显示全部楼层
caoyin 发表于 2021-3-30 01:20
(defun C:TT (/ X LAYS)
(defun X (E)
  (if (setq E (tblnext "LAYER" (not E)))

tt ; 错误: ssget 列表值错误
有错误

点评

已修正  发表于 2021-3-30 14:48
回复

使用道具 举报

 楼主| 发表于 2021-3-30 18:06 | 显示全部楼层
caoyin 发表于 2021-3-30 01:20
(defun C:TT (/ X LAYS)
(defun X (E)
  (if (setq E (tblnext "LAYER" (not E)))

没错误了,但框选没反映。CAD2006
回复

使用道具 举报

发表于 2021-3-30 19:24 | 显示全部楼层
wgij007 发表于 2021-3-30 18:06
没错误了,但框选没反映。CAD2006

你框选什么内容?尺寸标注、单行文字、引线和多重引线?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 16:08 , Processed in 0.235096 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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