wgij007 发表于 2021-3-27 21:59:18

求帮改一下程序,框选内容

本帖最后由 wgij007 于 2021-4-1 22:10 编辑

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


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

caoyin 发表于 2021-3-27 21:59:19

本帖最后由 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 的任何对象类型
------------------------------------------------------------------------------------------------------------
总结,写代码,本身是很严谨的问题,所以问问题,描述也要清晰、完整、准确!





caoyin 发表于 2021-3-27 22:49:01

(setq ss (ssget ":s" '((0 . "DIMENSION,TEXT,*LEADER") (62 . 1))))

wgij007 发表于 2021-3-28 22:54:24

caoyin 发表于 2021-3-27 22:49
(setq ss (ssget ":s" '((0 . "DIMENSION,TEXT,*LEADER") (62 . 1))))

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

G〆h 发表于 2021-3-29 08:47:25

楼主要检查下,你要选择的对象颜色是对象色还是图层色(bylayer,但图层整体是红色),dxf码是不一样的。

wgij007 发表于 2021-3-29 23:11:57

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

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

caoyin 发表于 2021-3-30 01:20:12

本帖最后由 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>"))
                  )
         )
)
)

wgij007 发表于 2021-3-30 11:30:03

caoyin 发表于 2021-3-30 01:20
(defun C:TT (/ X LAYS)
(defun X (E)
(if (setq E (tblnext "LAYER" (not E)))


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

wgij007 发表于 2021-3-30 18:06:30

caoyin 发表于 2021-3-30 01:20
(defun C:TT (/ X LAYS)
(defun X (E)
(if (setq E (tblnext "LAYER" (not E)))


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

caoyin 发表于 2021-3-30 19:24:24

wgij007 发表于 2021-3-30 18:06
没错误了,但框选没反映。CAD2006

你框选什么内容?尺寸标注、单行文字、引线和多重引线?
页: [1] 2
查看完整版本: 求帮改一下程序,框选内容