一个装配体中存在很多的部件,在Solidworks的菜单【文件】/【查找参考引用】中可以看到装配体所引用的文件。Solidworks的装配体文件其实就是存储了这些引用文件的地址,在打开装配体时,根据这些记录的地址去逐个加载每个部件。根据记录的部件状态来选择性地加载部件
在Solidworks2020的API中,我们可以通过文档扩展对象的方法获得文档的参考引用文件ModelDocExtension::GetDependencies。
ModelDocExtension.GetDependencies(Traverseflag, Searchflag, AddReadOnlyInfo, ListBrokenRefs, AppendImportedPaths)
在一些低版本的Solidworks中,若无法找到上述方法,可以使用文档对象的相应方法获得参考文件ModelDoc2::GetDependencies2
···
ModelDoc2.GetDependencies2(Traverseflag, Searchflag, AddReadOnlyInfo)
···
该方法中的参数同ModelDocExtension::GetDependencies方法中的参数。
实例分析:获得如下装配体的参考引用
代码实例:
public static void GetDocReference(ModelDoc2 AssemDoc)
{
//旧方法
object[] ObjFiles1 = AssemDoc.GetDependencies2(true,false,true);
StringBuilder Sb = new StringBuilder("ModelDoc::GetDependencies2方法:\r\n");
foreach (object of in ObjFiles1)
{
Sb.Append(of.ToString().Trim() + "\r\n");
}
System.Windows.MessageBox.Show(Sb.ToString().Trim());
//新方法
ModelDocExtension AssemDocEx = AssemDoc.Extension;
object[] ObjFiles2 = AssemDocEx.GetDependencies(true, false, true, true, true);
Sb = new StringBuilder("ModelDocExtension::GetDependencies方法:\r\n");
foreach (object of in ObjFiles2)
{
Sb.Append(of.ToString().Trim() + "\r\n");
}
System.Windows.MessageBox.Show(Sb.ToString().Trim());
}
实例效果:
如下图为本文的示例程序,源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》 , 实例序号18