[返回博客](/cn/blog) # 在 Mechanical SDK 中开启“编辑器”模式

Dmytro Kabenok 七月 23, 2020 [\#mechanical](/cn/blog/tag/mechanical)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

您可以通过两种方式使用 Mechanical SDK：“启用器”模式或“编辑器”模式。您使用的方法通常取决于您是想按原样使用现有机械文件和对象，还是将其转换为当前版本。

默认模式是“启用器”，它按原样读取和渲染包含机械实体的数据库，不进行验证检查或创建附加对象。旧版本的文件在启用器模式下可能会渲染不正确，因为 Mechanical SDK 不会将所有对象转换为当前的机械版本（这主要适用于符号标准的不同修订版）。使用此模式不需要特殊操作——只需加载机械模块即可。

另一种模式是“编辑器”，它提供与机械对象交互的完整功能：创建、编辑、删除、保存到不同版本等。如果使用此模式，文件读取期间的所有对象都将转换为最新的机械版本。还会创建基本集中缺失的对象，以便正确操作机械数据库。要在此模式下使用 Mechanical SDK，您必须创建 OdDbDatabaseMech 数据库对象，而不是 OdDbDatabase 对象。

切换模式的功能在 20.8 版本中添加。

#### 示例

在 Mechanical SDK 代码示例中，MyServices 类（通过中间层继承自 OdDbHostAppService 类）用于模块的特定操作。OdDbHostAppService 有一个特殊的 databaseClass() 方法，用于数据库创建。因此，如果您想在“编辑器”模式下使用 Mechanical SDK，只需覆盖 databaseClass() 方法，它将返回新数据库的静态 OdRxClass 描述。

```
class MyServices : public ExSystemServices, public ExHostAppServices
{
protected:
  ODRX_USING_HEAP_OPERATORS(ExSystemServices);
public:
  virtual OdRxClass* databaseClass() const
  {
    return OdDbDatabaseMech::desc();
  };
```

接下来，创建一个服务对象，对其进行初始化，然后创建一个数据库。

```
// create MyServices object
OdStaticRxObject<myservices> svcs;

//init ODA Platform
odInitialize(&svcs);

// load Mechanical modules
LoadTeighaMechanicalModules(false);

// next code creates an OdDbDatabaseMech object that allows you to use Mechanical SDK // in “editor” mode
OdDbDatabasePtr pDb = svcs.createDatabase(true, OdDb::kMetric);
pDb-> …</myservices>
```

## 今天就开始行动

**免费试用 ODA 软件 60 天。  
无风险，无需信用卡。**

[免费试用](https://www.opendesign.com/cn/free-trial)
