• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            eryar

            PipeCAD - Plant Piping Design Software.
            RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
            posts - 603, comments - 590, trackbacks - 0, articles - 0

            A Simple OpenCASCADE Qt Demo-occQt

            Posted on 2014-12-29 23:52 eryar 閱讀(8161) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            A Simple OpenCASCADE Qt Demo-occQt

            eryar@163.com

            Abstract. OpenCASCADE have provided the Qt samples in the samples directory, but they are a little complicated. So I decide write a simple OpenCASCADE Qt demo for the OpenCASCADE beginners. 

            Key Words. OpenCASCADE6.8.0, Qt5.4

            1. Introduction

            OpenCASCADE is a software development platform providing services for 3D surface and solid modeling, CAD data exchange, and visualization. Most of OCCT functionality is avaiable in the form of C++ libraries. OCCT can be best applied in development of software dealing with 3D modeling(CAD), manufacturing/measuring(CAM) or numerical simulation(CAE). 

            OpenCASCADE Technology is free software; you can redistribute it and or modify it under the terms of the GNU Lesser General Public License(LGPL) version 2.1, with additional exception. You can get the OpenCASCADE from here: http://www.opencascade.org/

            wps_clip_image-20312

            Figure 1.1 OpenCASCADE6.8.0 Release Notes

            Qt is a cross-platform application framework that is widely used for developing application software with graphical user interface(GUI). Qt is free and open source software distributed under the terms of the GNU Lesser General Public License. 

            Qt Services

            Qt is a powerful framework that lets you create stunning user interfaces with amazing performance. We want to help you to achieve optimal results by using Qt building blocks in the best possible way, which is why we offer an extensive range of Qt advisory services. 

            Code Less, Create More. Easily create connected devices, UIs and applications that run anywhere on any device. 

            wps_clip_image-25919

            Figure 1.2 Qt Ads

            You can develop your program in the following manner:

            wps_clip_image-19414

            Figure 1.3 A application based on Qt and OpenCASCADE

            You can use Qt for the GUI development, and for data management such as restore data from file or undo/redo support, you can choose OCAF, and for modeling algorithms, you can use OpenCASCADE. 

            You can also use the Model/View/Controller of Qt to manage the data and undo/redo mechnism, to accelarate the developing.

            OpenCASCADE have provided many samples to show its functions, but there are a lots codes, it is a little complicated for the beginner. I write a simple program to try OpenCASCADE in a straightforward way. I hope the demo can help you to understand the usage of OpenCASCADE.

            The demo is based on OpenCASCADE6.8.0 and Qt5.4. Because of there are many bug fixes in OpenCASCADE new version6.8.0, especially the visualization module. So I update the code for the previous demo Qt with OpenCASCADE and add something new: 

            http://www.shnenglu.com/eryar/archive/2013/08/18/202617.aspx

            2.View Operations

            In occQt there are three operations to manipulate the view: pan, zoom and rotate, the following picture is the main window of occQt:

            wps_clip_image-12250

            Figure 2.1 occQt GUI

            The options is for the middle button of the mouse, you can dragged the middle button of the mouse to pan, zoom and rotate the view. And the mouse left button is used for the pick and multi-select operation, single click you can pick a shape; drag left button will select all the shapes in the rectangle.

            wps_clip_image-19038

            Figure 2.2 Click mouse left button to pick

            wps_clip_image-15699

            Figure 2.3 Drag mouse left button to multi-select

            The selected shapes will be hilighted, but now do not provide any operations for the selected shapes.

            And also provide the Reset and Fit All function for the view:

            wps_clip_image-6756

            Figure 2.4 Reset and Fit all for the view

            3.Make Primitives

            OpenCASCADE provides simple API for the construction of primitives, such as box, cone, sphere, cylinder, and torus, .etc. You can make a primitive by a simple class in OpenCASCADE, the sample code as follows:

            TopoDS_Shape aTopoBox = BRepPrimAPI_MakeBox(3.04.05.0);
            TopoDS_Shape aTopoCone 
            = BRepPrimAPI_MakeCone(3.00.05.0);
            TopoDS_Shape aTopoSphere 
            = BRepPrimAPI_MakeSphere(3.0);
            TopoDS_Shape aTopoCylinder 
            = BRepPrimAPI_MakeCylinder(3.05.0);
            TopoDS_Shape aTopoTorus 
            = BRepPrimAPI_MakeTorus(3.01.0);

            And the shapes in the viewer is in the following picture:

            wps_clip_image-10519

            Figure 3.1 Primitives in occQt

            4.Modeling Algorithms

            Modeling algorithms is the outstanding advantage of OpenCASCADE. But in occQt just give a example for the usage, you can check the documents and OpenCASCADE reference manual to have a look. The modeling algorithms in the occQt are:

            v Fillet;

            v Chamfer; 

            v Extrude;

            v Revol;

            v loft.

            wps_clip_image-29758

            Figure 4.1 Modeling Algorithms in occQt

            5.Boolean Operations

            Boolean operations are used to create new shapes from the combinations of two shapes,

            wps_clip_image-12858

            The class to perform this is simple to use, they are:

            TopoDS_Shape aFusedShape = BRepAlgoAPI_Fuse(S1, S2);
            TopoDS_Shape aCommonShape 
            = BRepAlgoAPI_Common(S1, S2);
            TopoDS_Shape aCuttedShape 
            = BRepAlgoAPI_Cut(S1, S2);

            You can try this in occQt:

            wps_clip_image-19041

            Figure 5.1 Boolean operations in occQt

            6. Conclusion

            From the simple code demo, I hope it will help you to understand OpenCASCADE easily. Thanks for OpenCASCADE and Qt the amazing work. 

            I put the code to GitHub: https://github.com/eryar/occQt/. You can download and have a try, then you can feedback or track the modification of occQt.

            Enjoy!

            中文字幕亚洲综合久久菠萝蜜| 97久久精品无码一区二区 | 欧美久久综合九色综合| 国产精品丝袜久久久久久不卡| 久久AⅤ人妻少妇嫩草影院| 欧美成人免费观看久久| 久久精品天天中文字幕人妻| 9191精品国产免费久久| 亚洲?V乱码久久精品蜜桃 | 色综合合久久天天综合绕视看 | 色偷偷久久一区二区三区| 囯产精品久久久久久久久蜜桃| 亚洲精品无码久久久久久| 久久国产乱子伦精品免费强| 天天做夜夜做久久做狠狠| 91久久婷婷国产综合精品青草| 久久国产福利免费| 久久se精品一区精品二区| 中文精品99久久国产 | 久久综合九色综合网站| 久久99热精品| 久久久无码精品亚洲日韩按摩| 久久一本综合| 精品久久久久久久中文字幕| 久久亚洲私人国产精品vA | 久久精品国产久精国产思思| 亚洲国产婷婷香蕉久久久久久| 久久综合综合久久狠狠狠97色88| 亚洲国产另类久久久精品小说| 亚洲精品高清一二区久久| 久久综合九色综合欧美狠狠| 久久精品国产亚洲av日韩| 日韩欧美亚洲综合久久| 亚洲国产精品无码久久九九| 久久五月精品中文字幕| 久久se精品一区精品二区国产| 久久综合九色综合97_久久久| 99久久精品费精品国产一区二区 | 久久精品成人免费观看97| 亚洲伊人久久大香线蕉苏妲己| 国产精品久久久亚洲|