CesarA 发表于 2022-7-5 18:10:05

了解SSget对象que

我写了一段代码,希望能得到一个垂直对象的列表。我认为autocad select窗口会根据对象的高度来选择对象,但在尝试代码时,我注意到它没有这样做。
 
 

(defun c:dump6 ( / a e o s x texto tipodepeca z y ent ent2 ent3 ent4 obj tabela count count2)
   
(setq count 2)

   (if (setq s (ssget "_:L" '((0 . "TEXT")) ))

       (repeat (setq i (sslength s))
         (setq e (ssname s (setq i (1- i)))
               x (entget e)
               ent (entget(cdr (assoc 360 x)))

         )
          
          (setq count (1+ count))

                (entmod (subst (cons 2 (strcat "some string" (itoa count))) (assoc 2 ent) ent))
               
        )
)
(princ)
)
(princ)

 
这是包含我正在编辑的字段的文本对象列表
 

 
问题是,当我窗口选择它们时,它们不会根据其坐标进行拾取,因此,第一个元素不会得到第一个“计数”,而是一个随机数。
 
这可以定义在窗口中拾取对象的顺序吗?我觉得这是一个长期的机会,但好吧,因为这个论坛帮助了我这么多

Lee Mac 发表于 2022-7-5 19:26:31

否,对于图形选择方法,不能预先确定实体在集合中出现的顺序;只有“X”模式字符串返回有序集,因为这将通过直接在图形数据库上迭代来检索选择集,并在遇到实体时用实体填充该集。
 
您需要迭代选择集,并根据插入点的y坐标对文本实体进行排序。
页: [1]
查看完整版本: 了解SSget对象que