原地复制一个
再请教下,镜像后的对象怎么选择?
(setq ss1 (ssadd))
(repeat (sslength ss)
(setq ent (ssname ss 0)) ; 获取选择集中的第一个对象
(setq pt0(xyp-9Pt ent 5))
(setq vlaObj (vlax-ename->vla-object ent)) ; 将实体名称转换为 VLA 对象
(setq y (* -2 (- (cadr pt0) (cadr pt1))))
(setq moveDist (/ y (s_tan ang)))
(setq pt3 (mapcar '+ pt1 pt2))
(setq pt3 (mapcar '/ pt3 '(2 2 2))) ; 计算镜像线中点
(setq vlaObjCopy(vla-Mirror vlaObj (vlax-3D-point pt1) (vlax-3D-point pt2)) ); 镜像对象
(ssadd (vlax-vla-object->ename vlaObjcopy) ss1)
这么加选择集为啥把镜像前的也给加进去了呢? sandyvs 发表于 2023-6-5 11:44
再请教下,镜像后的对象怎么选择?
(setq ss1 (ssadd))
(repeat (sslength ss)
应该是代码其余部分有问题吧(defun lm-get-Centroid (ty / obj pt x y)
(setq obj (vlax-ename->vla-object ty))
(vla-getboundingbox obj 'p1 'p2)
(mapcar 'set'(x1 y1) (vlax-safearray->list p1 ))
(mapcar 'set'(x2 y2) (vlax-safearray->list p2 ))
(setq pt(list (/(+ x1 x2)2.0) (/(+ y1 y2)2.0)))
pt
)
(setq
ss1 (ssadd)
ss(ssget)
pt1(getpoint)
pt2(getpoint)
i 0
)
(repeat (sslength ss)
(setq ent (ssname ss i)) ; 获取选择集中的第一个对象
(setq pt0(lm-get-Centroid ent))
(setq vlaObj (vlax-ename->vla-object ent)) ; 将实体名称转换为 VLA 对象
(setq vlaObjCopy(vla-Mirror vlaObj (vlax-3D-point pt1) (vlax-3D-point pt2)) ); 镜像对象
(ssadd (vlax-vla-object->ename vlaObjcopy) ss1)
(setq i (1+ i))
)
(sssetfirst nil ss1) 飞雪神光 发表于 2023-6-5 13:23
应该是代码其余部分有问题吧
完整在这,后面就还有一个移动操作。更换了您的函数。http://bbs.mjtd.com/forum.php?mod=viewthread&tid=187946&page=1&extra=#pid949114
好像是(sssetfirst nil ss1)这句的原因,我还不知道它是什么作用,没看懂。。
高版本可以用,但在2010上还是有问题 飞雪神光 发表于 2023-6-5 13:23
应该是代码其余部分有问题吧
怎样判断一个图元是否镜像
页:
1
[2]