不过我很少用QQ聊. 我把第一个函数变成了如下,想把图形中所有直线的端点存入到一个点数组中去。数组中的点值两两不同// This is command 'JD'<BR>void vcstp2jd()<BR>{<BR> // TODO: Implement the command<BR>int sizeofpoint=len1*2;<BR>ads_name pipe;////////管段的数组<BR>ads_point as_point,ae_point;///////管段起始节点的数组<BR>ads_point *totalpoint;<BR>if((totalpoint=new ads_point)==NULL)///////分配堆内存<BR>{ads_alert("没有分配成功!");<BR>}<BR>int n=-1;<BR>for(int i=0;i<len1;i++)<BR>{acedSSName(sspipe,i,pipe);<BR>line_data(pipe,as_point,ae_point);<BR>for(int j=0;j<sizeofpoint;j++)<BR>{if(as_point!=totalpoint&&as_point!=totalpoint)<BR>{n=n+1;<BR>ads_point_set(as_point,totalpoint);<BR>}<BR>}<BR>for(j=0;j<sizeofpoint;j++)<BR>{if(ae_point!=totalpoint&&ae_point!=totalpoint)<BR>{n=n+1;<BR>ads_point_set(ae_point,totalpoint);<BR>}<BR>}<BR>}
}可是一在CAD下运行就发生异常错误,CAD自动关闭,能告诉原因吗??不省感谢 我把第二个函数改成了如下,是想把图形中每个直线的端点都存入一个点数组中去,数组中的每个点两两不相同:void vcstp2jd()<BR>{<BR> // TODO: Implement the command<BR>int sizeofpoint=len1*2;<BR>ads_name pipe;////////管段的数组<BR>ads_point as_point,ae_point;///////管段起始节点的数组<BR>ads_point *totalpoint;<BR>if((totalpoint=new ads_point)==NULL)///////分配堆内存<BR>{ads_alert("没有分配成功!");<BR>}<BR>int n=-1;<BR>for(int i=0;i<len1;i++)<BR>{acedSSName(sspipe,i,pipe);<BR>line_data(pipe,as_point,ae_point);<BR>for(int j=0;j<sizeofpoint;j++)<BR>{if(as_point!=totalpoint&&as_point!=totalpoint)<BR>{n=n+1;<BR>ads_point_set(as_point,totalpoint);<BR>}<BR>}<BR>for(j=0;j<sizeofpoint;j++)<BR>{if(ae_point!=totalpoint&&ae_point!=totalpoint)<BR>{n=n+1;<BR>ads_point_set(ae_point,totalpoint);<BR>}<BR>}<BR>}
if (sspipe)<BR> acedSSFree(sspipe);<BR>delete[]totalpoint;<BR>}
编译同样可以通过,可是在CAD下运行的时候却总是提示发生异常,然后CAD自动关闭,为什么!!!急,谢谢了 点你可以用AcGePoint3d
点数组你可以用AcArray <AcGePoint3d> 你这样定义怎么确定数组的维数呢?? 我看了书上好象也可以这样定义点数组的啊!
回复
为什么不用 AcGePoint3dArray存储点呢? 能告诉AcArray <AcGePoint3d>和 AcGePoint3dArray具体怎么用吗??能随便提供关于他们的代码吗?? 我写了如下几行代码,想看看AcArray 的用法,可是在编译通过的情况下,在CAD下运行,又使得CAD发生错误,自动关闭,能帮忙分析一下吗??感谢哦回复
比如:存储AcDbPolyline所有结点坐标:
AcDbPolyline *pLineSource = (AcDbPolyline*)pEntity; //定义AcDbPolyline
AcGePoint3dArray sVertArray;<BR>AcGePoint3d pt;<BR>for (int vernum = 0; vernum < pLineSource->numVerts(); vernum++) {<BR> pLineSource->getPointAt(vernum, pt);<BR> sVertArray.append(pt);<BR>}
在ObjectARX SDK中应用AcGePoint3dArray或AcGePoint2dArray的例子很多.