上篇文章介绍了将Open CASCADE融入到MFC多文档中并实现了显示;这次将利用Open CASCADE在MFC中绘制一个简单的球体模型,话不多说,直接上运行结果图:
首先在*****Doc.h中添加函数:
public:
void DrawSphere(double Radius);
紧接着在*****Doc.cpp中添加实现DrawSphere(double Radius)的代码:
不要忘了添加头文件#include "OCCmfcMDIView.h",要放在#include "OCCmfcMDIDoc.h"下面,不然会中断!!!!!!!!!!
void COCCmfcMDIDoc::DrawSphere(double Radius)
{
BRepPrimAPI_MakeSphere mkSphere(Radius);
TopoDS_Shape Sphere = mkSphere.Shape();
Handle(AIS_Shape) myAISSphere = new AIS_Shape(Sphere);
myAISContext->Display(myAISSphere, Standard_False);
CMDIFrameWnd* pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
CMDIChildWnd* pChild = (CMDIChildWnd*)pFrame->GetActiveFrame();
COCCmfcMDIView* pView = (COCCmfcMDIView*)pChild->GetActiveView();
pView->fitAll();
}
最后在****View.cpp的绘制函数 void COCCmfcMDIView::OnDraw(CDC* /*pDC*/)调用函数:
pDoc->DrawSphere(2.0);
void COCCmfcMDIView::OnDraw(CDC* /*pDC*/)
{
COCCmfcMDIDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
myView->MustBeResized();
myView->Update();
pDoc->DrawSphere(2.0);
fitAll();
}
运行结果》》
这是一个最简单的案例,不需要我们解析模型,该模型是封装在OCC中的,直接调用即可。
有问题留言!!!!!!!!!!