FreeCAD集成gmsh源码分析
目录
- gmsh模块界面
- 获取gmsh的版本
- 执行gmsh网格划分
gmsh模块界面
这个界面是用PySide来写的,PySide是QT的python绑定,具体代码在task_mesh_gmsh.py文件中。目前这个界面非常的简陋,没有对接gmsh稍微高级一点的功能。界面对应的事件处理是在gmshtools.py中。这里只分析“Gmsh version”与“Apply”运行gmsh功能。gmsh task面板界面代码如下:
class _TaskPanel(base_femmeshtaskpanel._BaseMeshTaskPanel):"""The TaskPanel for editing References property ofMeshGmsh objects and creation of new FEM mesh /home/yundao/freecad/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py"""def __init__(self, obj):super().__init__(obj, gmshtools.GmshTools(obj))self.form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshGmsh.ui" # QT界面文件位置)self.text_log = self.form.te_outputself.text_time = self.form.l_timeself.setup_connections()def setup_connections(self):super().setup_connections()# 绑定界面事件与处理函数QtCore.QObject.connect(self.form.qsb_max_size, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.max_changed)QtCore.QObject.connect(self.form.qsb_min_size, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.min_changed)QtCore.QObject.connect(self.form.cb_dimension, QtCore.SIGNAL("activated(int)"), self.choose_dimension)QtCore.QObject.connect(self.form.cb_order, QtCore.SIGNAL("activated(int)"), self.choose_order)self.form.cb_dimension.addItems(self.obj.getEnumerationsOfProperty("ElementDimension"))self.form.cb_order.addItems(self.obj.getEnumerationsOfProperty("ElementOrder"))# 绑定“Gmsh Version”按钮事件QtCore.QObject.connect(self.form.pb_get_gmsh_version, QtCore.SIGNAL("clicked()"), self.get_version)self.get_mesh_params()self.set_widgets()def get_mesh_params(self):self.clmax = self.obj.CharacteristicLengthMaxself.clmin = self.obj.CharacteristicLengthMinself.dimension = self.obj.ElementDimensionself.order = self.obj.ElementOrderdef set_mesh_params(self):self.obj.CharacteristicLengthMax = self.clmaxself.obj.CharacteristicLengthMin = self.clminself.obj.ElementDimension = self.dimensionself.obj.ElementOrder = self.orderdef set_widgets(self):