问题标签 [opencascade]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
79 浏览

computational-geometry - 查找/计算钣金 CAD 模型的折弯“方向”

有一个我称之为弯曲“方向”的属性,我想根据弯曲的锐角/钝角所在的一侧将其分配给 CAD 模型的弯曲特征。例如,在下图中,我使用 +/- 进行分配。 在此处输入图像描述

上面是有问题的模型,下面是分配给每个弯曲的弯曲方向。(+) 用于锐角/钝角侧朝向同一侧的弯曲,否则 (-)。

在此处输入图像描述

试过这个功能:

但输出并不一致。

是否有一种数学方法/开放级联函数可用于确定和分配弯曲“方向”。先感谢您。

0 投票
1 回答
170 浏览

c++14 - 在单独的类方法中使用它会使程序崩溃

我在从直接父类 Base 类调用方法时遇到了挑战,但我可以轻松地调用 Base 类的父类中的方法。为了澄清我的意思是代码:

首先是opencascade库类的结构:

在我的代码中,有两种拓扑面平面(ModelFace 类)和非平面(ModelBend 类)。这两个面共享 MFace 类中定义的 6 个属性,但只有 ModelBend 类有自己的附加属性,所以我设计的系统如下

MFace类:

模型面类:

模型弯曲类:

用法:有一个模型类表示 CAD 模型并存储其所有拓扑 ModelFace/ModelBend 数据。该类以 TopoDS_Shape 的形式获取拓扑数据,并将其分类assignAttributes()如下所示:

当我运行程序时,它在调用pModelFace.extractEdges()in时崩溃,assignAttributes()但是当我将方法中的 for 循环复制extractEdges()init()方法中时,它工作正常。

我的 OOD/OOP 不是那么好。请您帮我解决问题以及这种行为的原因。提前致谢。

0 投票
0 回答
417 浏览

opencascade - 查找 CAD 模型的连接面

我有两种类型的钣金 CAD 模型面;ModelFace(PLANAR 面)和 ModelBend(NON-PLANAR,存在于 ModelFace 之间,表示钣金件的折弯)。这些人脸存储在单独的向量中。我想要做的是找到每个弯曲连接到的面。每个面和弯曲都分配有一个正的非零整数 ID。所需的输出是这样的:

这意味着半径为 4mm 的弯曲 1 以 90 度角连接面 1 和面 2,依此类推。但是,对于大多数模型,无论其格式如何(步骤/igs),我都会得到如下所示的结果:

类似的结果F3---B2---F0意味着程序检测到 B2 连接到面 3,但无法识别另一个连接的面,因此 F0 值。同样对于某些模型,输出可能是F0---B2---F0这意味着没有找到连接到弯曲 2 的面。

似乎由面和弯曲共享的边缘没有被检测为相似边缘,即边缘线的端点不相同或由大于公差的空间隔开。我使用 Autodesk Inventor 和 SolidWorks 绘制了模型。我什至在 FreeCad 中也看过它们,无论我放大多少,边缘都是连接的。

弯曲有两条直线边连接到面,如下图所示:

在此处输入图像描述 这是我最初的解决方案,但它没有捕获所有连接,例如我得到的信息是一些弯曲连接到一个边缘而不是另一边缘的面:

在OpenCascade 论坛上找到的另一个解决方案:

第二个解决方案在第一次执行 GetAdjacentFace() 后崩溃。

问题可能是因为我不理解文档对 MapShapesAndUniqueAncestors() 和 GetAdjacentFace() 的看法:

将所有类型为 TS 的 S 的子形状存储在映射 M 中,每个子形状都将所有类型为 TA 的唯一祖先附加到列表中。例如,映射所有边并绑定面列表。useOrientation = True :考虑祖先方向警告:地图最初没有被清除。

在文档上需要更正或更好的解决方案和/或清晰度方面的帮助。提前致谢。

0 投票
1 回答
91 浏览

