问题标签 [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 投票
0 回答
128 浏览

c++ - 如何将 OpenCascade Pixmap 转换为 OpenCV Mat 格式?

我正在使用 OpenCascade 示例项目,我需要提取 3DViewer 场景的 2D 快照并将其转换为 Opencv Mat 格式。我尝试了下面的代码,如果我使用 imshow 显示快照,我将得到一个完整的黑色视图。默认情况下,PixMap 是 3 通道 RGB 图像。

0 投票
1 回答
332 浏览

c# - 如何在 OpenCascade 中用颜色显示侧面?

我有一个 .step 文件,我需要从侧面为项目制作图像。现在我的问题是两边都是白色的。

为了获得侧面,我改变了观点,现在我改变了一点以显示颜色,但这通常不起作用并且对象仍然是白色的。我还尝试添加 PositionalLight 和 DirectionalLight,它们充其量只能提供稍微多一点的灰白色。但我可能会忽略一些简单的事情。

更改视图的代码

我试过的示例光源

我试图获得像 FreeCad 软件那样的侧视图,其中显示了对象的颜色。

0 投票
1 回答
231 浏览

python - 如何获取我在 OCC 小部件上单击的顶点?

我使用 OCC 和 python 来可视化 .igs 和 .stl 格式。在 .stl 文件中,我的模型上有一个网格,我想知道单击了该网格上的哪个顶点。至少要获得某种身份。我看到我选择的模型在没有任何设置的情况下自动突出显示,所以我想有一种方法可以做到这一点。但我找不到任何关于它的信息。 带网格的模型

0 投票
1 回答
592 浏览

python - 如何使用 PythonOCC 导入参数引用?

出于数据交换比较的原因,我需要从 CAD 文件中提取几何/参数参考。为此,我PythonOCC在 conda 环境中使用库。

到目前为止,我能够绘制提取的文件(在我的情况下是一个 STEP 文件),但我找不到关于这个库的任何进一步的文档(除了它拥有的所有函数 API 的列表,但它对我没有帮助,因为有很多功能,但并没有真正解释它是如何工作的)。我的目标是从 NURBS/Splines 描述中提取参数参考以捕获表面的一些精确点(没有数据转换,这就是我不想通过 CAD 环境的原因)。

有谁知道我应该如何探索 pythonOCC 的哪些功能或知道任何可以提供帮助的文档?

到目前为止,我的代码只能显示实体:

0 投票
1 回答
793 浏览

mesh - OpenCascade:如何细分细长的三角形?

我正在使用OpenCascade将 STEP/IGES 作为网格导入到我的软件中。效果很好。

但是我需要小三角形,而我得到的三角形有时非常大(在平坦区域),或者非常细长(例如,在啮合圆柱体时)。最好的办法是分割三角形的边缘大于某个绝对值。也避免 T 顶点。

我无法在谷歌上搜索任何关于它的内容......所以,目前,我将网格传递给OpenMesh,应用OpenMesh::Subdivider::Uniform::LongestEdgeT运算符,然后将其传递回我的软件。当我管理几个 M 三角形时,既繁琐又昂贵……

问题:

  1. OpenCascade中是否有等价物?
  2. 或者一个简单的代码片段来实现我自己的循环来做到这一点?

谢谢 !

0 投票
2 回答
775 浏览

mesh - 在 PyGmsh / Gmsh 中添加内部边界或裂缝

我正在尝试使用以下代码使用 PyGmsh 生成有限元网格:

我可以生成以下网格:

在此处输入图像描述

但是,我想在网格上添加一个裂缝,例如:

在此处输入图像描述

这里的裂缝只是一个例子,它需要在网格划分之前定义。我尝试创建 2 个点 ( geom.add_point()) 和一条线 ( geom.add_line()),然后 geom.boolean_difference()在最终的几何图形和线/裂缝之间做一个,但这不起作用。

任何帮助将不胜感激。

编辑

这种类型的网格生成的目的是模拟身体中的物理裂缝。在网格划分过程中,可以通过网格的元素连通性对裂纹进行建模(即元素必须具有不同的节点才能创建裂纹面)。例如,在施加任何载荷之前,裂缝是闭合的:

在此处输入图像描述

施加载荷后,裂缝打开,因为单元连通性允许这样做:

在此处输入图像描述

0 投票
1 回答
429 浏览

opencascade - OpenCASCADE 教程中 `BRepLib::BuildCurves3d` 调用的目的是什么?

作为一个 OpenCASCADE 新手,我正在阅读 OpenCASCADE 教程:

https://www.opencascade.com/doc/occt-7.4.0/overview/html/occt__tutorial.html

有以下两个奇怪的调用:

本教程以这种方式解释了这两个调用的必要性:

请记住,这些线是由曲面和 2D 曲线构建的。就这些线而言,缺少一个重要的数据项:没有关于 3D 曲线的信息。幸运的是,您不需要自己计算,这可能是一项艰巨的任务,因为数学可能非常复杂。当一个形状包含除 3D 曲线之外的所有必要信息时,Open CASCADE Technology 提供了一种自动构建它们的工具。在BRepLib工具包中,您可以使用该BuildCurves3d方法计算形状所有边缘的 3D 曲线。

我没有完全清楚。

想象一下,我已经构造了一些TopoDS_Shape对象。

一般来说,我怎样才能确定是否BRepLib::BuildCurves3d需要调用?

0 投票
1 回答
133 浏览

c++ - C++11:我修补了一个段错误,但我不知道是什么修复了它

我改变了这个源代码:

对此:

这解决了它。但我仍然有点不明白为什么。这是 GeomAPI_ExtremaCurveCurve 对象的文档:

我仍然不是指针最棒的,但看起来参数需要一个不可变的指针,但是指针指向的数据可以改变吗?

然后是 BRep_Tool::Curve 方法:

现在,当我偶尔使用不同的语言进行编程时,C++ 中的静态说明符令人困惑,但这里它与链接和持续时间有关,cppref:

我必须补充一点,这个函数是线程应用程序的一部分,并且 static 和 thread_local 在某些方面在线程存储方面可以互换。

任何人都可以阐明为什么此修复程序有效吗?

谢谢你,S

0 投票
1 回答
1006 浏览

geometry-surface - OpenCascade:带边界线的圆柱面

我想使用边界边缘(两条垂直线和两条 180° 弧)制作半个圆柱体的面。我知道有更简单的方法可以做到这一点,但我真正的问题要复杂得多,而且我拥有的边缘主要是样条曲线。所以,我试着做一个非常简单的例子,希望有人能帮助我。

使用我的真实输入数据,我不知道边界边缘的顺序和方向。我所拥有的只是“圆柱面”和“形成闭合环的边缘桶”。那么,如果我的方向不好,我该如何自动修复呢?

这是我的示例代码:

0 投票
1 回答
221 浏览

opencascade - 在 opencascade 中对 TopoDS_Edge 对象进行分类

我遇到了一些 IGES/STEP 模型的挑战,我的代码无法根据边缘的基础分类对面进行分类,即边缘是直线(非有理 B 样条曲线)还是弧(有理 B 样条曲线)。我一直在使用下面的代码(适用于某些模型):

,其中边缘是 TopoDS_Edge 而 edgex 是自定义边缘对象。我也尝试了以下代码,但它在第二行使程序崩溃:

请您提供更好的方法或解决我的解决方案。先感谢您。