本帖最后由 vitalgg 于 2021-8-22 01:37 编辑
看错了,不好意思。
ssget 不能操作组信息
遍历组,如果组里有3个图元对象,且块对象 x = -110.0, 文字对象内容结尾为 1。则选中。
 - (setq ;;常用VLA对象、集合
- *ACAD* (vlax-get-acad-object)
- *DOC* (vla-get-ActiveDocument *ACAD*)
- *GRPS* (vla-get-groups *DOC*))
- (setq i 0)
- (setq ss (ssadd))
- (while (< i (vla-get-count *GRPS*))
- (setq grp% (vla-item *GRPS* i))
- (if (= 3 (vla-get-count grp%))
- (progn
- (setq flag 0)
- (setq j 0)
- (while (< j 3)
- (if (and (= "AcDbBlockReference" (vla-get-ObjectName (vla-item grp% j)))
- (equal -110.0 (vla-get-XEffectiveScaleFactor (vla-item grp% j)) 0.01)) ;; 如果是 -110 ~ 0 之间,把 equal 改成 > ,去了容差 0.01.
- (setq flag (1+ flag)))
- (if (and (= "AcDbText" (vla-get-ObjectName (vla-item grp% j)))
- (wcmatch (vla-get-TextString (vla-item grp% j)) "*1"))
- (setq flag (1+ flag)))
- (setq j (1+ j)))
- (if (= 2 flag)
- (progn
- (setq ss (ssadd (vlax-vla-object->ename (vla-item grp% 0)) ss))
- (setq ss (ssadd (vlax-vla-object->ename (vla-item grp% 1)) ss))
- (setq ss (ssadd (vlax-vla-object->ename (vla-item grp% 2)) ss))))
- ))
- (setq i (1+ i))
- )
- (sssetfirst nil ss)
|