九韶聚力 POWER 平台 1.0.0.0
载入中...
搜索中...
未找到
重点类说明

Workbench 工作台

类简介

gui::Workbench 是工作台抽象基类(继承自 base::IPlugin),定义了工作台的生命周期、UI构建、命令注册等标准接口。

Dev::DevWorkbench 是具体实现类,继承自 gui::Workbench,展示了如何实现自定义工作台。

继承关系:

base::IPlugin → gui::Workbench (抽象类) → Dev::DevWorkbench (具体实现)

核心成员

基本信息

std::string Version() const override;

返回工作台版本号

std::string PluginName() const override;

返回插件唯一标识名

QString Label() const override;

返回工作台显示标签

QString Pixmap() const override;

返回工作台图标资源路径

QString GroupName() const override;

返回工作台分组名称

int BaseIndex() override;

返回工作台基础索引,用于排序

int BaseNavIndex() override;

返回导航栏索引

生命周期

bool Activate();

激活工作台并更新GUI界面(由框架调用)

virtual void Activated();

工作台激活时的回调钩子

virtual void Deactivated();

工作台停用时的回调钩子

virtual void StartUp();

加载工作台初始化内容(首次加载时调用)

virtual void InitData(app::Document* doc);

初始化文档相关数据

UI构建

virtual gui::MenuItem* SetupMenuBar() const = 0;

构建工作台的菜单栏结构,返回菜单项树的根节点

virtual gui::ToolBarItem* SetupToolBars() const = 0;

构建工作台的工具栏结构,返回工具栏项树的根节点

virtual void RegistCommand() = 0;

注册工作台的所有命令

virtual std::vector<gui::Navigator*> GetNavigatorList() const;

返回工作台的导航栏列表

virtual void CreateMainWindowPopupMenu(gui::MenuItem* item) const;

创建主窗口的右键菜单


Navigator 导航栏

类简介

gui::Navigator 是导航栏抽象基类(继承自 QWidget),定义了导航栏的基本接口和生命周期管理。

Dev::PartNavigator 是部件导航栏的具体实现,继承自 gui::Navigator,提供对象树视图和图层管理功能。

继承关系:

QWidget → gui::Navigator (基类) → Dev::PartNavigator (具体实现)

核心成员

Navigator(std::string name, QString label = "");

构造函数,设置导航栏名称和显示标签

std::string Name() const;

返回导航栏唯一标识名

QString Label() const;

返回导航栏显示标签

void SetName(const std::string& name);

设置导航栏名称

virtual QIcon GetIcon();

返回导航栏图标

void SetupDocument(app::Document* doc);

设置当前文档并初始化主Widget

QWidget* MainWidget();

返回导航栏的主Widget

virtual QWidget* InitMainWidget(app::Document* doc) = 0;

初始化并返回导航栏的主Widget,可按需添加Tab、表格等控件

void UpdateNavigator();

刷新导航栏内容

QWidget* m_main_widget;

导航栏主Widget指针

QTabWidget* tabWidget;

Tab容器Widget(PartNavigator)

ShapeTreeWidget* shapebase;

对象树Widget,用于显示文档中的几何对象(PartNavigator)


Command 命令

类简介

gui::Command 是命令抽象基类,定义了用户操作的执行接口。所有命令都需要注册到 gui::CommandManager 进行统一管理。

继承关系:

gui::CommandBase → gui::Command (抽象类) → Dev::CreateBox等具体命令实现

核心成员

Command(std::string const& name);

构造函数,设置命令名称,内部唯一id标识符

virtual void Activated(int index) = 0;

命令执行的核心函数,必须实现

virtual bool IsActive();

判断命令是否可执行

std::string const& GetName() const;

返回命令名称

void SetMenuText(std::string const&);

设置菜单显示文本

void SetToolTipText(std::string const&);

设置工具提示文本

void SetPixmap(std::string const&);

设置命令图标路径

void SetAccel(std::string const&);

设置快捷键

Action* GetAction();

返回关联的Action对象

常用宏定义

DEF_STD_CMD(X)

定义标准命令,只需实现 Activated()

DEF_STD_CMD_A(X)

定义命令,需实现 Activated() 和 IsActive()

DEF_STD_CMD_AC(X)

定义命令,需实现 Activated()、IsActive() 和 CreateAction()

CommandManager 命令管理器

static CommandManager& GetInstance();

获取单例实例

void AddCommand(Command* command);

注册命令到管理器

Command* GetCommandByName(std::string const& name) const;

根据名称获取命令

void RunCommandByName(std::string const& name) const;

根据名称执行命令


DocumentObject 文档对象

类简介

app::DocumentObject 是文档对象基类,表示文档中的一个数据实体。 Dev::BoxObject 继承自 DevObject,用于创建立方体几何对象。

继承关系:

app::PropertyContainer → app::TransactionalObject → app::DocumentObject → app::DocumentObjectTopoShape → Dev::DevObject → Dev::BoxObject

基类 PropertyContainer 提供了属性操作接口,如 AddPropertyFloatAddPropertyStringAddPropertyIntegerGetPropertyFloat 等属性读写函数。

核心成员

对象标识

std::string GetFullName() const override;

按 DocName.ObjName 的形式返回对象的完整名字(唯一标识,可做 ID 使用)

std::string GetFullLabel() const;

按 DocLabel#ObjLabel 的形式返回对象的标签,用于显示

virtual std::string_view GetViewProviderClassName() const;

返回关联的 ViewProvider 类名(BoxObject 返回 "Dev::ViewProviderBox")

父子关系

std::vector<std::pair<app::DocumentObject*, std::string>> GetParents(int depth = 0) const;

返回指定深度的父对象,以及此对象在父对象中的名称

app::DocumentObject* GetFirstParent() const;

获取第一个父对象

子元素可见性

virtual int SetElementVisible(std::string_view subname, bool visible);

设置子元素可见性,返回值:-1 不支持,0 子元素不存在,1 设置成功(注意:subname 不能包含 '.')

virtual int IsElementVisible(std::string_view subname) const;

获取子元素可见性,返回值:-1 不支持或不存在,0 不可见,1 可见

对象状态

bool IsError() const;

检查对象是否处于错误状态

bool IsValid() const;

检查对象是否有效(非错误状态)

ObjectStatus 状态机制: 当前框架使用 ObjectStatus枚举定义了包括 TOUCH(需要重新计算)、RECOMPUTE(重新计算中)、RESTORING(恢复中)、ERROR_(错误)、FREEZE(冻结)等状态标志,通过封装好的函数获取相关状态。

信号

boost::signals2::signal<void(const DocumentObject&, const Property&)> SignalPropertyChanged;

属性改变信号


ViewProvider 视图提供者

类简介

gui::ViewProvider 是视图提供者基类,负责DocumentObject在3D视图中的渲染和交互。 Dev::ViewProviderBox 继承自 ViewProviderDocumentObjectTopoShape,实现立方体的渲染和参数交互。

继承关系:

app::TransactionalObject → gui::ViewProvider → gui::ViewProviderDocumentObjectTopoShape → Dev::ViewProviderBox

核心成员

ViewProvider();

构造函数

virtual QIcon GetIcon() const;

返回对象图标

virtual void Show();

显示对象

virtual void Hide();

隐藏对象

virtual bool IsShow() const;

返回对象可见状态

virtual QWidget* GetTaskView() const;

返回任务面板Widget,用于参数编辑

virtual bool OnDelete();

删除对象前的回调