Solidworks文档相关对象简介

Solidworks中的零件,装配体,图纸都是一个文档,每一个文件都是一个ModelDoc2的实例对象。通过文档对象,我们可以直接或间接地自动操作文档中的各类元素。

1.各类文档对象关系

如下图所示,在Solidworks中,与文档有关的对象有ModelDoc2(通用文档对象),ModelDocExtension(通用文档扩展对象),PartDoc(零件文档对象),AssemblyDoc(装配体文档对象)以及DrawingDoc(图纸文档对象)

image.png

从上述文档对象的名称上可以理解,文档类的通用操作方法或属性,一般可以在ModelDoc2或ModelDocExtension对象的属性或方法中寻找。而PartDoc,AssemblyDoc以及DrawingDoc则更对应地提供了分别操作零件,装配体,图纸等特有功能的属性或方法。

2.自动化操作文档思路

通过上述的图解,我们可以得出以下思路:

a.自动操作零件:主线通过ModelDoc2,ModelDocExtension以及PartDoc实现自动化。

b.自动操作装配体:主线通过ModelDoc2,ModelDocExtension以及AssemblyDoc实现自动化。

c.自动操作装配体:主线通过ModelDoc2,ModelDocExtension以及DrawingDoc实现自动化。

3.各类文档对象的获取步骤

当我们获得了通用文档对象ModelDoc2后,可以通过如下步骤获得其他对应的文档对象:

a.判断文档的类型,使用ModelDoc2的GetType方法。

b.直接获得文档类型对应的零件,装配体,或图纸的文档对象。

c.【按需】通过ModelDoc2的Extension属性获得文档扩展对象ModelDocExtension

4.代码实例

在Solidworks中任意打开一个Solidworks文档后,运行如下C#代码。

public static void GetDocObject(SldWorks iswApp)
{
   StringBuilder sb = new StringBuilder("");
   ModelDoc2 SwDoc = iswApp.ActiveDoc;//获得当前激活的文档
   sb.Append("文档:"+ SwDoc.GetTitle()+"\r\n");
   int DocType = SwDoc.GetType();//获得激活的文档类型
   if (DocType == (int)swDocumentTypes_e.swDocPART)//若类型是零件
   {
        PartDoc SwPart = (PartDoc)SwDoc;
        sb.Append("文档类型:零部件\r\n");
   }
   else if (DocType == (int)swDocumentTypes_e.swDocASSEMBLY)//若类型是装配体
   {
         AssemblyDoc SwAssem = (AssemblyDoc)SwDoc;
         sb.Append("文档类型:装配体\r\n");
   }
   else if (DocType == (int)swDocumentTypes_e.swDocDRAWING)//若类型是工程图
   {
         DrawingDoc SwAssem = (DrawingDoc)SwDoc;
         sb.Append("文档类型:工程图\r\n");
   }
   ModelDocExtension SwDocEx = SwDoc.Extension;//获得扩展文档对象
   if (SwDocEx!=null)
   {
        sb.Append("扩展文档:已获得");
   }
   MessageBox.Show(sb.ToString().Trim());
}

5.运行结果

image.png

6.注意点

在获得PartDoc,AssemblyDoc,DrawingDoc之前,一定要先通过ModelDoc2的GetType方法判断文档类型,再将文档转化为对应的零件,装配体或工程图文档对象。

如下图为本文的示例程序,源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》

image.png

你可能感兴趣的:(Solidworks文档相关对象简介)