好的,我已经在我的计划中实施了第二个建议:
- (defun C:CTS()
- (if (setq ss (ssget "X" (list (cons 8 "STR")))) ;Create selection set with all objects with specified layer
- (progn
- (setq i -1)
- (while (setq en (ssname ss (setq i (1+ i))))
- (setq enlist (entget en))
- ;(if (= "TEXT" (cdr(assoc 0 enlist)))(
- (setq enlist (subst (cons 72 1) (assoc 72 enlist) enlist) ; vertical align - middle = 1
- enlist (subst (cons 73 2) (assoc 73 enlist) enlist) ; horizontal align - center = 2
- enlist (subst (cons 7 "ISOCP") (assoc 7 enlist) enlist) ; text style
- enlist (subst (cons 40 300) (assoc 40 enlist) enlist)) ; text height
- (entmod enlist)
- (entupd en)
- ) ; end if
- ) ; end while
- )
- (alert "Error: no layer exists")
- )
- (princ)
- )
给出的代码运行良好,是我添加到代码中的行导致了问题:
我认为注释掉的if语句有助于告诉程序哪些实体是文本,但(1)它不起作用(它说:错误:输入时虚线对中有额外的CDR)和(2)它似乎无论如何都不需要它。应该包括这样的if语句吗?如果是这样,我的有什么问题?
我遇到的另一个问题与文本对齐有关。出于某种原因,最初设置为“左”对齐的所有文本将移动到0,0。是什么让它这样做的?
谢谢 |