在Solidworks中裝配體能夠?qū)崿F(xiàn)對各類零件的總裝瞳别,在裝配提中可以去操作其中的各種部件轩触,插入部件,進行配合等各類工作匠襟,裝配體文件也是Solidworks通用文件的一種钝侠。故裝配體文件對象AssemblyDoc可通過如下方式獲取:
ModelDoc2 Doc;
if (Doc.GetType() == (int)swDocumentTypes_e.swDocASSEMBLY)
{
AssemblyDoc Assem = (AssemblyDoc)Doc;
}
如下圖所示酸舍,本文我們基于如下模型帅韧,初步認(rèn)識下裝配體文檔對象AssemblyDoc的2個基本操縱。
實例1:獲得裝配體的部件
代碼實例:
public static void GetChildrenComp(ModelDoc2 Doc)
{
if (Doc.GetType() == (int)swDocumentTypes_e.swDocASSEMBLY)
{
AssemblyDoc Assem = (AssemblyDoc)Doc;
#region 頂?shù)讓恿悴考? StringBuilder topsb = new StringBuilder("頂層部件:\r\n");
object[] Comps = Assem.GetComponents(true);
foreach (object cp in Comps)
{
topsb.Append(((Component2)cp).Name2+"\r\n");
}
#endregion
#region 所有零部件
StringBuilder allsb = new StringBuilder("所有部件:\r\n");
Comps = Assem.GetComponents(false);
foreach (object cp in Comps)
{
allsb.Append(((Component2)cp).Name2 + "\r\n");
}
#endregion
System.Windows.MessageBox.Show(topsb+"\r\n" + allsb);
}
}
實例運行效果:
實例解析:
我們可以通過AssemblyDoc.GetComponents(ToplevelOnly),獲取對應(yīng)裝配體下的所有部件啃勉。ToplevelOnly為true代表只獲得與當(dāng)前裝配體直接部件忽舟,為false時,則獲取當(dāng)前裝配體的的所有部件淮阐,包括子裝配體的部件叮阅。
注意:
使用該方法獲得的部件順序是隨機的泣特,不會嚴(yán)格按照模型特征樹的從上到下的順序輸出部件。
實例2:裝配體中添加部件
如下圖群扶,我們將在裝配體中添加名字為part3的部件(該部件有2個配置實心镀裤,挖孔),使用程序?qū)ρb配體添加部件的步驟分為:
1.打開需要插入的部件缴饭。
2.將不見插入裝配體暑劝。
代碼實例:
public static void InsertPart(SldWorks swApp ,ModelDoc2 Doc,string newpartpath)
{
swApp.OpenDoc(newpartpath,1);//打開部件
((AssemblyDoc)Doc).AddComponent5(newpartpath,0,"",false,"",0,0.3,0);
((AssemblyDoc)Doc).AddComponent5(newpartpath, 0, "", true, "實心", 0.5, 0.3, 0);
((AssemblyDoc)Doc).AddComponent5(newpartpath, 0, "", true, "挖孔", 1, 0.3, 0);
swApp.CloseDoc(newpartpath);//關(guān)閉部件
}
運行效果:
實例解析:
通過AssemblyDoc.AddComponent5(CompName, ConfigOption, NewConfigName, UseConfigForPartReferences, ExistingConfigName, X, Y, Z)的方法担猛,將需要的部件插入到裝配體中。
參數(shù)CompName為需要插入部件的文件路徑丢氢。
參數(shù)ConfigOption為插入的部件及子裝配體的配置的設(shè)定
參數(shù)UseConfigForPartReferences是否使用插入部件的某個配置
參數(shù)ExistingConfigName傅联,若使用具體部件的某個配置,則該值為對應(yīng)配置名稱疚察。
參數(shù)X,Y貌嫡,Z為部件插入到裝配體時部件原點在裝配體中的坐標(biāo)。
如下圖為本文的示例程序别惦,源碼可上我的Github下載夫椭。操作步驟可見文章《公眾號源碼Github分享庫》 , 實例序號14