帮我拿双镜鳕鱼
我想镜像一个区块,但与平常略有不同。第一部分应该像镜子通常那样:
1、选择对象
2.选择要镜像到的行
->现在“新块”出现(新的镜像版本)
3、要求删除原件->不保留。
然后,该命令不应停止,而是执行一些额外的操作:
4、再次镜像“新块”
5、镜像线:点1为其插入点
6、镜像线:点2为插入点+180转。
7、要求删除原件->是删除。
通过这种方式,可以镜像一个块,但结果是一个按其应该显示的块,而不是镜像的块。
我只走了这么远,但没用。
另外:我该如何设置它,使其对多个区块进行trich。。。(与原始镜像功能类似)?
缺乏知识->与之斗争。
(defun C:mm (/)
(setq orth1 (getvar "orthomode") ; current orthomode
osm1(getvar "osmode"); current osnapmode
ss (ssadd) ; create empty selection set
)
(setvar "orthomode" 1); turn on ortho
(setvar "osmode" 1) ; turn on osnap
(setq mirpt1 (getpoint "First mirror point")
mirpt2 (getpoint mirpt1 "Second mirror point")
)
(setq ent (ssget)) ; put object(s) in ent
(setvar "osmode" 0) ; turn osmode off
(command "mirror" ent "" pt1 pt2 "n") ; mirror the object(s) and retain original
(ssadd (entlast) ss) ; add the last created entity in the selection set ss
(setq inspt1 (cdr (assoc 10 ss)) ; Insertion Point of the last created entity
rot (cdr (assoc 50 ss)) ; rotation of the last created entity
inspt2 (polar inspt (+ rot pi) 1000)
; create second point in line with inspt1
)
(command "mirror" ss "" inspt1 inspt2 "y")
; mirror the object(s) and delete the original
(setvar "orthomode" orth1)
(setvar "osmode" osm1)
)
一旦你镜像了第一个,你就不能从那时开始复制吗? 马可,
您的方法仅对具有中心基点的块有效,请参见以下内容:
(defun c:mm2 (/ i ss pt1 pt2 tmp ent p1 p2)
(vl-load-com)
(if (and (setq i -1 ss (ssget "_:L" '((0 . "INSERT"))))
(setq pt1 (getpoint "\nSelect First Point: "))
(setq pt2 (getpoint pt1 "\nSelect Second Point: ")))
(progn
(setq tmp (entmakex (list (cons 0 "LINE") (cons 10 pt1) (cons 11 pt2))))
(while (setq ent (ssname ss (setq i (1+ i))))
(setq p2 (vlax-curve-getClosestPointto tmp
(setq p1 (cdr (assoc 10 (entget ent)))) t))
(vla-move (vla-copy (vlax-ename->vla-object ent))
(vlax-3D-point p1)
(vlax-3D-point (polar p1 (angle p1 p2) (* 2. (distance p1 p2))))))
(entdel tmp)))
(princ))
(defun c:mm3 (/ i ss pt1 pt2 ent ss obj Mi Ma cen tmp)
(vl-load-com)
(if (and (setq i -1 ss (ssget "_:L" '((0 . "INSERT"))))
(setq pt1 (getpoint "\nSelect First Point: "))
(setq pt2 (getpoint pt1 "\nSelect Second Point: ")))
(while (setq ent (ssname ss (setq i (1+ i))))
(setq cen (polar (car ptlst) (apply (function angle) ptLst)
(/ (apply (function distance) ptlst) 2.))
tmp (vla-mirror (vlax-ename->vla-object ent) (vlax-3D-point pt1) (vlax-3D-point pt2)))
(vla-getBoundingBox tmp 'Mi 'Ma)
(setq ptlst (mapcar (function vlax-safearray->list) (list Mi Ma)))
(vla-mirror tmp (vlax-3D-point cen) (vlax-3D-point (polar cen (/ pi 2.) 1.)))
(vla-delete tmp)))
(princ))
伙计们,
我现在要参加冬令营,一直到1月4日。
我是舒尔,我将在该日期之前检查代码!
谢谢你的回复,我这个周末会在家测试代码。
祝你圣诞快乐,新年快乐!!
干杯
马可。 也祝你圣诞快乐! 这会很有用,因为。。。?我想这就是让我头脑迷糊的部分:
“通过这种方式,可以镜像一个块,但结果是一个按其应该显示的块,而不是镜像的块。”
一个看起来应该是(像原始块一样)的块不就是它自己的副本吗? 英雄联盟
这正是我想要弄明白的。 我想我知道OP想要做什么。他正在为AutoDesk宣布AutoCAD中将不再包含复制命令的那一天做准备。 我认为这个想法是为了获得镜像的位置效果,但没有视觉上的差异(如你所说,复制-这就是我上面代码的一部分所做的)。 镜像的位置效应?这不是“复制/旋转”命令的作用吗?
页:
[1]
2