如何通过修改组码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)
)
试试:
(cons 1 dxf72) --> (cons 72 dxf72)
(cons 1 dxf73) --> (cons 73 dxf73) 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") 去掉rtos gdslqs 发表于 2013-11-19 23:20 static/image/common/back.gif
去掉rtos
去掉rtos的话,也是提示dxf组不正确。 是不是if 后面的dxf72 第一次的时候未定义? 用不用在if 函数前加一个 setq dxf72 …… ? aihuyujian 发表于 2013-11-20 00:25 static/image/common/back.gif
是不是if 后面的dxf72 第一次的时候未定义? 用不用在if 函数前加一个 setq dxf72 …… ?
用了if not对第一次的文字组码进行了定义 (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)
) ZZXXQQ 发表于 2013-11-20 08:24 static/image/common/back.gif
试了下,可以。然后发现,1楼的程序,把rtos、cdr还有cons都删了就可以了。
页:
[1]