【FastCAE源码阅读2】FastCAE如何调用OpenCasCade

FastCAE使用的是OCCT(OpenCascade)几何内核,FastCAE几何模块菜单上每个功能对应着一个创建几何的类,本文简单分析这部分源码。

一、几何命令类 

打开FastCAE几何模块,在功能菜单中可以看到很多几何操作功能,包括创建立方体、创建圆柱,创建点,布尔操作,物体进行变换等。这每一个功能被封装成一个类,底层会调用OCCT的API,代码在GeometryCommand模块中。

 其中,GeoCommandBase是所有几何创建命令的基类,也是QObject对象,定义了通用接口,基础的QT槽函数,通用字段。其中,字段_resShape用于保存OCC创建shape对象。

class GEOMETRYCOMMANDAPI GeoCommandBase : public QObject
{
	Q_OBJECT
public:
	GeoCommandBase(GUI::MainWindow* m, MainWidget::PreWindow* p);
	~GeoCommandBase() = default;
	virtual bool execute() = 0;
	virtual void undo();
	virtual void redo();
	virtual void releaseResult();
	TopoDS_Shape* getResultShape();
	CommandType getComamndType();
	void setEditData(Geometry::GeometrySet* set);
signals:
	void updateGeoTree();
	void showSet(Geometry::GeometrySet* s, bool r = true);
	void showDatum(Geometry::GeometryDatum*);
	void removeDisplayActor(Geometry::GeometrySet* s);
	void removeDisplayDatumActor(Geometry::GeometryDatum*);
	void updateActions();
	void updatePropertySig(DataProperty::DataBase* data);
protected:
	GUI::MainWindow* _mainWindow{};
	MainWidget::PreWindow* _preWindow{};
	CommandType _type{ D3Feature };
	TopoDS_Shape* _resShape{};
	Geometry::GeometryData* _geoData{};
	GeoComandList* _commandList{};
	
	bool _isEdit{ false };
	Geometry::GeometrySet* _editSet{};
};

子类都需要实现execute()方法,在这个方法中会封装OCCT的API。几何模块界面上对应的子类有:

几何创建类菜单功能OCCT API
CommandCreateBox创建立方体BRepPrimAPI_MakeBox
GeoCommandCreateCone创建圆台BRepPrimAPI_MakeCone
GeoCommandCreateCylinder创建圆柱BRepPrimAPI_MakeCylinder
GeoCommandCreateSphere创建球体BRepPrimAPI_MakeSphere
GeoCommandCreateLine创建线BRepBuilderAPI_MakeEdge
CommandCreateFace创建面BRepBuilderAPI_MakeFace
GeoCommandCreateDatumplane创建基准面BRepBuilderAPI_MakeFace
CommandBool布尔运算

BRepAlgoAPI_Cut、BRepAlgoAPI_Fuse、

BRepAlgoAPI_Common

GeoCommandMakeExtrusion拉伸BRepPrimAPI_MakePrism
GeoCommandMakeRevol旋转BRepPrimAPI_MakeRevol

 execute()方法建模完成后,一般会更新GUI,但这样设计并不合理。一是每个类都有说明存在冗余代码,同时相当于下层会调用上层接口,存在依赖倒置。

GeoCommandBase::execute();
emit showSet(newset);
emit updateGeoTree();

 现代CAE软件一般允许脱离GUI,单独可脚本化执行,可无界面化执行。这样设计会导致必须存在GUI才可以正常工作。

二、调用入口GeometryCommandPy

FastCAE内置了python命令解析器。在单击几何模块菜单时,会先执行python命令,再调用上述几何创建类。

 这些python命令的入口都在GeometryCommandPy.h中定义。

GUI层不直接调用的好处在于,可以使用python脚本重放整个建模过程,脚本化是目前CAE软件的必备基础能力。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值