Wie erhalte ich den Namen des Teils, der Baugruppe oder des MEP, das gerade in Arbeit ist?

Hallo

Wie kann ich die Namen meiner Teile, MEP und Baugruppe abrufen, um sie nach der Registrierung zu schließen? 

myTitle = meinModell.GetTitle

swApp.ActivateDoc2 myTitle, True, 0

swApp.QuitDoc myTitle

Ich habe das versucht, aber es funktioniert nicht. Ich kann auch den Befehl zum einfachen Speichern meiner Assembly nicht finden.

2 „Gefällt mir“

Hallo,

 

Es kommt darauf an, ob Sie den Namen der aktiven Datei wiederherstellen möchten. Das heißt, wenn Sie sich in einem Plan befinden, möchten Sie den Namen des Plans, in einer Baugruppe den Namen der Baugruppe und in einem Teil den Namen des Teils abrufen?

Wenn ja, ist dieses Tutorial, das ich gerade auf Lynkoa erstellt habe, in Ordnung:

http://www.lynkoa.com/tutos/import-export-formats-neutres/vba-solidworks-nom-fichier

 

Um eine Baugruppe zu registrieren , ohne alle Teile zu ändern , müssen Sie mit der "höchsten" Baugruppe beginnen, bis Sie die SA und die darin enthaltenen Teile öffnen. Deshalb öffne ich aus der Baugruppe heraus mein Teil, den MEP und ich speichere unter und schließe dann das Dokument, aber der Bediener ändert den Namen zwischen zwei, deshalb brauche ich es, um das Dokument zu schließen. Dann muss ich einen Weg finden, die höchste Baugruppe nach den Änderungen zu speichern.

Ich hoffe, ich bin mir darüber im Klaren, dass ich im angehängten Code die Zeichnung nicht schließen kann, um zum Beispiel zum Teil zurückzukehren.


macro50.swp

Können Sie Ihren Code bitte in eine Textdatei einfügen?

Setze swapp = _
Anwendung.SldWorks

Set Part = swapp. OpenDoc6("\xxxxxxxxxx", 2, 0, "", longstatus, longwarnings)
swapp. ActivateDoc2 "Pot Store Set", False, longstatus
Set Part = swapp. ActiveDoc (Englisch)

F1. Zeigen

Set swappp = Anwendung.SldWorks
Setze swmodel = swappp. ActiveDoc (Englisch)
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")

"Tauscht. OpenDoc(Name,Typ) '
      
Set Part = swapp. ActiveDoc (Englisch)
boolstatus = Part.Extension.SelectByID2("Töpfe speichern 1@Ensemble pots_9", "KOMPONENTE", 0, 0, 0, Falsch, 0, Nichts, 0)
Teil.OpenCompDatei
Set Part = swapp. OpenDoc6("\xxxxxxxx", 1, 0, "", longstatus, longwarnings)
Set Part = swapp. ActiveDoc (Englisch)

Set Part = swapp. OpenDoc6("\xxxxxxxx", 3, 0, "", longstatus, longwarnings)
Set Part = swapp. ActiveDoc (Englisch)

Set swappp = Anwendung.SldWorks
Setze swmodel = swappp. ActiveDoc (Englisch)
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")

Es sieht so aus, als ob Ihr Code nicht ganzzahlig ist (kein "sub").

Was genau ist das Problem? Können Sie das aktive Dokument öffnen, aber nicht schließen?

Gibt es eine Fehlerzeile, wenn Sie Ihren Code starten?

Ich kann nicht testen, ich habe SolidWorks nicht, also brauche ich weitere Informationen.

Ich habe Ihnen nur einen Teil meines Codes zur Verfügung gestellt, ich bin heute Morgen ein wenig vorangeschritten und habe Lösungen gefunden (mein Code ist unten angegeben). Das Problem, das bei diesem Code auftritt, besteht darin, dass ich den MEP-Titel nicht auf die gleiche Weise wie Teile und Baugruppen abrufen kann. Tatsächlich speichert dieser Code das Teil, den MEP, die Assembly am Anfang, aber nicht am Ende, da er anstelle meines MEP geschlossen wird. Dies hat zur Folge, dass Verweise in der Baugruppe verloren gehen.

Sub main()
        
Setze swapp = _
Anwendung.SldWorks

Set Part = swapp. OpenDoc6("\\xxxxxx", 2, 0, "", longstatus, longwarnings)
swapp. ActivateDoc2 "Pot Store Set", False, longstatus
Set Part = swapp. ActiveDoc (Englisch)

F1. Zeigen


Legen Sie swAppp = Application.SldWorks fest
Legen Sie swmodel = swAppp.ActiveDoc fest
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")


"Tauscht. OpenDoc(Name,Typ) '
      
