原位缩放
本帖最后由 李青松 于 2019-6-19 11:12 编辑怎样改成基点是所选物体共同的中心。
选对象--运行缩放命令--缩放的基点默认在所选对象的中心--输入缩放的比例--回车结束
(defun c:tt(/ sc a b)
(if (null oldscale) (setq oldscale 2.0))
(initget 6)
(setq sc (getreal (strcat "\n缩放倍数<" (rtos oldscale 2 2)">:")))
(if (null sc) (setq sc oldscale) (setq oldscale sc))
(while (ssget)
(vlax-for obj
(vla-get-ActiveSelectionSet
(vla-get-ActiveDocument (vlax-get-acad-object)))
(if (not (VL-CATCH-ALL-ERROR-P
(VL-CATCH-ALL-APPLY
'vla-GetBoundingBox
(list obj 'a 'b))))
(progn
(vla-ScaleEntity
obj
(vlax-3d-point
(mapcar
'*
'(0.5 0.5 0.5)
(apply 'mapcar
(cons '+
(mapcar 'vlax-safearray->list
(list a b))))))
sc
)
)
)
)
)
(princ)
)
你可以参考一下
http://bbs.xdcad.net/thread-723067-1-1.html 本帖最后由 wen1235 于 2019-6-14 15:24 编辑
;;; 是这样子吗?
(defun c:tc (/ sc a b)(if (null oldscale) (setq oldscale 2.0)) (initget 6)
(setq sc (getreal (strcat "\n缩放倍数<" (rtos oldscale 2 2) ">:")))
(if (null sc) (setq sc oldscale) (setq oldscale sc))
(while (ssget)
(vlax-for obj (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list obj 'a 'b))))
(setq ls1 (cons (vlax-safearray->list a) ls1)
ls2 (cons (vlax-safearray->list b) ls2)
)
)
)
(if (and p1 p2 (setq p (vlax-3d-point (mapcar '* '(0.5 0.5 0.5) (apply 'mapcar (cons '+ (mapcar '(lambda (a b) (apply 'mapcar (cons a b))) '(min max) (list ls1 ls2))))))))
(vlax-for obj (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
(vla-scaleentity obj p sc)
)
)
)
(princ)
)
wen1235 发表于 2019-6-14 15:01
;;; 是这样子吗?
(defun c:tc (/ sc a b)(if (null oldscale) (setq oldscale 2.0)) (initget 6) ...
运行不了。选对象--运行缩放命令--缩放的基点默认在所选对象的中心--输入缩放的比例--回车结束
自贡黄明儒 发表于 2019-6-14 10:36
你可以参考一下
http://bbs.xdcad.net/thread-723067-1-1.html
我是想以共同的中心进行缩放 本帖最后由 cqf1980 于 2019-12-30 15:30 编辑
遇到同样的问题,
楼主说的应该这样的。
几何图形的中心一致时应按共同的中心缩放
将选择的物体变成一个块,然后vla-GetBoundingBox找中心,接着缩放,完成后炸开块
页:
[1]