Bonjour,
Voici un bout de programme qui devrait pouvoir servir de point de départ, c'est du langage C# donc à traduire en VBA :
private SldWorks SWapp;
private string msg = string.Empty;
private string repertoire = Application.StartupPath + "\\";
private void Button6Click(object sender, EventArgs e)
{
if (SWapp == null)
{
SWapp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
}
ModelDoc2 Part;
Part = ((ModelDoc2)(SWapp.ActiveDoc));
string newFile = Part.IGetDependencies2(true, true,true);
msg = newFile + "\n";
ModelDoc2 swDocTemp = null;
int longstatus = 0;
int longwarnings = 0;
swDocTemp = ((ModelDoc2)(SWapp.OpenDoc6(newFile, (int)swDocumentTypes_e.swDocASSEMBLY, 0, "", ref longstatus, ref longwarnings)));
TraverseAssembly(swDocTemp);
MessageBox.Show(msg);
}
public void TraverseAssembly(ModelDoc2 swDocTemp)
{
Cursor.Current = System.Windows.Forms.Cursors.AppStarting;
ConfigurationManager swConfMgr;
Configuration swConf;
Component2 swRootComp;
swConfMgr = (ConfigurationManager)swDocTemp.ConfigurationManager;
swConf = (Configuration)swConfMgr.ActiveConfiguration;
swRootComp = (Component2)swConf.GetRootComponent3(true);
TraverseComponent(swRootComp);
}
private void TraverseComponent(Component2 swComp)
{
object[] vChildComp;
Component2 swChildComp;
long i = 0;
vChildComp = (object[])swComp.GetChildren();
for (i = 0; i < vChildComp.Length; i++)
{
swChildComp = (Component2)vChildComp[i];
TraverseComponent(swChildComp);
if (msg.Contains(swChildComp.GetPathName()) == false)
{
msg = msg + swChildComp.GetPathName() + "\n";
ModelDoc2 swDocTemp = default(ModelDoc2);
ModelDocExtension swModelDocExt = default(ModelDocExtension);
int longstatus = 0;
int longwarnings = 0;
swDocTemp = ((ModelDoc2)(SWapp.OpenDoc6(swChildComp.GetPathName(), (int)swDocumentTypes_e.swDocPART, 0, "", ref longstatus, ref longwarnings)));
string stepFileName = repertoire + swChildComp.Name2 + ".step";
swModelDocExt = (ModelDocExtension)swDocTemp.Extension;
swModelDocExt.SaveAs(stepFileName, 0, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref longstatus, ref longwarnings);
SWapp.CloseDoc(swChildComp.GetPathName());
}
}
}
Cordialement,