3dpolyline方向
大家好,我试图找到一些可以检查大量三维多段线的东西,并确保它们都是从z高程的最高点到最低点绘制的。
我的测绘项目要求在下游方向绘制所有小溪,但其中一些小溪收集不正确。
我可以对它们运行反向命令,但需要先找出哪些错误。
我希望有一个LSP可以做到这一点,但如果任何人有任何其他想法,请随意扔给我!
干杯!
也许是这样的
(defun c:test (/ E I O SS)
(vl-load-com)
(if (setq ss (ssget "_:L" '((0 . "POLYLINE"))))
(progn
(repeat (setq i (sslength ss))
(setq e (ssname ss (setq i (1- i)))
o (vlax-ename->vla-object e)
);; setq
(if (and (eq (vla-get-ObjectName o) "AcDb3dPolyline")
(< (caddr (vlax-curve-getStartPoint o)) (caddr (vlax-curve-getEndPoint o)))
);; and
(command "._pedit" e "_reverse" "")
);; if
);; repeat
);; progn
);; if
(princ)
);; test
亨里克 Henrique代码的一些小改进:
(defun c:chkpoly ( / c e i s )
(setq c (getvar 'cmdecho))
(setvar 'cmdecho 0)
(if (setq s (ssget "_:L" '((0 . "POLYLINE") (-4 . "&=") (70 . )))
(repeat (setq i (sslength s))
(setq e (ssname s (setq i (1- i))))
(if (< (caddr (vlax-curve-getstartpoint e))
(caddr (vlax-curve-getendpoint e))
)
(vl-cmdf "_.pedit" e "_r" "")
)
)
)
(setvar 'cmdecho c)
(princ)
)
(vl-load-com) (princ)
少数的
使用vlax curv xxx,无需将实体转换为VLA对象,并且ssget过滤器。。。我太老了
一如既往,成为了更好的代码!
干杯 别担心! 非常感谢各位!
正是我需要的 pedit上的“反转”选项并非总是在每个autocad版本中都可用。也许你们可以添加更多功能,使其向下兼容。
页:
[1]