自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 收藏
  • 关注

原创 2、​​​​​​​FreeCAD模块与核心架构总结

FreeCAD作为一个开源的3D建模软件,其内部架构由多个模块组成,这些模块共同协作以支持软件的各种功能。本总结将基于提供的参考文档,对FreeCAD的核心模块、架构特性以及启动过程进行翻译和详细阐述。

2024-04-30 15:27:22 255

原创 4、FreeCAD GUI模块概述

FreeCAD的GUI模块提供了丰富的功能和工具,用于构建和交互用户界面,处理3D视图渲染,管理文档和选择,以及实现任务面板和命令框架等。重要类和功能:提供了访问和管理GUI应用的全局接口,如方法用于获取当前活动文档。:封装了与文档相关的GUI功能,但不直接继承自。GUI组件:包括视图(如BaseView)、属性视图(和)等,用于展示和管理对象属性。服务API:用于打开和关闭文档文件,控制多个文档。:处理3D场景中的选择,提供了C++和Python API。Command.h:支持脚本和撤销操作。

2024-04-30 15:22:54 258

原创 5、 Python在FreeCAD中的封装

C++到Python封装的工具列表:如果头文件可用,封装二进制库是可能的。这里列出了将C/C++封装到Python中的非详尽方法,并检查以获取最新的示例代码和CMake集成工作流。C代码/库接口:使用C-API和ctypes库。使用C++模板简化封装:如和pybind11。自动绑定生成:如cppyy和PyBindGen。特定项目的专用封装工具:如Qt5和GTK3。

2024-04-30 15:12:08 458

原创 6、FreeCAD的设计

额外的模块可以在FreeCAD的addons仓库中找到,这些模块扩展了FreeCAD的传统CAD功能,包括CAE相关的模块如Cfd、pcb等。FreeCAD采用了与Salome平台相似的模块化结构,后者是一个开源的CAE平台,包含几何建模、网格划分、FEM和CFD求解器模块。虽然FreeCAD主要使用C++编写,但纯Python模块也是可能的,如Plot模块。偏好设置存储在用户配置文件。FreeCAD提供了官方模板用于创建新模块,这些模板包括C++模板和纯Python模板,位于官方源码仓库中。

2024-04-30 15:02:29 155

原创 8、FEM模块功能详解

这些偏好设置页允许用户根据自己的习惯和需求调整软件界面的显示、布局和行为。FEM模块提供了强大的后处理功能,允许用户以图形化的方式展示和分析仿真结果。用户可以查看位移、应力、温度等物理量的分布情况,以及不同时刻的仿真动画。用户可以根据具体问题的需要选择合适的求解器,并进行相应的设置和配置。用户可以根据CAE问题的需要,应用不同类型的约束来模拟实际工程中的边界条件。FEM模块允许用户定义待求解的几何对象。这些几何对象可以是复杂的实体,通过网格划分技术被分解为更小的元素,以便进行精确的数值分析。

2024-04-30 14:58:18 121

原创 9、开发基于FemWorkbench的CFD模块

SolidWorks不仅提供了FEM功能,还具备CFD功能。为了使FreeCAD拥有类似的功能,考虑在现有的Fem Workbench上添加CFD功能,并重用大部分基础设施。:CFD模拟需要复杂的设置和专用的网格。在FreeCAD中,精确的模拟不是设计目标。对于严肃的研究,通常需要多次调整实验设置和将FreeCAD模型导入其他预处理工具进行网格划分。:OpenFoam是一个强大的免费开源CFD求解器,但缺少免费的GUI案例设置工具。

2024-04-30 14:51:43 205

原创 7、FreeCAD中的CAD模块介绍

OpenCASCADE Technology(OCCT)是唯一的功能全面、工业级、开源CAD内核,FreeCAD和Salome均基于此构建。OCCT自2013年起以LGPL发布,不再使用OCC许可。TopoDS_Shape定义了简单几何实体之间的关系,包括顶点、边、线框、面、壳、实体和组合实体。

