明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: kellyyang1

请大家指点一下!急

  [复制链接]
发表于 2004-10-29 23:18:00 | 显示全部楼层
401925308


不过我很少用QQ聊.
 楼主| 发表于 2004-10-30 14:08:00 | 显示全部楼层
我把第一个函数变成了如下,想把图形中所有直线的端点存入到一个点数组中去。数组中的点值两两不同// This is command 'JD'
void vcstp2jd()
{
// TODO: Implement the command
int sizeofpoint=len1*2;
ads_name pipe;////////管段的数组
ads_point as_point[200],ae_point[200];///////管段起始节点的数组
ads_point *totalpoint;
if((totalpoint=new ads_point[sizeofpoint])==NULL)///////分配堆内存
{ads_alert("没有分配成功!");
}
int n=-1;
for(int i=0;i<len1;i++)
{acedSSName(sspipe,i,pipe);
line_data(pipe,as_point,ae_point);
for(int j=0;j<sizeofpoint;j++)
{if(as_point[X]!=totalpoint[j][X]&&as_point[Y]!=totalpoint[j][Y])
{n=n+1;
ads_point_set(as_point,totalpoint[n]);
}
}
for(j=0;j<sizeofpoint;j++)
{if(ae_point[X]!=totalpoint[j][X]&&ae_point[Y]!=totalpoint[j][Y])
{n=n+1;
ads_point_set(ae_point,totalpoint[n]);
}
}
} }可是一在CAD下运行就发生异常错误,CAD自动关闭,能告诉原因吗??不省感谢
 楼主| 发表于 2004-10-30 14:28:00 | 显示全部楼层
我把第二个函数改成了如下,是想把图形中每个直线的端点都存入一个点数组中去,数组中的每个点两两不相同:void vcstp2jd()
{
// TODO: Implement the command
int sizeofpoint=len1*2;
ads_name pipe;////////管段的数组
ads_point as_point[200],ae_point[200];///////管段起始节点的数组
ads_point *totalpoint;
if((totalpoint=new ads_point[sizeofpoint])==NULL)///////分配堆内存
{ads_alert("没有分配成功!");
}
int n=-1;
for(int i=0;i<len1;i++)
{acedSSName(sspipe,i,pipe);
line_data(pipe,as_point,ae_point);
for(int j=0;j<sizeofpoint;j++)
{if(as_point[X]!=totalpoint[j][X]&&as_point[Y]!=totalpoint[j][Y])
{n=n+1;
ads_point_set(as_point,totalpoint[n]);
}
}
for(j=0;j<sizeofpoint;j++)
{if(ae_point[X]!=totalpoint[j][X]&&ae_point[Y]!=totalpoint[j][Y])
{n=n+1;
ads_point_set(ae_point,totalpoint[n]);
}
}
} if (sspipe)
acedSSFree(sspipe);
delete[]totalpoint;
} 编译同样可以通过,可是在CAD下运行的时候却总是提示发生异常,然后CAD自动关闭,为什么!!!急,谢谢了
发表于 2004-10-30 16:55:00 | 显示全部楼层
点你可以用AcGePoint3d


点数组你可以用AcArray &lt;AcGePoint3d&gt;
 楼主| 发表于 2004-10-30 19:23:00 | 显示全部楼层
你这样定义怎么确定数组的维数呢??
 楼主| 发表于 2004-10-30 19:33:00 | 显示全部楼层
我看了书上好象也可以这样定义点数组的啊!
发表于 2004-10-30 21:07:00 | 显示全部楼层

回复

为什么不用        AcGePoint3dArray存储点呢?
 楼主| 发表于 2004-10-31 19:13:00 | 显示全部楼层
能告诉AcArray &lt;AcGePoint3d&gt;和        AcGePoint3dArray具体怎么用吗??能随便提供关于他们的代码吗??
 楼主| 发表于 2004-10-31 20:01:00 | 显示全部楼层
我写了如下几行代码,想看看AcArray 的用法,可是在编译通过的情况下,在CAD下运行,又使得CAD发生错误,自动关闭,能帮忙分析一下吗??感谢哦
发表于 2004-10-31 21:28:00 | 显示全部楼层

回复

比如: 存储AcDbPolyline所有结点坐标: AcDbPolyline *pLineSource = (AcDbPolyline*)pEntity; //定义AcDbPolyline AcGePoint3dArray sVertArray;
AcGePoint3d pt;
for (int vernum = 0; vernum < pLineSource->numVerts(); vernum++) {
pLineSource->getPointAt(vernum, pt);
sVertArray.append(pt);
} 在ObjectARX SDK中应用AcGePoint3dArray或AcGePoint2dArray的例子很多.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 10:40 , Processed in 0.181196 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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