李青松 发表于 2019-6-13 17:56:38

原位缩放

本帖最后由 李青松 于 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)
)


自贡黄明儒 发表于 2019-6-14 10:36:19

你可以参考一下
http://bbs.xdcad.net/thread-723067-1-1.html

wen1235 发表于 2019-6-14 15:01:51

本帖最后由 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)
)

李青松 发表于 2019-6-19 11:12:16

wen1235 发表于 2019-6-14 15:01
;;; 是这样子吗?
       (defun c:tc (/ sc a b)(if (null oldscale) (setq oldscale 2.0)) (initget 6) ...

运行不了。选对象--运行缩放命令--缩放的基点默认在所选对象的中心--输入缩放的比例--回车结束

李青松 发表于 2019-6-19 11:23:51

自贡黄明儒 发表于 2019-6-14 10:36
你可以参考一下
http://bbs.xdcad.net/thread-723067-1-1.html

我是想以共同的中心进行缩放

cqf1980 发表于 2019-12-30 15:26:23

本帖最后由 cqf1980 于 2019-12-30 15:30 编辑

遇到同样的问题,
楼主说的应该这样的。
几何图形的中心一致时应按共同的中心缩放

lqdcwnui 发表于 2019-12-30 23:03:17

将选择的物体变成一个块,然后vla-GetBoundingBox找中心,接着缩放,完成后炸开块
页: [1]
查看完整版本: 原位缩放