明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9271|回复: 30

[提问] 偏移后自动两端封头

[复制链接]
发表于 2014-2-18 13:17:02 | 显示全部楼层 |阅读模式
求一个小程序,能在offset之后自动连接两端

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-9-5 12:29:37 | 显示全部楼层
     批量偏移并且填充   支持框选

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 0 反对 1

使用道具 举报

发表于 2020-3-10 23:29:50 | 显示全部楼层
本帖最后由 lee50310 于 2020-3-11 10:39 编辑
水仙的错 发表于 2019-9-11 23:13
没有一个简单的源码能解决吗?
指定距离批量偏移封口,直线,多段线都可以,不要填充

花了 一點時間 ,終於寫出來了


回复 支持 1 反对 0

使用道具 举报

发表于 2014-2-18 17:42:07 | 显示全部楼层
请问楼主是哪个专业的??
发表于 2014-2-18 19:34:19 | 显示全部楼层
  1. (defun c:tt ( / a b of p1 p2 p3 p4)
  2. (setq of (getreal "\n输入偏移距离:"))
  3. (while (setq a (car (entsel "\n选择偏移的直线:")))
  4.                 (setq p1 (cdr (assoc 10 (entget a)))
  5.                 p2 (cdr (assoc 11 (entget a)))
  6.                 )
  7.                 (command "offset" of a pause "")
  8.                 (setq b (entlast)
  9.                 p3 (cdr (assoc 10 (entget b)))
  10.                 p4 (cdr (assoc 11 (entget b)))
  11.         )
  12.         (if (equal (distance p1 p3) of 1e-6)
  13.                 (progn
  14.                         (entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p3)))
  15.                         (entmake (list '(0 . "LINE") (cons 10 p2) (cons 11 p4)))
  16.                         )
  17.                         (progn
  18.                         (entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p4)))
  19.                         (entmake (list '(0 . "LINE") (cons 10 p2) (cons 11 p3)))
  20.                         )
  21.         )
  22. )
  23. )
发表于 2014-2-18 19:39:55 | 显示全部楼层
本帖最后由 kwok 于 2014-2-18 19:45 编辑

比较简单,适合多段线直线曲线.
  1. (defun c:tt( / en en1 pt p1 p2 p3 p4)
  2.   (setvar 'osmode 0)
  3. (setq ofd (getdist "\n偏移距离:"))
  4.   (setq en (car(entsel"\n请选择线:")))
  5. (command "offset" ofd en  pause "")
  6. (setq en1 (entlast))
  7. (setq p1(vlax-curve-getstartpoint en)
  8.          p2(vlax-curve-getendpoint en)
  9.          p3(vlax-curve-getstartpoint en1)
  10.          p4(vlax-curve-getendpoint en1))  
  11. (command ".line" p1 p3 ""  ".line" p2 p4 "")
  12.   (setvar 'osmode 4133)
  13.   (princ)
  14. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
edata + 1 很给力!

查看全部评分

发表于 2014-2-18 21:46:05 | 显示全部楼层
收藏了。也需要这个!谢谢.
 楼主| 发表于 2014-2-19 09:25:56 | 显示全部楼层
q3_2006 发表于 2014-2-18 19:34

好用
但只能执行一次并且要重新输入宽度,能否循环执行并默认宽度呢?
 楼主| 发表于 2014-2-19 09:28:30 | 显示全部楼层
kwok 发表于 2014-2-18 19:39
比较简单,适合多段线直线曲线.

非常给力
可否改进循环执行呢?谢谢
发表于 2014-2-19 10:38:32 | 显示全部楼层
fan_zh 发表于 2014-2-19 09:28
非常给力
可否改进循环执行呢?谢谢

加循环:
  1. (defun c:tt( / en en1 pt p1 p2 p3 p4 dist)
  2.   (setvar 'osmode 0)
  3.     (setq dist (getdist (strcat "输入偏移距离:<"
  4.                               (rtos (getvar "OFFSETDIST")) ">")))
  5.   (if (null dist)
  6.     (setq dist (getvar "offsetdist"))
  7.     (setvar "offsetdist" dist)  )
  8.   (while
  9.   (setq en (car(entsel"\n请选择线:")))
  10. (command "offset" dist en  pause "")
  11. (setq en1 (entlast))
  12. (setq p1(vlax-curve-getstartpoint en)
  13.          p2(vlax-curve-getendpoint en)
  14.          p3(vlax-curve-getstartpoint en1)
  15.          p4(vlax-curve-getendpoint en1))  
  16. (command ".line" p1 p3 ""  ".line" p2 p4 ""))
  17.   (setvar 'osmode 4133)
  18.   (princ)
  19. )
发表于 2014-2-19 11:42:36 | 显示全部楼层
能改为可以框选就更好
 楼主| 发表于 2014-2-20 09:20:59 | 显示全部楼层
本帖最后由 fan_zh 于 2014-2-20 09:22 编辑
bai2000 发表于 2014-2-19 11:42
能改为可以框选就更好

同意,

如果能批量处理封闭直线段,如三边四边形等,就完美了

附件是批量偏移的程序,但没有两端垂直封头的功能,能结合8楼的程序吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 03:04 , Processed in 0.188042 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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