2024-04-30 14:51:26 235

原创 2、FreeCAD源代码组织

此外,FreeCAD的文档包括由Doxygen从C++和Python源代码中的文档字符串自动生成的文档,这些文档提供了关于源代码的详细信息和说明。除了Doxygen生成的文档外,FreeCAD还有一个维基,提供了关于软件设计、特定模块等信息的额外文档。这个维基包含三个用户中心:用户中心、高级用户中心和开发者中心,分别针对不同层次的用户和开发者提供有用的资源和指导。总的来说,FreeCAD的源代码组织结构清晰,文档丰富,构建系统和持续集成工具完善,为开发者和用户提供了良好的支持和指导。

2024-04-30 14:19:10 624

原创 1、FreeCAD概述与架构

FreeCAD的诞生:2002年10月29日,由上传了版本0.0.1的初始上传。FreeCAD的维基百科页面显示,FreeCAD基本上是由不同强大的库组成的集合,其中最重要的是openCascade,用于管理和构建几何体,Coin3D用于显示这些几何体,Qt用于将这些功能放入一个友好的图形用户界面,Python则提供完整的脚本/宏功能。FreeCAD是一个功能强大的开源CAD工具,它基于多种库和框架,如OpenCASCADE、Coin3D、Qt和Python,提供跨平台的支持、参数化建模、脚本和宏功能。

2024-04-30 14:05:15 580

原创 FreeCAD的代码风格

总结:该指南确保了FreeCAD项目中代码的一致性和可读性,同时促进了项目合作与代码质量的提升。开发者需遵循这些规范进行编码。

2024-04-29 08:00:00 118

原创 10、FreeCAD的测试和调试

推荐使用带有语法高亮和集成QtDesigner的文本编辑器。QtDesigner便于生成和编辑Qt UI文件。另外,Spyder IDE(随Anaconda一起提供)是一个轻量级且功能完善的Python开发环境,支持调试功能。:对于C++开发,Visual Studio 2015是Windows环境下的重要工具,特别适合处理Cmake项目。此外,QtCreator支持Qt 4.x和5.x版本,同时也能很好地处理Cmake项目。

2024-04-24 15:27:54 235

原创 OpenInventor/Coin3D 学习指南

Coin3D是一个功能强大的开源3D可视化库,与OpenInventor兼容。它提供了丰富的类和功能,可用于构建复杂的3D场景图、处理用户交互、集成到不同的窗口系统中,并通过Qt的Quarter库与2D用户界面实现无缝集成。

2024-04-24 14:52:13 372

原创 CMake 速查手册总结

设置CMake最低版本要求,定义项目名称,并使用命令将源文件编译成可执行文件,是CMake的基本使用方式。推荐使用源外构建以保持源码树清洁,通过cmake命令指定顶级和生成器,再执行make进行构建。可以利用cmake-gui工具在界面中方便地开启或关闭构建选项。

2024-04-24 14:36:14 159

原创 VTK使用指南:介绍

本章讨论了开发大型和/或复杂软件系统的一些问题,并描述了面向对象设计如何解决其中的许多问题。本章定义了面向对象建模和设计中使用的关键术语,并通过一个真实世界的例子进行了工作。本章最后简要介绍了一些面向对象的语言以及与面向对象可视化相关的一些问题。

2024-02-19 07:00:00 1745

原创 CGAL的二维分段的Delaunay图

一组弱(左)和强(右)相交点的分段Voronoi图。CGAL的二维分段Delaunay图包设计用于计算平面上一组可能相交的分段的Delaunay图形。虽然我们计算Delaunay图,但我们经常会提到它的对偶,即分段Voronoi图,因为它更容易解释和理解。已经实现的算法是增量的。相应的CGAL类称为Segment_Dlaunay_graph_2<SegmentDelaunayGraphTraits_2,SegmentDelanayGraphStructure_2>,并将在后续部分中进行更详细的讨论。

2024-02-05 07:00:00 896

原创 VTK的数据组装

