跳到主要内容

SOLIDWORKS API方法及接口中带有和不带有I的区别

SOLIDWORKS API中的方法、属性和对象(接口)有两个版本可供选择:

  • 带有I开头(例如ISldWorks、IModelDoc2、IAnnotation、ISldWorks::IActiveDoc)
  • 不带I开头(例如SldWorks、ModelDoc2、Annotation、SldWorks::ActiveDoc)

这两个版本对应的是同一个对象或方法。主要区别如下:

  • I版本的方法不会公开事件

下面是以SldWorks声明的变量的可用成员的快照。这些成员包含事件。

以SldWorks声明的变量的可用事件列表{ width=250 }

下面是以ISldWorks声明的变量的可用成员的快照。这些成员不包含事件。

以ISldWorks声明的变量的无事件列表{ width=250 }

  • I版本的方法通常返回类型安全的接口版本,而不是对象或IDispatch。这意味着在编译时强制执行类型安全的语言(如C#)中不需要显式转换:
ISldWorks app;
...
IModelDoc2 model = app.IActiveDoc; //正确
IModelDoc2 model = app.ActiveDoc; //编译错误
IModelDoc2 model = app.ActiveDoc as IModelDoc2; //正确