Konfigurowanie za pomocą programu Excel w języku vba

Witam

Utworzyłem plik Excel zakodowany w VBA, aby zmodyfikować zespół i jego części. Brakuje mi kilku rzeczy do dokończenia.

- Jakiego kodu użyć, aby ponownie aktywować lub dezaktywować funkcję części w określonej konfiguracji tej części (domyślnie lub sym)

- Daję możliwość zmiany nazw części w moim pliku Excel, ale nie mogę odtworzyć połączeń z moim nowym zespołem, przywraca to oryginalną nazwę. Jak nadać mu nowe linki ze zmodyfikowanymi częściami.

Załączam kod jako przykład.

Proszę, pomóż mi.

Pozdrowienia.


code_pour_assemblage_parametre.txt

Witam.

 

Na pewno dobrze się bawiłeś, tworząc swój mały program ^^. Krótki

Być może mówię, ale aby uratować swoje imię, mówisz mu, żeby poszedł i zajrzał do komórki "D3"... Ale nie mówisz mu, który plik/arkusz. W rezultacie, jeśli arkusz nie jest w tym czasie aktywny, nie wie, gdzie szukać.

 

Ja również przyklejam ci pomoc Sldw dla Saveas3

 

IModelDoc2
Dim NewName As String
Dim SaveAsVersion As Integer
Dim Options As Integer
Dim value As Integer (ton "chemin_enr" que tu as déclaré "as long")
 
value = instance.SaveAs3(NewName, SaveAsVersion, Options)

 Tak więc dla ciebie może to być

IModelDoc2
Dim NewName As String
Dim SaveAsVersion As Integer
Dim Options As Integer

Newname = Z:\MASZYNA\CONFO\" & Arkusz3.Komórki(3, "D"). Wartość2 i ".sldprt"

(W przypadku, gdy twoje pudełko to arkusz 3. Nie jestem przekonany, że powinieneś dodawać .sldprt na końcu. Do przetestowania)

chemin_enr = swModel.Saveas3(Nowa nazwa, 0, 2)

 

Dzięki rurze Coin37coin, ale moja funkcja Zapisz jako części działa dobrze, po prostu gdy otwieram zespół, nie zna on ścieżek nowych części, a zatem otwiera oryginalne pliki.

Może powinienem otworzyć zespół przed modyfikacją moich części i je zapisać?

 

Pozdrowienia.

Haaa, przepraszam, że źle zrozumiałem.

 

Jeśli zapisuje wiele części, rzeczywiście powinieneś poprosić makro o otwarcie zespołu przed zapisaniem części, a następnie zapisać zespół na końcu (nie zapomnij o tym kroku ;) )

 

W rzeczywistości będzie działać tak, jakbyś robił to sam: gdy twój zespół jest otwarty i zapiszesz część, zapisuje nową ścieżkę w całości. (słynne pole "Zapisz kopię", aby sprawdzić, kiedy nie chcesz tego robić)

W przeciwnym razie, w przypadku konfiguracji, powinieneś wypróbować kod "getconfigurationname", który poda listę konfiguracji Twojego pokoju. 

Następnie utwórz menu rozwijane, aby móc wybrać odpowiednią konfigurację. Następnie "openmodelconfiguration" powinien pozwolić na otwarcie z wybraną konfiguracją

A mała "getactiveconfiguration" na początku programu powinna pozwolić ci wybrać bieżącą i wrócić do niej po zamknięciu pokoju

 

Ale to tylko przypuszczenia, nigdy nie testowałem tych kodów

Znalazłem rozwiązanie:

-dla konfiguracji:

boolstatus = Part.Extension.SelectByID2("défaut@Embase confo ORIGIN. SLDPRT", "KONFIGURACJE", 0, 0, 0, Fałsz, 0, Nic, 0)
        boolstatus = Part.ShowConfiguration2("domyślnie")
        boolstatus = Part.Extension.SelectByID2("Congé2@Embase confo ORIGIN-1@confo ORIGIN", "BODYFEATURE", 0, 0, 0, False, 0, Nic, 0)
        Part.EditSuppress2  , aby włączyć funkcję w takiej konfiguracji części
        Part.ClearSelection2 Prawda

- do rejestracji:

Ustaw swModel = swApp.OpenDoc6("Z:\MACHINE\CONFO\0 confo ORIGINE 3D\confo ORIGINE.sldasm", 2, 0, "", longstatus, longwarnings)    
    Ustaw część = swApp.ActiveDoc
    
    Part.ClearSelection2 Prawda
    boolstatus = Part.Extension.SelectByID2("Wygodny nagłówek ORIGIN-1@confo ORIGIN", "KOMPONENT", 0, 0, 0, Fałsz, 0, Nic, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MASZYNA\CONFO\" & Zakres("d1"). Wartość2 & " embase.sldprt", "", Prawda, Prawda)
    Part.ClearSelection2 Prawda
    boolstatus = Part.Extension.SelectByID2("Skrzydło Confo ORIGIN-1@confo ORIGIN", "KOMPONENT", 0, 0, 0, Fałsz, 0, Nic, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MASZYNA\CONFO\" & Zakres("d1"). Wartość2 & " wing.sldprt", "", Prawda, Prawda)
    Part.ClearSelection2 Prawda
    boolstatus = Part.Extension.SelectByID2("Korytarz confo ORIGIN-1@confo ORIGIN", "KOMPONENT", 0, 0, 0, Fałsz, 0, Nic, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MASZYNA\CONFO\" & Zakres("d1"). Wartość2 & " corridor.sldprt", "", Prawda, Prawda)
    Part.ClearSelection2 Prawda
    boolstatus = Part.Extension.SelectByID2("Korytarz Confo sym ORIGIN-1@confo ORIGIN", "KOMPONENT", 0, 0, 0, Fałsz, 0, Nic, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MASZYNA\CONFO\" & Zakres("d1"). Wartość2 & " Korytarz SYM.sldprt", "", Prawda, Prawda)
    Part.ClearSelection2 Prawda
    boolstatus = Part.Extension.SelectByID2("Zbrojenie wygodne ORIGIN-1@confo ORIGIN", "KOMPONENT", 0, 0, 0, Fałsz, 0, Nic, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MASZYNA\CONFO\" & Zakres("d1"). Wartość2 & " zbrojenie embase.sldprt", "", Prawda, Prawda)
    Part.ClearSelection2 Prawda
    boolstatus = Part.Extension.SelectByID2("Funkcja mylenia zbrojenia sym ORIGIN-1@confo ORIGIN", "KOMPONENT", 0, 0, 0, Fałsz, 0, Nic, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MASZYNA\CONFO\" & Zakres("d1"). Wartość2 & " Zbrojenie nagłówka SYM.sldprt", "", Prawda, Prawda)
    Part.ClearSelection2 Prawda
    
    chemin_enr = swModel.Saveas3("Z:\MACHINE\CONFO\" & Range("d1"). Wartość2 i ".sldasm", 0, 2)
    swApp.CloseDoc (swModel.GetTitle)
    Ustaw swModel = swApp.OpenDoc6("Z:\MACHINE\CONFO\" & Range("d1"). Wartość2 & ".sldasm", 2, 0, "", longstatus, longwarnings)
    Ustaw część = swApp.ActiveDoc

 

Pozdrawiam

2 polubienia

Witam, Czy masz przykład na Excel (makro) + plik, aby aktywować lub dezaktywować funkcję części?

Witam

Radzę odtworzyć pytanie, ponieważ to ma więcej niż dwa lata.