OWEN7 发表于 2013-5-15 10:05:12

【未解决】两个矩形或者多边形的形心自动对齐,用于结构基础对齐柱

RT,直接看图。

自贡黄明儒 发表于 2013-5-15 11:41:45

(defun C:mymy (/ ENT1 ENT2 ENTCENP1 ENTCENP2 ENTPLIST X Y)
;;1 [功能] 获取两点的中点坐标
(defun MJ:MIDPOINT (P1 P2)
    (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) P1 P2)
)
;;2获取对象的外边框
(defun HH:MinMaxPt (ent / MinPt MaxPt)
    ;;(vl-load-com)
    (vla-GetBoundingBox
      (vlax-Ename->vla-Object ent)
      'MinPt
      'MaxPt
    )
    (mapcar 'vlax-safearray->list (list MinPt MaxPt))
)
(setq ent1 (car (entsel "\n目标:")))
(setq entplist (HH:MinMaxPt ent1))
(setq entcenP1 (MJ:MIDPOINT (car entplist) (cadr entplist)))
(setq ent2 (car (entsel "\n源:")))
(setq entplist (HH:MinMaxPt ent2))
(setq entcenP2 (MJ:MIDPOINT (car entplist) (cadr entplist)))
(command "_.move" ent1 "" entcenP1 entcenP2)
(princ)
)

lidaxiu 发表于 2013-5-15 12:53:46

顶,这个不错的程序

OWEN7 发表于 2013-5-21 18:13:50

对不起,忘记补充了, 能不能批量处理,框选。

kwok 发表于 2013-5-21 18:53:55

批量怎判断哪个与哪个中心对齐,这要有条件吧

OWEN7 发表于 2013-5-23 09:54:44

(defun c:xxdq (/
             TCCAD-I             TCCAD-LAYER
             TCCAD-PT1       TCCAD-PT2       TCCAD-PTLIST
             TCCAD-SI             TCCAD-SII       TCCAD-SSGET1
             TCCAD-SSGET2    TCCAD-SSLENGTH
              )
(setq        tccad-layer
       (tccad-dxf (car (entsel "\n请点取基础所在图层:")) 8)
)
(setq tccad-ssget1 (ssget (list (cons 8 tccad-layer))))
(setq tccad-sslength (sslength tccad-ssget1))
(setq tccad-i -1)
(while (setq tccad-si (ssname tccad-ssget1 (setq tccad-i (1+ tccad-i))))
    (setq tccad-ptlist (vertexs tccad-si))
    (setq tccad-pt1 (get_centroid tccad-si))
    (setq tccad-ssget2
           (ssget "wP" tccad-ptlist (list (cons 0 "*LINE")))
    )
    (setq tccad-sii (ssname tccad-ssget2 0))
    (setq tccad-pt2 (get_centroid tccad-sii))
    (vla-move (vlax-ename->vla-object tccad-si) (vlax-3D-point tccad-pt1) (vlax-3D-point tccad-pt2))
    (setq tccad-pt1 niltccad-pt2 nil)
    (command "change" tccad-si "" "PROPERTIES" "c" "1" "")
)
(princ)
)
页: [1]
查看完整版本: 【未解决】两个矩形或者多边形的形心自动对齐,用于结构基础对齐柱