骑士 发表于 2006-7-23 18:10:00

[求助]在arx中如何读出lisp写的扩展数据

<P>在arx中如何读出lisp写的扩展数据<BR>有一以前的系统是LISP写的<BR>在以前的系统中生成有如下的扩展数据,我现在的代码是ARX写的,要兼容以前的数据,就用读取这样扩展数据,在Arx中能不能读出这些数据,如何读出。或者有没有其他方法,只要能读出这些数据,让我在Arx代码中用就可以。<BR>我一直用arx开发,lisp基本不懂</P>
<P>(-3 ("控规:街坊" (1002 . "{") (1000 . "APA-01") (1000 . "居住") <BR>(1000 . "2000") (1000 . "0.00") (1000 . "25.6") (1000 . "4.1") (1000 . <BR>"12班小学1所,6班幼儿园2所,垃圾中转站1处") (1000 . "无") (1000 . <BR>"20060418-0.001") (1002 . "}")))</P>
<P>高手指教!</P>

haill2000 发表于 2006-7-25 15:20:00

<P>搞规划的吧,你lisp不懂就会arx,比俺强多了,用AutoCAD MAP,直接转到RDB里,还编什么程啊</P>

wzz1968 发表于 2006-7-27 15:57:00

<P>我是用C语言写的程序.</P>
<P>struct resbuf *rb2,*rb1;</P>
<P>rb1=ads_buildlist(RTSTR,"APA-01",0);</P>
<P>rb2=ads_entgetx(ent,rb1);</P>
<P>assoc_dxf_str(rb1,1000,sTemp);</P>
<P>... ...</P>
<P>上边assoc-dxf_str函是检索数据链表的.详细如下</P>
<P>&nbsp; ------ 缓冲链表操作函数&nbsp;&nbsp; 5.链表检索(字符型) -------------- */<BR>&nbsp;int assoc_dxf_str(struct resbuf *rb,int dxf_code,char *result)<BR>&nbsp; {<BR>&nbsp;&nbsp; struct resbuf *rb1;<BR>&nbsp;&nbsp; if (dxf_type(dxf_code)!=RTSTR) return RTERROR;<BR>&nbsp;&nbsp; if (rb==NULL) return RTERROR;<BR>&nbsp;&nbsp; for (rb1=rb;rb1!=NULL;rb1=rb1-&gt;rbnext) <BR>&nbsp;&nbsp;&nbsp; { if (rb1-&gt;restype==dxf_code)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <BR>&nbsp;&nbsp; strcpy(result,rb1-&gt;resval.rstring);<BR>&nbsp;&nbsp; return RTNORM;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; return RTERROR;<BR>&nbsp;}</P>
<P>/***************************************************************************/</P>
<P>&nbsp;------ 缓冲链表操作函数&nbsp;&nbsp; 1.节点类型&nbsp; */<BR>int dxf_type(int dxf_code)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; if (dxf_code&gt;=1000) dxf_code=dxf_code-1000;<BR>&nbsp;&nbsp;&nbsp; if (dxf_code&lt;0) return dxf_code;<BR>&nbsp;&nbsp;&nbsp; if (dxf_code&gt;=0 &amp;&amp; dxf_code&lt;=9) return RTSTR;<BR>&nbsp;&nbsp;&nbsp; if (dxf_code&gt;=10 &amp;&amp; dxf_code&lt;=19) return RTPOINT;<BR>&nbsp;&nbsp;&nbsp; if (dxf_code&gt;=38 &amp;&amp; dxf_code&lt;=59) return RTREAL;<BR>&nbsp;&nbsp;&nbsp; if (dxf_code&gt;=60 &amp;&amp; dxf_code&lt;=79) return RTSHORT;<BR>&nbsp;&nbsp;&nbsp; if (dxf_code&gt;=210 &amp;&amp; dxf_code&lt;=239) return RT3DPOINT;<BR>&nbsp;&nbsp;&nbsp; return RTNONE;<BR>&nbsp; }</P>
<P>&nbsp;</P>
页: [1]
查看完整版本: [求助]在arx中如何读出lisp写的扩展数据