love1030312 发表于 2014-6-12 21:36:19

水平居中

在论坛里翻了一晚上了有很多少差不多的程序,可是就是没有我需要的
请G版各位大神在弹指间解决苦恼(现在是先测量距离除以2,然后移动的)
求求你们救救我吧

ZZXXQQ 发表于 2014-6-13 08:37:40

编程思路:
1、选择要对中的外框;
2、计算框的中心点;
3、框选要居中的物体;
4、计算这些物体的包围框;
5、计算包围框的中心点;
6、沿水平方向移动物体到外框中心点垂线。
7、重复3。

love1030312 发表于 2014-6-13 08:55:43

ZZXXQQ 发表于 2014-6-13 08:37 static/image/common/back.gif
编程思路:
1、选择要对中的外框;
2、计算框的中心点;


G版能不能麻烦你给我来个我不会啊    谢谢了

lucas_3333 发表于 2014-6-13 08:57:53

love1030312 发表于 2014-6-13 08:55 static/image/common/back.gif
G版能不能麻烦你给我来个我不会啊    谢谢了

G版与Z版都分不清

love1030312 发表于 2014-6-13 08:59:26

lucas_3333 发表于 2014-6-13 08:57 static/image/common/back.gif
G版与Z版都分不清

打错了

edata 发表于 2014-6-13 13:01:37


;画出能框起选择集内所有图元的最小矩形框
(defun get_all_rectang (ss /pt_list sn n en pt1 pt2)   
    (setq pt_list '())
    (setq sn (sslength ss))
    (setq n -1)
    (repeat sn
(setq en (ssname ss (setq n (1+ n))))
(vla-getboundingbox (vlax-ename->vla-object en) 'pt1 'pt2)
(setq pt_list (cons (vlax-safearray->list pt1) pt_list))
(setq pt_list (cons (vlax-safearray->list pt2) pt_list))
    )
    (setq pt1 (apply 'mapcar (cons 'min pt_list)))
    (setq pt2 (apply 'mapcar (cons 'max pt_list)))
    (list pt1 pt2)   
)
(defun c:tt(/ ss p0 lst p1 p2 dpt mpt)
(if (and (setq ss(ssget))
           (setq p0(getpoint"\n选择中点:"))
           )
    (progn
      (setq bak_cmd(getvar 'cmdecho))
      (setvar 'cmdecho 0)
      (setq lst(get_all_rectang ss)
          p1 (car lst)
          p2 (cadr lst)
          mpt(mapcar '(lambda(x y)(* 0.5 (+ x y))) p1 p2)
          dpt(list(car p0)(cadr mpt))
          )
      (command "_move" ss "" "non" mpt "non" dpt)
      (and bak_cmd(setvar 'cmdecho bak_cmd))
      )
    )
(princ)
)

xyp1964 发表于 2014-6-13 14:10:12

;; 实体居中

edata 发表于 2014-6-13 16:51:10

院长的应该可以上、下、左、右、水平、垂直、中心对齐。

999999 发表于 2020-9-11 21:45:09

顶一下,很有作用哦,,

zmzk 发表于 2022-1-29 17:44:33

好思路,留个脚印
页: [1]
查看完整版本: 水平居中