设计基于三个类别:vtkPartitionedDataSet是数据集的集合(不要与vtkDataSet混淆)。vtkPartitionedDataSetCollection是vtkPaartitionedDataSet的集合。vtkDataAssembly定义vtkPartitionedDataSetCollection中项之间的层次关系。

2024-02-04 16:39:20 843

原创 CGAL的3D多面体的Minkowski和

机器人能进入房间吗?倒立机器人和障碍物的Minkowski和描述了机器人相对于障碍物的非法位置。由于Minkowski总和的边界描述了合法位置,因此机器人在外部区域和房间之间有一条路径。Minkowski和在几何学中是一个重要的概念,尤其在计算几何和计算机图形学中。对于两个点集P和Q,它们的Minkowski和被定义为P⊕Q={p+q∣p∈P,q∈Q}。这个概念的应用非常广泛,例如在机器人运动规划和计算机辅助设计中都有使用。在图2中,展示了一个使用Minkowski和规划机器人运动的例子。

2024-02-01 07:30:00 922

原创 CGAL的多面体凸分解

对于许多非凸多面体的应用,有高效的解决方案,这些解决方案首先将多面体分解为凸块。例如,可以通过将两个多面体分解为凸块来计算两个多面体的Minkowski和,然后计算凸块的配对Minkowski和,并将配对和结合起来。虽然将多面体分解成尽可能少的部分是可取的,但这个问题是NP-hard的。我们的实现将Nef多面体N分解为O(r^2)个凸块,其中r是与多面体内部成大于180度的角的两个相邻面的边数。这些边也被称为反射边。O(r^2)个凸块的上界是最坏情况下的最优解。

2024-01-31 07:00:00 908

原创 CGAL的表面网格分割

网格分割是将网格分解为更小、更有意义的子网格的过程。该过程用于建模、装配、纹理、形状检索、变形等应用。我们参考了关于网格分割的不同分割技术的综合调查。SDF是Shape Diameter Function的缩写,中文意思是形状直径函数。它是一种测量二维或三维几何形状局部直径的函数,广泛应用于计算机图形学、计算几何和几何计算等领域该软件包提供了一种依赖于形状直径函数的算法实现。给定一个包围三维实体物体的三角表面网格(以下简称网格),SDF为网格的每个面提供了一个局部物体直径的估计(SDF值)。

2024-01-30 15:25:24 1395

原创 CUDA的编程模式

本章介绍了CUDA编程模型背后的主要概念,概述了它们在C++中是如何公开的。在编程接口中对CUDA C++进行了详细的描述。本章和下一章中使用的矢量加法示例的完整代码可以在矢量加法CUDA示例中找到。

2024-01-08 11:19:48 883

原创 Embree使用指南(无SYCL)

Intel®Embree是由Intel开发的高性能光线跟踪库,以Apache 2.0许可证的开源形式发布。Intel®Embree支持Linux、macOS和Windows下的x86 CPU;Linux和macOS上的ARM CPU;以 英特尔&#xAE;Embree的目标是图形应用程序开发人员,以提高逼真照片渲染应用程序的性能。Embree针对生产渲染进行了优化,重点关注非相干光线性能、高质量的加速结构构建、丰富的特征集、准确的原始交集和低内存消耗。 Embree的特征集包括各

2024-01-05 07:00:00 1496

原创 CGAL的无限制的Delaunay图

如果一对分段站点有一个公共点,并且这个公共点不在两个站点的任何内部,则称它们为弱相交。如果一对分段站点相交,并且它们有一个以上的公共点,或者它们的公共点位于两个站点中的至少一个内部,则称它们为强相交。如果一组分段站点中的所有对都是弱相交(强相交)或不相交,则称其为弱相交(强相交)。见图。给定平面上的两点p=(px,py),q=(qx,qy),它们的L∞距离为不难看出,与定点c相距相等固定L∞距离r的点的几何轨迹是中心为c、边长为2r的轴平行正方形(L2中的类似物是中心为c、直径为2r的圆)。

