ObjectArx-自定义对象-对象支持

1自定义对象-对象支持

对象支持器(.DBX 文件)允许绘图中的自定义对象具有比代理图形更智能的行为,即使在原始应用程序不存在的情况下也是如此。通过为自定义对象提供对象支持器,您确保您的客户可以协作处理图纸,而不必担心其他人是否能够操作这些图纸中的自定义对象。你的对象在现实中会表现得很聪明,在主流的应用程序。AutoCAD,DWG TrueView,以及Autodesk 3DSMax。

1.1ObjectDBX和对象支持器概述

ObjectDBX是ObjectArx的子集为自定义对象和实体所需。一个对象支持器定义自定义DWG或DXF数据库对象和实体使用使用ObjectArx SDK的ObjectDBX部分。
对象支持器使用.dbx扩展名,可以加载到任何RealDWG的主流应用程序,像AutoCAD,DWG TrueView,Autodesk VIZ, Autodesk Inventor,或者第三方的应用程序使用RealDWG SDK。对象支持器构建为使用包含自定义对象实例的dwg文件分发给任何人。Objectarx开发人员被鼓励将对象支持器用于自定义对象。RealDWG SDK,以前被称为ObjectDBX SDK,它是与objectarx单独授权的,允许开发人员编写可以在没有AutoCAD的情况下读写DWG和DXF文件的主机应用程序。RealDWG SDK

1.1.1 ObjectDBX 库

对象支持器包含允许自定义对象(几何、组件、非图形对象等)作为扩展或自定义对象在AutoCAD或其他主机应用程序中。实现这些对象的文件被赋予扩展名.DBX,它代表数据库扩展。dbx文件基本上是一个对象arx应用程序,它是用不带任何依赖AutoCAD特殊的API的方式编写的。
Object支持器(.DBX 文件)可能需要连接到以下库文件
- acdb17.lib
- AcDbMPolygon17.lib
- acge17.lib
- acgiapi.lib
- achapi17.lib
- acISMobj17.lib
- axdb17.lib
- rxapi.lib
- rxheap.lib

1.1.2 用户界面和数据库访问

ObjectDBX允许您为应用程序的数据库(Db)和用户界面(UI)部分编写单独的二进制文件。Arx文件包含UI组件的文件,并包含AutoCAD特有的代码,用于发出提示、显示对话框、修改菜单等.。DB组件文件(对象支持器)具有扩展名.DBX,包含非AutoCAD特定的代码,通过创建自定义对象、显示对象、转换对象等来实现自定义对象。如果您的应用程序分为用户界面和数据库部分,在没有提供用户界面的objectArx应用程序的情况下,您的自定义对象仍然将被正确地处理。
注意:如果自定义对象具有特定于AutoCAD的依赖关系(比如在AutoCAD系统变量上不存储在数据库中),你不能把代码在dbx文件对象。DB 代码同时需要在ARX文件中。在这种情况下,你可以把数据库和用户界面代码两ARX文件分开,或者你可以把用户界面和数据库的代码放在同一个ARX文件。
例如,假设您实现了一个名为“sink”的自定义对象,而要显示和修改sink的代码位于sink.dbx中,而提示用户输入sink创建值的代码是sink.arx。您的用户可以从AutoCAD加载sink.arx,并使用它(与自动加载的sink.dbx一起)在绘图中创建自定义接收器。稍后,任何其他主机应用程序(包括AutoCAD)都可以加载该绘图,如果用户拥有sink.dbx文件的副本,sink对象将正确显示,而不是作为代理。
警告:使用微软__declspec(dllimport) 连接指令要在objectArx和objectDBX模块之间共享一个头文件,可能会导致不必要的结果。

1.1.3 RealDWG主机应用程序

“主机应用程序”是一个在其代码中包含main()、Winmain()或 dllmain()函数的应用程序,它提供了objectdbx或objectarx模块需要的主机服务。
两种宿主应用程序可以利用ObjectDBX提供的接口。
第一种类型的主机应用AutoCAD和AutoCAD Autodesk产品,带或不带ObjectARX应用程序。
第二类是非AutoCAD主机应用程序。非AutoCAD主机应用程序无法加载ObjectARX应用程序,只能利用Objectdbx提供的特定接口。

1.2 开发对象支持器

一个对象支持器是一个ObjectDBX模块为自定义对象在代理状态时提供支持。对象支持器可以是应用程序用于自定义对象的相同的Objectdbx模块,也可以是不同的模块,例如,它具有有限的功能,例如图形显示、从绘图中读取以及保存到绘图功能。
通过向AutoCAD和其他主机应用程序提供实际对象,可以允许自定义对象参与标准操作。例如被选中或者被拖动,并且确保他们的图形保真度得到维护。通过命令、菜单选项和其他用户界面提供的专门功能将只适用于购买完整应用程序的用户。
对象支持器通常打包在自解压缩的档案中,并张贴在web上,以便可以通过活动增强器功能下载。这一技术使对象支持器在AutoCAD遇到自定义对象时在绘图文件中可用。通过微软MSI 安装程序对对象支持器发布。
1.命名你的对象支持器 AppNameOBJ.dbx
2.命名的MSI文件 AppNameOBJ.MSI
3.命名你的自解压文件 AppNameOBJ.exe

1.2.1 注册用于需求加载的对象支持器

对象支持器使用ObjectARX demand loading注册格式。
对象增强器的注册格式与Objectarx应用程序的注册格式有两种不同:
1.没有命令或组子项
2.注册在 SOFTWARE\Autodesk\ObjectDBX 的根节点
例子:为对象启用器编写需求加载键

void updateRegistry()
{
    // 为请求加载填充AcadAppInfo结构体
     AcadAppInfo appInfo;
     appInfo.setAppName("AsdkPolyObj2.0");// App Name
     // 获取dbx文件路径
     HMODULE hModule = GetModuleHandle("asdkpolyobj.dbx");
     char modulePath[512];
     DWORD pathLength = GetModuleFileName(hModule, modulePath, 512);
     if(pathLength)
         appInfo.setModuleName(modulePath);// ...and pass it in
     appInfo.setAppDesc("AsdkPolyObj version 2.0");
     appInfo.setLoadReason(AcadApp::LoadReasons(
        AcadApp::kOnProxyDetection |
        AcadApp::kOnLoadRequest));
     // 将appInfo写入注册表
     appInfo.writeToRes
}

最好使用安装程序进行应用程序注册。安装时间注册确保正确的申请注册。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值