| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
| |
| Empolis Entwicklungs- und Integrationspartnerschaft, eine Pressemitteilung
|
Autor
|
Thema: API BeforeSave (3035 mal gelesen)
|
biker9to5 Mitglied Konstrukteur / Selbständig
Beiträge: 2 Registriert: 05.02.2007
|
erstellt am: 23. Jun. 2011 21:13 <-- editieren / zitieren --> Unities abgeben:
ich versuche bald verzweifelt, mein Addin dazu zu bringen, dass es auf das BeforeSave Event reagiert. Da ich auch hier nix gefunden habe, bitte ich die Könner, ein paar Zeilen zur Verfügung zu stellen, wie die Definition und der Aufruf aussehen muss. Dank euch schon mal. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Matthias Leemann Mitglied Masch. Ing HTL
Beiträge: 394 Registriert: 03.10.2003 Windows 11 Pro Solid Edge 2022
|
erstellt am: 23. Jun. 2011 21:57 <-- editieren / zitieren --> Unities abgeben: Nur für biker9to5
Hoi biker9to5 die wichtigsten Zeilen sehen bei mir (VB.NET) so aus:
Code: Dim WithEvents seEvents As SolidEdgeFramework.ISEApplicationEvents_Event Dim SE As SolidEdgeFramework.Application Public Sub SeAnbindung() Try SE = Marshal.GetActiveObject("SolidEdge.Application") seEvents = SE.ApplicationEvents Control.CheckForIllegalCrossThreadCalls = False Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Private Sub seEvents_BeforeDocumentSave(ByVal theDocument As Object) Handles seEvents.BeforeDocumentSave Dim objOpendoc As Object objOpendoc = SE.ActiveDocument SE.StatusBar = objOpendoc.fullname strFilenameBeforeSave = theDocument.Fullname.ToString Select Case SE.ActiveDocumentType Case SolidEdgeFramework.DocumentTypeConstants.igSyncPartDocument Debug.WriteLine("BeforeDocumentSave: igSyncPartDocument") Case SolidEdgeFramework.DocumentTypeConstants.igSyncSheetMetalDocument Debug.WriteLine("BeforeDocumentSave: igSyncSheetMetalDocument") Case SolidEdgeFramework.DocumentTypeConstants.igPartDocument Debug.WriteLine("BeforeDocumentSave: igPartDocument") Case SolidEdgeFramework.DocumentTypeConstants.igSheetMetalDocument Debug.WriteLine("BeforeDocumentSave: igSheetMetalDocument") Case SolidEdgeFramework.DocumentTypeConstants.igAssemblyDocument Debug.WriteLine("BeforeDocumentSave: igAssemblyDocument") Case SolidEdgeFramework.DocumentTypeConstants.igSyncAssemblyDocument Debug.WriteLine("BeforeDocumentSave: igSyncAssemblyDocument") End Select End Sub
------------------ SE ST3 SePropManager.NET und SeDimPro2 von www.leemann-software.net Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
biker9to5 Mitglied Konstrukteur / Selbständig
Beiträge: 2 Registriert: 05.02.2007
|
erstellt am: 02. Jul. 2011 21:39 <-- editieren / zitieren --> Unities abgeben:
|
Dark Solid-Worker Mitglied Ingenieur
Beiträge: 51 Registriert: 05.12.2003 ST5 64bit Classic MP7 / Win 7 64bit / Smap3D V9.6
|
erstellt am: 12. Jul. 2011 12:06 <-- editieren / zitieren --> Unities abgeben: Nur für biker9to5
Hallo Habe Probleme mit dem bevore document save event Wenn ich SE StartCommands ausführe (z.B. hide rev planes, Isometric View) wird das Dokument zuerst gespeichert, und erst dann die Commands abgearbeitet. Andere Befehle im Event (z.B. window.View.Fit) funktionieren. Lösung? Gibt es ev. andere Befehle für Hide rev Planes und Isometric view, nicht über StartCommands. Besten Dank für eine Antwort Grüsse Heinz
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 12. Jul. 2011 13:25 <-- editieren / zitieren --> Unities abgeben: Nur für biker9to5
Heinz, Zitat: Original erstellt von Dark Solid-Worker:
Wenn ich SE StartCommands ausführe (z.B. hide rev planes, Isometric View) wird das Dokument zuerst gespeichert, und erst dann die Commands abgearbeitet. Andere Befehle im Event (z.B. window.View.Fit) funktionieren. Lösung? Gibt es ev. andere Befehle für Hide rev Planes und Isometric view, nicht über StartCommands.
es gibt die Möglichkeit, einen Befehl zu unterbrechen, Code abzuarbeiten und dann den Befehl wieder aufzurufen. Ob das auch bei einem AddIn funktioniert habe ich nicht getestet (VB6): Private Sub moSEAppEv_BeforeCommandRun(ByVal theCommandID As Long) Dim SEComm As SolidEdgeFramework.Command Select Case theCommandID Case 57603 Set SEComm = moSEApp.CreateCommand(seTerminateAfterActivation) SEComm.Start Set SEComm = Nothing moSEApp.StartCommand 40018 moSEApp.StartCommand 32810 moSEApp.StartCommand 57603 End Select End Sub pablo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dark Solid-Worker Mitglied Ingenieur
Beiträge: 51 Registriert: 05.12.2003 ST5 64bit Classic MP7 / Win 7 64bit / Smap3D V9.6
|
erstellt am: 12. Jul. 2011 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für biker9to5
Hallo Pablo Danke für die Antwort. Will in meinem VB.net 2010 Express nicht funktionieren. Fehler: "seterminateafterActivation" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 12. Jul. 2011 16:49 <-- editieren / zitieren --> Unities abgeben: Nur für biker9to5
Heinz, laut Solid Edge ST3 SDK: Application.CreateCommand Method sollte es funktionieren, hast du es mit 1 statt mit seTerminateAfterActivation probiert? Die isometrische Ansicht lasst sich auch im View-Objekt einstellen. Einmal mit View.GetCamera die Einstellungen für Eye, Target und Up ermitteln, dann mit View.SetCamera in die aktuelle Ansicht übertragen und mit View.Fit einpassen. Für die Referenzebenen fällt mir nichts ein. pablo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dark Solid-Worker Mitglied Ingenieur
Beiträge: 51 Registriert: 05.12.2003 ST5 64bit Classic MP7 / Win 7 64bit / Smap3D V9.6
|
erstellt am: 13. Jul. 2011 08:26 <-- editieren / zitieren --> Unities abgeben: Nur für biker9to5
Hallo Pablo Komme irgendwie nicht weiter mit deinen Infos. Kann zwar mit Getcamera die Werte auslesen und auch die Ansicht verändern (Werte setzen), weis aber nicht wie ich so auf eine Iso-Ansicht komme (kann mit den Werten nichts anfangen) Was meinst du mit "hast du es mit 1 statt mit seTerminateAfterActivation probiert"? Hättest du mir ein Beispiel? Für Referenzebenen ausblenden habe ich etwas gefunden, funktioniert mit: objDoc.ToggleRefPlanesDisplay(False) Grüsse Heinz
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 13. Jul. 2011 09:10 <-- editieren / zitieren --> Unities abgeben: Nur für biker9to5
Hallo Heinz, Zitat: Original erstellt von Dark Solid-Worker: Hallo PabloKomme irgendwie nicht weiter mit deinen Infos. Kann zwar mit Getcamera die Werte auslesen und auch die Ansicht verändern (Werte setzen), weis aber nicht wie ich so auf eine Iso-Ansicht komme (kann mit den Werten nichts anfangen) Was meinst du mit "hast du es mit 1 statt mit seTerminateAfterActivation probiert"? Hättest du mir ein Beispiel? Für Referenzebenen ausblenden habe ich etwas gefunden, funktioniert mit: objDoc.ToggleRefPlanesDisplay(False) Grüsse Heinz
Mit SetCamera(0.1, -0.1, 0.1, 0, 0, 0, 0, 0, 1, FALSCH, 1000) erhältst du eine isometrische Ansicht, mit Fit kannst du sie einpassen. 1 ist der Wert von SolidEdgeConstants/seCmdFlag/seTerminateAfterActivation. Eine weitere Möglichkeit wäre, nach den SEStartCommands noch einmal über die API zu speichern. pablo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dark Solid-Worker Mitglied Ingenieur
Beiträge: 51 Registriert: 05.12.2003 ST5 64bit Classic MP7 / Win 7 64bit / Smap3D V9.6
|
erstellt am: 19. Jul. 2011 07:54 <-- editieren / zitieren --> Unities abgeben: Nur für biker9to5
Hallo Bin erst jetzt dazu gekommen deine Antwort mal anzuschauen. Set Camera -> ISO Ansicht funktioniert prima. seTerminateAfterActivation funktioniert auch. Nun habe ich aber das Problem, wenn ich das speichere abbreche, und anschliessend das speichere über objdoc.save ausführe, jedesmal wieder abgebrochen wird, ohne zu speichern (beforecommandrun event läuft von neuem los und bricht wieder ab) Nachtrag zu: Für Referenzebenen ausblenden habe ich etwas gefunden, funktioniert mit: objDoc.ToggleRefPlanesDisplay(False) Funktioniert leider nur bei par und psm. Lösung für ASM, um alle Ebenen auzublenden?? Grüsse Heinz
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 19. Jul. 2011 09:53 <-- editieren / zitieren --> Unities abgeben: Nur für biker9to5
Hallo Heinz, Zitat: Original erstellt von Dark Solid-Worker: HalloBin erst jetzt dazu gekommen deine Antwort mal anzuschauen. Set Camera -> ISO Ansicht funktioniert prima. seTerminateAfterActivation funktioniert auch. Nun habe ich aber das Problem, wenn ich das speichere abbreche, und anschliessend das speichere über objdoc.save ausführe, jedesmal wieder abgebrochen wird, ohne zu speichern (beforecommandrun event läuft von neuem los und bricht wieder ab) Nachtrag zu: Für Referenzebenen ausblenden habe ich etwas gefunden, funktioniert mit: objDoc.ToggleRefPlanesDisplay(False) Funktioniert leider nur bei par und psm. Lösung für ASM, um alle Ebenen auzublenden?? Grüsse Heinz
Für das erneute Speichern brauchst du einen boolschen Wert (bAllowSave), den du beim Unterbrechen auf True setzt. Wenn er auf True steht setzt du ihn im Event auf False und führst die SE-Routine aus Dann kannst du im Assembly mit StartCommand(AssemblyAssemblyToolsHideAllReferencePlanes <=> 40018)die Referenzebenen ausblenden. pablo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |