找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 580|回复: 2

[编程申请] 帮忙,修改多重偏移的代码

[复制链接]
发表于 2019-5-28 13:35:20 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 lizhaojun45 于 2019-5-30 22:37 编辑

从论坛上找到的代码,多距偏移。
我输入命令OF+回车-选择偏移对象-输入150/300/600/1200(A线向上偏移150得到B线,B线向上偏移300得到C线,C线向上偏移600得到D线,D线向上偏移1200得到E线),偏移完成后,我想要的结果是左边的结果,但是得到的却是右边的结果,
请大师们,帮忙改一下代码。最好是把操作顺序也改一下,改成先输入偏移距离,然后在选择偏移对象。最好是生成的对象的颜色变成红色或绿色。
注:里面的:偏移距离*偏移次数的功能要保留下来,不能删除。代码和效果图如下。
;;;;【多重偏移OF】
;;;【上下左右的原则如:横向&斜线直线:+数向上/负数向下,竖向直线:+数向左/负数向右】
;;;【多义线:+数向外偏移,负数向内偏移】
(defun c:OF (/ d1 d2 ss strl dl s i)
  (if (and (xdrx_prompt "\n选取要多重偏移的直线/多义线<退出>:")
           (setq ss (ssget '((0 . "*line,circle,arc,ellipse"))))
      )
    (progn
      (while (/= ""
                 (setq strl (getstring "\n输入偏移距离(偏移方向+ -,重复*),以/号分隔<退出>: "))
             )
        (xdrx_begin)
        (setq dl (xdrx_string_split strl "/"))
        (foreach d dl
          (mapcar '(lambda (x)
                     (setq d2 nil)
                     (setq d1 (xdrx_string_split x "*"))
                     (if (= (length d1) 2)
                       (progn (setq i 0)
                              (repeat (atoi (cadr d1))
                                (setq d2 (cons (* (setq i (1+ i)) (atof (car d1))) d2))
                              )
                       )
                       (progn (setq d2 (list (atof (car d1)))))
                     )
                     (mapcar '(lambda (y) (xdrx_curve_getoffsetcurves ss y)) d2)
                   )
                  dl
          )
        )
        (xdrx_end)
      )
    )
  )
  (princ)
)
源代码来自:http://bbs.xdcad.net/forum.php?m ... 0%D6%D8%C6%AB%D2%C6

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

已领礼包: 19个

财富等级: 恭喜发财

发表于 2019-5-29 10:59:57 | 显示全部楼层
原来代码的逻辑很好啊
你选好对象后,
可以循环输入距离,偏移不同的值。

点评

我一次偏移几根线出来,现在程序,都是基于,选择的线的绝对距离,我要的是,相对于刚生成的线的距离。 我输入距离后,插件出来的结果,是图片右边的结果,我要是左边的结果。  详情 回复 发表于 2019-5-29 14:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-29 14:36:27 | 显示全部楼层
Lisphk 发表于 2019-5-29 10:59
原来代码的逻辑很好啊
你选好对象后,
可以循环输入距离,偏移不同的值。

我一次偏移几根线出来,现在程序,都是基于,选择的线的绝对距离,我要的是,相对于刚生成的线的距离。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 10:00 , Processed in 0.312521 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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