Ein Makro für SW, das ''Speichern unter. STEP" aus dem Plan entfernen?

Hallo liebe Community!

Gäbe es ein Makro, das es mir ermöglichen würde, jedes in einer Zeichnung enthaltene Teil (bis zu 30 Teile!) in einem Ordner zu speichern, der nach dem Namen der Registerkarte (Blattname) jedes Teils bestimmt und benannt ist? Der Aufgabenplaner funktioniert nicht so, wie wir es benötigen. Dies wäre eine sehr große Zeitersparnis für uns, da wir recht komplexe Faltplattenbaugruppen haben.

Wenn Sie Hinweise haben, lassen Sie es mich bitte wissen. Die VBA ist nicht mein Ding, aber in der Regel bin ich in der Lage, bestehende anzupassen!

Vielen Dank an alle für eure Ideen.

 

ERIC

Hallo

Die Idee, wenn ich zusammenfasse

Sie haben MEP mit mehreren Registerkarten geöffnet

Sie führen dann ein Makro aus, das auf jeder Registerkarte den standardmäßig definierten Teil speichert, indem Sie ihm den Namen der Registerkarte geben.

Herzliche Grüße

Hallo Mad,

Ja, im Grunde führe ich das Makro aus, das jedes Stück öffnet, speichert in. SCHRITT 214 unter dem Namen, der auf der Registerkarte Teil enthalten ist, in einem definierten Verzeichnis (immer gleich).

Meine Wenigkeit

 

ERIC

Hallo

Ich habe Ihnen eine private Nachricht geschickt.

Schönen Tag.

A+

Hallo Nicolas,

 

Ich habe das Makro erhalten, aber es passiert nichts. 

Auf meiner Seite funktioniert es nicht.

 

Vielen Dank

 

ERIC

Hallo

Hier ist ein Programm, das als Ausgangspunkt dienen können sollte, es ist die Sprache C#, die in VBA übersetzt werden soll:

private SldWorks SWapp;
private Zeichenkette msg = Zeichenfolge. Leer;
privates Zeichenfolgenverzeichnis = Application.StartupPath + "\\";

private void Button6Click(object sender, EventArgs e)
{
    if (SWapp == null)
    {
        SWapp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
    }
    
    ModelDoc2 Teil;
    Teil = ((ModelDoc2)(SWapp.ActiveDoc));
    
    string newFile = Teil.IGetDependencies2(wahr, wahr, wahr);
    
    msg = neueDatei + "\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;
    swConf-Konfiguration;
    Komponente2 swRootComp;

    swConfMgr = (ConfigurationManager)swDocTemp.ConfigurationManager;
    swConf = (Konfiguration)swConfMgr.ActiveConfiguration;
    swRootComp = (Komponente2)swConf.GetRootKomponente3(wahr);

    TraverseKomponente(swRootComp);
}

private void TraverseComponent(Component2 swComp)
{
    object[] vChildComp;
    Komponente2 swChildComp;
    lang i = 0;
    vChildComp = (Objekt[])swComp.GetChildren();
    für (i = 0; i < vChildComp.Length; i++)
    {
        swChildComp = (Komponente2)vChildComp[i];
        
        TraverseKomponente(swChildComp);
        
        if (msg. Enthält(swChildComp.GetPathName()) == falsch)
        {
            msg = msg + swChildComp.GetPathName() + "\n";
            
            ModelDoc2 swDocTemp = Standard(ModelDoc2);
            ModelDocExtension swModelDocExt = Standard(ModelDocExtension);
            int longstatus = 0;
            int longwarnings = 0;
            
            swDocTemp = ((ModelDoc2)(SWapp.OpenDoc6(swChildComp.GetPathName(), (int)swDocumentTypes_e.swDocPART, 0, "", ref longstatus, ref longwarnings)));

            string stepFileName = Verzeichnis + swChildComp.Name2 + ".step";
            swModelDocExt = (ModelDocExtension)swDocTemp.Erweiterung;
            swModelDocExt.SaveAs(stepFileName, 0, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref longstatus, ref longwarnings);
            
            SWapp.CloseDoc(swChildComp.GetPathName());
        }
    }
}

Herzliche Grüße

Hier ist ein Beispiel für ein Programm, das die Funktionen des vorherigen Beitrags verwendet.

Um es verwenden zu können, müssen Sie zuerst einen SLDDRW-Plan in SolidWorks öffnen.

Herzliche Grüße


save-step.zip

Hallo

 

Ich habe immer noch keine Wege, die ich erkunden kann, um mein Problem zu lösen.

Gäbe es ein Makro, das etwas von dem tun würde, was ich tun möchte, und das ich bei Bedarf ergänzen könnte?

Alles, was ich finden kann, ist ein Makro, das meine komplette Baugruppe in speichert. Schritt, während ich jeden Raum separat unter einem bestimmten Namen speichern muss, der in den benutzerdefinierten Eigenschaften oder auf der Registerkarte "MEP" des Raums zu finden ist. 

Die am besten geeignete Lösung wäre, dass das Makro die Teile jeder Zeichnung öffnet und sie in speichert. STEP unter dem Namen einer Eigenschaft des Teils. Die Teile sind alle in einer einzigen Wette enthalten, so dass das Makro jeden MEP passieren würde.

Wenn Sie Hinweise haben, sind diese willkommen.

 

Herzliche Grüße

ERIC

Hallo

Ich muss Makros kompilieren, die in der Lage sein müssen, den Bedarf zu decken. Wenn zwischendurch niemand eine Antwort gibt, denke ich, dass ich sie morgen früh geben kann.

Hallo

Angehängt ist normalerweise ein funktionales Makro (ich habe schnell an einer Zweiblattzeichnung getestet und keine Fehler gesehen).

Das Makro überprüft vor jeder Aktion, ob es sich tatsächlich um eine Zeichnung handelt. Außerdem habe ich ein Steuerelement für das Vorhandensein des Ordners hinzugefügt, in dem der Schritt gespeichert wird.

So wie es aussieht, exportiert das Makro nur Teiledateien, ich habe die Verarbeitung einer Baugruppe in der Zeichnung nicht geschafft.

Ich kann es bei Bedarf vervollständigen, benötige aber etwas mehr Zeit und wenn möglich eine repräsentative Datei Ihrer Zeichnungen, um das Verhalten zu testen (auch eine Zeichnung mit Teilen, Baugruppen aus Würfeln ohne Funktion reicht mir aus).

Da ich Microsoft-Skripte verwende, müssen Sie in VBA die Microsoft Scripting Runtime Reference aktivieren.

 


exportstep.txt
3 „Gefällt mir“

Hallo

 

Danke Cyril, ich werde einige Tests auf meiner Seite mit dem Stück Skript machen, das du mir gegeben hast.

Vielen Dank für Ihre Hilfe, ich weiß es wirklich zu schätzen!

 

ERIC