Een macro voor SW die ''op te slaan als. STEP'' uit het plan?

Hallo lieve gemeenschap!

Zou er een macro zijn waarmee ik elk onderdeel in een tekening (tot 30 delen!) kan opslaan in een map die is bepaald en genoemd volgens de naam van het tabblad (bladnaam) van elk onderdeel? De taakplanner werkt niet zoals we nodig hebben. Dit zou voor ons een zeer grote tijdsbesparing zijn, aangezien we vrij complexe vouwplaatassemblages hebben.

Als je aanwijzingen hebt, laat het me dan weten. De VBA is niet mijn ding, maar meestal ben ik in staat om bestaande aan te passen!

Dank u allen voor uw ideeën.

 

Eric

Hallo

Het idee als ik het samenvat

Je hebt MEP open staan met verschillende tabbladen 

Vervolgens voert u een macro uit die op elk tabblad het onderdeel opslaat dat standaard is gedefinieerd door het de naam van het tabblad te noemen?

Vriendelijke groeten

Hallo gek,

Ja in principe ik voer de macro die elk stuk opent, bespaart in . STAP 214 onder de naam die staat in het artikeltabblad in een gedefinieerde map (altijd dezelfde).

Met vriendelijke groet,

 

Eric

Hallo

Ik heb je een privébericht gestuurd.

Fijne dag.

A+

Hallo Nicolas,

 

Ik heb de macro ontvangen, maar er gebeurt niets. 

Het werkt niet aan mijn kant.

 

Bedankt

 

Eric

Hallo

Hier is een stuk programma dat als uitgangspunt zou moeten kunnen dienen, het is C#-taal die dus in VBA moet worden vertaald:

privé SldWorks SWapp;
privé-tekenreeks msg = tekenreeks. Leeg;
private string directory = Application.StartupPath + "\\";

private void Button6Click(object afzender, EventArgs e)
{
    if (SWapp == null)
    {
        SWapp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
    }
    
    ModelDoc2 deel;
    Deel = ((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);
    
    Berichtbox.Toon (msg);
}

openbare leegte TraverseAssembly(ModelDoc2 swDocTemp)
{
    Cursor.Current = System.Windows.Forms.Cursors.AppStarting;

    ConfigurationManager swConfMgr;
    swConf-configuratie;
    Component2 swRootComp;

    swConfMgr = (ConfiguratieManager)swDocTemp.ConfigurationManager;
    swConf = (Configuratie)swConfMgr.ActiveConfiguration;
    swRootComp = (Component2)swConf.GetRootComponent3(waar);

    TraverseComponent(swRootComp);
}

private void TraverseComponent(Component2 swComp)
{
    object[] vChildComp;
    Component2 swChildComp;
    Lange i = 0;
    vChildComp = (object[])swComp.GetChildren();
    voor (i = 0; i < vChildComp.Length; i++)
    {
        swChildComp = (Component2)vChildComp[i];
        
        TraverseComponent(swChildComp);
        
        Als (msg. Bevat(swChildComp.GetPathName()) == onwaar)
        {
            msg = msg + swChildComp.GetPathName() + "\n";
            
            ModelDoc2 swDocTemp = standaard(ModelDoc2);
            ModelDocExtension swModelDocExt = standaard(ModelDocExtension);
            int longstatus = 0;
            int longwarnings = 0;
            
            swDocTemp = ((ModelDoc2)(SWapp.OpenDoc6(swChildComp.GetPathName(), (int)swDocumentTypes_e.swDocPART, 0, "", ref longstatus, ref longwarnings)));

            tekenreeks stepFileName = map + 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());
        }
    }
}

Vriendelijke groeten

Hier is een voorbeeld van een programma dat de functies van het vorige bericht gebruikt.

Om het te gebruiken, moet u eerst een SLDDRW-plan openen in SolidWorks.

Vriendelijke groeten


save-step.zip

Hallo

 

Ik heb nog steeds geen mogelijkheden om mijn probleem op te lossen.

Zou er een macro zijn die een deel van wat ik wil doen dat ik zou kunnen aanvullen als dat nodig is?

Het enige wat ik kan vinden is een macro die mijn volledige montage opslaat in . Stap terwijl ik elke kamer afzonderlijk moet opslaan onder een specifieke naam die te vinden is in de aangepaste eigenschappen of in het MEP-tabblad van de kamer. 

De meest geschikte oplossing zou zijn dat de macro de delen van elke tekening opent en deze opslaat in . STAP onder de naam van een eigenschap van het onderdeel. De stukken zijn allemaal opgenomen in een enkele weddenschap, dus de macro zou elke Europarlementariër passeren.

Als je leads hebt, zijn ze welkom.

 

Vriendelijke groeten

Eric

Hallo

Ik heb stukjes macro te compileren die aan de behoefte moeten kunnen voldoen. Als niemand tussendoor een antwoord geeft, denk ik dat ik dat morgenochtend wel kan geven.

Hallo

Bijgevoegd is normaal gesproken een functionele macro (ik heb snel getest op een tekening van twee vellen en zag geen bugs).

De macro verifieert voor elke actie dat het inderdaad een tekening is. Ik heb ook een controle toegevoegd voor het bestaan van de map waarin de stap wordt opgeslagen.

Zoals het er nu uitziet, exporteert de macro alleen deelbestanden, ik heb de verwerking van een merk in de tekening niet beheerd.

Ik kan het indien nodig voltooien, maar heb wat meer tijd nodig en indien mogelijk een representatief bestand van je tekeningen om het gedrag te testen (zelfs een tekening met onderdelen, assemblages bestaande uit kubussen zonder enige functie is genoeg voor mij).

Omdat ik Microsoft-scripts gebruik, moet u in vba de Microsoft Scripting Runtime-referentie activeren.

 


exportstep.txt
3 likes

Hallo

 

Bedankt Cyril, ik ga wat tests aan mijn kant doen met het stuk scrip dat je me hebt gegeven.

Heel erg bedankt voor je hulp, waardeer het echt!

 

Eric