取得选择集包围盒
这是我在网上下载的一个[取得选择集包围盒]子程序,调试不能通过,请高手帮看看是什么原因BOOL GetSSExtents(ads_name ss, ads_point &maxpt, ads_point &minpt)
{
long len;
int ret=ads_sslength(ss,&len);
if(ret!=RTNORM||lengetGeomExtents(extent);
pt1=extent.maxPoint();
pt2=extent.minPoint();
pEnt->close();
//主要是这里调试不能通过,请帮看看是什么原因
for(int i=0;igetGeomExtents(extent);
if(pt1extent.minPoint()||pt2>extent.minPoint())
pt2=extent.minPoint();
//主要是这里调试不能通过,请帮看看是什么原因
pEnt->close();
}
maxpt=pt1;
maxpt=pt1;
maxpt=pt1;
minpt=pt2;
minpt=pt2;
minpt=pt2;
return TRUE;
} 楼主的代码都抄的错误百出。
这里给出修改后的。以后说不定也可以用的着。
Acad::ErrorStatus GetSSExtents(ads_name ss, ads_point &maxpt, ads_point &minpt)
{
long len;
int ret=ads_sslength(ss,&len);
if(ret!=RTNORM || lengetGeomExtents(extent) !=Acad::eOk)
{
continue;
}
pt1=extent.maxPoint();
pt2=extent.minPoint();
pEnt->close();
if (maxpt==LDBL_MAX)
{
maxpt=pt1.x;
maxpt=pt1.y;
maxpt=pt1.z;
minpt=pt2.x;
minpt=pt2.y;
minpt=pt2.z;
}
//下面的段应该写成函数的,太啰嗦了。
if (pt1.x > maxpt) maxpt=pt1.x;
if (pt1.y > maxpt) maxpt=pt1.y;
if (pt1.z > maxpt) maxpt=pt1.z;
if (pt2.x < minpt) minpt=pt2.x;
if (pt2.y < minpt) minpt=pt2.y;
if (pt2.z < minpt) minpt=pt2.z;
}
return Acad::eOk;
}
回复
简单的测试代码:
ads_name sel;
int ret=acedSSGet(NULL,NULL,NULL,NULL,sel);
if( ret!=RTNORM)
{
acedSSFree(sel);
return;
}
ads_point maxpt,minpt;
if (GetSSExtents(sel,maxpt,minpt) != Acad::eOk)
{
acutPrintf(_T("\n获取失败,请检查选择集!"));
return;
}
acedGrDraw(minpt,maxpt,1,1);
非常感谢你的指导和热心,我再去试试
页:
[1]