1.俺在设计过程中需要在装配体中删除大量相同的标准件,一个一个的去删除太麻烦,因此借用SW API进行简单的代码编写。
private void Button_Click(object sender, RoutedEventArgs e)
{
try
{
SldWorks swApp = new SldWorks();//连接SW
ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;
SelectionMgr swSelMgr = default(SelectionMgr);//选择
Component2 swRootComp = default(Component2);//件
swSelMgr = (SelectionMgr)swModel.SelectionManager;
swRootComp = (Component2)swSelMgr.GetSelectedObject6(1, -1);
if (swRootComp == null)
{
MessageBox.Show("请选择零件");
}
else
{
string s = swRootComp.GetPathName();//获取选择零件的路径,根据路径删除所有相同路径的零件
ConfigurationManager swConfMgr = default(ConfigurationManager);
Configuration swConf = default(Configuration);
swConfMgr = (ConfigurationManager)swModel.ConfigurationManager;
swConf = (Configuration)swConfMgr.ActiveConfiguration;
swRootComp = (Component2)swConf.GetRootComponent3(true);
object[] vChildComp = null;
vChildComp = (object[])swRootComp.GetChildren();
AssemblyDoc assemblyDoc = (AssemblyDoc)swModel;
for (int i = 0; i <= vChildComp.Length - 1; i++)//对装配体进行遍历找出所有相同路径的零件
{
swRootComp = (Component2)vChildComp[i];
string AssemblyTitle = swRootComp.GetPathName();
if (AssemblyTitle == s)//若路径相同则删除
{
swRootComp.Select4(true, null, false);
swModel.EditDelete();//删除
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("请选择零件!!!");
}
}
2.直接粘直接用。
3.点击按钮直接删除你选择的该装配体中,所有与你选择零件路径相同的零件。