暖暖阳光 发表于 2009-2-14 08:18:00

谁能给个lisp程序,功能是块属性显示的开或关的

<p>我想在CAD命令行中输入cc ,如果块中有个属性名称是:文件名称,此时如果属性值原来不显示在屏幕上,就把它显示出来,如果原来是显示出来的,就把它关掉,怎么写的?</p>

暖暖阳光 发表于 2009-2-14 09:03:00

<p>可能我说的不够清楚,我是想这样,我有个图形文件,里面有个1000个块,块的名字叫AA,块中有个属性标记为“类型”,值就有很多了,如“阀门”“三通”等等。一般情况下,这个值是不在图上显示出来,如果我要把它显示出来,输入“battman", 可以用鼠标操作把显示那个开关打勾。</p><p>我是不想要鼠标操作这么麻烦,我想在命令行中输入CC,就把值显示出来,输入DD,就不把值显出来</p>

ZZXXQQ 发表于 2009-2-14 10:59:00

试试看

关闭属性显示 明经 ZZXXQQ 于2009情人节
(DEFUN C:CC ()
(IF (SETQ SS (SSGET "X" '((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 2 ENT1)) "类型") (PROGN
      (SETQ ENT1 (SUBST '(70 . 5) (ASSOC 70 ENT1) ENT1))
      (ENTMOD ENT1)
      (ENTMOD ENT)
   ))
    )
   )
))
(PRINC)
)

;显示属性 明经 ZZXXQQ 于2009情人节
(DEFUN C:DD ()
(IF (SETQ SS (SSGET "X" '((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 2 ENT1)) "类型") (PROGN
      (SETQ ENT1 (SUBST '(70 . 0) (ASSOC 70 ENT1) ENT1))
      (ENTMOD ENT1)
      (ENTMOD ENT)
   ))
    )
   )
))
(PRINC)
)

暖暖阳光 发表于 2009-2-14 12:42:00

<p>我加载了,好象没有效果.</p><p>其实我就是想把 知道一下 输入 BAttman 后,出来的对话框我们所做的对某个属性显示模式的选择,用代码怎么表达,</p><p>就是在lisp中写上(defun c:cc()<br/>&nbsp;&nbsp; (command "_battman"&nbsp;"<font color="#f70909">这里要写什么参数,才能把某个属性的显式模式打开或关闭"</font>))</p>

glowz 发表于 2009-2-14 16:38:00

attdisp 不知道有没有用 是控制全部属性的显示的

ayunger 发表于 2009-2-14 20:52:00

<p>;;;*************************************<br/>;;; No.7&nbsp; 修改图块属性值显示/关闭&nbsp; 函数 <br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --- By Ayunger Studio 2009&nbsp; <br/>;;;*************************************<br/>(defun C:ayBlkAttDisp (/ SS1 xMode xCode entData0 entData1 i)<br/>&nbsp;(initget "C O")<br/>&nbsp;(setq xMode (getkword "\n类型 图块属性(ATTRIB) 显示关闭(C)/打开&lt;O&gt;: "))<br/>&nbsp;(if (or (= xMode nil) (= xMode "O"))<br/>&nbsp;&nbsp;(setq xCode 0);then<br/>&nbsp;&nbsp;(setq xCode 5);else<br/>&nbsp;);end_if</p><p>&nbsp;(prompt "\n【提示】选择图块(BLOCK)对象...")<br/>&nbsp;(IF&nbsp;(setq SS1 (ssget '((0 . "INSERT") (66 . 1))))<br/>&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;(setq i -1)<br/>&nbsp;&nbsp;&nbsp;(repeat&nbsp;(sslength SS1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;(setq&nbsp;entData0&nbsp; (entget (ssname SS1 (setq i (1+ i)))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;(setq entData1 entData0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;(while (= (cdr (assoc 0 (setq entData1 (entget (entnext (cdr (assoc -1 entData1))))))) "ATTRIB")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq entData1 (subst (cons 70 xCode) (assoc 70 entData1) entData1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmod entData1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmod entData0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;);end_while<br/>&nbsp;&nbsp;&nbsp;);end_repeat<br/>&nbsp;&nbsp;);end_progn<br/>&nbsp;);end_if<br/>&nbsp;(princ)<br/>);end_defun<br/></p>
页: [1]
查看完整版本: 谁能给个lisp程序,功能是块属性显示的开或关的