明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1958|回复: 2

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

[复制链接]
发表于 2006-7-23 18:10:00 | 显示全部楼层 |阅读模式

在arx中如何读出lisp写的扩展数据
有一以前的系统是LISP写的
在以前的系统中生成有如下的扩展数据,我现在的代码是ARX写的,要兼容以前的数据,就用读取这样扩展数据,在Arx中能不能读出这些数据,如何读出。或者有没有其他方法,只要能读出这些数据,让我在Arx代码中用就可以。
我一直用arx开发,lisp基本不懂

(-3 ("控规:街坊" (1002 . "{") (1000 . "APA-01") (1000 . "居住")
(1000 . "2000") (1000 . "0.00") (1000 . "25.6") (1000 . "4.1") (1000 .
"12班小学1所,6班幼儿园2所,垃圾中转站1处") (1000 . "无") (1000 .
"20060418-0.001") (1002 . "}")))

高手指教!

发表于 2006-7-25 15:20:00 | 显示全部楼层

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

发表于 2006-7-27 15:57:00 | 显示全部楼层

我是用C语言写的程序.

struct resbuf *rb2,*rb1;

rb1=ads_buildlist(RTSTR,"APA-01",0);

rb2=ads_entgetx(ent,rb1);

assoc_dxf_str(rb1,1000,sTemp);

... ...

上边assoc-dxf_str函是检索数据链表的.详细如下

  ------ 缓冲链表操作函数   5.链表检索(字符型) -------------- */
 int assoc_dxf_str(struct resbuf *rb,int dxf_code,char *result)
  {
   struct resbuf *rb1;
   if (dxf_type(dxf_code)!=RTSTR) return RTERROR;
   if (rb==NULL) return RTERROR;
   for (rb1=rb;rb1!=NULL;rb1=rb1->rbnext)
    { if (rb1->restype==dxf_code)
       {
   strcpy(result,rb1->resval.rstring);
   return RTNORM;
       }
     }
   return RTERROR;
 }

/***************************************************************************/

 ------ 缓冲链表操作函数   1.节点类型  */
int dxf_type(int dxf_code)
  {
    if (dxf_code>=1000) dxf_code=dxf_code-1000;
    if (dxf_code<0) return dxf_code;
    if (dxf_code>=0 && dxf_code<=9) return RTSTR;
    if (dxf_code>=10 && dxf_code<=19) return RTPOINT;
    if (dxf_code>=38 && dxf_code<=59) return RTREAL;
    if (dxf_code>=60 && dxf_code<=79) return RTSHORT;
    if (dxf_code>=210 && dxf_code<=239) return RT3DPOINT;
    return RTNONE;
  }

 

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 23:50 , Processed in 0.181361 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表