- 积分
- 1588
- 明经币
- 个
- 注册时间
- 2019-7-1
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
此文字对齐可指定一个点提取横坐标,然后把文字改为左对齐(t0)并向左对齐,中间对齐(t1)并向中间对齐,右对齐(t2)并向右边对齐‘很久前做的,没用vlisp,完全用autolisp写的,代码如下,比较简单:
;;;========= 左对齐,修改73码控制垂直上中下对齐==========;;;
(defun c:t0()
(setq Ltxt (ssget '((0 . "text"))))
(setq LX0 (car (getpoint "\n拾取左对齐定位点:")))
(setq Lnum (sslength Ltxt)) ;;统计个数
;;对齐条件
(setq LH (cons '72 0)) ;;对其方式为左水平对齐
(setq LV (cons '73 0)) ;;对其方式为垂直对齐,改为012,表示上中下
;;循环结构
(setq L 0)
(while (< L Lnum)
(setq Llist (entget (ssname Ltxt L))) ;; 点表用于左对齐
(setq LHCODE (assoc '72 Llist)) ;;水平组码
(setq LVCODE (assoc '73 Llist)) ;;垂直组码
(setq newLlist1
(subst LH LHCODE Llist))
(entmod newLlist1)
(setq newLlist2
(subst LV LVCODE newLlist1))
(entmod newLlist2)
;; 修改坐标10码
(setq LXYZ0 (assoc '10 newLlist2))
(setq LXYZ1 (cons '10
(cons LX0
(cdr (cdr LXYZ0))
))
)
(setq newLlist3 (subst LXYZ1 LXYZ0 newLlist2))
(entmod newLlist3)
(setq L (+ L 1)))
(princ))
;;;========= 中间对齐,修改73码控制垂直上中下对齐==========;;;
(defun c:t1()
(setq Mtxt (ssget '((0 . "text"))))
(setq MX0 (car (getpoint "\n拾取中间对齐定位点:")))
(print MX0)
(setq Mnum (sslength Mtxt)) ;;统计个数
;;对齐条件
(setq MH (cons '72 1)) ;;对其方式为中间水平对齐
(setq MV (cons '73 0)) ;;对其方式为垂直对齐,改为012,表示上中下
;;循环结构
(setq M 0)
(while (< M Mnum)
(setq Mlist (entget (ssname Mtxt M))) ;; 点表用于中间对齐
(setq MHCODE (assoc '72 Mlist)) ;;水平组码
(setq MVCODE (assoc '73 Mlist)) ;;垂直组码
(setq newMlist1
(subst MH MHCODE Mlist))
(entmod newMlist1)
(setq newMlist2
(subst MV MVCODE newMlist1))
(entmod newMlist2)
;; 提取坐标YZ值
(setq YZ
(cdr (cdr
(assoc '10 newMlist2))))
;;构建新的11码
(setq MXYZ1 (cons '11 (cons MX0 YZ)))
(setq MXYZ0 (assoc '11 newMlist2))
(setq newMlist3 (subst MXYZ1 MXYZ0 newMlist2))
(entmod newMlist3)
(setq M (+ M 1)))
(princ))
;;;========= 右对齐,修改73码控制垂直上中下对齐==========;;;
(defun c:T2()
(setq Rtxt (ssget '((0 . "text"))))
(setq RX0 (car (getpoint "\n拾取左对齐定位点:")))
(setq Rnum (sslength Rtxt)) ;;统计个数
;;对齐条件
(setq RH (cons '72 2)) ;;对其方式为右水平对齐
(setq RV (cons '73 0)) ;;对其方式为左垂直对齐,改为012,表示上中下
;;循环结构
(setq R 0)
(while (< R Rnum)
(setq Rlist (entget (ssname Rtxt R))) ;; 点表用于左对齐
(setq RHCODE (assoc '72 Rlist)) ;;水平组码
(setq RVCODE (assoc '73 Rlist)) ;;垂直组码
(setq newRlist1
(subst RH RHCODE Rlist))
(entmod newRlist1)
(setq newRlist2
(subst RV RVCODE newRlist1))
(entmod newRlist2)
;; 提取坐标YZ值
(setq RYZ
(cdr (cdr
(assoc '10 newRlist2))))
;;构建新的11码
(setq RXYZ1 (cons '11 (cons RX0 RYZ)))
(setq RXYZ0 (assoc '11 newRlist2))
(setq newRlist3 (subst RXYZ1 RXYZ0 newRlist2))
(entmod newRlist3)
(setq R (+ R 1)))
(princ))
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
|