在这里,添加了突出显示的行
(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,
和我要找的一模一样。确实帮了大忙。 别担心。享受 satishrajdev
需要从你那里得到更多,
是否可以进一步修改?如果块具有高程(高于0的任何事物)且多段线具有0高程,则选择块。但东距和北距位置位于多段线上。
要选择直线,请同时选择三维多段线
提前感谢 我认为您希望将代码用于3dpolyline、polyline和line对象的多个立面。我已经更新了代码
我已经附上了图纸,你能找出错误,在这方面,你的代码没有执行到充分。
谢谢亲爱的
数据-26-12-2016。图纸 在我的地方效果很好,看到这个了吗
@萨提什,
你知道当你运行程序时,函数“remz”会被加载多少次吗?
对它将加载图形中可用的总块数。这可能会减慢程序的速度&这不是标准做法。我已经更新了代码。谢谢Tharwat
页:
1
[2]