python - PythonOcc:加厚具有可变半径的曲线

我是pythonOcc的新手,我想不均匀地加厚贝塞尔曲线(或制作管道):例如,曲线起点处的加粗曲线应该比曲线终点处的粗。你能告诉我什么是最有效的方法吗?我已经尝试过 BRepOffsetAPI_ThruSections 之类的函数,但我认为对此没有用处。

0 投票
0 回答
130 浏览

python-3.x - 如何在 PythonOCC 中将 3d 盒子缩小为 2d 正方形

我是 pythonooc 的新手并且正在尝试将 3d 对象转换为 2d ......就好像它们被投影到 XY 平面上并推断为线条一样。所以圆柱变成圆形,长方体变成方形,长方体变成矩形。我将如何使用 pythonooc 做到这一点

到目前为止,我有这个。我在 Jupyter 笔记本上工作

我想将盒子或类似形状转换为它的 2d 几何图形。

0 投票
1 回答
89 浏览

c++ - 我可以在运行时重新定义 OpenCascade/OCCT 标头中定义的 c++ 静态常量吗?

也许这很简单,但我想在库头中动态重新定义一个常量集,这样我就不必在每次更改时都重新编译它。在OpenCascade 的 Precision.hxx中,常量“Precision::Confusion”定义为:

是否可以在运行时在(c++)函数中重新定义它?

0 投票
3 回答
770 浏览

opencascade - pyOCCT 与 PythonOCC 的新项目(2020 年)

我正在开始一个新项目,其中包含要从特定域数据生成的一些 3D CAD 对象。我可以使用 OpenCascade 使用 c++ 对其进行编码,但如果可能的话,我更喜欢使用 Python。有两个流行的 occ python 绑定:pyOCCTPythonOCC,这两个项目都是活跃的,并且是最新的 occ 7.4,但是如果能从两者都知道的人那里得到建议,那就太好了。由于 pyOCCT 是一个较新的项目,我想它解决了 PythonOCC 无法解决的问题,但目前尚不清楚创建新绑定的动机是什么。我需要一些网络渲染支持,显然 PythonOCC 已经支持网络渲染。

0 投票
1 回答
1145 浏览

gltf - 打开级联写入 glTF Writer

Open Cascade 在他们当前的开发分支中有 glTF writer - RWGltf_CafWriter

我正在尝试使用它将 STP 转换为 glTF 并从这个问题得到起点 - Any Open source Libraries to Convert STEP files to glTF file format?

看起来可行,但我是 Open Cascade 技术的新手,几乎没有问题

  • 在使用 BRepMesh_IncrementalMesh 计算形状的三角剖分时,它需要线偏转和角度偏转,这些是什么,它的值应该是什么?

  • RWGltf_CafWriter 需要 TDocStd_Document 和 TDF_LabelSequence,我们如何从 Shapes 中获取这些?

谢谢你

0 投票
1 回答
292 浏览

scaling - 使用 OpenCASCADE 获取 STEP CAD 文件的长度比例因子

在导入 STEP 格式的 CAD 文件时,我试图在 OpenCASCADE 中获取长度单位转换因子。在我的测试文件中,实体#184将长度设置为,并且在导入期间默认情况下将转换为OpenCASCADE内部使用的毫米

我相信下面的函数应该如何完成,但无论我尝试什么,“Length_Unit”STEP实体都不匹配,因此我无法获得缩放因子。

有谁知道这是否是正确的方法,或者是否有更好的方法。

0 投票
1 回答
589 浏览

3d - 从 glTF 2.0 文件中删除未使用的对象

我使用 opencascade 的模块从 step 导出到 glb 。我试图用搅拌机读取 glb 文件,它工作得很好。然后我将它导入巴比伦,它崩溃了。我在 Khronos 的 glTF 验证器上发布了文件,它报告了很多未使用的网格。我想知道是否有办法删除这些未使用的网格以及是否有其他方法可以优化 glTF 文件和巴比伦导入