lostbalance 发表于 2013-11-19 21:50:39

如何通过修改组码72和73修改文字的对齐点

编了个程序,提取第一个文字的对齐方式,即组码72和73的数值,然后把其他文字的组码72和73替换,使所有文字的对齐方式与第一个一样。
以下是我编的代码。运行后,不是对齐方式的控制组码没有被修改,反而是显示内容,也就是组码1变成了组码73的数值。
求教,如何修改这个程序。

(defun c:qq( / txt i dxf72 dxf73 txtent)
    (setq txt (ssget "_:L" '((0 . "TEXT"))))
    (setq i 0)
    (repeat (setq len (sslength txt))
      (setq txtent (entget (ssname txt i)))
      (setq i (1+ i))
      (if (not dxf72)
            (setq dxf72 (rtos (cdr (assoc 72 txtent)))
                dxf73 (rtos (cdr (assoc 73 txtent)))
            )
            (progn
                (setq txtent (subst (cons 1 dxf72) (assoc 72 txtent) txtent))
                (setq txtent (subst (cons 1 dxf73) (assoc 73 txtent) txtent))
                (entmodtxtent)
            )
      )
    )
    (princ)
)

ll_j 发表于 2013-11-19 21:56:31

试试:
(cons 1 dxf72) --> (cons 72 dxf72)
(cons 1 dxf73) --> (cons 73 dxf73)

lostbalance 发表于 2013-11-19 22:23:46

ll_j 发表于 2013-11-19 21:56 static/image/common/back.gif
试试:
(cons 1 dxf72) --> (cons 72 dxf72)
(cons 1 dxf73) --> (cons 73 dxf73)

这个有问题,提示:
; 错误: DXF 组不正确: (72 . "4")

gdslqs 发表于 2013-11-19 23:20:32

去掉rtos                                 

lostbalance 发表于 2013-11-19 23:35:25

gdslqs 发表于 2013-11-19 23:20 static/image/common/back.gif
去掉rtos

去掉rtos的话,也是提示dxf组不正确。

aihuyujian 发表于 2013-11-20 00:25:55

是不是if 后面的dxf72 第一次的时候未定义? 用不用在if 函数前加一个 setq dxf72 …… ?

lostbalance 发表于 2013-11-20 07:28:05

aihuyujian 发表于 2013-11-20 00:25 static/image/common/back.gif
是不是if 后面的dxf72 第一次的时候未定义? 用不用在if 函数前加一个 setq dxf72 …… ?

用了if not对第一次的文字组码进行了定义

ZZXXQQ 发表于 2013-11-20 08:24:07

(defun c:qq头( / txt i dxf72 dxf73 txtent)
(setq txt (ssget "_:L" '((0 . "TEXT"))))
(setq i 1)
(setq txtent (entget(ssname txt 0)));第一个文字组码
(setq dxf72 (assoc 72 txtent));第一个文字72组码
(setq dxf73 (assoc 73 txtent));第一个文字73组码
(repeat (setq len (sslength txt))
(setq txtent (entget (ssname txt i)))
(setq i (1+ i))
(setq txtent (subst dxf72 (assoc 72 txtent) txtent))
(entmod (subst dxf73 (assoc 73 txtent) txtent))
)
(princ)
)

lostbalance 发表于 2013-11-20 23:10:19

ZZXXQQ 发表于 2013-11-20 08:24 static/image/common/back.gif


试了下,可以。然后发现,1楼的程序,把rtos、cdr还有cons都删了就可以了。
页: [1]
查看完整版本: 如何通过修改组码72和73修改文字的对齐点