明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 唐小僧

求助,根据已有多边形画对角线

  [复制链接]
发表于 2012-7-13 20:20:54 | 显示全部楼层
(defun c:11 ()
(vl-load-com)
(setq i 0 s nil)
(setq ss (ssget '((0 . "LWPOLYLINE"))))
(if ss (progn
         (repeat (sslength ss)
            (setq ent (entget (ssname ss i)))
            (if (= -1 (vlax-get (vlax-ename->vla-object (ssname ss i)) 'closed))
              (progn
                (foreach lst ent
                    (if (= 10 (car lst))
                     (setq s (append s (list (cdr lst))))
                    )
                )
                (setq pt 0)
                (while (> (length s) pt)
                (command "LINE" (nth pt s) (nth (if (>= (+ 2 pt) (length s))(- (+ 2 pt) (length s)) (+ 2 pt)) s) "")
                (setq pt (1+ pt))
              )
              (setq s nil)
            )
            (princ "\n所选多线段不闭合.")
            )
            (setq i (1+ i))
        )
        )
        (princ "\n未选多线段.")
)
(princ)
)
发表于 2012-7-14 00:09:24 | 显示全部楼层
太好了,继续学习
发表于 2012-7-14 07:02:45 | 显示全部楼层
感谢 dalin1985  分享源码程序!
发表于 2012-7-15 11:26:15 | 显示全部楼层
感谢 dalin1985  分享源码程序!这才是明经的大道
发表于 2013-4-5 11:48:59 | 显示全部楼层
dalin1985 发表于 2012-7-13 20:20
(defun c:11 ()
(vl-load-com)
(setq i 0 s nil)

对角线会有重叠线,哪位大侠优化一下
发表于 2013-4-6 11:51:22 | 显示全部楼层
tanle2020 发表于 2013-4-5 11:48
对角线会有重叠线,哪位大侠优化一下

是你的多段线有重复点吧
发表于 2013-4-6 15:58:11 | 显示全部楼层
dalin1985 发表于 2013-4-6 11:51
是你的多段线有重复点吧

没有啊,我就画一个普通的矩形试的
发表于 2013-4-6 18:43:37 | 显示全部楼层
tanle2020 发表于 2013-4-6 15:58
没有啊,我就画一个普通的矩形试的

还真是,4个顶点就有问题
发表于 2013-4-6 19:33:53 | 显示全部楼层
tanle2020 发表于 2013-4-6 15:58
没有啊,我就画一个普通的矩形试的

(defun c:11 ()
(vl-load-com)
(setq i 0 s nil)
(setq ss (ssget '((0 . "LWPOLYLINE"))))
(if ss (progn
         (repeat (sslength ss)
            (setq ent (entget (ssname ss i)))
            (if (= -1 (vlax-get (vlax-ename->vla-object (ssname ss i)) 'closed))
              (progn
                (foreach lst ent
                    (if (= 10 (car lst))
                     (setq s (append s (list (cdr lst))))
                    )
                )
                (setq pt 0)
                (setq len (length s))
                (if (= len 4) (setq len 2))
                (while (> len pt)
                (command "LINE" (nth pt s) (nth (if (>= (+ 2 pt) (length s))(- (+ 2 pt) (length s)) (+ 2 pt)) s) "")
                (setq pt (1+ pt))
              )
              (setq s nil)
            )
            (princ "\n所选多线段不闭合.")
            )
            (setq i (1+ i))
        )
        )
        (princ "\n未选多线段.")
)
(princ)
)
发表于 2013-4-7 08:52:46 | 显示全部楼层
dalin1985 发表于 2013-4-6 19:33
(defun c:11 ()
(vl-load-com)
(setq i 0 s nil)

解决,非常完美,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-31 01:31 , Processed in 0.152447 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表