明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 999999

有没有大神有多段线偏移然后两端闭合的插件

[复制链接]
发表于 2020-11-7 15:46:25 | 显示全部楼层
(defun c:gg5 ( /  ss i e pts ob width pac y x sss)
        (SETQ OS (GETVAR "OSMODE"))
        (setvar "cmdecho" 0)
        (setq pac (getvar 'peditaccept))
        (setvar 'peditaccept 1)
        (if (not width) (setq width 1.00))
        (setq width (cond ((getdist (strcat "\n 输入偏移宽度 <" (rtos width 2 2) ">: "))) (width)))
(if (setq ss (ssget '((0 . "LWPOLYLINE,LINE"))))
          (repeat (setq i (sslength ss))
                  (setq e (ssname ss (Setq i (1- i))) sss (ssadd))
                  (setq pts (mapcar '(lambda (y) (list (vlax-curve-getStartPoint y) (vlax-curve-getEndPoint y)))
                            (mapcar 'car (mapcar '(lambda (x)
                                                                     (setq ob (vlax-invoke (vlax-ename->vla-object e) 'Offset x))
                                                                                 (ssadd (entlast) sss) ob ) (list (setq h (* 0.5 width)) (- h))))))

                  (mapcar '(lambda (k l) (entmakex (list (cons 0 "LINE") (cons 10 k) (cons 11 l)))
                                         (ssadd (entlast) sss))
                  (car pts)(cadr pts))
                  (command "_.pedit" "m" sss ""  "j" 0.0 "")
                  (entdel e)))
  (setvar 'peditaccept pac)
        (SETVAR "OSMODE" OS )
  (princ)
) 没币的帮你们坐下好事,你们要感谢就感谢14#的吧

点评

谢谢分享  发表于 2020-11-7 17:11
回复 支持 4 反对 0

使用道具 举报

发表于 2021-2-18 16:55:13 | 显示全部楼层
太有用了,感谢楼上的各位大佬!!!
发表于 2021-3-4 17:22:27 | 显示全部楼层
试了下,可用!
发表于 2021-4-20 16:09:28 | 显示全部楼层
流动的清泉 发表于 2020-11-7 15:46
(defun c:gg5 ( /  ss i e pts ob width pac y x sss)
        (SETQ OS (GETVAR "OSMODE"))
        (se ...

真不赖,好用
发表于 2021-12-15 17:15:46 | 显示全部楼层

有点小问题,望大师稍微调整下,原程序执行一次就只能选一根线偏移,不按取消键一直可以循环选线偏移就好,
发表于 2021-12-17 10:07:38 | 显示全部楼层
GDFGFGF 发表于 2021-12-15 17:15
有点小问题,望大师稍微调整下,原程序执行一次就只能选一根线偏移,不按取消键一直可以循环选线偏移就好 ...


试试  ,好用就给评分加个币
(defun c:GG( /  ss i e pts ob width pac y x sss)
        (SETQ OS (GETVAR "OSMODE"))
        (setvar "cmdecho" 0)
        (setq pac (getvar 'peditaccept))
        (setvar 'peditaccept 1)
        (if (not width) (setq width 1.00))
        (setq width (cond ((getdist (strcat "\n 输入偏移宽度 <" (rtos width 2 2) ">: "))) (width)))
        (while
                (if (setq ss (ssget ":s" '((0 . "LWPOLYLINE,LINE"))))
                        (repeat (setq i (sslength ss))
                                (setq e (ssname ss (Setq i (1- i))) sss (ssadd))
                                (setq pts (mapcar '(lambda (y) (list (vlax-curve-getStartPoint y) (vlax-curve-getEndPoint y)))
                                                                                (mapcar 'car (mapcar '(lambda (x)
                                                                                                                                                                                (setq ob (vlax-invoke (vlax-ename->vla-object e) 'Offset x))
                                                                                                                                                                                (ssadd (entlast) sss) ob ) (list (setq h (* 0.5 width)) (- h))))))
                                (mapcar '(lambda (k l) (entmakex (list (cons 0 "LINE") (cons 10 k) (cons 11 l)))
                                                                         (ssadd (entlast) sss))
                                        (car pts)(cadr pts))
                                (command "_.pedit" "m" sss ""  "j" 0.0 "")
                                (entdel e)
                        )
                )
        )
  (setvar 'peditaccept pac)
        (SETVAR "OSMODE" OS )
  (princ)
)

发表于 2021-12-17 13:33:39 | 显示全部楼层
xmq1103 发表于 2021-12-17 10:07
试试  ,好用就给评分加个币
(defun c:GG( /  ss i e pts ob width pac y x sss)
        (SETQ OS (GE ...

大师我说的是这段程序。有点小问题,望大师稍微调整下,原程序执行一次就只能选一根线偏移,不按取消键一直可以循环选线偏移就好。调好一定给大师评分加币



(defun c:nm( / en en1 pt p1 p2 p3 p4 dist)
(vl-load-com)  
    (setq dist (getdist (strcat "\n输入偏移距离:<" (rtos (getvar "OFFSETDIST")) ">")))
  (if (null dist)
    (setq dist (getvar "offsetdist"))
    (setvar "offsetdist" dist)  )
;;;(while        ;;加循环
  (setq en (car(entsel "\n请选择线:")))
  (setq   p1(vlax-curve-getstartpoint en)
         p2(vlax-curve-getendpoint en) )
  (setvar "cmdecho" 1)
(command "offset" dist en  pause "")
(setvar "cmdecho" 0)
(setq en1 (entlast))
(setq   p3(vlax-curve-getstartpoint en1)
         p4(vlax-curve-getendpoint en1))  
(vl-cmdf "line" p1 p3 "")(setq en2 (entlast))
(vl-cmdf "line" p2 p4 "")(setq en3 (entlast))
(command "_.SELECT" en en2 en3 "")
(setq S3 (ssget "P"))
(command "pedit" en1 "j" S3 "" "");;以偏移后的对象所在层连接所有线
(princ)
)
发表于 2021-12-18 20:42:50 | 显示全部楼层
GDFGFGF 发表于 2021-12-17 13:33
大师我说的是这段程序。有点小问题,望大师稍微调整下,原程序执行一次就只能选一根线偏移,不按取消键一 ...

(defun c:nm( / en en1 pt p1 p2 p3 p4 dist)
        (vl-load-com)  
        (setq dist (getdist (strcat "\n输入偏移距离:<" (rtos (getvar "OFFSETDIST")) ">")))
  (if (null dist)
    (setq dist (getvar "offsetdist"))
    (setvar "offsetdist" dist)  )
        (while        ;;加循环
                (setq en (car(entsel "\n请选择线:")))
                (setq   p1(vlax-curve-getstartpoint en)
                        p2(vlax-curve-getendpoint en) )
                (setvar "cmdecho" 1)
                (command "offset" dist en  pause "")
                (setvar "cmdecho" 0)
                (setq en1 (entlast))
                (setq   p3(vlax-curve-getstartpoint en1)
                        p4(vlax-curve-getendpoint en1))  
                (vl-cmdf "line" p1 p3 "")(setq en2 (entlast))
                (vl-cmdf "line" p2 p4 "")(setq en3 (entlast))
                (command "_.SELECT" en en2 en3 "")
                (setq S3 (ssget "P"))
                (command "pedit" en1 "j" S3 "" "");;以偏移后的对象所在层连接所有线
        )
        (princ)
)
发表于 2021-12-18 20:44:14 | 显示全部楼层
GDFGFGF 发表于 2021-12-17 13:33
大师我说的是这段程序。有点小问题,望大师稍微调整下,原程序执行一次就只能选一根线偏移,不按取消键一 ...

一个捣鼓法,把while   加上就行了
发表于 2022-2-11 11:26:09 | 显示全部楼层
建议增加填充功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 07:27 , Processed in 0.176840 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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