问题标签 [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.
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 不是那么好。请您帮我解决问题以及这种行为的原因。提前致谢。
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 :考虑祖先方向警告:地图最初没有被清除。
在文档上需要更正或更好的解决方案和/或清晰度方面的帮助。提前致谢。
python - PythonOcc:加厚具有可变半径的曲线
我是pythonOcc的新手,我想不均匀地加厚贝塞尔曲线(或制作管道):例如,曲线起点处的加粗曲线应该比曲线终点处的粗。你能告诉我什么是最有效的方法吗?我已经尝试过 BRepOffsetAPI_ThruSections 之类的函数,但我认为对此没有用处。
python-3.x - 如何在 PythonOCC 中将 3d 盒子缩小为 2d 正方形
我是 pythonooc 的新手并且正在尝试将 3d 对象转换为 2d ......就好像它们被投影到 XY 平面上并推断为线条一样。所以圆柱变成圆形,长方体变成方形,长方体变成矩形。我将如何使用 pythonooc 做到这一点
到目前为止,我有这个。我在 Jupyter 笔记本上工作
我想将盒子或类似形状转换为它的 2d 几何图形。
c++ - 我可以在运行时重新定义 OpenCascade/OCCT 标头中定义的 c++ 静态常量吗?
也许这很简单,但我想在库头中动态重新定义一个常量集,这样我就不必在每次更改时都重新编译它。在OpenCascade 的 Precision.hxx中,常量“Precision::Confusion”定义为:
是否可以在运行时在(c++)函数中重新定义它?
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 中获取这些?
谢谢你
scaling - 使用 OpenCASCADE 获取 STEP CAD 文件的长度比例因子
在导入 STEP 格式的 CAD 文件时,我试图在 OpenCASCADE 中获取长度单位转换因子。在我的测试文件中,实体#184将长度设置为米,并且在导入期间默认情况下将转换为OpenCASCADE内部使用的毫米
我相信下面的函数应该如何完成,但无论我尝试什么,“Length_Unit”STEP实体都不匹配,因此我无法获得缩放因子。
有谁知道这是否是正确的方法,或者是否有更好的方法。
3d - 从 glTF 2.0 文件中删除未使用的对象
我使用 opencascade 的模块从 step 导出到 glb 。我试图用搅拌机读取 glb 文件,它工作得很好。然后我将它导入巴比伦,它崩溃了。我在 Khronos 的 glTF 验证器上发布了文件,它报告了很多未使用的网格。我想知道是否有办法删除这些未使用的网格以及是否有其他方法可以优化 glTF 文件和巴比伦导入