2024-01-04 05:00:00 855

原创 CGAL的D维空间搜索(基于KD树)

空间搜索包通过提供支持以下算法的实现来实现精确和近似距离的实现最近和最远邻居搜索精确和近似搜索(近似)范围搜索(近似)k-最近邻和k-最远邻搜索(近似)增量最近邻和增量最远邻搜索表示点和空间对象的查询项。在这些搜索问题中,给定d维空间中的数据点集P。这些点可以用笛卡尔坐标或齐次坐标表示。这些点被预处理成树数据结构,这样给定任何查询项q,P中的点都可以被有效地浏览。近似空间搜索包是针对数据集设计的,这些数据集足够小,可以在主内存中存储搜索结构(与数据库中假设数据驻留在辅助存储中的方法相反)。

2024-01-03 05:45:00 910

原创 CGAL的空间排序

许多在CGAL中实现的几何算法都是增量的,因此它们的速度取决于插入顺序。此软件包提供了排序算法,可以大大提高此类算法的运行时间。其基本原理是沿着空间填充曲线对对象进行排序,这样在插入顺序上,几何上接近的两个对象将很有可能接近。这样,在插入过程中将要查看的数据结构的一部分很可能已经在最近的插入中被查看过,因此很可能在缓存内存中而不是主内存中。作为另一个副作用,这些排序函数通常会提高增量算法产生的数据结构的内存局部性,有时会导致使用这些数据结构的其他算法的速度加快。

2024-01-02 06:00:00 904

原创 CGAL的AABB tree

AABB树组件提供了一种静态数据结构和算法,用于对有限的三维几何对象集进行高效的交集和距离查询。可以查询数据结构中存储的几何对象集,以进行交集检测、交集计算和距离计算。交集查询可以是任何类型的,只要在traits类中实现了相应的交集谓词和构造函数。距离查询仅限于点查询。交集查询的例子包括针对三角形集的线对象(射线、线、线段),或针对线段集的平面对象(平面、三角形)。距离查询的一个例子包括从点查询中找到最接近三角形集的点。请注意,该组件不适合查找所有相交对象对的问题。

2024-01-01 06:00:00 2215

原创 CGAL的三角网格曲面脊线和脐点的近似计算(需要微分几何学的知识)

在光滑曲面上,脊线是一种特殊的曲线。沿着这条曲线,曲面的一个主曲率在其曲率线上达到极值(最大或最小)。这意味着脊线是那些曲率发生突变的区域,它们在形状感知、物体识别和计算机图形学中都有重要的应用。:脐点是光滑曲面上的一个特殊点,在该点上,曲面的两个主曲率相等。在脐点处,曲面的形状局部类似于一个球体或鞍点。脐点在曲面分析和计算机图形学中也很重要,因为它们代表了曲面形状的局部变化。模型的山脊线,由数字米开朗基罗项目提供的模型。本章描述了用于近似由三角形网格离散化的光滑曲面的脊线和脐点的CGAL包。

2023-12-31 06:00:00 1166

原创 CGAL的三角曲面网格变形

曲面网格变形系统由以下部分组成:三角表面网格(以下称为表面网格),一组定义要变形的区域的顶点(称为感兴趣区域,缩写为ROI),用户想要移动的ROI的顶点子集(称为控制顶点),每个控制顶点的目标位置(定义变形约束)。ROI中不是控制顶点的顶点称为无约束顶点。这些定义如图所示。ROI具有绿色顶点(不受约束的顶点)和红色顶点(控制顶点)。(左)初始曲面网格;(右)为每个控制顶点定义目标位置,通过变形算法更新不受约束的顶点的坐标。在这个包中,实现了三个算法: 尽可能刚性(ARAP)方法[6]

2023-12-30 06:30:00 1040

原创 CGAL的加热法

