- UID
- 180401
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-10-4
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
ads_name name; ads_point pnt;
acedEntSel("选择实体\n", name, pnt);
AcDb3dSolid* solid = 0;
AcDbEntity* entity = 0;
if(GetClosedObjPtr(name, solid)) {
AcDb3dSolid* ppnt = new AcDb3dSolid();
ppnt->createBox(1, 1, 1);
postToDatabase(ppnt);
if(!OpenObjPtr(ppnt->objectId(), ppnt)) return;
AcDbExtents extents;
solid->getGeomExtents(extents);
AcGePoint3d maxPnt = extents.maxPoint();
AcGePoint3d minPnt = extents.minPoint();
AcDbLine* line = new AcDbLine(maxPnt, minPnt);
line->setColorIndex(10);
postToDatabase(line);
AcGeMatrix3d mt;
mt(3, 3) = 1;
AcGePoint3d calcPnt;
double x_offset = (maxPnt.x - minPnt.x)/100.0;
double y_offset = (maxPnt.y - minPnt.y)/100.0;
double z_offset = (maxPnt.z - minPnt.z)/100.0;
acdbHostApplicationServices()->workingDatabase()
->disableUndoRecording ( Adesk::kTrue);
double x, y, z;
long i = 0;
Adesk::Boolean boolean; AcDb3dSolid* psNULL;
for(x = minPnt.x; x < maxPnt.x; x += x_offset) {
for(y = minPnt.y; y < maxPnt.y; y += y_offset) {
for(z = minPnt.z; z < maxPnt.z; z += z_offset) {
mt(0, 3) = x - calcPnt.x;
mt(1, 3) = y - calcPnt.y;
mt(2, 3) = z - calcPnt.z;
calcPnt.set(x, y, z);
ppnt->transformBy(mt);
solid->checkInterference(ppnt,
Adesk::kFalse, boolean, psNULL); }
}
} //*/
ppnt->close();
acdbHostApplicationServices()->workingDatabase()->disableUndoRecording
(Adesk::kFalse);
}//*/
利用以上代码检测小立方体是否在不规则实体solid内部,因为有100万个位置要
检测,所以只创建一个小立方体,将它移到不同的位置,当只执行计算时,
内存的占用达到了1.5G以上,我想中间可能保存了计算数据,如何让CAD不保存这些
数据呢,或者是其他的原因。请帮忙 |
|