lamensterms 发表于 2022-7-6 06:46:45

仅分解坐标尺寸

嘿伙计们,
 
我需要分解DWG中的所有坐标尺寸(X和Y)。我认为这足够简单,但我无法让选择集过滤器列表工作。
 
我的代码是:
 
(defun c:eo ()
(setq ss (ssget "X" '((70 . 6))))
(command "explode" ss)
(princ)
)

 
我只是想知道你们中是否有人可以看看,让我知道我做错了什么?
 
谢谢。

pBe 发表于 2022-7-6 07:01:17

(ssget "_x"
      '((0 . "DIMENSION") (-4 . "<OR") (70 . 38) (70 . 102) (70 . 166) (-4 . "OR>"))
)
 
哎呀。。误读标题
 
(if (setq
         ss(ssget "_x" '((0 . "DIMENSION")))
   )
(repeat (setq i (sslength ss))
          (if (Eq (vla-get-ObjectName (vlax-ename->vla-object (setq e (ssname ss (setq i (1- i))))))
                  "AcDbOrdinateDimension"
            )
            (command "_explode" e )
          )
      )
      
)

lamensterms 发表于 2022-7-6 07:14:38

非常感谢pBe的回复。
 
您提供的AutoLISP代码可以工作,但一次只能处理一项。我看不出任何明显的原因来解释为什么会这样……恐怕我不理解您提供的选择集过滤器列表。
 
我的部分工作代码是:
 
(defun c:eo ()
(setq ss (ssget "_x" '((0 . "DIMENSION") (-4 . "<OR") (70 . 38) (70 . 102) (70 . 166) (-4 . "OR>"))))
(command "EXPLODE" ss)
(princ)
)
 
你能看到导致例程只对单个项目进行操作的原因吗?
 
谢谢你的帮助,伙计。

pBe 发表于 2022-7-6 07:23:14


(defun c:eo ()
(setvar 'qaflags 1)
(if (Setq ss (ssget "_x" '((0 . "DIMENSION") (-4 . "<OR") (70 . 38) (70 . 102) (70 . 166) (-4 . "OR>"))))
(command "_explode" ss ""))
            
(setvar 'qaflags 0)
(princ)
)

Tharwat 发表于 2022-7-6 07:38:50

我希望所有选定的维度都不会位于锁定层上。

lamensterms 发表于 2022-7-6 07:55:18

太棒了,非常感谢pBe。
 
Tharwat-大多数情况下,该例程将在添加坐标维度后立即使用,因此希望它们永远不会位于锁定层上。
 
谢谢大家。
页: [1]
查看完整版本: 仅分解坐标尺寸