尘缘一生
发表于 2014-6-18 06:06:09
本帖最后由 尘缘一生 于 2014-6-22 05:30 编辑
bdboy 发表于 2014-6-17 11:11 static/image/common/back.gif
最好是有个镜像点,不然没什么实际意义,反而费事了
我哪个按钮图标还有一个,就是选线镜像的,我没有发,为什么?实在是没有内涵,就是改造的MIRROR,CAD原MIRROR,要求给出2个点,这个要求选线,因为很简单,当时是模仿PKPM的,记得当时是95年,我在设计院正负责给大家“甩图版”,可大家都说电脑画图慢,不愿意学,才逼得写LISP,哈哈.....
那么我也发上来,演示一下吧:
记得关闭“捕捉”与“正交”,程序内没写!;;选镜像线进行MIRROR
(defun C:J-MIRROR(/ s pt1 pt2 pt3 pt4)
(setq s(ssget))
(setq pt1 (entsel "\n请选择镜像对称轴一直线实体:"))
(setq pt2 (nth 1 pt1))
(setq pt1 (osnap pt2 "NEAR"))
(setq pt3 (osnap pt1 "ENDPOINT"))
(setq pt4 (osnap pt1 "MIDPOINT"))
(command "MIRROR" S "" pt3 pt4)
)
(princ)
lucas_3333
发表于 2014-6-18 08:27:40
尘缘一生 发表于 2014-6-18 06:06 static/image/common/back.gif
我哪个按钮图标还有一个,就是选线镜像的,我没有发,为什么?实在是没有内涵,就是改造的MIR ...
看来您的每一段代码背后都有一个故事啊
直线镜像的代码论坛很多
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=93048
ps122hb
发表于 2014-6-18 14:32:35
确实不错,收下了
enn09
发表于 2014-6-19 21:33:50
看到二十年前我就震惊了,楼主好多好东西呢吧,不要藏着,拿出来给大家看看嘛
uvyx
发表于 2014-6-20 14:43:44
谢谢分享,学习学习下~~~
尘缘一生
发表于 2014-6-20 20:14:30
根据大家的群策群力,总结下此贴代码,我加了些系统变量控制,因为要保证此4个命令的顺利进行,需要关闭捕捉与正交的!;;----------------------------------------------------------------------------
(defun SSET( )
(setq oldos (getvar "OSMODE"))
(setq oldorh (getvar "ORTHOMODE"))
(setq oldsn (getvar "SNAPMODE"))
(setvar "OSMODE" 0) ;;;捕捉关闭
(setvar "ORTHOMODE" 0) ;;;正交关闭
(setvar "SNAPMODE" 0);;;;实体捕捉关闭
(setvar "CMDECHO" 0)
(setvar "TEXTEVAL" 1)
)
;;---------------------------------------------------------------------------
(defun SSET1( )
(setvar "ORTHOMODE" oldorh);;;恢复正交
(setvar "OSMODE" oldos);;;恢复正交
(setvar "SNAPMODE" oldsn) ;;;;恢复实体捕捉
(setvar "CMDECHO" 1)
)
;;----------------------------------------------------------------------------
(defun C:H-MR-MV (/ s pt2 pt3)
(command)
(SSET)
(if (setq s(ssget))
(progn
(setq pt2 (nth 1(grread 5)))
(setq pt3 (polar pt2 (* 0.5 pi) 2.5))
(command "mirror" s "" pt2 pt3 "y" "move" "p" "" pt3 pause)
)
)
(SSET1)
(princ)
)
;;---------------------------------------------------------------------------
(defun C:V-MR-MV (/ s pt2 pt3)
(command)
(SSET)
(if (setq s(ssget))
(progn
(setq pt2 (nth 1(grread 5)))
(setq pt3 (polar pt2 0 2.5))
(command "mirror" s "" pt2 pt3 "y" "move" "p" "" pt3 pause)
)
)
(SSET1)
(princ)
)
;;------------------------------------------------------------------------------
(defun C:H-MR-MV-N (/ s ss s1 pt2 pt3)
(command)
(SSET)
(if (setq s(ssget))
(progn
(setq pt2 (nth 1(grread 5)))
(setq pt3 (polar pt2 (* 0.5 pi) 2.5))
(setq s1 (entlast) ss (ssadd))
(command "MIRROR" s "" PT2 pt3 "N")
(while (setq s1 (entnext s1))
(ssadd s1 ss)
)
(command "MOVE" ss "" PT3 PAUSE)
))
(SSET1)
(princ)
)
;;------------------------------------------------------------------------------
(defun C:V-MR-MV-N (/ s ss s1 pt2 pt3)
(command)
(SSET)
(if (setq s(ssget))
(progn
(setq pt2 (nth 1(grread 5)))
(setq pt3 (polar pt2 0 2.5))
(setq s1 (entlast) ss (ssadd))
(command "MIRROR" s "" PT2 pt3 "N")
(while (setq s1(entnext s1))
(ssadd s1 ss)
)
(command "MOVE" ss "" PT3 PAUSE)
))
(SSET1)
(princ)
)
wzg356
发表于 2014-6-21 22:30:38
致敬,那个年代就玩cad了。
llsheng_73
发表于 2014-6-22 00:13:29
尘缘一生 发表于 2014-6-17 05:54 static/image/common/back.gif
93年大学毕业,单位只有一台386,用的是AUTOCAD10版,根本就没有VLISP等高级开发工具。环境是DOS ...
93年单位上有386已经是很不错了,我97年到单位只看到一台坏掉了的286的时候郁闷了,旷课3年半天天泡机房的结果是单位没电脑(也不全对,给了个pc1500,结果把记录外业测量数据的程序开头加了段开机音乐后给P了一顿),直到2000年第一次看到lisp程序(那个时候对R2000又爱又恨——毕竟比R14人性化但破解版本经常挂掉),成天瞎弄把人家的三段程序弄了10来天终于被我合并成了一个,后来又没电脑了,直到04年终于有电脑可用了
zhongys
发表于 2015-1-12 21:10:35
比较经典的程式
mub001
发表于 2015-2-10 22:18:23
回复---效率为王----回复完毕