opencascade

Mesh BRep Shapes

ε祈祈猫儿з 提交于 2020-08-11 04:30:07
Mesh BRep Shapes eryar@163.com Abstract. 当对 OpenCASCADE 的 BRep 表示法的数据结构有了一定的理解后,建议可以自己实现一个显示数据生成的功能,即网格剖分功能。 Key Words. BRep, Mesh, Triangulation 1. Introduction 在 OpenCASCADE 中网格剖分功能是很重要的一个模块,他可用于生成模型的可视化数据,还可用于 HLR 消隐,对于离散求交算法也是基于网格数据。 OpenCASCADE 开源版本中的模块 TKMesh 可以用来生成网格的显示数据,主要的类为 BRepMesh_IncrementalMesh 。 在使用 BRepMesh_IncrementalMesh 的过程中发现其剖分精度高,且精度不便于控制。如对一个球进行网格剖分,想得到一个粗糙的效果,即一个多边形,使用 BRepMesh_IncrementalMesh 是不容易得到的。 如上图所示为同一个球的不同的剖分精度得到的模型。为了能精确控制网格剖分精度,以便后期使用 LOD 等优化算法,自己实现一个网格剖分功能。 网格剖分的主要思路就是遍历每个 TopoDS_Face 的 TopoDS_Wire ,根据 Wire 找到边界或面上的孔洞。将 Wire 对应到二维参数空间

BRep Builder

