明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1977|回复: 1

修改文字对齐点后,文字插入点的问题

[复制链接]
发表于 2006-12-26 18:35:00 | 显示全部楼层 |阅读模式

代码如下 :

(defun c:wzdq (/ en1_type en1 en1_data dq1 dq2 ss i s1  encr  endata endq1 endq2 newdq1 newdq2)
  (while (/= en1_type "TEXT")
    (setq en1 (entsel "\n选取源文字:")) 
    (setq en1_data (entget (car en1)))
    (setq en1_type (cdr (assoc 0 en1_data)))
  )

  (setq dq1 (cdr (assoc 72 en1_data))
 dq2 (cdr (assoc 73 en1_data))
  )
  (prompt "\n选择需修改对齐点的文字:")

  (setq ss (ssget '((0 . "TEXT")))
 i  -1
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (setq endata (entget s1))
    (setq endq1 (assoc 72 endata))   
    (setq endq2 (assoc 73 endata))
    (setq encr (assoc 10 endata))
    (setq newdq1 (cons 72 dq1))
    (setq newdq2 (cons 73 dq2))
    (setq endata (subst newdq1 endq1 endata))
    (setq endata (subst newdq2 endq2 endata))
    (setq endata (subst encr (assoc 10 endata) endata))
    (entmod endata)  
  )

用encr获取未改对齐点时的插入点坐标,然后在修改完后传送,可是修改完后的新文字的插入点与老文字是一样,也就是说插入点无法改,这样的话,修改了对齐点的文字就会离开原来的位置。

该怎么改?

发表于 2006-12-27 16:41:00 | 显示全部楼层
(defun c:wzdq (/ en1_type en1 en1_data dq1 dq2 ss i s1 encr endata endq1
        endq2 newdq1 newdq2
       )
    (while (/= en1_type "TEXT")
 (setq en1 (entsel "\n选取源文字:"))
 (setq en1_data (entget (car en1)))
 (setq en1_type (cdr (assoc 0 en1_data)))
    )
    (setq dq1 (cdr (assoc 72 en1_data))
   dq2 (cdr (assoc 73 en1_data))
    )
    (if (zerop dq2)
 (setq n dq1)
 (if (= dq2 3)
     (setq n (+ dq1 6))
     (if (= dq2 2)
  (setq n (+ dq1 9))
  (setq n (+ dq1 12))
     )
 )
    )
    (prompt "\n选择需修改对齐点的文字:")
    (setq ss (ssget '((0 . "TEXT")))
   ;i  -1
    )
    (setq lit '((0 . "L") (3 . "A") (5 . "F") (1 . "C") (4 . "M") (2 . "R") (6 . "TL") (7 . "TC") (8 . "TR") (9 . "ML") (10 . "MC") (11 . "MR") (12 . "BL") (13 . "BC") (14 . "BR")))
    (command "justifytext" ss "" (cdr (assoc n lit)))
    ;|
    (while (setq s1 (ssname ss (setq i (1+ i))))
 (setq endata (entget s1))
 (setq endq1 (assoc 72 endata))
 (setq endq2 (assoc 73 endata))
 (setq encr (assoc 10 endata))
 (setq newdq1 (cons 72 dq1))
 (setq newdq2 (cons 73 dq2))
 (setq endata (subst newdq1 endq1 endata))
 (setq endata (subst newdq2 endq2 endata))
 (setq endata (subst encr (assoc 10 endata) endata))
 (entmod endata)
    )
    |;
    (princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-11-23 11:31 , Processed in 0.166881 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表