Makro dla oprogramowania, które ''zapisuje jako. KROK'' z planu?

Witaj Droga społeczności!

Czy istniałoby makro, które pozwoliłoby mi zapisać każdą część zawartą na rysunku (do 30 części!) w folderze określonym i nazwanym zgodnie z nazwą zakładki (nazwa arkusza) każdej części? Harmonogram zadań nie działa tak, jak powinniśmy. Byłaby to dla nas bardzo duża oszczędność czasu, ponieważ mamy dość złożone zespoły składanych płyt.

Jeśli masz jakieś tropy, daj mi znać. VBA nie jest moją filiżanką, ale zazwyczaj jestem w stanie dostosować istniejące!

Dziękuję wszystkim za pomysły.

 

Eric

Witam

Pomysł, jeśli podsumuję

Masz otwarty MEP z kilkoma zakładkami 

Następnie uruchamiasz makro, które zapisuje na każdej karcie część zdefiniowaną domyślnie, nazywając ją nazwą karty?

Pozdrowienia

Witaj Szalony,

Tak, w zasadzie uruchamiam makro, które otwiera każdy element, zapisuje w . KROK 214 pod nazwą zawartą w zakładce części w zdefiniowanym katalogu (zawsze tak samo).

Z wyrazami szacunku,

 

Eric

Witam

Wysłałem Ci wiadomość prywatną.

Miłego dnia.

Klasa A+

Witaj Nicolas,

 

Otrzymałem makro, ale nic się nie dzieje. 

To nie działa z mojej strony.

 

Dziękuję

 

Eric

Witam

Oto fragment programu, który powinien być w stanie służyć jako punkt wyjścia, jest to język C#, więc należy go przetłumaczyć na VBA:

prywatna aplikacja SldWorks SWapp;
private string msg = ciąg. Pusty;
prywatny ciąg katalogowy = Application.StartupPath + "\\";

private void Button6Click(nadawca obiektu, EventArgs e)
{
    if (SWapp == null)
    {
        SWapp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
    }
    
    Część ModelDoc2;
    Część = ((ModelDoc2)(SWapp.ActiveDoc));
    
    ciąg newFile = Part.IGetDependencies2(prawda, prawda,prawda);
    
    msg = nowyPlik + "\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;
    konfiguracja swConf;
    Komponent2 swRootComp;

    swConfMgr = (Menedżerkonfiguracji )swDocTemp.ConfigurationManager;
    swConf = (Konfiguracja)swConfMgr.ActiveConfiguration;
    swRootComp = (Komponent2)swConf.GetRootComponent3(prawda);

    TraverseComponent(swRootComp);
}

private void TraverseComponent(Component2 swComp)
{
    obiekt[] vChildComp;
    Komponent2 swChildComp;
    długa i = 0;
    vChildComp = (obiekt[])swComp.GetChildren();
    for (i = 0; i < vChildComp.Length; i++)
    {
        swChildComp = (Komponent2)vChildComp[i];
        
        TraverseComponent(swChildComp);
        
        Jeśli (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 nazwa_pliku krokowego = katalog + swChildComp.Name2 + ".krok";
            swModelDocExt = (ModelDocExtension)swDocTemp.Extension;
            swModelDocExt.SaveAs(nazwa_pliku_kroku, 0, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref longstatus, ref longwarnings);
            
            SWapp.CloseDoc(swChildComp.GetPathName());
        }
    }
}

Pozdrowienia

Oto przykład programu wykorzystującego funkcje z poprzedniego wpisu.

Aby z niego skorzystać, należy najpierw otworzyć plan SLDDRW w SolidWorks.

Pozdrowienia


save-step.zip

Witam

 

Nadal nie mam żadnych dróg do zbadania, aby rozwiązać mój problem.

Czy istniałoby makro, które zrobiłoby część tego, czego szukam, a które mógłbym uzupełnić w razie potrzeby?

Wszystko, co mogę znaleźć, to makro, które zapisuje mój cały zestaw w programie . Krok podczas gdy muszę zapisać każdy pokój osobno pod określoną nazwą, którą można znaleźć we właściwościach niestandardowych lub w zakładce MEP pokoju. 

Najodpowiedniejszym rozwiązaniem byłoby, aby makro otwierało części każdego rysunku, zapisując je w programie . STEP pod nazwą właściwości części. Wszystkie elementy są zawarte w jednym zakładzie, więc makro przejdzie przez każdego posła.

Jeśli masz jakieś leady, są mile widziane.

 

Pozdrowienia

Eric

Witam

Mam do skompilowania kawałki makr, które muszą być w stanie zaspokoić potrzebę. Jeśli w międzyczasie nikt nie udzieli odpowiedzi, myślę, że mogę jej udzielić jutro rano.

Witam

W załączeniu jest zwykle funkcjonalne makro (szybko przetestowałem na rysunku dwuarkuszowym i nie zauważyłem żadnych błędów).

Makro sprawdza przed wykonaniem jakiejkolwiek czynności, czy rzeczywiście jest to rysunek. Dodałem również kontrolkę istnienia folderu, w którym krok zostanie zapisany.

W obecnej formie makro eksportuje tylko pliki części, nie zarządzałem przetwarzaniem zespołu na rysunku.

Mogę go ukończyć w razie potrzeby, ale będzie to wymagało trochę więcej czasu i, jeśli to możliwe, reprezentatywnego pliku Twoich rysunków, aby przetestować zachowanie (wystarczy mi nawet rysunek z częściami, zespołami złożonymi z sześcianów bez żadnej funkcji).

Ponieważ używam skryptów firmy Microsoft, będziesz musiał aktywować w języku vba odniesienie do środowiska uruchomieniowego skryptów firmy Microsoft.

 


exportstep.txt
3 polubienia

Witam

 

Dziękuję Cyril, zamierzam przeprowadzić kilka testów z mojej strony z kawałkiem skryptu, który mi dałeś.

Bardzo dziękuję za pomoc, naprawdę to doceniam!

 

Eric