几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-18, 08:43 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】请教遍历的问题

请教遍历的问题
请教遍历的问题
问题:构造选择集,获取选择集里的特征点并充放在数组中,然后在比较特征点在数组中的位置。以下是代码,但结果总是不正确,虽然调试是通了。
请各位帮忙,谢谢!
void zhao_rank()
{
// todo: implement the command
int i,cod_number;
int j;
long ilast;
ads_name ent[256];
float coordinate[256][3];
acedsslength(ssname,&ilast);
acdbentity *pentity;
acdbobjectid objid;
//*********以下程序是将选择集中实体坐标储存在二维数组***********//
for(i=1;i<ilast+1;i++)
{
acedssname(ssname,ilast-i,ent[i]);
acdbgetobjectid(objid,ent[i]);
acdbopenobject(pentity,objid,acdb::kforread);//打开点实体

if(pentity->iskindof(acdbcircle::desc()))
{
// 显示圆的圆心
acdbcircle *pcircle = acdbcircle::cast(pentity);
acgepoint3d ptcenter;
ptcenter = pcircle->center();

coordinate[i][0]=ptcenter[x];
coordinate[i][1]=ptcenter[y];
coordinate[i][2]=ptcenter[z];
}
if(pentity->iskindof(acdbpoint::desc()))
{
// 显示点的坐标
acdbpoint *ppoint = acdbpoint::cast(pentity);
acgepoint3d ptpoint;
ptpoint = ppoint->position();

coordinate[i][0]=ptpoint[x];
coordinate[i][1]=ptpoint[y];
coordinate[i][2]=ptpoint[z];
}
pentity->close();
}
//*********以下程序是为实体标号***********//
for(i=1;i<ilast+1;i++)
{
cod_number=1;
acedssname(ssname,ilast-i,ent[i]);
acdbgetobjectid(objid,ent[i]);
acdbopenobject(pentity,objid,acdb::kforread);//打开点实体
if(pentity->iskindof(acdbcircle::desc()))
{
acdbcircle *pcircle = acdbcircle::cast(pentity);
acgepoint3d ptcenter;
ptcenter = pcircle->center();
for(j=1;j<ilast+1;j++)
if(ptcenter[y]<coordinate[j][1]||(ptcenter[y]==coordinate[j][1]&&ptcenter[x]<coordinate[j][0]))
cod_number=cod_number+1;
acutprintf("\n %d",cod_number);
}
if(pentity->iskindof(acdbpoint::desc()))
{
acdbpoint *ppoint = acdbpoint::cast(pentity);
acgepoint3d ptpoint;
ptpoint = ppoint->position();
for(j=1;j<ilast+1;j++)
if(ptpoint[y]<coordinate[j][1]||(ptpoint[y]==coordinate[j][1]&&ptpoint[x]<coordinate[j][0]))
cod_number=cod_number+1;
acutprintf("\n %d",cod_number);
}

}
acedssfree(ssname);
}
用acdbobjectidarray
qq group:13107070
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 07:56 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多