明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1891|回复: 8

C++如何与LSP相连接

[复制链接]
发表于 2006-6-27 17:53:00 | 显示全部楼层 |阅读模式

各位如果我用C++功能给一个圆或一个图块加了一个扩展的标签后,怎样用LPS语言获得这个扩展的标签项目,是不是有什么函数可以直接取得,请各位大虾指教!!!

                      好急呀!为盼

发表于 2006-6-28 11:28:00 | 显示全部楼层

说清楚一点.

最好举个例子

 

发表于 2006-6-28 15:44:00 | 显示全部楼层

什么是标签项目,存储在哪?如果在dwg里,直接读不就行了

 楼主| 发表于 2006-6-28 22:52:00 | 显示全部楼层

是直接写在图元上面的,在LSP中我可以用(entget (Car (entsel)))来获得图元的群码表,但是用C++写的好像就没办法获得了,不知是否可以用直接用什么函数获得了

发表于 2006-6-29 10:13:00 | 显示全部楼层
用ads_entget,和lsp的entget是对应的
发表于 2006-6-29 10:25:00 | 显示全部楼层

下边代码是获得联标中的关联数据的,与(cdr (assoc dxf_code ent_list))对应.

/********************************************************************/
int assoc_dxf_point(struct resbuf *rb,int dxf_code,ads_point result)
  {
   struct resbuf *rb1;
   if (dxf_type(dxf_code)!=RTPOINT) return RTERROR;
   if (rb==NULL) return RTERROR;
   for (rb1=rb;rb1!=NULL;rb1=rb1->rbnext)
    { if (rb1->restype==dxf_code)
       {
   result[X]=rb1->resval.rpoint[X];
   result[Y]=rb1->resval.rpoint[Y];
   result[Z]=rb1->resval.rpoint[Z];
   return RTNORM;
       }
     }
   return RTERROR;
 }
/********************************************************************/
 int assoc_dxf_int(struct resbuf *rb,int dxf_code,short *result)
  {
   struct resbuf *rb1;
   if (dxf_type(dxf_code)!=RTSHORT) return RTERROR;
   if (rb==NULL) return RTERROR;
   for (rb1=rb;rb1!=NULL;rb1=rb1->rbnext)
    { if (rb1->restype==dxf_code)
       {
   *result=rb1->resval.rint;
   return RTNORM;
       }
     }
   return RTERROR;
 }
/*************************************************************/
 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;
 }
/******************************************************************/
 int assoc_dxf_real(struct resbuf *rb,int dxf_code,ads_real *result)
  {
   struct resbuf *rb1;
   if (dxf_type(dxf_code)!=RTREAL) return RTERROR;
   if (rb==NULL) return RTERROR;
   for (rb1=rb;rb1!=NULL;rb1=rb1->rbnext)
    { if (rb1->restype==dxf_code)
       {
   *result=rb1->resval.rreal;
   return RTNORM;
       }
     }
   return RTERROR;
 }

 

 楼主| 发表于 2006-6-29 11:40:00 | 显示全部楼层

你们可能还不知道我的意思,我现在是用C++向某个图元加放了标签资料,用我编写的专门查标签资的命令"WID"查询结果如下:

Command: wid

Select object:
                  CIRCLE    Layer: "UP_W"
                            Space: Model space
                   Handle = 89C5E
            center point, X= -335.028  Y=   53.235  Z=    0.000
            radius     6.000
     circumference    37.699
              area   113.097

 *标签项目: NAME        : = [1 posTPIN  12.000   0.000   0.005 ..   0.00 ]
 *标签项目: NOTE_MARK   : = [4]
 *标签项目: PART_MARK   : = []
上面三项标签值我怎样用LSP语言获得,用(entget (car (entsel)))好像没有这三项扩展的数据,请各位帮忙看一下,上面有附件.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2006-6-30 10:23:00 | 显示全部楼层

用entgetx了,那是扩展实体数据

发表于 2006-7-1 19:17:00 | 显示全部楼层

是不是实体扩展数据的问题?

实体扩展数据的获得过程如下:

(setq ent_list (entget ent (list appname")))

(setq xdata (assoc -3 ent_list))

(setq name (assoc xdxf xdata))

 

 

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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