satishrajdev 发表于 2022-7-5 17:25:05

 
在这里,添加了突出显示的行
 
(defun c:test (/ set->list plset blk sel i pl o)
(defun set->list (a / l)
   (if        a
   (repeat (setq i (sslength a))
(setq l (cons (ssname a (setq i (1- i))) l))
   )
   )
   l
)
(if (setq plset (ssget '((0 . "*polyline"))))
   (progn
   (setq blk        (set->list (ssget "_X" '((0 . "insert"))))
    sel        (ssadd)
   )
   (repeat (setq i (sslength plset))
(setq
pl (vlax-ename->vla-object (ssname plset (setq i (1- i))))
)
(setq o        (vl-remove-if-not
          '(lambda (x / a b)
             (setq a (cdr (assoc 10 (entget x)))
                   b (vlax-curve-getclosestpointto pl a)
             )
             (< (distance a b) 1e-1)
           )
          blk
        )
)
(foreach x o (ssadd x sel))
   )
   (sssetfirst nil sel)
   )
)
(princ)
)

satishrajdev 发表于 2022-7-5 17:25:44

谢谢Satishrajdev,
 
和我要找的一模一样。确实帮了大忙。

CADWORKER 发表于 2022-7-5 17:29:53

别担心。享受

satishrajdev 发表于 2022-7-5 17:34:28

satishrajdev
 
需要从你那里得到更多,
 
是否可以进一步修改?如果块具有高程(高于0的任何事物)且多段线具有0高程,则选择块。但东距和北距位置位于多段线上。
要选择直线,请同时选择三维多段线
 
提前感谢

CADWORKER 发表于 2022-7-5 17:37:21

我认为您希望将代码用于3dpolyline、polyline和line对象的多个立面。我已经更新了代码

satishrajdev 发表于 2022-7-5 17:40:35

 
我已经附上了图纸,你能找出错误,在这方面,你的代码没有执行到充分。
 
谢谢亲爱的
数据-26-12-2016。图纸

CADWORKER 发表于 2022-7-5 17:43:15

在我的地方效果很好,看到这个了吗
 

satishrajdev 发表于 2022-7-5 17:46:39

@萨提什,
你知道当你运行程序时,函数“remz”会被加载多少次吗?

Tharwat 发表于 2022-7-5 17:47:37

 
对它将加载图形中可用的总块数。这可能会减慢程序的速度&这不是标准做法。我已经更新了代码。谢谢Tharwat

satishrajdev 发表于 2022-7-5 17:51:09

页: 1 [2]
查看完整版本: 选择所有要删除的块