我们两清 提交于 2020-08-08 10:04:38
BRep Builder eryar@163.com 1 Introduction 类 BRep_Builder 提供了创建、修改 BRep 模型的方法。使用这个类,你可以从底层自己构建 BRep 体,前提条件是你要对 BRep 模型的数据结构有一定理解。边界表示法 BRep 的重点在边界的定义,打开 BRep_Builder 的类图: 可以看到其中重载了很多 UpdateEdge 函数,每个 UpdateEdge 函数都修改了 Edge 中的几何数据,包括边界的定义数据。若能理解每个 UpdateEdge 函数,则对 OpenCASCADE 的 BREP 数据结构就能理解了。本文主要介绍其中两个函数的用法: Add 和 Remove 。 2 Add Shape BRep_Builder 的 Add 函数的字面意思是将一个 Shape 添加到另外一个 Shape 中。因这个函数的实现比较简单,把源码列出如下: void TopoDS_Builder::Add (TopoDS_Shape& aShape, const TopoDS_Shape& aComponent) const { // From now the Component cannot be edited aComponent.TShape()-> Free(Standard_False); // Note that

OpenCascade Primitives BRep

假如想象 提交于 2020-08-07 04:32:11
OpenCascade Primitives BRep - Box eryar@163.com Abstract. BRep is short for Boundary Representation. Boundary Representation gives a complete description of an object by associating topological and geometric information for solid modeling. In this case, objects are described by their boundaries. There are two types of information in BRep: Topological information and Geometric information. This paper is concerned with the Box BRep in OpenCascade, and also show how to use Tcl script to dump box BRep info. Key words. OpenCascade, BRep, Boundary Representation, Box, Winged-Edge Structure 1.

OpenCascade Primitives BRep

ぐ巨炮叔叔 提交于 2020-08-06 23:44:12
OpenCascade Primitives BRep - Box eryar@163.com Abstract. BRep is short for Boundary Representation. Boundary Representation gives a complete description of an object by associating topological and geometric information for solid modeling. In this case, objects are described by their boundaries. There are two types of information in BRep: Topological information and Geometric information. This paper is concerned with the Box BRep in OpenCascade, and also show how to use Tcl script to dump box BRep info. Key words. OpenCascade, BRep, Boundary Representation, Box, Winged-Edge Structure 1.

Mesh BRep Shapes

风格不统一 提交于 2020-08-05 04:47:44
Mesh BRep Shapes eryar@163.com Abstract. 当对 OpenCASCADE 的 BRep 表示法的数据结构有了一定的理解后,建议可以自己实现一个显示数据生成的功能,即网格剖分功能。 Key Words. BRep, Mesh, Triangulation 1. Introduction 在 OpenCASCADE 中网格剖分功能是很重要的一个模块,他可用于生成模型的可视化数据,还可用于 HLR 消隐,对于离散求交算法也是基于网格数据。 OpenCASCADE 开源版本中的模块 TKMesh 可以用来生成网格的显示数据,主要的类为 BRepMesh_IncrementalMesh 。 在使用 BRepMesh_IncrementalMesh 的过程中发现其剖分精度高,且精度不便于控制。如对一个球进行网格剖分,想得到一个粗糙的效果,即一个多边形,使用 BRepMesh_IncrementalMesh 是不容易得到的。 如上图所示为同一个球的不同的剖分精度得到的模型。为了能精确控制网格剖分精度,以便后期使用 LOD 等优化算法,自己实现一个网格剖分功能。 网格剖分的主要思路就是遍历每个 TopoDS_Face 的 TopoDS_Wire ,根据 Wire 找到边界或面上的孔洞。将 Wire 对应到二维参数空间

Assigning a TopoDS_Face object to its child object compiles with no errors but I have 3 valgrind errors

痴心易碎 提交于 2020-04-18 07:24:04
问题 I have a class called Test which inherits the TopoDS_Face class. Already got some tips from This question but... // Test.h class Test : public TopoDS_Face { public: void operator = (const TopoDS_Face& base_) { TopoDS_Face::operator=(base_); } } // testmain.cpp ... int main() { //extract faces from IGES face for (int i = 1; i <= nbs; i++) { TopoDS_Shape shape = myIgesReader.Shape(i); TopoDS_Face& face = static_cast<TopoDS_Face&>(TopoDS::Face(shape)); Test *test; // tried each of these also and

OpenCASCADE BRep Projection

不羁的心 提交于 2020-03-15 02:27:26
OpenCASCADE BRep Projection eryar@163.com 一网友发邮件问我下图所示的效果如何在OpenCASCADE中实现,我的想法是先构造出螺旋线,再将螺旋线投影到面上。 为了验证我的想法,结合原来螺旋线的造型算法,来测试下这种效果的实现。依然采用Tcl脚本在Draw Test Harness中试验。个人觉得高效使用OpenCASCADE的方法应该也是先用Tcl脚本来验证一些想法后,再根据使用到的命令找到OpenCASCADE中DRAW的命令实现,最后再可以根据DRAW中的实现,翻译成C++代码了。 使用下列Tcl脚本生成效果和上图就很类似了,Tcl脚本代码如下所示: # # wrap a curve to a surface. # Shing Liu(eryar@163.com) # 2016-08-16 22:50 # pload ALL cone aCone 18*pi 2 trim aCone aCone 0 2*pi 0 2*pi line aLine2d 0 0 2 1 trim aSegment aLine2d 0 2*pi mkedge aHelixEdge aSegment aCone 0 6*pi # there is no curve 3d in the pcurve edge. mkedgecurve aHelixEdge 0

基于OpenCASCADE的CAD平台分析

强颜欢笑 提交于 2020-02-21 05:02:18
摘要 Open CASCADE (简称 OCC )是一开源的几何造型引擎。基于该建模引擎发展了若干 CAD/CAE/CAM 软件,如国外的 FreeCAD 、 HeeksCAD ,国内的 AnyCAD 。本技术报告主要分析 OpenCASCADE 的在开源软件中的应用现状以及利用开源软件在 861 项目应用的可行性分析。 关键词: OpenCASCADE, FreeCAD,AnyCAD, CAD, 建模平台 1. 几何造型引擎比较分析 商业的几何造型引擎 目前,商业的几何造型引擎主要有 ACIS 和 Parasolid ,而 ACIS 在国内应用相对比较多。 国内有几所高校(如重庆大学、华中科大、清华大学等)有使用 ACIS 进行项目应用,并且由若干硕士、博士论文发表。 ACIS 学习曲线比较陡峭,公开资料比较稀缺,需要购买单独的技术支持服务。考虑到成本因素,在项目开发初期不建议使用该平台。比较适合有充足资金的项目。 开源的几何造型引擎 Open CASCADE (简称 OCC )为开源社区比较成熟的基于 BREP 结构的建模引擎,能够满足二维三维实体造型和曲面造型,国内研究和使用它的单位也越来越多。 OCC 可以分为建模、可视化和数据管理( OCAF )三大模块。其中建模为核心组件;可视化组件基于 OpenGL ,相对其他的三维可视化 OpenGL 平台(如 Coin3d ,