在交点o处插入块
它可以用于计算灌溉网络中的配件数量,以计算所需的减速器数量。ie 1“将是单独的层,1.5”将在不同的层,通过计算插入的块,我们得到了1.5*1”号减速机 您可以修改此代码以满足您的需要。 先生
我不想要的是图层选择而不是对象选择,因为在灌溉图形中会有数百个交点
因此,只要选择第1层“管道和第1.5层”,我就不需要减速器。 你需要一个双循环,即取所有1”的线并创建一个选择集,然后取所有1.5”的线并创建一个选择集,然后每次通过1”1循环,比较第二个选择集是否存在可能的交点,如果是这样的话,做些什么。这是可以实现的,但我没有代码。看看李发布的可能作为开始提示的内容,与obj1 obj2 true或false相交。 嗨,李
可以添加层选择吗 这很接近,但我需要帮助它扩展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)
另一种解决方法是将所需的图层复制到单独的图形中(与块一起),然后运行程序。然后可以将结果传输回原始图形。这样,就不需要再编程了。
页:
[1]