yamjqq 发表于 2020-2-26 13:27:49

关于文本对齐插入点的修改方法

;;;;;本代码来源于论坛,用于文本对齐,程序对齐插入点为首行文字,不是很方便,试了多次想通过getpoint指定插入点,没成功,求指点
(defun c:test (/ e1 e2 ent heigh heighy i inpoint k lst ob ob_ptx ob_pty pt         pto ptx ss      )
   (setq ss (ssget '((0 . "text"))))
(setq i 0lst '())
(repeat (sslength ss)
    (setq ent (ssname ss i))
    (setq inpoint (Vlax-Get (Vlax-Ename->Vla-Object ent) 'InsertionPoint))
    (setq lst (append    (list (cons ent inpoint))    lst      )    )
    (setq i (1+ i))
    )
(setq lst (vl-sort lst
                     (function
                           (lambda (e1 e2)
                                     (< (caddr e1) (caddr e2))
                                     )
                           )
                     )
        )
(setq ob_ptx (cadr (last lst)))
(setq ob_pty (caddr (last lst)))
(setq heigh (Vlax-Get (Vlax-Ename->Vla-Object (car (last lst))) 'Height))
(setq k 0)
(repeat (length lst)
    (setq ob (Vlax-Ename->Vla-Object (car (nth k lst))))
(setq pt (Vlax-Get ob 'InsertionPoint))
    (setq ptx (subst    ob_ptx    (car pt)    pt      )    )
    (setq heighy (- ob_pty (* 2.5 heigh (- (length lst) (1+ k)))))
   (setq pto (subst    heighy    (cadr ptx)    ptx      )    )
    (Vlax-Put-Property ob 'InsertionPoint (Vlax-3d-Point pto))
    (Vlax-Put-Property ob 'Height heigh)
    (setq k (1+ k))
    )
(princ)
)

yamjqq 发表于 2020-2-26 17:16:41

已经,解决啦

页: [1]
查看完整版本: 关于文本对齐插入点的修改方法