| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Nahe an industriellen Realbedingungen |
Autor
|
Thema: API: Ermitteln der Selektieren Komponente in BG-Zchg. (Vollschnitt) (1413 / mal gelesen)
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 11. Mrz. 2016 12:02 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe folgendes Problem, ich versuche per API, die NDF (PDF) einer in einer Zusammenbauzeichnung selektierten Komponente zu öffnen (NDF werden über ein extra Modul über den Internetexplorer abgerufen). Wenn die Komponente im Featurebaum selektiert ist bzw. nichts selektiert ist läuft alles Problemlos, wenn ein geschnittenes Teil (die Schraffur) selektiert ist selektiert mir SWX auch die Komponente und läuft problemlos weiter. Nun zu meinem ersten Problem, wenn eine nicht geschnittene Komponente selektiert wird (Fläche oder Kante) bekomme ich für die Selektion (swSelMgr.GetSelectedObjectType3(1, 0)) immer nur den Rückgabewert swSelDrawingviews und nicht irgendwas von wo aus ich irgendwie auf die Komponente kommen könnte. Muss ich hier die Selection irgendwie anders abfragen um auf die Komponente zu kommen? Mein zweite Problem ist, wie komme ich von einem selektierten Bezugshinweis / Stücklistensymbol auf die Komponente an der dieser/dieses angefügt ist? Hier mal der Teil von meinem bisherigen Code um den es geht.
Code: Option ExplicitDim swApp As SldWorks.SldWorks Dim swModelDoc As SldWorks.ModelDoc2 Dim swModelDocExt As SldWorks.ModelDocExtension Dim swComp As SldWorks.Component2 Dim swCompModelDoc As SldWorks.ModelDoc2 Dim swDrwComp As SldWorks.DrawingComponent Dim swSelMgr As SldWorks.SelectionMgr Dim swNote As SldWorks.Note Dim swAnno As SldWorks.Annotation Dim propZeichnungsnummer As String Dim boolstatus As Boolean Dim longstatus As Long Dim longwarnings As Long If swModelDoc.GetType = swDocDRAWING Then If swSelMgr.GetSelectedObjectType3(1, 0) = swSelectType_e.swSelCOMPONENTS Then Set swDrwComp = swSelMgr.GetSelectedObjectsComponent4(1, 0) If swDrwComp Is Nothing Then Debug.Print "Keine Komponente gewählt, NDF der Zeichnung wird geöffnet" propZeichnungsnummer = swModelDoc.CustomInfo2("", "Zeichnungsnummer") IE.OpenLink (propZeichnungsnummer) Exit Sub Else Set swDrwComp = swSelMgr.GetSelectedObjectsComponent4(1, 0) Set swComp = swDrwComp.Component Set swCompModelDoc = swComp.GetModelDoc2 propZeichnungsnummer = swCompModelDoc.GetCustomInfoValue("", "Zeichnungsnummer") IE.OpenLink (propZeichnungsnummer) End If ElseIf swSelMgr.GetSelectedObjectType3(1, 0) = swSelectType_e.swSelNOTHING Then Debug.Print "Keine Komponente gewählt, NDF der Zeichnung wird geöffnet" propZeichnungsnummer = swModelDoc.CustomInfo2("", "Zeichnungsnummer") IE.OpenLink (propZeichnungsnummer) ElseIf swSelMgr.GetSelectedObjectType3(1, 0) = swSelectType_e.swSelNOTES Then Set swNote = swSelMgr.GetSelectedObject6(1, 0) Set swAnno = swNote.GetAnnotation If Not swAnno.OwnerType = swAnnotationOwner_DrawingView Then Debug.Print "Keine Komponente gewählt, NDF der Zeichnung wird geöffnet" propZeichnungsnummer = swModelDoc.CustomInfo2("", "Zeichnungsnummer") IE.OpenLink (propZeichnungsnummer) Else 'Baustelle, Komponente zu Bezugshinweis / Stücklistensymbol End If Debug.Print "Bezugshinweis selektiert" Else Debug.Print "Irgendetwas anderes selektiert: " & swSelMgr.GetSelectedObjectType3(1, 0) & " selektiert" Set swDrwComp = swSelMgr.GetSelectedObjectsComponent4(1, 0) If swDrwComp Is Nothing Then Debug.Print "Keine Komponente gewählt, Zeichnungsnummer der Zeichnung wird geöffnet" propZeichnungsnummer = swModelDoc.CustomInfo2("", "Zeichnungsnummer") IE.OpenLink (propZeichnungsnummer) Else Set swComp = swDrwComp.Component Set swCompModelDoc = swComp.GetModelDoc2 propZeichnungsnummer = swCompModelDoc.CustomInfo2("", "Zeichnungsnummer") Debug.Print propZeichnungsnummer IE.OpenLink (propZeichnungsnummer) End If End If Else Debug.Print "Kein gültiges Element geöffnet / selektiert" End If End Sub
Danke schonmal im voraus und Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 11. Mrz. 2016 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für bk.sc
Hallo Bernd, mein Makro Solid-open-PDF macht ja was ähnliches. Nur suche ich meine PDFs aus einem Einzelteil bzw. Baugruppe. bei mir ist es egal, ob ich ne Kante, Fläche etc. oder im Featuremanager eine Komponente auswähle. http://ww3.cad.de/foren/ubb/Forum2/HTML/027029.shtml Ich hab jetzt nicht den Code verglichen und es ist auch schon eine Weile her, das ich mich damit auseinander gesetzt habe. Aber evtl. kannst du daraus Anregungen entnehmen. Viel Erfolg, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 11. Mrz. 2016 13:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Andi, Danke für deine Antwort, mein komplettes Macro funktioniert auch in Baugruppen oder aus Bauteilen / Einzelteilzeichnungen heraus, hab den Teil der Übersichtlichkeit halber hier nur weggelassen. Werde mir dein Macro aber mal anschauen, vielleicht kann ich mir aus diesem ein Paar Codeschnippsel ausleihen um meinen Code etwas zu verschönern . Hatte auch vor der Umsetzung dieses Macros irgendwie im Kopf das es ein ähnliches Macro bereits hier gibt aber vor lauter Tatendrang dann doch selber was getippselt . Gruß Bernd
------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|