基于opencascade的开源项目AnalysisSitus开发环境配置介绍

Analysis Situs 是一个开源原型制作工作台和用于开发 CAD/CAM/CAE 算法的 SDK。其主要驱动理念是为 CAD 软件开发人员提供高度直观、可视化和可定制的孵化器,新的 CAD 算法将在此诞生。该工作台采用C++和Tcl作为主要编程语言。该应用程序包括分层组织的数据模型、基于 VTK 的 3D 查看器和脚本控制台。提供了一系列几何处理算法,从 CAD 特征识别到网格计算。

在技​​术方面,Analysis Situs 建立在 OpenCascade 和另一个内部开源 NURBS 库的基础上。它积累了广泛的功能,涵盖经典的 B-rep 建模/检查算法和一些最先进的方法。后者包括一些在其作者的科学研究框架内开发的算法。可用的工具旨在用作派生算法的基础。

该软件背后的初衷是弥合学术研究人员和工业消费者之间的差距(解决“技术转让”问题)。作者还使用 Analysis Situs 教授学生和 CAD 从业人员低级几何建模以及开展自己的研究。
在这里插入图片描述

下面是用Cmake的构建过程:

下载资源

1.第一步从GitLab下载源码:https://gitlab.com/ssv/AnalysisSitus
2.下载libpack:https://analysissitus.org/files/libpacks/analysissitus-libpack-msvc2019.zip

使用Cmake构建:

1.在AnalysisSitus文件夹中新建bulid文件
2.在AnalysisSitus文件夹中新建3rdparty文件
3.将下载的libpack里面的文件都放到3rdparty文件夹中
4.使用CmakeGui构建 设置文件夹目录 选择vs版本 选择x64 ,具体配置见下图
在这里插入图片描述

下图是官方给的参考配置
在这里插入图片描述

5.最后在build文件夹中成功生成sln等文件 祝您好运!
在这里插入图片描述

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
下面是一个用 OpenCASCADE 划分六面体网格的示例代码: ```cpp #include <BRep_Builder.hxx> #include <BRep_Tool.hxx> #include <BRepMesh.hxx> #include <BRepMesh_IncrementalMesh.hxx> #include <BRepMesh_Triangle.hxx> #include <BRepPrimAPI_MakeBox.hxx> #include <Geom_TrimmedCurve.hxx> #include <gp_Pnt.hxx> #include <TopExp_Explorer.hxx> #include <TopoDS.hxx> #include <TopoDS_Face.hxx> #include <TopoDS_Shell.hxx> #include <TopoDS_Solid.hxx> #include <TopoDS_Wire.hxx> #include <vector> int main() { // 创建一个长宽高均为1的立方体 BRepPrimAPI_MakeBox boxMaker(1.0, 1.0, 1.0); TopoDS_Solid box = boxMaker.Solid(); // 创建一个六面体网格对象 BRepMesh_HexahedronMesh hexaMesh; // 划分六面体网格 BRepMesh_IncrementalMesh incrementalMesh(box, 0.1, Standard_True, &hexaMesh); // 输出网格信息 TopExp_Explorer explorer; for (explorer.Init(box, TopAbs_FACE); explorer.More(); explorer.Next()) { TopoDS_Face face = TopoDS::Face(explorer.Current()); TColgp_Array1OfPnt nodes; BRepMesh_Triangle triangulation(face, nodes); for (Standard_Integer i = nodes.Lower(); i <= nodes.Upper(); ++i) { gp_Pnt p = nodes(i); std::cout << "Node: (" << p.X() << ", " << p.Y() << ", " << p.Z() << ")" << std::endl; } } return 0; } ``` 这段代码首先创建了一个长宽高均为1的立方体,然后使用 `BRepMesh_HexahedronMesh` 类创建了一个六面体网格对象 `hexaMesh`,最后调用 `BRepMesh_IncrementalMesh` 函数对立方体进行网格化。其中,`BRepMesh_IncrementalMesh` 函数的第四个参数为六面体网格对象的指针,用于指定网格化算法。在这个示例中,我们使用了默认的六面体网格对象 `BRepMesh_HexahedronMesh`。 为了验证网格化结果,我们遍历立方体的每个面,获取每个面的三角剖分信息,然后输出三角剖分的节点坐标。这里只是简单地输出了节点坐标,实际应用中还需要将节点坐标和拓扑信息存储在数据结构中,以便进行后续处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁波莱布尼茨信息技术有限公司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值