乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 118|回复: 8

[求助]:高手,解决cad仿真中虚拟内存不够和动作越来越慢问题?

[复制链接]

5

主题

11

帖子

2

银币

初来乍到

Rank: 1

铜币
31
发表于 2005-1-21 14:07:00 | 显示全部楼层 |阅读模式
本人在编一个ARX+VC的齿轮加工仿真程序,加工过程也基本实现。
只是,CAD在动作过程中,从第一个齿到最后一个齿,动作越来越慢,直至系统报出“虚拟内存不够”警告。然后,CAD便停止响应。
请教,如何解决之。
附:我是用“事务方式”处理操作的。
回复

使用道具 举报

5

主题

11

帖子

2

银币

初来乍到

Rank: 1

铜币
31
发表于 2005-1-21 20:39:00 | 显示全部楼层
up
回复

使用道具 举报

5

主题

11

帖子

2

银币

初来乍到

Rank: 1

铜币
31
发表于 2005-1-21 20:40:00 | 显示全部楼层
我顶
回复

使用道具 举报

14

主题

202

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
258
发表于 2005-1-24 13:16:00 | 显示全部楼层
估计你產生内存泄漏了
而且很大的泄露
你把你的代码贴上来
我们帮你看下
回复

使用道具 举报

5

主题

11

帖子

2

银币

初来乍到

Rank: 1

铜币
31
发表于 2005-1-25 19:38:00 | 显示全部楼层
请指教
        for(int k=0;kstartTransaction();
                AcDb3dSolid *pSolidWork = new AcDb3dSolid;
                pSolidWork        = pWork->GetObject(pTrans,AcDb::kForWrite);
                AcDb3dSolid *pSolidTool = new AcDb3dSolid;
                pSolidTool = pTool->GetObject(pTrans,AcDb::kForWrite);
               
                AcDbRegion *pRegion = new AcDbRegion;
                pRegion = pTool->GetRegion(pTrans,AcDb::kForWrite);
                double t = -(76.0417*pi/180);//m_A=-1.5;//
               
                for(int i=0;itransformBy(moved3D(OC[0]-OCL[0],OC[1]-OCL[1],OC[2]-OCL[2]));
       
                        MyRotate(pTrans,pSolidWork,secB-firB,rotVB,O);
       
                        MyRotate(pTrans,pSolidWork,secA-firA,rotVA,O);
                        copyAndCut(pSolidWork,pRegion,OC,axisDir);//copy and cut.
       
                        pSolidWork->draw();
                       
                        firB = secB;
                        firA = secA;
                        OCL=OC;
                        t+=m_stept;
                }
               
                MyRotate(pTrans,pSolidWork,-secA,rotVA,O);
                MyMove(pTrans,pSolidTool,OCL,O);
                                                         pRegion->transformBy(moved3D(O[0]-OCL[0],O[1]-OCL[1],O[2]-OCL[2]));
                OCL.set(0,0,0);
                firA = 0;
                //
                MyRotate(pTrans,pSolidWork,m_stepg,rotVA,O);
                actrTransactionManager->endTransaction();
        }
        AcTransaction *pTrans
                        = actrTransactionManager->startTransaction();
                AcDb3dSolid *pSolidWork = new AcDb3dSolid;
                pSolidWork = pWork->GetObject(pTrans,AcDb::kForWrite);
        MyRotate(pTrans,pSolidWork,-secB,rotVB,O);
        actrTransactionManager->endTransaction();
回复

使用道具 举报

14

主题

202

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
258
发表于 2005-1-26 10:50:00 | 显示全部楼层
程序代码不全
就目前来看你的pSolidWork没有delete!
回复

使用道具 举报

5

主题

11

帖子

2

银币

初来乍到

Rank: 1

铜币
31
发表于 2005-1-28 11:07:00 | 显示全部楼层
用事务处理模式还用清空指针吗?
不是说,事务完成后,指针就自动无效了吗?
回复

使用道具 举报

9

主题

21

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
57
发表于 2005-1-28 14:44:00 | 显示全部楼层
去看小东对相同问题的回复,就最近的
回复

使用道具 举报

14

主题

202

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
258
发表于 2005-1-29 08:26:00 | 显示全部楼层
我的理解是一个原则,你加入模型空间让AutoCAD接管的内存才不需要自己清空,否则都需要!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-5-26 09:57 , Processed in 3.084604 second(s), 71 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表