Chapter 1 GUI(图形用户界面)

1.1 工作台

组织良好的工场按照不同功能划分空间。一块区域作金工区,装备有弯板机、磨床和灭火系统;一块区域作木工区,有不同工具和除屑系统;一间屋子专门做喷漆和打磨,有相应工具和新风系统。大工场里,能完成各种工作。有本事的工人可以一个人根据需要游走于各个工作空间,但通常不是那样,他只在一个空间工作,另有专项技师在旁边其他空里工作。

同样的原理也适用于软件领域,FreeCAD 的程序员们就采用类似的原则。FreeCAD 这个应用程序被分成了一系列“工作台 workbench”,每个工作台都集成有完成特定工作要用的工具,可以根据需要在各个工作台之间切换。

FreeCAD的用户界面

图 1.1: FreeCAD的用户界面

工作台模式把当前任务所需要的工具组织在了一起,避免用户图形界面过于拥挤。

所谓开发 FreeCAD 其实开发的是“模块 module”,模块为 FreeCAD 扩展功能。很多模块都有对应的工作台,因此“工作台 workbench”和“模块 module”这两个词有时可以互换使用。

工作台切换器(图 1.2 是主工具栏区域(图 1.1 (1) )中的下拉窗口,列出了全部可用工作台。切换工作台对模型本身没有任何影响,用户可以随时放心切换。

工作台切换器

图 1.2: 工作台切换器

现在 FreeCAD 的核心应用已经有很多工作台,图 1.3 列出了默认的工作台组合。FreeCAD 还有几十个第三方模块,可以通过插件管理器 AddonManager 添加。

List of Core Workbenches

图 1.3: List of Core Workbenches

大多数工具有两种调用方式:从下拉菜单调用,点击图标激活。图标按钮分组集合到了工具栏里,可以按你的喜好定制。下次你切换回这个工作台,FreeCAD 会记得你的设定。你将鼠标指针悬停在图标按钮上方,旁边会出现提示,告诉你这个工具的功能。

点击工具栏的图标按钮,实际上会运行一段 Python 代码,请参看第 15 章的相关内容。

若切换工作台,会展现出新的工作台相应的工具栏,不属于这个工作台的工具就隐藏起来,高效地变换了各个工作台的用户界面。

有的工具栏和图标按钮每一个工作台都有,因为他们确实哪里都要用。

有的按钮和工具看起来很像,有的执行的是相似而有别的功能。这种情况下,把鼠标悬停在图标按钮上,会出现工具的功能提示。

有时你发现自己在找不到某个图标按钮,它刚才还在那里呢,很可能是因为刚刚你切换了工作台。注意自己在哪个工作台。

1.2 3D 窗口

屏幕占比最大的那部分就是 3D 窗口(图 1.1 (2)),用于显示模型对象。

3D 窗口展示当前打开的文档模型的视图。你打开文档或新建文档时,就自动创建了一个 3D 窗口。你可以为一个文档打开多个视图,在每个视图里都可以独立平移、缩放和旋转模型。3D 窗口下方的标签栏(图 1.1 (6))帮你在多个视图之间快速切换。

每个视图右下角有基准坐标轴(图 1.1 (3)),它指示了该视图的当前方向。

“视图 view”工具栏(图 1.4)中的按钮能快速定位到几个主视角,还能让模型显示的大小适应于屏幕区域。

The View Toolbar

图 1.4: The View Toolbar

你可以通过 3D 窗口来选择对象。把鼠标滑到对象的相应位置,那部分会变成黄色,提示它们处于可选状态。在这种预选状态下点击,它们就会变成绿色,表示已经选定好了。

1.2.1 导航方式

透过 3D 窗口可以看到模型的坐标空间。你要观察模型的各个部分,要选择特定部位,可以旋转、平移和缩放这个模型。理想情况下,无论采用什么指针设备,与模型空间的这种交互过程应要自然流畅。

FreeCAD 支持多种导航方式,为鼠标和触摸板的按键配置了相应的行为模式。要更改导航模式,可以通过屏幕右下角的导航指示器,也可以通过应用首选项页面,还可以在 3D 窗口的空白区域点击鼠标右键(图 1.5)。要查看当前的导航模式,可以把鼠标悬停在导航指示器上方,那里就会出现提示信息(图 1.6)。

导航方式控制鼠标的行为

图 1.5: 导航方式控制鼠标的行为

把指针悬停在导航指示器上方就能看到鼠标行为提示

图 1.6: 把指针悬停在导航指示器上方就能看到鼠标行为提示

有的导航方式适合于鼠标,有的导航方式更适合于触摸板。有的导航方式以其他软件命名,顾名思义就是模仿它的导航方式。比如对使用过开源软件 Blender 的人来说,采用 Blender 的导航方式,既舒服又自然。你最好实际试一试,找到适合自己的导航方式。

1.2.2 显隐对象

非常复杂的项目会有很多部件。如果它们都显示出来,就堆满了 3D 窗口,造成困扰。把部分对象隐藏起来,只看到你想要的就好了。显示或隐藏一个对象,只需要选择它,然后按空格键。如果对象被隐藏了,它们的名字在项目树里就是灰色的。

1.3 项目树

用户界面的左侧是大面积的控制面板区,称为“组合浏览器 combo view”,实际上由四个面板组成。上半部分有两个标签页,“模型 Model”和“任务 Task”。

模型页用树状结构显示所有打开的文档,以及其中的对象。树状结构可以展开和折叠,节点的颜色体现出对象在 3D 窗口中的显隐状态——隐藏的对象是灰色的。就像在 3D 窗口中可以做的那样,在树状图里选中对象,按下空格键,也可以切换其显隐状态。

双击一个节点有不同效果,取决于对象的类型和它具有什么属性。

表 1.1: 双击对象后的行为效果
激活状态 任务面板 位置 对象举例 双击后的行为
Body 触发激活状态
Part Design 倒角 打开任务面板来编辑
Part 六面体 打开位置工具
Body 原点 编辑对象标签
在树状面板里选择对象,和在 3D 窗口里选择对象,这两种方法略有不同。在树状图里选择对象,你选中的是整个对象。在 3D 窗口里选择对象,你可以只选择它的面、边、或顶点,取决于你鼠标下面是什么。在 3D 窗口中点第二下,才选定了整个对象。通常来讲,选中的是部分还是整体并没什么差别,但是对某些操作来说,对应行为会有所不同。
3D 窗口中的对象都有对应的树状图节点,但是树状图里的节点不一定有对应的 3D 对象。双击树状图里的有些对象会打开一个新窗口,例如第 9 章会提到的数据表。

1.4 任务面板

在打开的任务面板中输入数据来完成操作

图 1.7: 在打开的任务面板中输入数据来完成操作

很多操作会激活“任务面板 Task panel”的对话框,搜集用户输入的更多信息,直到完成任务。任务面板是组合浏览器的第二个标签页,它会暂时覆盖掉项目树和属性的面板。任务完成后,组合浏览器会切换回项目树面板。

有些任务面板有很多控制项,比如画草图,你要在编辑状态停留很长时间,来配置可选项,来给模型加更多细节。也有些控制面板很简单,只需要一两个输入就可以关掉了。无论哪一种,任务不可以被打断:当下的任务没有完成或没被取消,就不能开启新的任务,你甚至不能在任务没完成时退出 FreeCAD!

在做任务的时候,你可以手动切换组合浏览器回到项目树页面里。要记得你还在做任务的状态,你需要切回到任务页面去,它还等着你来完成。

1.5 属性框

组合浏览器的下半部分是属性查看器。只要对象被选定,无论是通过树状图还是 3D 窗口,这个对象的属性就展现在这里,也在这里被修改。

属性查看器细分为两个标签页:

  • “视图 View”属性控制着对象看起来是什么样:可见性、透明度、颜色,以及其他性质。
  • “数据Data”页有对象的所有物理性质:位置、方向、名称和标签。

根据对象的不同类型,视图和数据标签页会列出不同的属性内容。

有的属性只能读不能改,但是大多数属性都可以编辑。在属性栏双击,用户就能输入一个新的值,回车确认,FreeCAD 会用这个新属性值来更新对象。

某些情况下,FreeCAD 将暂缓更新视图。因为这种更新可能非常耗时,或者会打扰用户的注意力。如果发生了这种不及时自动更新的情况,对象图标那里就会多出一个蓝色的确认标志,工具栏里的重算按钮 也会变为激活状态。按下重算按钮,就会强制更新对象。

1.6 首选项和定制化

FreeCAD 能做到高度定制化,它有很多可选项,打造出有个性的工作流程和用户界面。可以在以下几个地方实现定制。

在主屏幕里直接定制:

  • 将面板和工具条可以拖拽到你喜欢的地方;
  • 通过“显示 View”菜单来隐藏和显示面板和工具条;
  • 通过设置“导航方式”调整鼠标的行为;
  • 变更绘图风格(3D 窗口中的对象是描线的还是阴影无描线的);
  • 视图模式(透视还是正交)。

更多面向用户的选项可以在“首选项“对话框里配置(菜单:“编辑” - “首选项”)。对话框的左侧(图 1.8 (1))图标用于切换不同的场景。

  • 切换显示单位(米制,英美定制,等等);
  • 按用户喜好调整颜色配置。
全局首选项控制了大部分应用选项

图 1.8: 全局首选项控制了大部分应用选项

FreeCAD 采用“懒得加载 lazy loading”的方式调用工作台。就是说它只在用户第一次切换到那个工作台的时候,才把它加载到内存里。在首选项对话框左侧,“General”、“Display”和“Import-Export”三个场景总是一开始就加载好的,但是更多专用的工作台场景,只有相应工作台已经加载入内存之后,它们的图标才会显示在首选项对话框中。例如,在图 1.8 里,“PATH”工作台因为没有加载,就根本没有列出它的场景配置按钮。

“自定义 Customize”对话框(图 1.9)(菜单:工具 Tools -> 自定义 Customize)可以细颗粒度地控制用户界面。在这里你可以:

  • 关掉永远不用的工作台;
  • 更改或创建键盘快捷键;
  • 创建定制的工具栏,把宏链接到图标。
“自定义”对话框

图 1.9: “自定义”对话框