找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 388|回复: 0

[ARX程序]:内存占用的问题,急急急

[复制链接]
发表于 2005-4-16 10:04:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
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不保存这些
数据呢,或者是其他的原因。请帮忙
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-18 22:23 , Processed in 0.186086 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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