linshiyin2 发表于 2012-9-29 16:37:05

谁能写个修改组码的通用函数,参考代码如下

谁能写个修改组码的通用函数,要求调用命令为(xgzm** (* 123))**为对象名,*为组码123为组码值。
参考代码如下:
(setq ss (ssdel s1 ss)
   s1 (ssname ss 0)
   ent (entget s1)
   txtn (itoa (1+ (atoi txtn)))
   ent (subst
    (cons 1 txtn)
    (assoc 1 ent)
    ent
)
      )
代码节选自zzxxqq版主的一段

dalin1985 发表于 2012-9-29 22:00:23

(defun xgzm (name mode)
       (setq endata (entget name))
       (cdr (assoc mode endata))
)

linshiyin2 发表于 2012-10-4 20:06:26

楼上的还不够好,我的意思是,给出对象,直接修改该对象,的组码,最后重新生成该实体。

linshiyin2 发表于 2012-10-18 09:01:48

;; 很多函数都是嵌套的,可能部分函数给得不全,就慢慢完善吧……
;; xyp-SubUpd 更改图元DXF组码以修改实体属性 (xyp-SubUpd ename code newvalue)
;|
功能 : 更改图元、图元表、选择集DXF组码以修改实体属性
方式 : (xyp-SubUpd 实体名 DXF码 新值)
实例1 : 改圆半径为500
(xyp-SubUpd (car(entsel"\n选择圆: ")) 40 500)
实例2 : 改文本为"明经通道"
(xyp-SubUpd (car(entsel"\n选择文本: ")) 1 "明经通道")
实例3 : 改块的插入点为(0 0 0)
(xyp-SubUpd (car(entsel"\n选择图块: ")) 10 '(0 0 0))
(xyp-SubUpd (ssget) 62 1)
|;
(defun xyp-SubUpd (ename code val / ent x y i s1)
(cond ((= (type ename) 'ENAME)
(setq ent (entget ename))
(if (and (= (type code) 'LIST) (= (type val) 'LIST))
    (mapcar '(lambda (x y) (xyp-SubUpd ename x y)) code val)
    (progn
      (if (= (xyp-get-dxf code ename) nil)
      (entmod (append ent (list (cons code val))))
      (entmod (subst (cons code val) (assoc code ent) ent))
      )
      (entupd ename)
    )
)
)
((= (type ename) 'PICKSET)
(setq i -1)
(while (setq s1 (ssname ename (setq i (1+ i))))
    (xyp-SubUpd s1 code val)
)
)
((= (type ename) 'LIST)
(foreach s1 ename (xyp-SubUpd s1 code val))
)
)
ename
)

vlisp2012 发表于 2012-10-20 09:57:50

多谢linshiyin2 。很好的代码!!!

zml84 发表于 2012-10-20 10:17:17

<center><h1>练习 &nbsp;组码操作.lsp</h1></center>
<script language="JavaScript">document.write("最后修改时间: " + document.lastModified)
</script>
<hr size="5"><pre><font size="2" face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC">;|问题来源:http://bbs.mjtd.com/thread-96667-1-1.html</span></font>
<font size="2" face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC"></span></font>
<font size="2" face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC">谁能写个修改组码的通用函数</span></font>
<font size="2" face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC"></span></font>
<font size="2" face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC">要求:调用命令为(xgzm &nbsp;** (* 123))</span></font>
<font size="2" face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC">其中:**为对象名,*为组码123为组码值。</span></font>
<font size="2" face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC"></span></font>
<font size="2" face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC">|;</span></font>
<font face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC">;;;=================================================================*</span></font>
<font face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC">;;;测试: (xgzm (ssget) '(10 0 0 0)) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*</span></font>
<font face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC">;;;日期:zml84 于 2012-10-20 10:10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*</span></font>
<font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">defun</font> <font face="Fixedsys">xgzm</font> <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys">ss</font> <font face="Fixedsys">lst</font> <font face="Fixedsys" color="#0000FF">/</font> <font face="Fixedsys">i</font> <font face="Fixedsys">en</font> <font face="Fixedsys">ent</font><font face="Fixedsys" color="#FF0000">)</font>
&nbsp; &nbsp; <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">setq</font> <font face="Fixedsys">i</font> <font face="Fixedsys" color="#009900">0</font><font face="Fixedsys" color="#FF0000">)</font>
&nbsp; &nbsp; <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">repeat</font> <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">sslength</font> <font face="Fixedsys">ss</font><font face="Fixedsys" color="#FF0000">)</font>
        <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">setq</font> <font face="Fixedsys">en</font> &nbsp;<font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">ssname</font> <font face="Fixedsys">ss</font> <font face="Fixedsys">i</font><font face="Fixedsys" color="#FF0000">)</font>
       &nbsp; &nbsp; &nbsp;<font face="Fixedsys">ent</font> <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">entget</font> <font face="Fixedsys">en</font><font face="Fixedsys" color="#FF0000">)</font>
       &nbsp; &nbsp; &nbsp;<font face="Fixedsys">ent</font> <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">subst</font> <font face="Fixedsys">lst</font> <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">assoc</font> <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">car</font> <font face="Fixedsys">lst</font><font face="Fixedsys" color="#FF0000">)</font> <font face="Fixedsys">ent</font><font face="Fixedsys" color="#FF0000">)</font> <font face="Fixedsys">ent</font><font face="Fixedsys" color="#FF0000">)</font>
        <font face="Fixedsys" color="#FF0000">)</font>
        <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">entmod</font> <font face="Fixedsys">ent</font><font face="Fixedsys" color="#FF0000">)</font>
        <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">setq</font> <font face="Fixedsys">i</font> <font face="Fixedsys" color="#FF0000">(</font><font face="Fixedsys" color="#0000FF">1+</font> <font face="Fixedsys">i</font><font face="Fixedsys" color="#FF0000">)</font><font face="Fixedsys" color="#FF0000">)</font>
&nbsp; &nbsp; <font face="Fixedsys" color="#FF0000">)</font>
<font face="Fixedsys" color="#FF0000">)</font>
<font face="Fixedsys" color="#990099"><span style="BACKGROUND-COLOR: #CCCCCC">;;;=================================================================*</span></font>
</pre>

dingtiedt 发表于 2015-8-2 13:28:53

zml84 发表于 2012-10-20 10:17 static/image/common/back.gif
练习 &nbsp;组码操作.lsp
document.write("最后修改时间: " + document.lastModified)



请问,能不能修改,如果有两个或两个以上相同的组码,能批量修改。谢谢!
页: [1]
查看完整版本: 谁能写个修改组码的通用函数,参考代码如下