热方法是一种算法,通过返回三角形网格中所有顶点到给定源顶点集合中最近顶点的测地距离近似值,解决单源或多源最短路径问题。网格中两个顶点的测地距离是指从网格表面(可能经过面的内部)行进的距离。例如,在章鱼的两个相邻臂上,三维空间中靠近的两个顶点可能在表面上很远。在图中,我们使用渐变的红色/绿色对距离进行着色编码,对应于接近/远离源顶点。热方法非常高效,因为该算法简化为两个标准的稀疏线性代数问题。在需要对固定域进行重复距离查询的情况下,该方法特别有用,因为第一次查询的预计算可以重复使用。

2023-12-29 14:03:06 732

原创 CGAL的形状规则化

这个 CGAL包能够规范2D中的一组线段和开闭轮廓以及3D中的一组平面,以便所有输入对象根据用户指定的条件进行旋转和对齐。此外,我们提供了一个全局规范框架,可以根据用户需求和任何类型的几何对象进行调整。该包还可以与形状检测包结合使用。

2023-12-29 06:00:00 1543

原创 CGAL的D维包围盒相交计算

如果基本体不再那么简单,例如三维三角形和多面体表面的小平面,那么关于几何基本体的简单问题,如相交和距离计算,本身可能会变得相当昂贵。因此,在这些基元上操作的算法在实践中往往是缓慢的。一种常见的(启发式)优化方法通过其轴对齐的边界框来近似几何图元,在框上运行适当的算法修改,并且每当一对框具有有趣的交互时,只有在框中包含的复杂几何图元上才能计算出确切的答案。我们提供了一种有效的算法,用于找到大量等向框的所有相交对,即,通常这些框将是更复杂几何形状的边界框。

2023-12-28 17:26:10 961

原创 CGAL的三角形曲面网格的最短路径

机器人跨越三维地形表面的运动规划是最短路径计算的一个典型应用。使用二维近似无法捕捉到我们试图跨越的地形中任何有趣的东西,并且会给出糟糕的解决方案。这个问题通常被称为离散测地线问题。尽管这个问题的更一般版本,即存在障碍物的三维中最短路径,是NP难的,但当运动被限制在物体的二维表面时,它可以有效地解决。该软件包中实现的算法构建了一个数据结构,可以有效地回答以下形式的查询:给定一个三角网格曲面M、M上的一组源点S和M上的目标点t,找到t和S中任意元素之间的最短路径λ,其中λ被限制在M的表面上。

2023-12-28 06:00:00 897

原创 CGAL的D维范围树和线段树

本节介绍d维范围和分段树。一维范围树是一维点数据上的二叉搜索树。在这里,我们称所有具有严格顺序的一维数据类型(如整数和双精度数)为点数据。d维点数据是一维点数据的d元组。一维分段树也是二叉搜索树,但输入数据是一维区间数据。一维区间数据是一对(即二元组)(a,b),其中a和b是相同类型的一维点数据,并且a<b。对(a,b)表示半开区间[a,b)。类似地,d维区间由一维区间的d元组表示。

2023-12-27 17:29:06 1199

原创 CGAL的2D Alpha Shapes

我们区分了两种版本的alpha形状。基本alpha形状基于Delaunay三角剖分。加权alpha形状基于其推广,即正则三角剖分(参见正则三角剖分一节),用加权点的幂代替欧几里得距离。α 形与底三角剖分之间存在密切联系。更准确地说,S 的 α-复形是 S 的底三角剖分的子复形,包含 α-暴露的 k-单形,0≤k≤d。如果存在一个半径为 α-√ 的开圆盘(或球),通过单形的顶点,并且不包含 S 的任何其他点,则该单形被称为 α-暴露的。

2023-12-27 06:30:00 1827

原创 CGAL的主成分分析

一组对象的边界框是包含该集的长方体。轴对齐的边界框捕获集合中所有对象在其坐标系内的最大范围,即与坐标系的轴对齐的边框。轴对齐的边界框在几何算法中经常被用作数据集的一般位置的指示,用于显示、一次近似空间查询或空间索引目的。一组物体的质心是它们的质心,即通过组成物体的所有点的坐标来计算其坐标的点。请注意,尽管质心的一般定义包含密度函数(因此也包含加权平均值),但当前的实现方式假设了均匀的密度(见下面为加权点定义的重心)。对于点集{X1,X2,…,XN}质心X’计算为。

