grouch19 发表于 2022-7-6 06:19:06

3dpolyline方向

大家好,
 
我试图找到一些可以检查大量三维多段线的东西,并确保它们都是从z高程的最高点到最低点绘制的。
 
我的测绘项目要求在下游方向绘制所有小溪,但其中一些小溪收集不正确。
 
我可以对它们运行反向命令,但需要先找出哪些错误。
 
我希望有一个LSP可以做到这一点,但如果任何人有任何其他想法,请随意扔给我!
 
干杯!

hmsilva 发表于 2022-7-6 06:39:02

 
也许是这样的
 

(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

 
亨里克

Lee Mac 发表于 2022-7-6 06:39:53

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)

hmsilva 发表于 2022-7-6 06:56:24

 
少数的
使用vlax curv xxx,无需将实体转换为VLA对象,并且ssget过滤器。。。我太老了
一如既往,成为了更好的代码!
干杯

Lee Mac 发表于 2022-7-6 06:59:35

别担心!

grouch19 发表于 2022-7-6 07:09:20

非常感谢各位!
正是我需要的

pBe 发表于 2022-7-6 07:20:39

pedit上的“反转”选项并非总是在每个autocad版本中都可用。也许你们可以添加更多功能,使其向下兼容。
页: [1]
查看完整版本: 3dpolyline方向