AUTOCAD中如何用AOTOLISP更改块属性的值、文字大小、旋转方向?
AUTOCAD中如何用AOTOLISP更改块属性的值、文字大小、旋转方向?比如块属性标记为A,请给出相应的程序代码.谢谢! 做好了,就不要改它了.要不做一个块替换它 本帖最后由 qq229918602 于 2012-5-21 19:56 编辑使用群码更新。
[*](DEFUN CHATTRIB (OLDATT NEWATT)
[*](IF (AND (PRINC "\nSelect Block with attribute 选择带属性图块 :")
[*] (SETQ SS (SSGET '((0 . "INSERT") (66 . 1))))) (PROGN
[*](SETQ I -1)
[*](REPEAT (SSLENGTH SS)
[*] (SETQ ENT (ENTGET (SSNAME SS (SETQ I (1+ I))))
[*] ENT1 ENT)
[*] (WHILE (= (CDR (ASSOC 0 (SETQ ENT1 (ENTGET (ENTNEXT (CDR (ASSOC -1 ENT1))))))) "ATTRIB")
[*] (IF (= (CDR (ASSOC 1 ENT1)) OLDATT) (PROGN
[*](SETQ ENT1 (SUBST (CONS 1 NEWATT) (ASSOC 1 ENT1) ENT1))
[*](ENTMOD ENT1)
[*](ENTMOD ENT)
[*]))
[*] )
[*])
[*]))
[*](PRINC)
[*])
[*](DEFUN C:A ()
[*](IF (AND (SETQ OATT (GETSTRING "\nOld Attrib 原属性 :"))
[*] (SETQ NATT (GETSTRING "\nNew Attrib 新属性 :")))
[*](CHATTRIB OATT NATT)
[*])
[*](PRINC)
[*])
可以,我这里有自己编辑的原程序,你可以参考。需要,可与我联系 hvac_wh 发表于 2012-5-22 16:44 static/image/common/back.gif
可以,我这里有自己编辑的原程序,你可以参考。需要,可与我联系
源程序能发我不?谢谢 (defun blockatte (obname / en flag dat dat1 blk1 blk2 blk3 blk4)
(setq blkl nil
blk2 nil
blk3 nil
blk4 nil
)
(if (= (type obname) 'ENAME)
(progn
(setq en (entget obname)
dat1 en
)
(cond ((and (= (cdr (assoc 66 en)) 1)
(= (cdr (assoc 0 en)) "INSERT")
)
(setq flag T)
)
(T (setq flag nil))
) ;cond
(while flag
(setq dat (entnext (cdr (assoc -1 en))))
(if (= dat nil)
(setq flag nil)
(progn
(setq en (entget dat))
(cond
((= (cdr (assoc 0 en)) "ATTRIB")
(setq blkl (cons (cdr (assoc -1 en)) blkl)
blk2 (cons (cdr (assoc 2 en)) blk2)
blk3 (cons (cdr (assoc 1 en)) blk3)
)
;setq
)
) ;cond
(if (= (cdr (assoc 0 en)) "SEQEND")
(setq flag nil)
(setq flag T)
) ;if
) ;progn
) ;if
) ;end while
) ;progn
) ;if
(if (= blkl nil)
nil
(setq blkl (list (cdr (assoc 10 dat1))
(reverse blkl)
(reverse blk2)
(reverse blk3)
)
)
) ;if
) hvac_wh 发表于 2012-5-23 05:32 static/image/common/back.gif
(defun blockatte (obname / en flag dat dat1 blk1 blk2 blk3 blk4)
(setq blkl nil
blk2 nil
输入参数 (blockatte 实体名)输出((块插入点)(块属性实体列表)(块属性标签列表)(块属性显示文字表)),再对属行进行修改
页:
[1]