EaBIM

标题: [资料] 支持多版本AutoCAD – 使用C#的条件编译 [打印本页]

作者: 萧闫子    时间: 2014-1-8 14:10
标题: [资料] 支持多版本AutoCAD – 使用C#的条件编译
首先你需要确定工程中引用的是acmgd.dll 及acdbmgd.dll的正确版本(你可以通过它们所在的路径来判断他们所对应的AutoCAD版本)。
然后,你需要稍微修改一下你的代码,例如WblockCloneObjects() 的函数定义在2006与2007中是不同的。下面的代码片断告诉你如何使用预处理标识在C#中实现条件编译。你需要在工程设置里把 AC2006 或AC2007设置成 "条件编译符号":
#if AC2006
        mapping = sourceDb.WblockCloneObjects(blockIds,
                                              destDb.BlockTableId,
                                              DuplicateRecordCloning.Replace,
                                              false);
#elif AC2007
        sourceDb.WblockCloneObjects(blockIds,
                                    destDb.BlockTableId,
                                    mapping,

DuplicateRecordCloning.Replace,

false);
#endif
推荐使用#else 而不是#elif ,因为这样可以使你的代码在将来的时候更好维护: 它会自动支持新的版本而不需要特意添加新的代码来进行相关的检查。
另一方面,你实际上可以定义函数只能被编译为一个特定的版本首先,你需要引用System.Diagnostics 命名空间:
using System.Diagnostics;
然后你只需要使用Conditional 属性标识来声明一个只用于其一特定版本AutoCAD的方法:
namespace BlockImport
{

public
class
BlockImportClass
  {
    [Conditional("AC2007"),CommandMethod("IB")]

public
void ImportBlock()
    {






欢迎光临 EaBIM (https://eabim.net/) Powered by Discuz! X3.2