anupmadhu 发表于 2022-7-5 19:59:38

在交点o处插入块

它可以用于计算灌溉网络中的配件数量,以计算所需的减速器数量。
ie 1“将是单独的层,1.5”将在不同的层,通过计算插入的块,我们得到了1.5*1”号减速机

Lee Mac 发表于 2022-7-5 20:11:47

您可以修改此代码以满足您的需要。

anupmadhu 发表于 2022-7-5 20:27:56

先生
 
我不想要的是图层选择而不是对象选择,因为在灌溉图形中会有数百个交点
因此,只要选择第1层“管道和第1.5层”,我就不需要减速器。

BIGAL 发表于 2022-7-5 20:30:57

你需要一个双循环,即取所有1”的线并创建一个选择集,然后取所有1.5”的线并创建一个选择集,然后每次通过1”1循环,比较第二个选择集是否存在可能的交点,如果是这样的话,做些什么。这是可以实现的,但我没有代码。看看李发布的可能作为开始提示的内容,与obj1 obj2 true或false相交。

anupmadhu 发表于 2022-7-5 20:48:44

嗨,李
 
可以添加层选择吗

BIGAL 发表于 2022-7-5 20:54:38

这很接近,但我需要帮助它扩展PLINE,使额外的点,而不是只有1相交。
 
(defun sprinklers ( / ss1 ss2 x y len1 len2)
(vl-load-com)
(setq obj (entsel "\nPick 1st layer"))
(setq lay1 (vla-get-layer (vlax-ename->vla-object (car obj))))
(setq obj (entsel "\npick 2nd layer"))
(setq lay2 (vla-get-layer (vlax-ename->vla-object (car obj))))
(setq ss1 (ssget "X" (list (cons 8 lay1))))
(setq ss2 (ssget "X" (list (cons 8 lay2))))
(setq len1 (sslength ss1))
(setq len2 (sslength ss2))
(setq x 0
    total 0)
(repeat len1
(setq y 0)
(setq obj1 (vlax-ename->vla-object(ssname ss1 x)))
(repeat len2
(setq obj2 (vlax-ename->vla-object (ssname ss2 y)))
(setq pt (vla-intersectwith obj2 obj1 0))
(if (/= pt nil)(setq total (+ total 1))(Princ "Miss"))
(setq y (+ y 1))
) ; len2
(setq x (+ x 1))
) ; len1
(princ Total)
) ; defun
(sprinklers)

neophoible 发表于 2022-7-5 21:09:21

另一种解决方法是将所需的图层复制到单独的图形中(与块一起),然后运行程序。然后可以将结果传输回原始图形。这样,就不需要再编程了。
页: [1]
查看完整版本: 在交点o处插入块