- UID
- 785142
- 积分
- 202
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2019-3-15
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 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
|
-
|