找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1979|回复: 7

[求助] 变双线可封口

[复制链接]

已领礼包: 23个

财富等级: 恭喜发财

发表于 2017-3-13 14:05:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
各位大神,这个是我从论坛里找变双线插件,现在有两个问题请各位好心人帮忙给改一下。问题1:所变双线是输入数什的一倍,比如我输入1,变后的双线就是2了。想改为输入几,变后就是几。问题2:默认是不封口,每次都要输入“Y|”,尝试着改动"Y""N"达不到想要的效果。请高手们给改一下。
(defun c:ddk(/ ss dist en e1 e2 i p1 p2 p3 p4 yn lay clay olay)
    (vl-load-com)
   (princ "\n选择要变双的曲线:")
   (setq ss (ssget  '((0 . "Arc,Circle,Ellipse,Line,LwPolyline,Polyline,Spline")) )
         dist (getdist "\n输入双线的距离:"))
  (initget "Y N ")
  (setq yn (getkword "\n[不封口<N>/封口<Y>]<N>:"))
  (if (= yn "")(setq yn "N"))
  (setq i 0)
  (repeat (sslength ss)
          (setq obj (vlax-ename->vla-object(ssname ss i)) i (1+ i))
     (vla-offset obj dist) (setq e1 (entlast))
     (vla-offset obj (- 0 dist)) (setq e2 (entlast))
     (vla-erase obj);删除原线
(if (= yn "Y")(progn
      (setq lay (entget  e1)
           clay (cdr (assoc 8  lay))
           olay (getvar "clayer"))
      (setvar "clayer" clay)
     (setq p1(vlax-curve-getstartpoint e1)
           p2(vlax-curve-getendpoint e1)
           p3(vlax-curve-getstartpoint e2)
           p4(vlax-curve-getendpoint e2))
(command ".pline" "non" p1 "non" p3 ""  ".pline" "non" p2 "non" p4 "")
(setvar "clayer" olay)
   ))
)
(princ))

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-13 15:05:28 | 显示全部楼层
把你的代码 格式化下,然后看看这个帖子,先把你代码贴好看

http://bbs.xdcad.net/thread-667472-1-1.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

 楼主| 发表于 2017-3-13 16:05:47 | 显示全部楼层
  1. (defun c:ddk(/ ss dist en e1 e2 i p1 p2 p3 p4 yn lay clay olay)
  2.     (vl-load-com)
  3.    (princ "\n选择要变双的曲线:")
  4.    (setq ss (ssget  '((0 . "Arc,Circle,Ellipse,Line,LwPolyline,Polyline,Spline")) )
  5.          dist (getdist "\n输入双线的距离:"))
  6.   (initget "Y N ")
  7.   (setq yn (getkword "\n[不封口<N>/封口<Y>]<N>:"))
  8.   (if (= yn "")(setq yn "N"))
  9.   (setq i 0)
  10.   (repeat (sslength ss)
  11.           (setq obj (vlax-ename->vla-object(ssname ss i)) i (1+ i))
  12.      (vla-offset obj dist) (setq e1 (entlast))
  13.      (vla-offset obj (- 0 dist)) (setq e2 (entlast))
  14.      (vla-erase obj);删除原线
  15. (if (= yn "Y")(progn
  16.       (setq lay (entget  e1)
  17.            clay (cdr (assoc 8  lay))
  18.            olay (getvar "clayer"))
  19.       (setvar "clayer" clay)
  20.      (setq p1(vlax-curve-getstartpoint e1)
  21.            p2(vlax-curve-getendpoint e1)
  22.            p3(vlax-curve-getstartpoint e2)
  23.            p4(vlax-curve-getendpoint e2))
  24. (command ".pline" "non" p1 "non" p3 ""  ".pline" "non" p2 "non" p4 "")
  25. (setvar "clayer" olay)
  26.    ))
  27. )
  28. (princ))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-3-13 20:57:48 | 显示全部楼层
要改 默认是 封口(Y),试试改这两行

(setq yn (getkword "\n[不封口<N>/封口<Y>]<Y>:"))
  (if (= yn "")(setq yn "Y"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-3-13 21:00:55 | 显示全部楼层
你的代码是 你输入的距离是 每侧的距离,所以整个的宽度就是两个DIST了。

输入的变量是保存的 dist 中, 那么你把下面的 遇到dist的地方改成除以2就行了。 dist --> (/ dist 2.0)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

 楼主| 发表于 2017-3-14 15:00:08 | 显示全部楼层
  1. 是将(vla-offset obj dist) (setq e1 (entlast))
  2.      (vla-offset obj (- 0 dist)) (setq e2 (entlast))  
  3. 改为(vla-offset obj / dist 2.0) (setq e1 (entlast))
  4.      (vla-offset obj (- 0 / dist 2.0)) (setq e2 (entlast))

我这样改后试过,提示实参太多
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-14 15:23:12 | 显示全部楼层

你仔细看看

是将 dist  改为  (/ dist 2.0) , 你改对了吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

 楼主| 发表于 2017-3-14 15:38:42 | 显示全部楼层

谢谢,这次行了,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 12:34 , Processed in 0.165512 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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