Geant4学习之CAD模型导入
- Geant4中CAD模型导入必要性
- CAD模型导入方法
- CAD模型导入Geant4过程
- (一)、CADMesh开源代码
- (二)、如何修改代码实现CAD模型导入
- 1.CADMesh.hh
- 2.CMakeLists.txt
- 3.DetectorConstruction.cc
- 4.运行编译
- 总结&&CADMesh源码链接
Geant4中CAD模型导入必要性
三维实体建模方法:
边界表示法(Boundary Pepresentation,BRep)
构造实体几何表示法(Constructive Solid Geometry,CSG)
Geant4自带的建模方式为构造实体几何表示法(Constructive Solid Geometry,CSG),对于初学者来说建模不方便,所以可以使用CAD建模软件画图并直接导入Geant4。
CAD模型导入方法
Geant4直接建模方法(这里介绍两种CAD导入方法):
CAD→GDML→Geant4
CAD数据转换为几何描述标记性语言(GDML)接口导入Geant4(FastRAD、SuperMC、FreeCAD等)
CAD→STL→Geant4
CAD数据转换为三角面元(mesh)几何文件导入Geant4(CADmesh接口、FreeCAD)
本篇主要讲解如何将CAD模型转换为STL格式文件导入Geant4中自动建模,并实现材料设置,大小变化、坐标迁移等。
CAD模型导入Geant4过程
(一)、CADMesh开源代码
CADMesh的源码链接放在文章结尾处,下载解压后如下图所示:
首先查看源代码目录下的README.md文件,在CADMesh根目录下的CADMesh.hh头文件,直接拷贝到include目录中,便可以使用CADMesh了,可以调用的格式有STL,PLY,OBJ。
# CADMesh //讲解了使用CADMesh的方法
Load triangular mesh based CAD files into Geant4 quickly and easily.
```cpp
#include "CADMesh.hh" //CADMesh.hh头文件
....
auto mesh = CADMesh::TessellatedMesh::FromPLY("mesh.ply"); //定义mesh变量
G4VSolid* solid = mesh->GetSolid(); //转化成Solid实体
...
Copy `CADMesh.hh` to the `includes` directory of your project.
That's it.
(二)、如何修改代码实现CAD模型导入
1.CADMesh.hh
第一步需要将刚刚下载的CADMesh源码目录下的CADMesh.hh复制到自己项目的include目录下,如下图所示:
2.CMakeLists.txt
第二步在CADMesh根目录下的meshes文件夹内找到扩展名为.stl的box_solidworks.stl,复制到自己项目的根目录下,然后按照下图所示修改CMakeLists.txt,将box_solidworks.stl添加到(test_SCRIPTS)中,如下图所示:
3.DetectorConstruction.cc
在DetectorConstruction.cc内加入 #inlcude CADMesh.hh,如下图所示:
然后在DetectorConstruction.cc引入实体:
// CADMesh :: STL //
auto test = CADMesh::TessellatedMesh::FromSTL("./box_solidworks.stl");
test->SetScale(1); //设置模型大小比例
test->SetOffset(0,0,0); //设置模型与坐标原点的相对位置
auto logicaltest = new G4LogicalVolume( test->GetSolid()
, Al //引入logicalvolume,设置材料
, "logical"
, 0, 0, 0);
new G4PVPlacement( 0
, G4ThreeVector()
, logicaltest
, "test"
, logicWorld
, false, 0);
4.运行编译
编译程序,运行,如下图所示:
总结&&CADMesh源码链接
按照以上步骤便可实现CAD模型直接导入Geant4中,关于STL格式文件如何生成将在后续的文章中更新,如需文章中展示的项目源码,可在评论区联系我。
附上CADMesh源码链接提取码:LGY6