ZZXXQQ
发表于 2008-3-21 08:02:00
<p>主要是增加判断。用上面程序中语句中的标记<font color="#ff00ff">"KKS_CODE"</font><font color="#000000">区分</font></p><p> <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/IF.htm" target="_black"><font color="#0000ff">IF</font></a>
<font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/61.htm" target="_black"><font color="#0000ff">=</font></a>
<font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/CDR.htm" target="_black"><font color="#0000ff">CDR</font></a><font color="#ff0000">(</font>ASSOC <font color="#008000">2</font> ENT2<font color="#ff0000">)</font><font color="#ff0000">)</font>
<font color="#ff00ff">"KKS_CODE"</font><font color="#ff0000">)</font>
<font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/PROGN.htm" target="_black"><font color="#0000ff">PROGN</font></a><br/> ……</p>
etom999
发表于 2008-3-21 08:22:00
不太好用......<br/><br/>(Defun C:ADD1 ()<br/> (SetVar "CMDECHO" 0)<br/> (If(And<br/> (SetQ S1 (Car(EntSel "\n选择带属性图块 :")))<br/> (SetQ ENT (EntGet S1))<br/> (=(Cdr(Assoc 0 ENT)) "INSERT")<br/> (=(Cdr(Assoc 66 ENT)) 1)<br/> )<br/> (Progn<br/> (Command ".Undo" "BE")<br/> (SetQ PT0 (Cdr(Assoc 10 ENT)) N nil)<br/> (While(SetQ PT1 (GetPoint PT0 "\n插入点 :"))<br/> (Command ".COPY" S1 "" PT0 PT1)<br/> (SetQ ENT1 (EntGet(EntLast))<br/> ENT2 ENT1<br/> STA T<br/> )<br/> (While(And STA<br/> (=(Cdr(Assoc 0 (SetQ ENT2 (EntGet(EntNext(Cdr(Assoc -1 ENT2))))))) "ATTRIB")<br/> )<br/> (If(=(Cdr(Assoc 2 ENT2)) "SNA")(add11)) ; NO.1<br/> (If(=(Cdr(Assoc 2 ENT2)) "XR_FUNCTION")(add11)) ; NO.2<br/> (Defun ADD11 ()<br/> (SetQ TXTF (Cdr(Assoc 1 ENT2))<br/> N (1+(IF N N (AtoI(SUBSTR TXTF 3))))<br/> TXTF (StrCat(SubStr TXTF 1 2)(If(< N 10) "00" (If(< N 100) "0" ""))(ItoA N))<br/> ENT1 (SubSt(Cons 1 TXTF)(Assoc 1 ENT2) ENT2)<br/> STA nil<br/> )<br/> (EntMod ENT2)<br/> (EntMod ENT1)<br/> )<br/> (EntUpd(EntLast))<br/> )<br/> )<br/> (Command ".Undo" "E")<br/> )<br/> )<br/> (SetVar "CmdEcho" 1)<br/> (PrinC)<br/>)
ZZXXQQ
发表于 2008-3-21 08:31:00
<p>这样试试:</p><p>(If (AND (=(Cdr(Assoc 2 ENT2)) "SNA") (= (Cdr(Assoc 2 ENT2)) "XR_FUNCTION")) (PTOGN<br/> (SetQ TXTF (Cdr(Assoc 1 ENT2))<br/> N (1+(IF N N (AtoI(SUBSTR TXTF 3))))<br/> TXTF (StrCat(SubStr TXTF 1 2)(If(< N 10) "00" (If(< N 100) "0" ""))(ItoA N))<br/> ENT1 (SubSt(Cons 1 TXTF)(Assoc 1 ENT2) ENT2)<br/> STA nil<br/> )<br/> (EntMod ENT2)<br/> (EntMod ENT1)<br/> (EntUpd(EntLast))<br/>))<br/></p>
etom999
发表于 2008-3-21 13:13:00
(If (AND (=(Cdr(Assoc 2 ENT2)) "SNA") (= (Cdr(Assoc 2 ENT2)) "XR_FUNCTION"))
(PTOGN-> Progn
改过后,不好用...
etom999
发表于 2008-3-21 13:23:00
(AND (=(Cdr(Assoc 2 ENT2)) "SNA") (= (Cdr(Assoc 2 ENT2)) "XR_FUNCTION"))<br/>这种情况永远不会出现...只好copy<br/>
Lotto168
发表于 2008-3-21 21:43:00
xiaoxiao1982发表于2008-3-19 0:46:00static/image/common/back.gif试过了,很好用,版主厉害啊!谢谢版主!顺便再请教个问题,图中还是这个块,当你插入这个块的时候,你会发现,它其实是有很多属性的,只是其中的有些属性是不可见的。但是图中的这个块,双击图
<p></p><p>2006後,用ed, ate... 等編輯圖塊屬性時,可以設定屬性物件不可見,群組碼:60,版主可以試試!</p><p></p>
ZZXXQQ
发表于 2008-3-22 08:28:00
etom999发表于2008-3-21 13:23:00static/image/common/back.gif(AND (=(Cdr(Assoc 2 ENT2)) \"SNA\") (= (Cdr(Assoc 2 ENT2)) \"XR_FUNCTION\"))这种情况永远不会出现...只好copy
<p></p>哦写错了,应该用OR。(OR (=(Cdr(Assoc 2 ENT2)) "SNA") (= (Cdr(Assoc 2 ENT2)) "XR_FUNCTION"))<br/>
xiaoxiao1982
发表于 2008-3-22 17:59:00
Lotto168发表于2008-3-21 21:43:00static/image/common/back.gif2006後,用ed, ate... 等編輯圖塊屬性時,可以設定屬性物件不可見,群組碼:60,版主可以試試!
<p></p>不知道要怎么设定
ZZXXQQ
发表于 2008-3-22 20:30:00
试着写了写,因无高版本CAD,未调试。
;拷贝属性加1&设定所有属性可编辑明经 ZZXXQQ 2008.3.18
(DEFUN C:ADD1 ()
(SETVAR "CMDECHO" 0)
(IF (AND (SETQ S1 (CAR (ENTSEL "\nSelect Block with Attrib 选择带属性图块 :")))
(SETQ ENT (ENTGET S1))
(= (CDR (ASSOC 0 ENT)) "INSERT")
(= (CDR (ASSOC 66 ENT)) 1)
) (PROGN
(COMMAND ".UNDO" "BE")
(SETQ PT0 (CDR (ASSOC 10 ENT)) N nil)
(WHILE (SETQ PT1 (GETPOINT PT0 "\nInsert Point 插入点 :"))
(COMMAND ".COPY" S1 "" PT0 PT1)
(SETQ ENT1 (ENTGET(ENTLAST)) ENT2 ENT1 STA T)
(WHILE (AND STA (= (CDR(ASSOC 0 (SETQ ENT2 (ENTGET(ENTNEXT(CDR(ASSOC -1 ENT2))))))) "ATTRIB"))
(IF (= (CDR(ASSOC 2 ENT2)) "KKS_CODE") (PROGN
(SETQ TXTF (CDR(ASSOC 1 ENT2))
N (1+ (IF N N (ATOI (SUBSTR TXTF 3))))
TXTF (STRCAT (SUBSTR TXTF 1 2) (IF (< N 10) "00" (IF (< N 100) "0" "")) (ITOA N))
ENT2 (SUBST (CONS 1 TXTF) (ASSOC 1 ENT2) ENT2)
STA nil)
(ENTMOD ENT2)
(ENTMOD ENT1)
(ENTUPD (ENTLAST))
))
(IF (ASSOC 60 ENT2) (PROGN
(SETQ ENT2 (SUBST '(60 . 256) (ASSOC 60 ENT2) ENT2))
(ENTMOD ENT2)
(ENTMOD ENT1)
(ENTUPD (ENTLAST))
))
)
)
(COMMAND ".UNDO" "E")
))
(SETVAR "CMDECHO" 1)
(PRINC)
)
xiaoxiao1982
发表于 2008-3-23 02:15:00
<p> </p><p></p><p>实在太感谢版主了,眼泪哗哗地。。。</p><p>我试了下,增量复制没有问题。但是复制后得到的图块还是只有可见属性可以编辑</p>