CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

发行说明

2022-12-31 05:02| 发布者: admin| 查看: 821| 评论: 0|来自: AutoCAD

摘要: 这些项目与此版本的 ObjectARX 和 AutoCAD 托管类相关。

这些项目与此版本的 ObjectARX 和 AutoCAD 托管类相关。

接口兼容性

AutoCAD 2021是一个二进制中断版本。为 AutoCAD 2020 及更早版本开发的 ObjectARX 应用程序必须先重新编译,然后才能与基于AutoCAD 2021的产品一起使用。

开发环境

在编译 ObjectARX 项目以与AutoCAD 2021 一起使用时,必须使用 Microsoft® Visual Studio® 2019。需要使用 Microsoft .NET Framework 的应用程序应面向 4.8 版本。

连接

链接器是*24.lib

注册表项

注册表项已从“R23.1”更改为“R24.0”。

32 位应用程序支持

AutoCAD 2020 开始,不再提供 32 位支持。

图标透明度支持

在 AutoCAD 2017 及更高版本中,不再支持仍使用 RGB 192,192,192 作为背景色的不透明位图图像。建议将这些位图图像转换为透明的 PNG 图像。

对 API 的更改AcDbDatabase::saveAs()

从 AutoCAD 2016 开始,DWG 文件不能再使用密码保存。密码将被忽略,如果在参数中传递了任何密码信息,则会返回错误。pSecParams

支持 Microsoft® Visual Basic® for Application (VBA) 7.1

从AutoCAD 2014开始,VBA 6.5被VBA 7.1取代,VBA 7.1专为Windows 32和64位操作系统设计。由于此更改,AutoCAD ActiveX 库已更新,以删除最初定义为支持 Windows 64 位的方法和特性。依赖于使用 32 位库和控件的 VBA 项目需要更新才能在 AutoCAD 64 位上正常运行。

对本机C++ ARX 中的 和 类型的更改以及可能的 DWG 文件兼容性问题Adesk::BooleanInt32UInt32

这适用于使用本机C++ ARX 和 Adesk 命名空间的开发人员。到目前为止,在Windows中,type已被定义为(typedef-ed)为int。这是出于历史原因,因为早期的编译器不支持本机布尔类型。和类型分别被定义为长和无符号长。然而,在Mac平台上,一直被定义为bool,并且一直被定义为and。Adesk::BooleanAdesk::Int32UInt32Adesk::BooleanAdesk::Int32UInt32intunsigned int

但是,从此版本开始,Windows 类型与 Mac 类型匹配,因此始终定义为 and/始终是整数/无符号整数。请参阅adesk.h中的定义。这提供了跨平台的一致性和更好的类型检查。BooleanboolInt32UInt32

仅使用 Adesk 类型的代码不应受到影响。但是,混合使用 Adesk 类型和其他类型的代码(如本机或 Win32)可能会遇到一些编译器警告或错误。例如,你可能有一个接受 () 或 () 参数的函数,并且你正在向它传递一个变量。这现在将导致编译器错误,因为变量的类型以前是 int,现在是布尔值。解决方法是更改变量类型或函数的 arg 类型,具体取决于哪个在代码中更有意义。intboolBOOLint &int *Adesk::Boolean

一个更微妙的问题涉及 theandmethods(参见dbfiler.h)。这些是“帮助程序”重载,它将调用转发到较低级别的方法,例如等。同样,如果您的代码仅使用 Adesk 类型,那么事情应该像以前一样工作。但是,如果您将变量声明为 typeor,并且您正在调用它们,那么这可能会导致文件兼容性错误。以前,此类调用已解析为“和”,但现在它们将解析为“和”。这将导致您的调用读取和写入的二进制数据格式有所不同。请注意,在这种情况下可能没有任何编译器警告或错误消息。AcDbDwgFiler::writeItem()readItem()writeInt32readBoolintBOOLwriteItemreadItemwriteBooleanreadBooleanwriteInt32readInt32readItemwriteItem

检测此类问题的方法是验证重新生成的代码是否仍正确读取由以前版本的代码创建的绘图文件,反之,验证以前版本的代码是否正确读取由新代码创建的绘图文件。如果出现问题,则在打开图形时,您可能会收到来自AutoCAD的警告,指出对象读取不正确。移植到新的 SDK 版本时,应始终执行此测试,但现在尤其重要。

针对这些问题的建议解决方法是更改变量 fromorto 类型或类型。直接调用较低级别的等方法而不是重载也是一个好主意,只是为了更清楚地了解您的代码正在使用什么类型。intBOOLboolAdesk::BooleanreadInt32writeBooleanreadItemwriteItem


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 15:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部