尘缘一生 发表于 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

回复---效率为王----回复完毕
页: 1 2 [3] 4
查看完整版本: 简单的代码,作用不一定小!