自己用的mirror
本帖最后由 hoodpinrh 于 2022-12-4 15:26 编辑(princ "\n選取物件:" )
(setq mi_ss(ssget))
(setq en(entsel "\n選取左右鏡射的水平線or垂直鏡射的垂直線:"))
(setq pts(cadr en))
(setq mpt(osnap pts "_mid"))
(command "_.MIRROR" mi_ss "" mpt "@0,10" "_N")
(command "_.MIRROR" mi_ss "" mpt "@10,0" "_N")
最後兩個command我正在想要加入判斷式進去,有人有比較好的方法判斷嗎?
我從事的工作是雷射板金展開,鏡射這指令基本都是不用不行。
想把鏡射指令用的更簡單就好
本帖最后由 kucha007 于 2022-12-4 23:52 编辑
水平OR垂直镜像,加了循环可以一直选对象(defun c:TT (/ ss pt1 pt2)
(while
(defun *error* ( msg );定义出错函数
(if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
(progn
(princ (strcat "\n错误: " msg))
(command "redraw")
(princ)
)
)
)
(if (ssget "i")
(setq ss (ssget))
(progn
(princ "\n→请选择需镜像的对象:")
(setq ss (ssget))
)
)
(if ss
(progn
(if (not tymir)(setq tymir 1)) ;1垂直,-1统一
(setq pt1 "S")
(while (= pt1 "S");取值
(initget "S s")
(if (= "S" (setq pt1 (getpoint (strcat "\n→请选择("(if (= tymir 1) "垂直" "水平")")轴上的点"":[切换S]"))))
(setq tymir (* -1 tymir)) ;1/-1
)
)
(if pt1
(progn
(if (= tymir 1)
(setq pt2 (list (+ (car pt1) 0) (+ (cadr pt1) 10000)))
(setq pt2 (list (+ (car pt1) 10000) (+ (cadr pt1) 0)))
)
(command "_.MIRROR" ss "" pt1 pt2 "N")
)
)
)
)
(command "redraw")
(princ)
)
)
本帖最后由 kucha007 于 2022-12-4 20:41 编辑
练习了一下,写了个快速镜像。可以预选对象,对称轴取的是经过所选对称轴起点和终点的直线(选圆弧或者多段线也是)。
不过我没太理解, 你是只要在水平或者垂直方向上镜像吗?
(defun c:TT (/ obj pt1 pt2)
(vl-load-com)
(if (ssget "i")
(setq ss (ssget))
(progn
(princ "\n→请选择需镜像的对象:")
(setq ss (ssget))
)
)
(setq obj (vlax-ename->vla-object (car (entsel "\n→请选择对称轴:"))))
(setq pt1 (vlax-curve-getStartPoint obj)
pt2 (vlax-curve-getEndPoint obj)
)
(command "_.MIRROR" ss "" (trans pt1 0 1) (trans pt2 0 1) "N")
(princ)
)
kucha007 发表于 2022-12-4 23:42
水平OR垂直镜像,加了循环可以一直选对象
我要好好的消化一下你的程序,
有很多像我不知道的 if 後面不是都是三個符號都是 < 、= 、> 嗎?
原來還可以像你這樣用,我又進化了一大步。
我還有一大堆內亂七八糟的想法跟程序內,要不加好友丟給你玩玩吧。 谢谢大佬的分享!!!! 是的 我要的只是線的部分,80%基本都碰到水平垂直的直線比較多。 有斜度的話我目前沒想到要怎麼做。但我會參考李麥克先生的做法的 kucha007 发表于 2022-12-4 20:40
练习了一下,写了个快速镜像。可以预选对象,对称轴取的是经过所选对称轴起点和终点的直线(选圆弧或者多段 ...
(setq obj (vlax-ename->vla-object (car (entsel "\n→请选择对称轴:"))))
原來還可以這樣組合,我一直沒發現到。
感謝你 本帖最后由 kucha007 于 2022-12-4 23:06 编辑
hoodpinrh 发表于 2022-12-4 22:07
(setq obj (vlax-ename->vla-object (car (entsel "\n→请选择对称轴:"))))
原來還可以這樣組合,我一 ...
现在就是需要选线作为对称轴,线是水平就是水平镜像咯,线是斜的也就斜着镜像了 kucha007 发表于 2022-12-4 23:42
水平OR垂直镜像,加了循环可以一直选对象
太專業了真的
我剛也在想要怎麼做循環說 hoodpinrh 发表于 2022-12-4 23:54
太專業了真的
我剛也在想要怎麼做循環說
当练习写的,互相学习。镜像类型是我作为全局变量了,可能会方便一些 kucha007 发表于 2022-12-4 23:57
当练习写的,互相学习。镜像类型是我作为全局变量了,可能会方便一些
簡單方便就好
時間可以省下很多了
這樣我又可以有多的時間想東想西了
页:
[1]
2