Ich möchte einen Raum und seinen Plan aus einer Excel-Datei öffnen, diesen Raum unter einem neuen Namen "Speichern unter" speichern und den Plan in Bezug auf die Referenz auf den neuesten Stand bringen, bevor ich ihn wiederum speichere.
Ich kann meine Dateien gleichzeitig öffnen und unter einem neuen Namen speichern. Aber der Schuss zeigt immer auf den anderen Raum.
Im manuellen Modus funktioniert es jedoch. Es sieht so aus, als ob der Datensatz nicht unter speichert, sondern eine Kopie.
Ich öffne mit dieser Methode:
Set swModel = swApp.OpenDoc6("Link zu meinem Plan", 3, 0, "", myError, myWarning)
Und ich nehme damit auf:
swModel.SaveAs2 "neuer Link", 0, Wahr, Falsch
PS: Und übrigens, wenn jemand einen Trick hat, um gleichzeitig die Eigenschaft Part Designation zu ändern, würde mir das sehr helfen.
Hier ist ein Beispiel, das ich verwende, um eine Kopie des Teils/der Baugruppe und der verknüpften Ebene aus einem geöffneten Teil oder einer offenen Baugruppe zu erstellen, um ihr einen Hinweis hinzuzufügen.
Zu diesem Zweck rufe ich die index-Eigenschaft des geöffneten Teils/der geöffneten Baugruppe ab und ändere eine andere, die index-Eigenschaft des neuen Teils/der neuen Baugruppe
Mit ein wenig Modifikation sollten Sie in der Lage sein, all dies zu ändern, um das zu tun, was Sie brauchen.
Und Sie sollten ganz gut verstehen, es ist mein 1. Makro, ziemlich wichtig, also habe ich viele Kommentare geschrieben!
Auf der anderen Seite wird es aus SolidWorks gestartet. Es liegt an Ihnen, es anzupassen!
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
Zu verwenden, ohne eines der Dokumente in Solidworks zu öffnen!!
In Ihrer Zeile "swModel.SaveAs2 "neuer Link", 0, True, False", das "True" bedeutet "SaveAsCopy" = yes ... aber Sie benötigen diese Zeile nicht mehr, wenn Sie die Funktion ReplaceReferenceDocument verwenden...
Vielen Dank für Ihre Antworten, in der Tat reichte es aus, das Wahr durch Falsch zu ersetzen, um meinen Bedarf zu decken.
Zu Ihrer Information: Ich programmiere aus Excel und habe den Eindruck, dass einige Dinge nicht gleich funktionieren. Wie die Zeilen mit bRet, ich habe schon einige mit dem Besitzerwechsel gesehen, aber es funktioniert nicht auf Excel, während es auf Solid ja funktioniert.
Ich habe noch einen Fehler zu korrigieren. Lassen Sie mich das erklären:
Ich habe eine Assembly "A", die eine Assembly "B" enthält.
"A" und "B" enthalten einen "C"-Teil.
Wenn ich Teil C durch ein Teil D in Baugruppe A ersetze, wird auch das Teil in Baugruppe B ersetzt (das ist das Ziel).
Zum Schluss speichere ich meine Baugruppe A. Ich stelle jedoch fest, dass zur gleichen Zeit die Baugruppe B registriert wurde.
Aber das will ich nicht tun. Allerdings habe ich 0 als Backup-Option gesetzt, aber ich stelle fest, dass wir theoretisch angeben sollten, die Referenzen mit swSaveAsOptions_SaveReferenced zu speichern, aber wie kann man es zwingen, sie nicht zu speichern?
Ich sehe nicht wirklich einen Sinn darin, Ihr Teil C durch ein Teil D in Ihrer Baugruppe B zu ersetzen, wenn Sie diese Baugruppe B nicht speichern möchten, können Sie genauso gut Teil C durch Ihr Teil D nur in Ihrer Baugruppe A ersetzen und Ihre Baugruppe B mit Ihrem Teil C behalten ...
Die SaveAs2-Funktion entspricht Ihren Anforderungen, aber Sie sollten nicht 0 in die Speicheroptionen setzen, es ist keine gültige Option, Sie müssen die getroffenen Entscheidungen addieren, zum Beispiel:
1 + 2 für swSaveAsOptions_Silent und swSaveAsOptions_Copy
1 + 512 für swSaveAsOptions_Silent und swSaveAsOptions_CopyAndOpen