明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3454|回复: 11

[已解答] 单线变双线源码,求增加封闭端点

[复制链接]
发表于 2016-1-10 15:29 | 显示全部楼层 |阅读模式
10明经币
以下是无痕前辈在本坛的一个单线变双线的源码:
  1. (defun c:x2 (/ ss vss dist)
  2.     (vl-load-com)
  3.    (princ "\n单线变双v.1.1-------by 无痕.2004.2\n选择要变双的曲线:")
  4.    (setq ss (ssget  '((0 . "Arc,Circle,Ellipse,Line,LwPolyline,Polyline,Spline,XLine")) )
  5.   vss (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
  6.          dist (getdist "\n输入偏移距离:"))
  7.    (vlax-for obj vss (vla-offset obj dist)(vla-offset obj (- 0 dist))(vla-erase obj));删除原线
  8. )
演示如下:




哪位前辈能帮我改成:

增加一个选项“是否封闭”,实现下图的效果:





另外,有没有逆向操作的程序呢,


就是在小于等于某个距离下,把双线变成单线??
期待前辈们指教!!
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

简单加了一下.
发表于 2016-1-10 15:29 | 显示全部楼层
本帖最后由 kwok 于 2016-1-12 13:41 编辑

简单加了一下.
  1. ;;;;;;;单线双偏并封口
  2. (defun c:tt (/ ss dist en e1 e2 i p1 p2 p3 p4 yn lay clay olay)
  3.     (vl-load-com)
  4.    (princ "\n单线变双v.1.1-------by 无痕.2004.2\n选择要变双的曲线:")
  5.    (setq ss (ssget  '((0 . "Arc,Circle,Ellipse,Line,LwPolyline,Polyline,Spline")) )
  6.          dist (getdist "\n输入偏移距离:"))
  7.   (initget "Y N ")
  8.   (setq yn (getkword "\n[不封口<N>/封口<Y>]<N>:"))
  9.   (if (= yn "")(setq yn "N"))
  10.   (setq i 0)
  11.   (repeat (sslength ss)
  12.           (setq obj (vlax-ename->vla-object(ssname ss i)) i (1+ i))
  13.      (vla-offset obj dist) (setq e1 (entlast))
  14.      (vla-offset obj (- 0 dist)) (setq e2 (entlast))
  15.      (vla-erase obj);删除原线
  16. (if (= yn "Y")(progn
  17.       (setq lay (entget  e1)
  18.            clay (cdr (assoc 8  lay))
  19.            olay (getvar "clayer"))
  20.       (setvar "clayer" clay)
  21.      (setq p1(vlax-curve-getstartpoint e1)
  22.            p2(vlax-curve-getendpoint e1)
  23.            p3(vlax-curve-getstartpoint e2)
  24.            p4(vlax-curve-getendpoint e2))
  25. (command ".pline" "non" p1 "non" p3 ""  ".pline" "non" p2 "non" p4 "")
  26. (setvar "clayer" olay)
  27.    ))
  28. )
  29. (princ))
回复

使用道具 举报

 楼主| 发表于 2016-1-11 10:11 | 显示全部楼层
热心的朋友帮助下我
回复

使用道具 举报

 楼主| 发表于 2016-1-11 15:03 | 显示全部楼层
kwok 发表于 2016-1-11 14:08
简单加了一下.

感谢你的回复,加得很好.不过你用的是COMMAND,导致最后生成的对象的属性和原来SSGET的不一样,最后生成的对象是当前层的属性.
回复

使用道具 举报

发表于 2016-1-11 15:46 | 显示全部楼层
能把原来线不删变为中心线更好
回复

使用道具 举报

发表于 2016-1-11 19:59 | 显示全部楼层
;; 伪源码,用不上别下载

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2016-1-12 13:44 | 显示全部楼层
言社长 发表于 2016-1-11 15:03
感谢你的回复,加得很好.不过你用的是COMMAND,导致最后生成的对象的属性和原来SSGET的不一样,最后生成的对 ...

3楼已更新.
回复

使用道具 举报

发表于 2016-1-12 21:29 | 显示全部楼层
bai2000 发表于 2016-1-11 15:46
能把原来线不删变为中心线更好

简单, (vla-erase obj);删除原线----改为 ;;(vla-erase obj);就不删除原线
回复

使用道具 举报

发表于 2016-1-14 14:38 | 显示全部楼层
回楼上:怎么改为中心线呢?
回复

使用道具 举报

发表于 2016-1-16 11:13 | 显示全部楼层
这个强大呀
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 07:32 , Processed in 0.257858 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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