C++如何与LSP相连接
<P>各位如果我用C++功能给一个圆或一个图块加了一个扩展的标签后,怎样用LPS语言获得这个扩展的标签项目,是不是有什么函数可以直接取得,请各位大虾指教!!!</P><P> 好急呀!为盼</P> <P>说清楚一点.</P>
<P>最好举个例子</P>
<P> </P> <P>什么是标签项目,存储在哪?如果在dwg里,直接读不就行了</P> <P>是直接写在图元上面的,在LSP中我可以用(entget (Car (entsel)))来获得图元的群码表,但是用C++写的好像就没办法获得了,不知是否可以用直接用什么函数获得了</P> 用ads_entget,和lsp的entget是对应的 <P>下边代码是获得联标中的关联数据的,与(cdr (assoc dxf_code ent_list))对应.</P>
<P>/********************************************************************/<BR>int assoc_dxf_point(struct resbuf *rb,int dxf_code,ads_point result)<BR> {<BR> struct resbuf *rb1;<BR> if (dxf_type(dxf_code)!=RTPOINT) return RTERROR;<BR> if (rb==NULL) return RTERROR;<BR> for (rb1=rb;rb1!=NULL;rb1=rb1->rbnext) <BR> { if (rb1->restype==dxf_code)<BR> { <BR> result=rb1->resval.rpoint;<BR> result=rb1->resval.rpoint;<BR> result=rb1->resval.rpoint;<BR> return RTNORM;<BR> }<BR> }<BR> return RTERROR;<BR> }<BR>/********************************************************************/ <BR> int assoc_dxf_int(struct resbuf *rb,int dxf_code,short *result)<BR> {<BR> struct resbuf *rb1;<BR> if (dxf_type(dxf_code)!=RTSHORT) return RTERROR;<BR> if (rb==NULL) return RTERROR;<BR> for (rb1=rb;rb1!=NULL;rb1=rb1->rbnext) <BR> { if (rb1->restype==dxf_code)<BR> { <BR> *result=rb1->resval.rint;<BR> return RTNORM;<BR> }<BR> }<BR> return RTERROR;<BR> }<BR>/*************************************************************/<BR> int assoc_dxf_str(struct resbuf *rb,int dxf_code,char *result)<BR> {<BR> struct resbuf *rb1;<BR> if (dxf_type(dxf_code)!=RTSTR) return RTERROR;<BR> if (rb==NULL) return RTERROR;<BR> for (rb1=rb;rb1!=NULL;rb1=rb1->rbnext) <BR> { if (rb1->restype==dxf_code)<BR> { <BR> strcpy(result,rb1->resval.rstring);<BR> return RTNORM;<BR> }<BR> }<BR> return RTERROR;<BR> }<BR>/******************************************************************/<BR> int assoc_dxf_real(struct resbuf *rb,int dxf_code,ads_real *result)<BR> {<BR> struct resbuf *rb1;<BR> if (dxf_type(dxf_code)!=RTREAL) return RTERROR;<BR> if (rb==NULL) return RTERROR;<BR> for (rb1=rb;rb1!=NULL;rb1=rb1->rbnext) <BR> { if (rb1->restype==dxf_code)<BR> { <BR> *result=rb1->resval.rreal;<BR> return RTNORM;<BR> }<BR> }<BR> return RTERROR;<BR> }</P>
<P> </P> <P></P>
<P>你们可能还不知道我的意思,我现在是用C++向某个图元加放了标签资料,用我编写的专门查标签资的命令"WID"查询结果如下:</P>
<P>Command: wid</P>
<P>Select object:<BR> CIRCLE Layer: "UP_W"<BR> Space: Model space<BR> Handle = 89C5E<BR> center point, X= -335.028 Y= 53.235 Z= 0.000<BR> radius 6.000<BR> circumference 37.699<BR> area 113.097</P>
<P> *标签项目: NAME : = <BR> *标签项目: NOTE_MARK : = <BR> *标签项目: PART_MARK : = []<BR>上面三项标签值我怎样用LSP语言获得,用(entget (car (entsel)))好像没有这三项扩展的数据,请各位帮忙看一下,上面有附件.</P> <P>用entgetx了,那是扩展实体数据</P> <P>是不是实体扩展数据的问题?</P>
<P>实体扩展数据的获得过程如下:</P>
<P>(setq ent_list (entget ent (list appname")))</P>
<P>(setq xdata (assoc -3 ent_list))</P>
<P>(setq name (assoc xdxf xdata))</P>
<P> </P>
<P> </P>
页:
[1]