OpenCascade学习笔记
文章平均质量分 64
记录OpenCascade学习笔记
loveoobaby
专注工业CAD/CAE软件开发
展开
-
opencacade.js的使用
opencascade.js是一个很有意思的项目,它将occ通过webassembly技术,使occ能在浏览器端运行。2. 长期存活对象可将其注册到FinalizationRegistry上,等js进行gc的时候自动回调delete。1. 拉去opencascde.js的docker镜像。2. 编写配置文件,指定需要暴露的类,指定emcc的编译参数。4. 在ts或js中初始化模块,参考官方案例。1. 函数局部对象可直接调用delete。原创 2023-05-12 23:55:00 · 1058 阅读 · 2 评论 -
【FastCAE源码阅读2】FastCAE如何调用OpenCasCade
FastCAE使用的是OCCT(OpenCascade)几何内核,FastCAE几何模块菜单上每个功能对应着一个创建几何的类,本文简单分析这部分源码。打开FastCAE几何模块,在功能菜单中可以看到很多几何操作功能,包括创建立方体、创建圆柱,创建点,布尔操作,物体进行变换等。这每一个功能被封装成一个类,底层会调用OCCT的API,代码在GeometryCommand模块中。其中,GeoCommandBase是所有几何创建命令的基类,也是QObject对象,定义了通用接口,基础的QT槽函数,通用字段。...原创 2022-08-28 11:54:58 · 1003 阅读 · 0 评论 -
【OCC学习1】使用Visual Studio 2022编译OpenCasCade
1. 去官网下载OCC的源码,下载第三方依赖。如果嫌比较麻烦,可直接下载编译好的二进制包。里面有现成的源码及编译好的三方库。2. 打开CMake进行配置。 3. 验证是否可以启动成功启动DRAWEXE项目,能成功启动,代表整个编译没有问题......原创 2022-06-28 13:14:11 · 1704 阅读 · 1 评论 -
【OCC学习2】配置Visual Studio使用Opencascade库
1. 使用VS创建一个控制台应用2. 在源文件中添加以下代码3. 配置头文件路径。打开项目属性,在C/C++ --> 常规 中找到“附加包含目录”,输入编译好的OOC库的头文件目录 4. 配置lib库目录。配置文件头文件路径,直接编译的话,会报链接错误,找不到某些符号链接。这是可以根据符号查找需要的lib库,查找的方法见使用Far Manager查询lib库中的符号链接 在“链接器” --> “常规” --> "附加库目录"中输入lib文件路径。 同时,要在"链接器"-->"输入"-->"附加依赖项".原创 2022-07-01 12:48:59 · 2307 阅读 · 0 评论 -
【OCC学习3】OCC与VTK整合
3. Visual Studio配置 在Visual Studio中配置OCC的头文件、VTK的头文件; 配置附加库目录,包括OCC、VTK的库目录; 配置附加依赖项,如果不知道怎么根据链接错误找lib库,可使用Far Manager查找; 4. 配置调试PATH环境变量。PATH变量中需增加OCC、VTK、TBB、Openvr、freeimage、ffmpeg库的dll目录。官网编译好的包包含这些库的,可直接下载。......原创 2022-07-02 13:07:48 · 2134 阅读 · 5 评论 -
【OCC学习4】DRAW的使用及Debug
1. DRAW的启动 如果是使用的OCC二进制包,在其安装包下有draw.bat,双击即可启动。但不推荐这种方式,主要是无法Debug。推荐直接编译源码,使用源码启动,这样在Visual Studio中可以直接Debug Draw的命令。 如果配置好OCC的开发环境,启动Draw很简单,将其设为启动项即可启动。 2. Debug Tcl命令Draw是Tcl命令解析器,器命令最终会调用OCC的函数。想确定这个TCL指令是怎么实现的,有一个专门的命令,可以找到命令的源码:getsource。例如:Draw原创 2022-07-05 22:00:00 · 865 阅读 · 0 评论 -
【OCC学习5】记录最新版本emcc编译occ的bug:opencascade-7.6.0/src/Standard/Standard_Time.hxx:29:25: error: redefinit
在研究OCC与Webassembly结合使用,编译的时候遇到以下问题:原来是最新版本的emcc导致的,版本回退到3.1.10就可以了。原创 2022-07-08 23:36:58 · 440 阅读 · 0 评论 -
【OCC学习6】DRAW的图形显示命令
ivtksetdispmode:对象显示模式,0-线框, 1--渲染模式。vaspects:设置对象的属性,包括颜色、材料、透明度、线宽等;vsetmaterial: 设置对象的材料;ivtkdump:将显示窗口保存为图片;vsetcolorbg:设置背景颜色;ivtkinit:创建VTK窗口。ivtkdisplay:显示对象。vtriangle:创建三角形。vplane:创建一个平面;ivtkerase:删除对象。vdir:列表显示的对象;vaxis:创建一个轴线;vpoint:创建一个点;.......原创 2022-08-14 22:35:03 · 1233 阅读 · 0 评论 -
【OCC学习7】DRAW的几何命令
cone name [x y z [dx dy dz [ux uy uz]]] semi-angle radius:创建圆锥面,给定坐标轴,圆锥面与轴的夹角,radius是圆锥与XY平面形成的圆的半径;hyperbola name x y [z [dx dy dz]] [ux uy [uz]] firstradius secondradius:创建双曲线,提供中心点坐标,坐标轴、两个半径;circle name x y [z [dx dy dz]] [ux uy [uz]] radius:创建圆。.....原创 2022-08-15 19:41:37 · 652 阅读 · 0 评论 -
【OCC学习8】DRAW的拓扑命令
拓扑定义了与简单几何实体之间的关系,进而连接在一起表示复杂的实体。原创 2022-08-16 22:20:58 · 581 阅读 · 0 评论 -
【OCC学习9】Draw的布尔运算命令
相对于bop是直接提取结果,保存到新的shap中。原创 2022-08-17 10:52:49 · 622 阅读 · 0 评论 -
【OCC学习10】ANC101.tcl脚本解读
在OCC的sample\tcl目录下有很多tcl脚本,是学习Draw很好的资源。本文分析一下ANC101.tcl脚本,学习基本的CAD建模方式。原创 2022-08-19 12:26:30 · 443 阅读 · 0 评论 -
【OCC学习11】OCC的WebAssembly编译
记录OCC的webgl案例编译过程。整个编译借助emcc编译器,cmake生成nmake file,最后使用nmake编译。原创 2022-08-20 20:50:06 · 1361 阅读 · 0 评论 -
【OCC学习12】边界表示法(Brep)简述
边界表示的一个重要特征是描述形体的信息包括几何信息(Geometry)和拓朴信息(Topology)两个方面。拓朴信息描述形体上的顶点、边、面的连接关系,它形成物体边界表示的“骨架”。形体的几何信息犹如附着在“骨架”上的肌肉。例如,形体的某个面位于某一个曲面上,定义这一曲面方程的数据就是几何信息。此外,边的形状、顶点在三维空间中的位置(点的坐标)等都是几何信息,一般来说,几何信息描述形体的大小、尺寸、位置和形状等。原创 2022-08-21 14:57:36 · 7152 阅读 · 0 评论 -
【OCC学习13】Draw box命令源码分析
Draw几乎包含了OCC的所有功能,如果会用Draw的所有命令并分析追踪其源码,那么开发使用OCC几乎没有障碍。分析每条Draw命令的实现也是阅读OCC源码,学习其API使用的比较好的方法。原创 2022-08-21 22:46:11 · 858 阅读 · 0 评论 -
【OCC学习14】OCC Foundation Classes
每个模块会包含若干tookit,每个tookit会编译成一个dll动态库。每个toolkit包含若干个包, 每个包包含若干class定义。2. TColgp包:使用NCollection包下的容器,用typedef重新定义了gp对象容器。集合容器类位于NCollection包下,包括Array、Sequence、Map、List等数据结构。Foundation模块包含两个Tookit:TKernel、TKMath。3. GeomAbs包:定义了一些枚举,包括曲线类型、曲面类型等;原创 2022-08-22 15:31:05 · 682 阅读 · 0 评论 -
【OCC学习16】Modeling Data模块2d几何图形创建
TKG2d下的Geom2d包是定义二维几何图形,都派生与Geom2d_Geometry、Standard_Transient。这种对象就可以用智能指针Handle来管理。其内部的几何图形的数据用TKMath中的gp包下的类保存的。如:Geom2d_CartesianPoint表示一个坐标点,其内部用gp_Pnt2d保存其坐标。GCE2d包包含了由gp对象创建Geom2d对象以及一些图形变换的辅助类。原创 2022-08-23 16:44:15 · 714 阅读 · 0 评论 -
【OCC学习17】Draw自动化测试
也可以单独运行一个测试用例,只要指定测试用例所在的目录即可。如test\blend\simple\A5这个测试用例,在Draw中输入:testgrid blend simple A5。OCC的测试用例在源码test目录下,根据测试分类放入不同的目录。每个测试用例是一段tcl脚本,并且可以有begin、end两个文件,用于指定测试用例开始之前与结束后执行。当 OCC代码有修改时,可以进行自动化测试,来保证软件质量。在Draw中执行testgrid即可全量运行测试用例。原创 2022-08-25 14:19:40 · 313 阅读 · 0 评论 -
【OCC学习18】三维几何对象工具包:TKG3d
OCC的ModelingData模块中TKG3d toolkit定义了3d几何体。三维几何体的定义在Geom包中。在TKGeomBase tookit中GC包可快速创建几何对象。原创 2022-08-25 16:51:31 · 1224 阅读 · 0 评论 -
【OOC学习19】TKBrep:边界表示法的实现
拓朴信息描述形体上的顶点、边、面的连接关系,它形成物体边界表示的“骨架”。例如,形体的某个面位于某一个曲面上,定义这一曲面方程的数据就是几何信息。此外,边的形状、顶点在三维空间中的位置(点的坐标)等都是几何信息,一般来说,几何信息描述形体的大小、尺寸、位置和形状等。实体Solid用一组封闭的面组成,而每个面又由它所在的曲面的定义加上其边界来表示,面的边界是边的并集,而边又是由点来表示的。在边界表示法中,边界表示就按照体-面-环-边-点的层次,详细记录构成形体的所有几何元素的几何信息及其相互连接的拓朴关系。.原创 2022-08-26 16:13:31 · 1295 阅读 · 0 评论 -
【OCC学习20】使用TKSTL输出stl格式文件
STL文件格式,是3D System公司于1988年制定的一个结构协议,是一种快速原型制造服务的三维图形文件格式。STL文件由许多三角形面片组成,每个三角形面片由三个顶点的三维坐标和三角形面片的法线向量描述。STL文件仅描述三维物体的表面几何形状,没有颜色、材质贴图等其他属性。原创 2022-09-12 21:37:48 · 860 阅读 · 4 评论 -
【OCC学习21】修改OCC Draw代码实现启动时自动执行pload ALL
Draw在运行时是两个线程协同配合完成的,一个负责命令的执行,一个负责处理用户的输入,将输入变成命令,交给执行线程处理。OCC Draw在启动时可以按需加载需要的命令,不过大部分情况下我是直接执行pload ALL加载所有模块,简单粗暴。但每次都执行感觉很烦,所以直接修改其源码,让其启动时自动执行pload ALL。其原理是定期读取用户输入,如果读到数据就写入console_command,并将console_semaphore标记成HAS_CONSOLE_COMMAND。一、Draw运行流程。原创 2024-01-13 10:38:55 · 404 阅读 · 0 评论 -
【OCC学习22】如何在c++程序中集成OCC Draw的所有命令
写了一段最短的集成OCC Draw命令的Demo,C++程序中可自由地运行Tcl/Tk脚本了。里面的代码都参考OCC Draw中的核心逻辑。原创 2024-01-22 09:41:19 · 440 阅读 · 1 评论 -
【OCC学习23】使用Draw探索OCC API 【完结】
1. 在Draw中写Tcl/Tk脚本建模,找出感兴趣的命令2. 查找命令对应的代码有两种方法仅供参考:3. 提取代码到自己应用中原创 2024-01-25 17:33:56 · 481 阅读 · 0 评论