Set Part = swapp. ActiveDoc (Englisch)

"Holen Sie sich den Link
Dateipfad = swmodel. GetPathName (Englisch)
'Ruft die Anzahl der Zeichen ab
PfadGröße = Len(Dateipfad)
'Stellt nur Dateinamen ohne Erweiterung wieder her
PfadNoExtension = Links(DateiPfad, 29)

TitelA = swmodel. GetTitle (Englisch)

TitelAs = Länge(TitelA)

TitelAn = Links(TitelA, TitelAs - 7)

Set Part = swapp. ActiveDoc (Englisch)
Set Part = swapp. OpenDoc6("\\xxxxx"", longstatus, longwarnings)
Set Part = swapp. ActiveDoc (Englisch)

swapp. ActivateDoc2 "store pots.sldprt", False, longstatus
Set Part = swapp. ActiveDoc (Englisch)


Set Part = swapp. OpenDoc6("\\xxxxx", 3, 0, "", longstatus, longwarnings)
Set Part = swapp. ActiveDoc (Englisch)

swapp. ActivateDoc2 "Jar Store - Sheet1", Falsch, longstatus
Set Part = swapp. ActiveDoc (Englisch)


bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")

Set Part = swapp. ActiveDoc (Englisch)

TitelM = swmodel. GetTitle (Englisch)

TitelMs = Länge(TitelM)

TitelMn = Links(TitelM, TitelMs - 7)

Set Part = swapp. ActiveDoc (Englisch)
Set Part = Nichts
swapp. SchließenDoc TitelMn
Set Part = swapp. ActiveDoc (Englisch)

swapp. ActivateDoc2 "store pots.sldprt", False, longstatus
Set Part = swapp. ActiveDoc (Englisch)

Legen Sie swAppp = Application.SldWorks fest
Legen Sie swmodel = swAppp.ActiveDoc fest
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")


TitelP = swmodel. GetTitle (Englisch)

TitelPs = Länge(TitelP)

TitlePn = Links(TitleP, TitlePs - 7)


Set Part = swapp. ActiveDoc (Englisch)
Set Part = Nichts
swapp. CloseDoc TitlePn
Set Part = swapp. ActiveDoc (Englisch)

swapp. ActivateDoc2 TitleAn, False, longstatus
Set Part = swapp. ActiveDoc (Englisch)

Set Part = swapp. ActiveDoc (Englisch)
longstatus = Teil.SaveAs3(Dateipfad, 0, 2)

Set Part = swapp. ActiveDoc (Englisch)
Set Part = Nichts
swapp. CloseDoc TitelAn


F2. L_2 = TitelMn

F2. Zeigen


Ende Sub

Was ist die Linie, die nicht funktioniert?

Um das aktive Dokument zu schließen, gehe ich folgendermaßen vor:

swApp.CloseDoc(swModel.GetPathName)

Hallo

Ihr Code gibt mir den Link zum MEP, aber ich brauche den Namen, um es zu schließen, liege ich falsch? Wie auch immer, es gibt mir immer den Link zur Assembly, ich denke, ich muss ein Problem haben, ein Dokument zu aktivieren, wenn ich von meiner Assembly zu meinem MEP wechsle. Mein Code funktioniert, es ist nur so, dass er nicht das tut, was ich will.

Versuchen Sie also, diese Linien einzufügen, wenn Sie eine Zeichnung schließen möchten:

Setze swmodel = swapp. ActiveDoc (Englisch)

swApp.CloseDoc(swModel.GetPathName)

 

 

1 „Gefällt mir“

Übrigens, ich habe gerade in deinem Code gesehen, dass es manchmal "swApp" und "swAppP" gibt.

Ich denke, es ist ein Fehler und Sie sollten es überall durch "swApp"  ersetzen.

Zusammenfassend lässt sich sagen, dass mein Programm in den Dokumenten verloren geht, weil ich nicht die richtigen Namen bekomme. Anbei sind zwei Bilder von dem, was er als Namen bekommt und das gleiche, aber mit deiner Anleitung: (im 1. ist es der Zusammenbau mit und ohne Erweiterung, im 2. sollte es der MEP sein und im 3. der Teil)


err1.png

Es funktioniert mit deinen letzten Kommentaren, die ich nicht gesehen hatte ! Für den swapp(p) habe ich zwei verschiedene Anweisungen, also denke ich, dass ich keine andere Wahl habe.

Dim swAppp As SldWorks.SldWorks

Dimmen swApp als Objekt

Ein ganz großes Dankeschön an euch, das muss ich nur noch für die Baugruppen und die anderen Teile machen:)

 

1 „Gefällt mir“

Kein Problem!

Um mir zu danken, wählen Sie bitte meine Antwort als die beste Antwort, die Ihnen geholfen hat:)