Open CASCADE
文章平均质量分 57
老歌老听老掉牙
机械工程师一枚,希望结交志同道合的朋友,互相学习。
展开
-
Open CASCADE学习|BRepFill_Edge3DLaw
对于每个边缘,代码检查是否退化(即是否为零长度的边缘),如果不是退化边缘,则进行进一步处理。处理边缘:对于每个非退化边缘,代码获取边缘的几何曲线,并检查边缘的方向。如果边缘的方向是反转的(指令用于包含所需的头文件,这些文件提供了访问几何对象、曲线、拓扑数据结构等所需的定义和声明。宏用于实现运行时类型识别(RTTI),这是C++中的一种机制,允许确定对象的类型。设置法则:对于每个边缘,代码将相应的位置法则复制并设置到边缘的适配器曲线上。适配器来适配几何曲线,这允许以统一的方式处理不同类型的几何曲线。原创 2024-05-06 23:55:20 · 455 阅读 · 0 评论 -
Open CASCADE学习|三重正交标架法则
GeomFill_Frenet类实现了Frenet三重正交标架法则,这在3D几何建模中用于定义沿曲线的局部坐标系,该坐标系由切线(Tangent)、主法线(Normal)和副主法线(BiNormal)构成。此类提供了计算三重正交标架及其导数的方法,并且能够处理曲线上的奇异点,这些奇异点是曲线的曲率或扭率不连续的点。三重正交标架法则是一个在曲线的每一点上定义三重正交标架的规则。这个法则可以是显式的,也可以是隐式的,取决于它是基于特定的几何构造(如Frenet-Serret公式)还是基于更通用的几何约束。原创 2024-05-06 23:53:58 · 589 阅读 · 0 评论 -
Open CASCADE学习|BRepFill_SectionPlacement
BRepFill_SectionPlacement 是一个与计算机辅助设计(CAD)相关的术语,通常用于指代一个几何对象或操作,它是Open CASCADE Technology(OCCT)中的一个类。这个类是用于填充操作的一部分,填充操作涉及创建一个3D实体,这个实体是通过将一个2D截面沿着一个路径或导线扫掠(sweep)形成的。BRepFill_SectionPlacement 是OCCT提供的API的一部分,允许开发者在他们的应用程序中实现复杂的几何建模功能。原创 2024-04-30 23:47:13 · 589 阅读 · 0 评论 -
Open CASCADE学习|GeomFill_CurveAndTrihedron
GeomFill_CurveAndTrihedron类是GeomFill_LocationLaw的子类,用于定义一个位置法则(Location Law),该法则结合了一个曲线(curve)和一个三面体法则(TrihedronLaw)。该类提供了一系列的成员函数,用于初始化曲线、设置变换矩阵、复制位置法则、计算位置和2D点及其导数、获取连续性间隔、设置和获取参数区间等。Adaptor3d_Curve的句柄,分别表示曲线和修剪后的曲线。获取变换矩阵和向量的平均值。设置位置法则的变换矩阵。设置三面体法则的曲线。原创 2024-04-30 23:44:55 · 504 阅读 · 0 评论 -
Open CASCADE学习|一个点的坐标变换
gp_Trsf 类是 Open CASCADE Technology (OCCT) 软件库中的一个核心类,用于表示和操作三维空间中的变换。以下代码首先创建了一个三维点,然后创建了一个 gp_Trsf 变换对象,并分别设置了旋转、平移和缩放变换。每次变换后,代码都打印出变换后的点的坐标。gp_Mat 类型,是一个 3x3 矩阵,表示变换的矢量部分,包括缩放。gp_TrsfForm 类型,定义变换的形式,如平移、旋转等。构造函数,创建一个默认的变换(通常是单位变换)。设置从一个坐标系统到另一个坐标系统的变换。原创 2024-04-25 23:25:18 · 1028 阅读 · 0 评论 -
Open CASCADE学习|gp_XYZ与gp_Mat
例如,在计算机图形学中,它可以用来实现视图的旋转、缩放和倾斜,从而改变物体在屏幕上的显示方式。这个类提供了多种操作,比如计算两点之间的距离、点与平面或直线之间的距离、点的对称性等。gp_XYZ对象通常用于定义几何形状的位置、构建形状的边界或者作为数学运算的参与对象。gp_XYZ和gp_Mat是Open CASCADE Technology (OCCT)中的类,用于处理3D几何和变换。这将创建一个初始的单位矩阵,其中主对角线上的元素都是1,其他位置的元素都是0。这将把指定的点通过矩阵变换到新的位置。原创 2024-04-17 20:10:06 · 1030 阅读 · 0 评论 -
Open CASCADE学习|BRepOffsetAPI_DraftAngle
草图斜面是一种在零件设计中常见的特征,它可以在零件的表面上创建一个倾斜的面,通常用于便于零件的脱模或是增加零件的强度。这个方法接受面、斜面的方向(这里使用 Z 轴正方向)、斜面的角度(这里设置为 15 度)和一个平面(这里使用 XY 平面)作为参数。草图斜面是在零件设计中常用的特征,它可以在零件的表面上创建一个倾斜的面,通常用于便于零件的脱模或是增加零件的强度。在为所有选中的面添加了草图斜面之后,使用BRepOffsetAPI_DraftAngle::Shape 方法来获取最终的带有草图斜面的几何形状。原创 2024-04-13 23:09:55 · 507 阅读 · 0 评论 -
Open CASCADE学习|实现Extrude功能
函数首先检查输入的形状类型,如果是线(TopAbs_WIRE),则将其转换为面(BRepBuilderAPI_MakeFace),因为挤出操作需要一个面作为基础。接着,使用BRepBuilderAPI_MakeEdge和BRepBuilderAPI_MakeWire创建了边和线,最后使用BRepBuilderAPI_MakeFace创建了一个面。这个类需要两个参数:基础面和挤出方向的向量。函数创建了BRepPrimAPI_MakePrism的实例,并将基础面和挤出方向传递给它,从而生成挤出后的三维形状。原创 2024-04-13 23:08:54 · 420 阅读 · 0 评论 -
Open CASCADE学习|BrepOffsetAPI_ThruSections无法放样成Solid
在Open CASCADE Technology (OCCT) 中,BRepOffsetAPI_ThruSections 类是用来通过放样生成一个实体或者一个面壳(Shell)。当使用这个类时,isSolid 参数决定了生成的是实体(TopoDS_Solid)还是面壳(TopoDS_Shell)。如果isSolid为true,则尝试生成实体;如果为false,则生成面壳。原创 2024-04-11 21:17:54 · 975 阅读 · 0 评论 -
Open CASCADE学习|NCollection_Sequence<gp_Pnt>转TColgp_Array1OfPn
NCollection_Sequence是一个通用的序列容器,而TColgp_Array1OfPnt是一个数组容器,专门用于存储gp_Pnt类型的数据。要将一个NCollection_Sequence<gp_Pnt>对象转换为TColgp_Array1OfPnt,你需要创建一个新的TColgp_Array1OfPnt对象,并将NCollection_Sequence中的每个gp_Pnt对象复制到数组中。原创 2024-04-10 20:30:58 · 556 阅读 · 0 评论 -
Open CASCADE学习|迭代NCollection_Sequence<gp_Pnt>
这个类提供了一种灵活的方式来处理对象序列,类似于C++标准库中的容器,但是它专门为了与OCCT中的其他类和数据类型协同工作而设计。NCollection_Sequence<gp_Pnt>是NCollection_Sequence的一个特化版本,专门用于存储gp_Pnt类型的数据。NCollection_Sequence是一个通用的序列容器,它可以存储任何类型的数据。使用NCollection_Sequence<gp_Pnt>,你可以方便地管理和操作一系列的三维点。原创 2024-04-10 20:29:34 · 449 阅读 · 0 评论 -
Open CASCADE学习|求曲面的参数空间
在三维空间中,任意的曲面都可以通过特定的方法映射到一个二维参数平面上,从而对其进行详细的几何分析和处理。接下来,我们需要对这些wires进行分类,区分出哪些是外边界,哪些是内边界。通过计算每个区域的面积,我们可以识别出面积最大的区域,这个区域对应的wire即为外边界。通过将这些PCurve的起点和终点连接起来,我们可以形成一个封闭的二维平面,这个平面就是三维face的二维参数表示。通过上述过程,我们可以将三维空间中的任意曲面映射到二维参数平面上,从而为后续的几何分析、设计优化和制造准备等提供坚实的基础。原创 2024-04-09 19:57:32 · 405 阅读 · 0 评论 -
Open CASCADE学习|平面上的PCurve
从更具体的定义来看,当给定一个曲面方程,并且其参数u和v是另一个参数t的函数时,通过将这些参数代入曲面方程,随着t的变化,我们就可以得到曲面上的一条单参数曲线,这就是曲面上的曲线或简称曲面上曲线(Curve on Surface)。在Open CASCADE中,PCurve用于描述参数曲面的双参数空间中的二维样条曲线。所有的三维曲线(面的边界)都对应于二维参数曲线PCurve,二维参数曲线PCurve上的二维点对应实际曲线上的三维点。通过这种方法,可以方便地提取和处理曲面的边界和其他相关特性。原创 2024-04-08 21:34:43 · 493 阅读 · 0 评论 -
Open CASCADE学习|统计形状拓扑数量
TopAbs 包含了 TopAbs_ShapeEnum 枚举类型,列举了不同的拓扑种类,包括COMPOUND(一组任意类型的拓扑物体)、COMPSOLID(复合刚体)、SOLID(由壳限制的空间的一部分)、SHELL(由边相连的面集)、FACE(在2D它是一个平面的一部分;在3D它是一个曲面的一部分)、WIRE(由顶点连接的边的集合)、EDGE(一个与被约束的曲线对应的拓扑元素)以及VERTEX(一个与一个点对应的拓扑元素)。面的边界是边的并集,而边又是由点来表示的。原创 2024-04-08 21:32:27 · 262 阅读 · 0 评论 -
Open CASCADE学习|旋转变换
欧拉角易于理解和可视化,但在插值和组合旋转时可能会遇到万向锁(Gimbal Lock)的问题,即在某些情况下,旋转会失去一个自由度。四元数是一种复数形式的扩展,用于表示三维空间中的旋转。四元数在表示旋转时具有一些优点,如避免万向锁问题,且在插值和组合旋转时表现良好。在三维空间中,旋转可以通过3x3的旋转矩阵来表示。物体在三维空间中的旋转变换操作通常可以通过三种不同的方式来表示:矩阵(Matrix)、欧拉角(Euler Angles)和四元数(Quaternion)。下面详细解释这三种表示方法。原创 2024-04-06 23:22:01 · 449 阅读 · 0 评论 -
Open CASCADE学习|放样建模
操作放样建模的基本步骤如下:首先创建一个图形作为放样的路径,然后创建一个或多个图形作为对象的截面。接下来,选择一个作为放样路径的图形或作为截面的图形。在建模软件中,通常有一个专门的“放样”工具或选项,选择这个工具后,可以根据之前的选择进行相应的操作,例如,如果选择了作为截面的图形,就需要找到并点击“获取路径”按钮,然后在场景中选择作为放样路径的图形;如果选择的是作为放样路径的图形,则需要点击“获取图形”按钮,然后在场景中选择作为截面的图形。在放样建模中,通常有一个图形作为放样路径,另一个图形作为放样截面。原创 2024-04-06 21:28:43 · 457 阅读 · 0 评论 -
Open CASCADE学习|在给定的TopoDS_Shape中查找与特定顶点 V 对应的TopoDS_Edge编号
这段代码定义了一个名为 TopAbs_ShapeEnum 的枚举类型,它包含了表示不同几何形状类型的常量。这些常量通常在处理复杂的几何形状(如CAD模型中的形状)时用于标识和分类不同的几何元素。这段代码的主要目的是创建一个直线段,获取其两个端点,并尝试检查这两个端点是否与某个未初始化的顶点 V 相同。TopAbs_WIRE:线框,由一系列的边缘组成,定义了一个二维区域的边界。TopAbs_SHAPE:通用形状,用于表示任何类型的几何形状。TopAbs_FACE:面,二维的形状,通常是实体的表面。原创 2024-04-06 21:26:31 · 708 阅读 · 0 评论 -
Open CASCADE学习|砂轮( TopoDS_Shape)做螺旋运动
通过精确控制这两个装置的运动参数,可以实现砂轮的螺旋运动,并满足各种加工需求。砂轮的螺旋运动是砂轮在磨削过程中,结合旋转和平移两种运动方式的一种复合运动。通过平移运动,砂轮可以沿着工件表面进行往复运动,实现对工件不同位置或不同形状的磨削加工。通过旋转,砂轮上的磨粒与工件表面产生相对运动,从而实现对工件的磨削加工。砂轮的螺旋运动结合了旋转和平移两种运动方式的优势,可以实现高效、精确的磨削加工。这种运动方式可以提高磨削效率,减少磨削力,降低工件表面粗糙度,从而提高工件的加工质量和精度。原创 2024-04-06 16:19:20 · 714 阅读 · 0 评论 -
Open CASCADE学习|刚体( TopoDS_Shape)按某种轨迹运动,停在指定位置上
刚体做做螺旋运动,轨迹已知,求刚体在每个位置上的所占据的空间,就是把刚体从初始位置变换到该位置。这里的刚体是一个砂轮截面,螺旋运动轨迹由B样条曲线拟合,通过Frenet标架确定运动轨迹上的局部坐标系,据此计算变换矩阵,将砂轮截面变换到指定位置。目前可以实现平面刚体的运动,还无法实现三维刚体的运动。原创 2024-04-03 23:57:11 · 511 阅读 · 0 评论 -
Open CASCADE学习|Standard_EXPORT
这段代码是C++中的宏定义,用于处理动态链接库(DLL)的导出和导入。为了在DLL中导出函数或变量,以及在其他程序中导入这些函数或变量,需要使用特定的关键字和宏。Standard_IMPORT用于C++代码中的函数或变量,而Standard_IMPORTC用于C语言代码中的函数或变量。在你的DLL项目中,对于那些你想要导出的函数,你需要在函数声明前使用Standard_EXPORT宏。当你在另一个项目中使用这个DLL时,你需要使用Standard_IMPORT宏来声明DLL中的函数。原创 2024-04-01 22:35:12 · 739 阅读 · 0 评论 -
Open CASCADE学习|将双曲线转换为B样条曲线
圆锥曲线(Conic Section),又称圆锥截线,是二次曲线的一种,它是通过一个平面与一个双圆锥相交而生成的曲线。根据平面与圆锥的相交方式,圆锥曲线可以分为四种基本类型:椭圆、抛物线、双曲线和退化的圆锥曲线(包括点、直线和相交线)。当平面与圆锥的侧面相交,并且与通过顶点的圆锥的生成线相交时,生成的曲线是双曲线。当平面与圆锥的侧面相交,且不穿过圆锥的顶点时,生成的曲线是椭圆。当平面与圆锥的侧面相交,并且恰好穿过圆锥的一个顶点时,生成的曲线是抛物线。当平面通过圆锥的顶点并与圆锥的生成线相交时。原创 2024-04-01 22:33:23 · 493 阅读 · 0 评论 -
Open CASCADE学习|GeomFill_Frenet
GeomFill_Frenet类主要用于实现Frenet标架的计算。计算一阶导数,除了切向量(Tangent)外,还包括切向量的导数(DTangent)、法向量的导数(DNormal)和副法向量的导数(DBiNormal)。计算二阶导数,包括切向量的二阶导数(D2Tangent)、法向量的二阶导数(D2Normal)和副法向量的二阶导数(D2BiNormal)。计算给定参数Param处的Frenet标架的零阶导数,即切向量(Tangent)、法向量(Normal)和副法向量(BiNormal)。原创 2024-03-31 12:49:30 · 1064 阅读 · 0 评论 -
Open CASCADE学习|Foundation Classes
本手册介绍了如何使用Open CASCADE Technology(OCCT)基础类。它提供了有关基础类的基本文档。基类提供各种通用服务,如自动动态内存管理(通过句柄操作对象)、集合、异常处理、通过下转换的泛型和插件创建。原创 2024-03-30 23:28:32 · 876 阅读 · 0 评论 -
Open CASCADE学习|自定义圆柱螺旋线
本例先根据参数生成圆柱面上的点,再把点拟合成空间曲线,从而得到螺旋线。通过控制圆柱面的参数空间[u,v]便可以得到任意圆柱螺旋线。原创 2024-03-30 23:26:24 · 480 阅读 · 0 评论 -
Open CASCADE学习|适配器
BRepAdaptor_Curve用于适配TopoDS_Edge类型,它主要用于将OCCT(OpenCASCADE Technology)中的BRep(Boundary Representation)曲线适配为可用于计算的曲线对象。GeomAdaptor3d_Curve用于适配Geom_Curve类型,它主要用于适配三维曲线,使得这些曲线能够被用于各种几何算法和操作。通过适配,Geom_Curve类型的曲线可以被转化为一种更通用、更易于操作的格式,从而能够被不同的算法和函数所使用。原创 2024-03-26 20:42:23 · 573 阅读 · 0 评论 -
Open CASCADE学习|最小二乘法拟合直线
最小二乘法,又称最小平方法,起源于十八世纪的大航海探索时期,发展于天文领域和航海领域。其历史可以追溯到法国科学家马里·勒让德于1805年首次提出这一概念,而1809年,高斯在他的著作《天体运动论》中也提出了最小二乘法,并发表了应用该方法计算谷神星轨道的结果。然而,最小二乘法在应用中并非完美无缺。由于它基于最小化误差平方和的原理,因此在处理含有随机特性的系统时,可能会引进偏差,且易受到噪声的干扰,导致精度不佳。此外,随着技术的发展,最小二乘法也在不断地改进和优化,以适应更广泛和复杂的应用场景。原创 2024-03-24 17:14:22 · 247 阅读 · 0 评论 -
Open CASCADE学习|将圆转换为NURBS曲线
NURBS曲线,全称非均匀有理B样条曲线(Non-Uniform Rational B-Splines),是计算机图形学中用于表示几何形状的数学表示方法。NURBS曲线通常用于表示更复杂的形状,但也可以用来近似简单的形状,如圆。NURBS曲线的节点向量(knot vector)的值和间距可以是任意的,这使得在不同区间上可以得到不同的混合函数形状,为自由控制曲线形状提供了更大的灵活性。NURBS曲线的修改只影响与其相关的部分,对曲线的其他部分没有影响,这使得曲线编辑更加高效和直观。原创 2024-03-24 16:27:12 · 498 阅读 · 0 评论 -
Open CASCADE学习|显示文本
在文章《原创 2024-03-24 16:24:08 · 595 阅读 · 0 评论 -
Open CASCADE学习|读取STEP模型文件到XDE中
此外,XDE还提供了读写工具,使得用户能够轻松地从IGES和STEP文件中读取和写入XCAF支持的数据。Open CASCADE的XDE(扩展数据交换)组件是一个关键的工具,它允许用户通过转换附加到几何BREP(边界表示)数据的附加数据来扩展数据交换的范围,从而提高与外部软件的互操作性。一旦您处理了STEP文件中的形状和属性,就可以将这些数据附加到XDE中。在读取STEP文件后,您需要处理文件中的形状和属性信息。在将数据附加到XDE后,建议进行验证和检查,以确保数据正确无误,并且符合您的应用需求。原创 2024-03-10 20:34:09 · 748 阅读 · 1 评论 -
Open CASCADE学习|视方体设置与显示
此外,视图立方体可能还包含一些额外的按钮或选项,用于进一步定制视图的显示方式或属性。视图立方体是一个在三维图形界面或建模软件中常见的功能组件,用于帮助用户快速切换和定位不同的视图方向。当用户点击视图立方体上的某个视图方向时,Open CASCADE会根据预先设置的参数来渲染该视图。除了基本的视图切换,视图立方体还可能提供视角微调的功能,允许用户通过拖动或旋转视图立方体来调整视图的角度或倾斜度。视图立方体还可以显示当前视图的定位方向,让用户清楚地知道他们正在查看的是模型的哪一部分。原创 2024-03-10 20:31:09 · 452 阅读 · 0 评论 -
Open CASCADE学习|选取模型的点、线和面
【代码】Open CASCADE学习|选取模型的点、线和面。原创 2024-03-10 20:28:57 · 626 阅读 · 0 评论 -
Open CASCADE学习|表面着色显示模型
Open CASCADE支持多种着色模式,包括线框显示、着色显示和纹理显示等。用户可以根据需要选择合适的着色模式。对于着色显示,用户还可以进一步调整着色参数,如颜色、光泽度、透明度等,以实现更丰富的视觉效果。在复杂的模型中,不同的部分或组件可能需要通过不同的颜色来区分,以便更清晰地展示其结构和功能。着色后的模型可以更容易地与用户进行交互,例如,通过点击或选择不同颜色的部分来执行特定的操作。通过为模型表面添加着色,可以使其更加生动和逼真,提高视觉体验。原创 2024-03-08 22:02:23 · 529 阅读 · 0 评论 -
Open CASCADE学习|曲线曲面连续性
曲线的连续性是三维建模、动画设计等领域中非常重要的一个概念,它涉及到曲线在不同点之间的连接方式和光滑程度。下面将详细介绍曲线的连续性,包括C连续性和G连续性。原创 2024-02-28 23:24:18 · 1724 阅读 · 1 评论 -
Open CASCADE学习|曲线和曲面上的标架
此外,Frenet标架还具有重要的性质,即它是唯一的,即如果存在两条满足Frenet条件的曲线,他们的各个曲率对应相等,且运动速率相同,那么这两条曲线之间只差一个旋转等距变换。OpenCASCADE中的标架通常遵循Frenet标架的定义,这是一个由曲线的切线、主法线和副法线组成的正交归一标架。副法矢固定的标架在某些应用中非常有用。GeomFill_Trihedron中的各个枚举项代表了不同类型的标架,如修正的Frenet标架、固定标架、标准的Frenet标架、常法线标架、Darboux标架等。原创 2024-02-28 23:22:11 · 1511 阅读 · 0 评论 -
Open CASCADE学习|直线
【代码】Open CASCADE学习|直线。原创 2024-02-26 23:13:49 · 423 阅读 · 0 评论 -
Open CASCADE学习|视图
【代码】Open CASCADE学习|视图。原创 2024-02-26 20:28:21 · 899 阅读 · 0 评论 -
Open CASCADE学习|GC_MakeArcOfCircle构造圆弧
实现三维空间中圆弧的构造算法。结果是一条Geom_TrimmedCurve曲线。特别是,Value函数返回构造的圆弧。原创 2024-02-26 20:19:05 · 1261 阅读 · 0 评论 -
Open CASCADE学习|提取面的内外环线
在Open CASCADE中,区分内环和外环主要基于面的参数域内环线方向的定义。具体来说,在面的参数域内,沿着环线正方向前进时,如果左侧为面内、右侧为面外,那么该环线被视为外环;为了更准确地判断环线的内外,可以使用向量叉乘算法计算环线的有向面积。在平面上,逆时针方向的环线面积为正,而顺时针方向的环线面积为负。通过比较环线面积的正负,可以确定环线是外环还是内环。在参数域内,如果环线是逆时针方向的,那么它被认为是外环线。一旦识别出外环线,就可以从所有环线集合中去除外环线,从而得到所有的内环线。原创 2024-02-25 16:47:50 · 656 阅读 · 0 评论 -
Open CASCADE学习|几何数据结构
子类包含:Geom_Line(直线)、Geom_OffsetCurve(偏置曲线)、ShapeExtend_ComplexCurve(拼接曲线)、Geom_Conic(圆锥曲线)、Geom_BoundedCurve(有界曲线)、Geom_Circle(圆)、Geom_Ellipse(椭圆)、Geom_Hyperbola。60年代CAD发展初期出现的系统为简单的线框式系统,仅能表达基本的几何模型,対于几何模型数据之间的拓扑关系不能完整的进行表达,使实体在表达中缺少表面信息,导致部分功能不能实现。原创 2024-02-24 20:38:32 · 1237 阅读 · 0 评论 -
Open CASCADE学习|绘制砂轮
今天绘制一个砂轮,其轮廓由两条直线段和两段圆弧构成,圆弧分别与直线相切,两条圆弧之间相交而非相切。建模思路是:先给定两条直线段的起始点及长度,画出直线段,然后给定其中一圆弧的半径及圆心角,依据此计算出该圆弧圆心,接着求出另一圆弧圆心和半径,最后创建边和环,对环进行环形扫掠,得到砂轮实体。直线的创建通常涉及gp_Lin类,它代表一个无限长的直线。而直线段的创建则涉及Geom_TrimmedCurve类,它是表示修剪曲线的基类,可以用于表示直线段、圆弧段等。原创 2024-02-23 22:47:45 · 887 阅读 · 0 评论