2023-12-26 14:20:53 950

原创 CGAL的三角曲面网格骨架化

马模型的曲线骨架。骨架是用于分割、形状匹配、重建、虚拟导航等的有效形状抽象。顾名思义,曲线骨架是曲线结构的图(1D)。对于3D几何体来说,它不是由表面(2D)组成的中轴。如图所示,形状的曲线骨架捕捉其基本拓扑。在这个包中,我们实现了中描述的平均曲率骨架算法,该算法通过迭代收缩输入的三角曲面网格,从无边界的三角曲面中提取曲线骨架。

2023-12-26 06:00:00 1055

原创 CGAL中三角形曲面网格近似

此软件包实现了变分形状近似(VSA)方法,通过更简单的表面三角形网格来近似输入表面网格。该算法的输入必须是:三角形分割;组合2流形输出是一个三角形汤,可以构建成多边形曲面网格。给定一个输入曲面三角网格,VSA利用离散聚类算法通过一组称为代理的局部简单形状对其进行近似。每个簇表示为输入网格的一组连接的三角形,输出网格是通过生成一个近似簇的曲面三角网格来构造的。近似误差是单边的,在簇与其相关代理之间定义。两个误差度量(L2和L1)用于评估簇的近似误差。

2023-12-25 17:18:25 1219

原创 CGAL的三维点集

CGAL提供了几种处理点集的算法,从形状检测到通过标准点集处理工具进行的表面重建。虽然这些算法不强制使用特定的数据结构,但该软件包提供了一个3D点集结构,使用户更容易处理附加属性,如法向量、颜色、标签,并在其上调用CGAL算法。

2023-12-25 06:00:00 2398

原创 CGAL的网格简化

实现简化算法的自由函数不仅采用表面网格和所需的停止谓词,还采用控制和监控简化过程的许多附加参数。本节简要描述了为讨论算法参数设置背景的过程。有两种略有不同的“边缘”折叠操作。一种被称为边缘塌陷,而另一种则被称为半边缘塌陷。给定连接顶点w和v的边e,边折叠操作将e、w和v替换为新顶点r,而半边折叠操作则将v拉入w,消除e并保留w。在这两种情况下,该操作都会删除边e及其相邻的2个三角形。该包使用半边折叠操作,该操作通过额外移除1个顶点(v)和2条边来实现,每个相邻三角形一条。

2023-12-24 06:00:00 1085

原创 CGAL的2D和曲面插值函数

Sibson 引入了自然邻近插值来插值多元散乱数据。给定一组数据点 P,与 P 相关的自然邻近坐标由 P 的 Voronoi 图定义。当模拟将查询点 x 插入 P 的 Voronoi 图时,x 的潜在 Voronoi 单元从相邻的现有单元中“窃取”了一些部分。2D示例:x有五个自然邻居p1,…,p5。自然邻居坐标λ3(x)是紫色多边形的面积π3(x,与总高亮区域的面积之比。设π(x)表示x的潜在Voronoi单元的体积,πi(x)表示x的单元将从pi的单元中窃取的子单元的体积。

2023-12-23 06:30:00 1778

原创 CGAL的权重

许多几何算法依赖于中间计算标量,即所谓的权重,然后用于解决不同的线性系统或偏向于一个结果而不是另一个,也称为加权。这个包为不同类型的权重提供了一个简单和统一的接口。一个典型的需要权重的几何算法是三角形网格的Laplace平滑:其中vi是网格顶点i的位置,h是一个足够小的步长,λ是标量扩散系数,Δvi是在顶点vi处计算的离散的Laplace-Beltrami算子的平均值,使用cotangent权重进行计算:其中wi=12Ai和wij=cotβij+cotγij和Ai是一个局部平均域。

2023-12-22 06:00:00 786

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除