- (defun c:awz ( / sUndo enx atent atent_list)
- (setq sUndo (vlax-invoke (vla-get-ActiveDocument (vlax-get-acad-object)) 'StartUndoMark))
- (setvar 'errno 0)
- (while (/= 52 (getvar 'errno))
- (setvar 'errno 0)
- (setq atent (car (nentsel "\nSelect multiline attribute to change Defined Width to 0: ")))
- (cond
- ( (= 7 (getvar 'errno))
- (prompt "\nNothing Selected.")
- )
- ( (null atent)
- (prompt "\nExit.")
- )
- ( (/= "ATTRIB" (cdr (assoc 0 (setq enx (entget atent)))))
- (prompt "\nSelected object is not an Attribute.")
- )
- ( (= 4 (logand 4 (cdr (assoc 70 (tblsearch "layer" (cdr (assoc 8 enx)))))))
- (prompt "\nSelected Attribute is on a locked layer.")
- )
- (if atent (setq atent_list (entget atent))
- (setq atent_list (subst (cons 41 0) (assoc 42 atent_list) atent_list ))
- (entmod atent_list)
- ))
- (if sUndo (vlax-invoke (vla-get-ActiveDocument (vlax-get-acad-object)) 'EndUndoMark))
- )(princ)
- )(vl-load-com)(princ)
通过研究Lee Mac和Grrr等专业人士过去的代码,我能够自己创建这个lisp。
在工作中,我们有一个程序,可以插入具有多行属性的块,其中包含信息集,每个值都是它自己的文本行。
不幸的是,有时,我的意思是,大多数时候,如果信息中有空格,它会“换行”并创建新行。
双击属性,然后“…”是非常烦人的然后更改有时超过100个属性的宽度。
出于挫折,这一代码诞生了。
我欢迎大家尽可能多地批评这段代码,我喜欢学习别人是如何写的。我补充的不需要,我需要的不需要,还有更简单的方法。什么都不要隐瞒!
如果我没有赞扬那些启发我的代码的创作者,我道歉。你们应该得到所有的赞扬。 |