http://blog.csdn.net/u011511587/article/details/13745055
......
首先,你需要确保你引用到项目中的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命名空间。
然后你可以使用条件属性来声明一个特定的方法(在这里是一个命令)为一个特定版本的AutoCAD(如果你愿意,你也可以通过条件预处理器的DEBUG符号指定一个Debug-only命令):
- namespace BlockImport
- {
- public class BlockImportClass
- {
- [Conditional("AC2007"),CommandMethod("IB")]
- public void ImportBlock()
- {
- ...
|