渐进式 多重偏移,见图片效果
本帖最后由 荒野孤行 于 2015-6-23 19:28 编辑渐进式多重偏移,图片效果如下:
附上源码:
;;; *****多重偏移 程序开始*****
(defun c:dcpy ()
(setvar "pickadd" 1)
(setvar "osmode" 15359)
(setvar "cmdecho" 0)
(princ "\n制作者QQ:583915572")
(princ "\n★功能:多重偏移曲线.")
(command "undo" "be")
(princ "\n选取曲线对象:")
(setq ss (ssget '((0 . "LINE,ARC,CIRCLE,ELLIPSE,LWPOLYLINE,SPLINE"))))
(if (not ss)
(progn (princ "\n提示:未选取曲线对象.\n") (exit))
)
(setq pydi (getdist "\n偏移距离<0.2>:"))
(if (null pydi)
(setq pydi 0.2)
)
(setq pydi_add (getdist "偏移距离增量<0>:"))
(if (null pydi_add)
(setq pydi_add 0)
)
(setq npy (getint "\n偏移次数<9>:"))
(if (null npy)
(setq npy 9)
)
(initget 1)
(setq pt1 (getpoint "\n指定偏移方向:"))
(setq i 0)
(setvar "osmode" 0)
(vl-load-com)
**** Hidden Message *****
(setvar "osmode" 15359)
(command "undo" "e")
(princ)
)
;;;*****多重偏移 程序结束*****
偏移后能否把偏移出来的东西变另外一层或者换另外一种颜色以做区分? 能不能指定一段距离直接输入段数就出来渐进的偏移
能不能写个 弧形投影的插件 有点意思,顶一个。 还不错。就是代码可以更完善一些,加入出错处理更好,另外对系统变量的修改要保存,完成程序后调用回来原来的系统变量,如setvar "pickadd" 1)
(setvar "osmode" 15359)
(setvar "cmdecho" 0) 前面关闭,后面要恢复。
对于(setq ss (ssget '((0 . "LINE,ARC,CIRCLE,ELLIPSE,LWPOLYLINE,SPLINE"))))
(if (not ss)
(progn (princ "\n提示:未选取曲线对象.\n") (exit))
)
这段判断后直接(exit)退出,函数会有出错提示,一般是判断是否选择,选择为空,则不执行后面的程序,直接提示未选择就行。
(setq a 3 b 2)
(if (>a b)
(progn
(princ a)
(princ b)
)
(princ "a是小于B的")
)
对于选择偏移方向点的时候,不确定点不会终止程序,如果对我们前面输入的数据,如偏移距离,增量,或者次数有误,那么还得错误的执行一次才能返回,不太合理。如果没有指定偏移点,则不执行,或者提示一次,再选择一次。
个人意见,仅供参考。 edata 发表于 2013-10-30 23:53
还不错。就是代码可以更完善一些,加入出错处理更好,另外对系统变量的修改要保存,完成程序后调用回来原来 ...
可以根据自己的要求进行改进,用while就可以判定是否选择偏移点了。 牛人漫天飞啊 谢谢楼主的源码,学习一下。 感谢楼主分享 放开想象力 感谢大师的分享
渐进式 多重偏移