VBA Excel do zduplikowania części i jej planu + zmiana nazwy

Witam

Chcę otworzyć pokój i jego plan z pliku Excel, zapisać ten pokój pod nową nazwą "zapisz jako" i aby plan był aktualny pod względem referencyjnym przed zapisaniem go po kolei.

Mogę otwierać pliki jednocześnie i zapisywać je pod nową nazwą. Ale ujęcie zawsze wskazuje na drugi pokój.

Jednak w manualu to działa. Wygląda na to, że rekord nie zapisuje Undera, ale raczej zapisuje kopię.

Otwieram tą metodą:

Set swModel = swApp.OpenDoc6("link do mojego planu", 3, 0, "", myError, myWarning)  

A ja nagrywam z tym:

 swModel.SaveAs2 "nowy link", 0, Prawda, Fałsz

 

PS: A tak przy okazji, jeśli ktoś ma trik, aby jednocześnie zmienić właściwość Oznaczenie części, bardzo by mi to pomogło.

Oto przykład, którego używam do utworzenia kopii części/zespołu i połączonej płaszczyzny  z otwartej części lub złożenia, aby dodać do niego wskazówkę.

W tym celu pobieram właściwość index otwartej części/zespołu i modyfikuję inną, właściwość index nowej części/zespołu

Przy niewielkiej modyfikacji powinieneś być w stanie zmodyfikować to wszystko, aby zrobić to, czego potrzebujesz.

I powinieneś dobrze zrozumieć, że to moje 1 makro dość ważne, więc umieściłem wiele komentarzy!

Z drugiej strony jest uruchamiany z solidworks. Od Ciebie zależy, czy go dostosujesz!

 


addingindex.swp
1 polubienie

Witam

To wszystko znajduje się w makrze sbadenis (czyli +1 dla niego), zwłaszcza w funkcji ReplaceReferencedDocument. Na przykład:

Option Explicit

Const sReferencingDoc As String = "C:\Users\XXX\Desktop\Temp\Pièce5.SLDDRW"
Const sOldDoc As String = "C:\Users\XXX\Desktop\Temp\Pièce5.sldprt"
Const sNewDoc As String = "C:\Users\XXX\Desktop\Temp\Pièce1.sldprt"

Sub main()

    Dim swApp As SldWorks.SldWorks
    Dim bRet As Boolean

    Set swApp = CreateObject("SldWorks.Application")

    bRet = swApp.ReplaceReferencedDocument(sReferencingDoc, sOldDoc, sNewDoc)
    
End Sub

Do użycia bez otwierania któregokolwiek z dokumentów w Solidworks!!

W swojej linii "swModel.SaveAs2 "nowy link", 0, Prawda, Fałsz", "Prawda" oznacza "SaveAsCopy" = tak ... ale ten wiersz nie jest już potrzebny, jeśli używasz funkcji ReplaceReferenceDocument...

Pozdrowienia

1 polubienie

Dziękuję za odpowiedzi, w rzeczywistości zastąpienie Prawdy Fałszem wystarczyło, aby zaspokoić moją potrzebę.

 

FYI Koduję z Excela i mam wrażenie, że niektóre rzeczy nie działają tak samo. Podobnie jak linie z bRet, widziałem już niektóre ze zmianą właściciela, ale nie działa to w Excelu, podczas gdy w Solid tak.

Witam

Mam jeszcze jedną wadę do poprawienia. Pozwól, że wyjaśnię:

Mam zestaw "A", który zawiera zestaw "B"

"A" i "B" zawierają część "C".

Jeśli zamienię część C na część D w zespole A, część w zespole B również zostanie wymieniona (taki jest cel).

Kończę, zapisując mój zestaw A. Zwracam jednak uwagę, że w tym samym czasie zarejestrowano montaż B.

Ale ja nie chcę tego robić. Umieściłem jednak 0 jako opcję zapasową, ale zauważyłem, że teoretycznie powinniśmy wskazać, aby zapisać referenty za pomocą swSaveAsOptions_SaveReferenced, ale jak zmusić go, aby ich nie zapisywał?

Witam

Naprawdę nie widzę sensu zastępowania twojej części C częścią D w twoim zespole B, jeśli nie chcesz oszczędzać tego zespołu B, równie dobrze możesz zastąpić część C swoją częścią D tylko w swoim zespole A i zachować swój zespół B częścią C ...

Pozdrowienia

W rzeczywistości nie jest to dokładnie to, co się dzieje, ale chciałem wyjaśnić problem w prostszy sposób.

Zasadniczo chcę być w stanie uratować tylko mój zespół, a nie dzieci.

Witam

Funkcja SaveAs2 spełnia Twoje potrzeby, ale nie powinieneś umieszczać 0 w opcjach zapisywania, nie jest to prawidłowa opcja, musisz zsumować dokonane wybory, na przykład:

1 + 2 dla swSaveAsOptions_Silent i swSaveAsOptions_Copy

1 + 512 dla swSaveAsOptions_Silent i swSaveAsOptions_CopyAndOpen

...

Pozdrowienia