电动车行业网站建设,wordpress主题idown,包装设计公司有哪些呢,泾川县门户网站留言1、建模平台效果 2、三维控件OCCWidget 将V3d_View视图与控件句柄绑定即可实现3d视图嵌入Qt中#xff0c;为了方便也可以基于QOpenGLWidget控件进行封装#xff0c;方便嵌入各种窗体使用并自由缩放。
#ifndef OCCTWIDGET_H
#define OCCTWIDGET_H#include QWidget
#i…1、建模平台效果 2、三维控件OCCWidget 将V3d_View视图与控件句柄绑定即可实现3d视图嵌入Qt中为了方便也可以基于QOpenGLWidget控件进行封装方便嵌入各种窗体使用并自由缩放。
#ifndef OCCTWIDGET_H
#define OCCTWIDGET_H#include QWidget
#include QMouseEvent
#include QWheelEvent
#include QKeyEvent
#include QApplication
#include AIS_InteractiveContext.hxx
#include OpenGl_GraphicDriver.hxx
#include V3d_View.hxx
#include Aspect_Handle.hxx
#include Aspect_DisplayConnection.hxx
#include Graphic3d_GraphicDriver.hxx
#include QOpenGLWidget
#include WNT_Window.hxx//三维显示窗口class OCCTWidget : public QOpenGLWidget
{Q_OBJECTpublic:explicit OCCTWidget(QWidget *parent nullptr);// 获取三维环境交互对象Handle(AIS_InteractiveContext) getInteractiveContext(){return m_InteractiveContext;}// 获取三维显示界面Handle(V3d_View) get3dView(){return m_3dView;}private:// 初始化交互环境void initializeInteractiveContext();// 交互式上下文能够管理一个或多个查看器(viewer)中的图形行为和交互式对象的选择Handle(AIS_InteractiveContext) m_InteractiveContext;// 定义查看器(viewer)类型对象上的服务Handle(V3d_Viewer) m_3dViewer;// 创建一个视图Handle(V3d_View) m_3dView;// 创建3d接口定义图形驱动程序Handle(Graphic3d_GraphicDriver) m_graphicDriver;protected:// 覆写绘图事件void paintEvent(QPaintEvent *);// 覆写窗口尺寸变化事件void resizeEvent(QResizeEvent *);// 覆写鼠标按键按下事件void mousePressEvent(QMouseEvent *event);// 覆写鼠标按键释放事件void mouseReleaseEvent(QMouseEvent *event);// 覆写鼠标移动事件void mouseMoveEvent(QMouseEvent *event);// 覆写鼠标滚轮事件void wheelEvent(QWheelEvent *event);
private:Standard_Integer m_xValue; // 记录鼠标平移坐标XStandard_Integer m_yValue; // 记录鼠标平移坐标YCurrentAction3d m_currentMode; // 三维场景转换模式
};#endif // OCCTWIDGET_Hvoid OCCTWidget::initializeInteractiveContext()
{//若交互式上下文为空则创建对象if (m_InteractiveContext.IsNull()){//此对象提供与X server的连接在Windows和Mac OS中不起作用Handle(Aspect_DisplayConnection) m_display_donnection new Aspect_DisplayConnection();//创建OpenGl图形驱动if (m_graphicDriver.IsNull()){m_graphicDriver new OpenGl_GraphicDriver(m_display_donnection);}//获取QWidget的窗口系统标识符WId window_handle (WId) winId();// 创建Windows NT 窗口Handle(WNT_Window) wind new WNT_Window((Aspect_Handle) window_handle);//创建3D查看器m_3dViewer new V3d_Viewer(m_graphicDriver);//创建视图m_3dView m_3dViewer-CreateView();m_3dView-SetWindow(wind);//打开窗口if (!wind-IsMapped()){wind-Map();}//创建交互式上下文m_InteractiveContext new AIS_InteractiveContext(m_3dViewer); …………………………………………………………………………}
}3、三维建模类OCCModeling 对OCC提供的各种建模函数进行验证并实现较为复杂的水瓶建模。
#include BRepPrimAPI_MakeSphere.hxx
#include BRepPrimAPI_MakeCone.hxx
#include BRepPrimAPI_MakeTorus.hxx
#include BRepPrimAPI_MakeBox.hxx
#include BRepOffsetAPI_MakePipe.hxx
#include AIS_Shape.hxx#include Geom_TrimmedCurve.hxx
#include GC_MakeArcOfCircle.hxx
#include GC_MakeSegment.hxx
#include BRepBuilderAPI_MakeEdge.hxx
#include TopoDS_Wire.hxx
#include BRepBuilderAPI_MakeWire.hxx
#include BRepBuilderAPI_Transform.hxx
#include BRepBuilderAPI_MakeFace.hxx
#include BRepBuilderAPI_MakeEdge.hxx
#include TopoDS.hxx
#include BRepPrimAPI_MakePrism.hxx
#include BRepFilletAPI_MakeFillet.hxx
#include TopExp_Explorer.hxx
#include BRepPrimAPI_MakeCylinder.hxx
#include BRepAlgoAPI_Fuse.hxx
#include Geom_Plane.hxx
#include TopoDS_Edge.hxx
#include BRepOffsetAPI_MakeThickSolid.hxx
#include Geom_CylindricalSurface.hxx
#include Geom2d_Ellipse.hxx
#include Geom2d_TrimmedCurve.hxx
#include GCE2d_MakeSegment.hxx
#include BRepLib.hxx
#include BRepOffsetAPI_ThruSections.hxx
#include Geom_BezierCurve.hxxclass OCCTModeling
{
public:// 生成立方体static TopoDS_Shape CreateBoxModel(Standard_Real _dx 1.0, Standard_Real _dy 1.0, Standard_Real _dz 1.0);// 生成圆柱static TopoDS_Shape CreateCylinder(Standard_Real _R 0.5, Standard_Real _H 2.0);// 球体static TopoDS_Shape CreateSphere(Standard_Real _R 1.0);// 生成圆锥static TopoDS_Shape CreateCone(Standard_Real _R1 1.0, Standard_Real _R2 0.0, Standard_Real _H 2.0);// 生成圆环体static TopoDS_Shape CreateTorus(Standard_Real _R1 2.0, Standard_Real _R2 0.5);// 生成水瓶 static TopoDS_Shape CreateBottle(Standard_Real _Width 60.0, Standard_Real _Height 40.0, Standard_Real _Thickness 20.0);// 生成直管static TopoDS_Shape CreatePipe(const Standard_Real dRadius 20.0, const Standard_Real dThickness 2.0, const Standard_Real dLength 100.0);
};4、源码地址