| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Zerspanungstreff mit SolidCAM bei der Hoffmann GmbH in Achim/Bremen |
Autor
|
Thema: Block ein-/ausblenden über Marcos (3146 mal gelesen)
|
Thomas 3D Mitglied 3D Designer
Beiträge: 393 Registriert: 17.09.2008 AutoCad 2016 Athena 2015 SWX 2016
|
erstellt am: 20. Nov. 2012 11:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, Wer kann mir bei der Erstellung eines Macros behilflich sein? Ich möchte gerne einen Block, der sich auf dem Papier befindet ein- bzw. ausblenden. In der SWX API Help habe ich zwar einen Quelltext(siehe unten) gefunden, wo man den Block im Featurebaum selektieren muß und dann das Macro starten muß. Somit wird der Block unsichtbar. Wiederholt man die Prozedur dann wird der Block wieder sichtbar.
Ich möchte gerne ein Macro erzeugen, wo ich genau den Block mit dem Namen Block1 ausblenden kann. Und ein zweites Macro wo der Block1 wieder eingeblendet wird. Ich habe versucht, das bestehende Macro zu vereinfachen, aber es ist mir nicht gelungen. Ich habe keine Erfahrung in programmieren. Würde mich über eine Hilfe freuen. Gruß Thomas - - - - - - - - - - - - - - - - - - - - Quelltext aus SWX API Help sieht so aus. - - - - - - - - - - - - - - - - - - - - '------------------------------------------------- ' Preconditions: ' 1. Drawing document containing a sketch ' block with one or more sketch block instances is open. ' 2. The sketch block is selected in the FeatureManager design tree. ' ' Postconditions: All sketch block instances are hidden if visible, or ' shown if hidden. '------------------------------------------------- Option Explicit Dim swApp As SldWorks.SldWorks Dim swModelDoc As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim swFeature As SldWorks.Feature Dim swBlockDefinition As SldWorks.SketchBlockDefinition Dim blocks As Variant Dim i As Long Sub main() Set swApp = Application.SldWorks Set swModelDoc = swApp.ActiveDoc Set swSelMgr = swModelDoc.SelectionManager ' Select block is selected in FeatureManager design tree Set swFeature = swSelMgr.GetSelectedObject6(1, -1) If swFeature Is Nothing Then MsgBox ("Select a sketch block in the FeatureManager design tree, then rerun the macro.") Else Set swBlockDefinition = swFeature.GetSpecificFeature2 Debug.Print "Feature type : " & swFeature.GetTypeName2 If Not (swBlockDefinition Is Nothing) Then blocks = swBlockDefinition.GetInstances For i = LBound(blocks) To UBound(blocks) Dim swBlockInstance As SldWorks.SketchBlockInstance Set swBlockInstance = blocks(i) Debug.Print "Sketch block instance: " & (i + 1) Debug.Print " Angle : " & swBlockInstance.Angle Debug.Print " Scale : " & swBlockInstance.Scale2 ' Hide or show the sketch block instance Dim status As Long status = swBlockInstance.Visible Select Case status Case swAnnotationHidden swBlockInstance.Visible = swAnnotationVisible Debug.Print " Was hidden, now visible." Case swAnnotationVisible swBlockInstance.Visible = swAnnotationHidden Debug.Print " Was visible, now hidden." Case swAnnotationHalfHidden MsgBox ("This block is half hidden.") Case swAnnotationVisibilityUnknown MsgBox ("Failed to determine visibility of this block.") End Select Next i End If blocks = Empty End If End Sub
[Diese Nachricht wurde von Thomas 3D am 20. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GDawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 21. Nov. 2012 09:15 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo Thomas, das ist doch "ganz einfach" besonders, wenn Du das Ein- und Ausblenden schon hast. Jetzt brauchst Du nur noch den richtigen Block zu selektieren: Code: Option Explicit Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim swFeat As SldWorks.Feature Dim swBlockDef As SldWorks.SketchBlockDefinition Dim swBlockInst As SldWorks.SketchBlockInstance Dim nbrBlockInst As Integer Dim vBlockInst As Variant Dim boolstatus As Boolean Dim itr As Integer Sub main() Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc'Hier wird der Block mit dem Namen "Block1" selektiert boolstatus = swModel.Extension.SelectByID2("Block1", "SUBSKETCHDEF", 0, 0, 0, False, 0, Nothing, 0) 'Und wenn es den Block1 gibt, dann mach das da (hier musst Du nun den Block Ein- oder Ausblenden): If boolstatus Then Set swSelMgr = swModel.SelectionManager Set swFeat = swSelMgr.GetSelectedObject6(1, 0) Set swBlockDef = swFeat.GetSpecificFeature2 '''' HIER kommt der Teil rein, wo der Block ein- und ausblendet. End If End Sub
Ich hoffe, dass Du damit weiterkommst. Gilbert. ------------------
Und NEIN! Meine Sys-Infos sind nicht aus 2005! Doch eigentlich schon... aber immernoch aktuell!
[Diese Nachricht wurde von GDawg am 21. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas 3D Mitglied 3D Designer
Beiträge: 393 Registriert: 17.09.2008 AutoCad 2016 Athena 2015 SWX 2016
|
erstellt am: 21. Nov. 2012 10:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Gilbert, vielen Dank für deine Hilfe. Ich habe mal dein Makro (Macro3.swp) erstellt und an der Zeichnung (Draw1.slddrw) ausprobiert. Irgendwie funktioniert es noch nicht so richtig. Wenn du Zeit hast, könntest du bitte mal draufschauen, warum es nicht geht? Im Makro in der Zeile 20 habe ich den Namen Block1 durch Block25 ersetzt. So heißt nämlich der Block in der Zeichnung der ausgeblendet werden soll. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GDawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 21. Nov. 2012 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Thomas, logisch geht mein Makro nicht WEIL: Du hast vergessen Deinen Teil zu machen! Du musst nun Dein Makro mit meinem zusammenfügen! Ich wollte Dir nicht gleich ein fertiges Makro liefern Somit kannst Du auch noch etwas dabei lernen. In meinem Makro, ab Zeile "'Und wenn es den Block1 gibt, dann mach das da (hier musst Du nun den Block Ein- oder Ausblenden):" musst Du den Teil einbringen, welcher den Block eben ein- oder ausblendet. Hinweis: Der Block25 ist bereits selektiert, wenn Du zu der Zeile Nr. 23 kommst.... Wenn es gar nicht gehen sollte, helfe ich Dir gerne weiter; Aber versuche es zuerst einmal selbstständig. ------------------
Und NEIN! Meine Sys-Infos sind nicht aus 2005! Doch eigentlich schon... aber immer noch aktuell! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen
Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 27. Jun. 2020 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo, mir ist klar, dass dieser Beitrag schon recht alt ist, wollte aber dennoch einhaken, da es mein aktuelles Thema schon behandelt. Ich möchte gern einzelne Blöcke per Makro ausblenden, allerdings nach direkter Auswahl auf dem Zeichenblatt. Habe nun einiges auf Basis des Beispiels von Thomas probiert - ohne Erfolg. Schon beim Klick in den Zeichnungsbereich läuft "Set swFeature = swSelMgr.GetSelectedObject6(1, -1)" in den Laufzeitfehler 13 (Typen unverträglich) Kann mir jemand weiterhelfen, wie ich eine selektierte Blockinstanz "namentlich" identifizieren und im Makro weiterverwenden kann? Auch mit Gilbert Schnipsel habe ich einiges rum gespielt... Bitte keinen Verweis auf die API-Hilfe. Ich habe zwar schon einiges mit VBA gemacht, komme aber mit der API-Hilfe gar nicht zurecht. Ich benötige ein funktionierendes Besipiel Danke schon mal. Grüße Fredl
------------------
Gruß vom mechanikuss 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: 29. Jun. 2020 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo Fredl, verstehe ich das richtig du möchtest einen Block selektieren und dann das Makro starten um diesen Block dann auszublenden? Oder möchtest du mehrere Blöcke selektieren und diese dann per Makro ausblenden? 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 |
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen
Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 29. Jun. 2020 13:50 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo Bernd, um ehrlich zu sein, ich möchte eigentlich eine Block-instanz direkt im Zeichenblatt selektieren und deren Attribute per VBA editieren (lesen+schreiben). Da ich hierüber bisher keine Code-Beispiele gefunden habe, wollte ich mich schrittweise rantasten. Diesser Beitrag hier erschien mir dem ersten Schritt sehr nache zu kommen: Auswahl einer Block-Instanz (--> swSelMgr.GetSelectedObject6(1, 0)). Vielleicht muss ich doch einen neuen Thread starten?! Für sachdienliche Hinweise wäre ich sehr dankbar. Grüße Fredl ------------------
Gruß vom mechanikuss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TestMitglied Mitglied
Beiträge: 82 Registriert: 15.06.2005 Nur so zum Test
|
erstellt am: 29. Jun. 2020 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Zitat: Original erstellt von mechanikuss: ich möchte eigentlich eine Block-instanz direkt im Zeichenblatt selektieren und deren Attribute per VBA editieren (lesen+schreiben)...
So was hab ich auch mal gesucht: Code: Option ExplicitDim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim swBlockInst As SldWorks.SketchBlockInstance Dim vNote As Variant Dim swNote As Note Dim iNumberAttr As Integer Dim bRet As Boolean Sub main() Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swSelMgr = swModel.SelectionManager Set swBlockInst = swSelMgr.GetSelectedObject6(1, 0) vNote = swBlockInst.GetAttributes If Not IsEmpty(vNote) Then For iNumberAttr = 0 To UBound(vNote) Set swNote = vNote(iNumberAttr) Debug.Print "Attributname: " & swNote.TagName Debug.Print "Attributwert: " & swNote.GetText Select Case iNumberAttr Case 0 bRet = swNote.SetText("RAL 9002") Case 1 bRet = swNote.SetText("Kugelstrahlen") Case Else End Select Debug.Print "" Next iNumberAttr End If End Sub
------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen
Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 30. Jun. 2020 09:09 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo, vielen Dank für die rasche Hilfe. Leider bekomme ich auch hier (wie auch schon in ähnlichen Versuchen) bei "Set swBlockInst = swSelMgr.GetSelectedObject6(1, 0)" den für diese Methode alt bekannten Fehler 13: Typenunverträglichkeit. Auch unabhängig davon, ob ich die Block-Auswahl in der Zeichnungsansicht oder im Featurebaum mache. Was mache ich falsch? Gibt es hierzu eine Idee? Grüße Fredl Update: So, jetzt ist es einmal erfolgreich durchgelaufen - aber dann nie wieder Was läuft da falsch bei mir? ------------------
Gruß vom mechanikuss [Diese Nachricht wurde von mechanikuss am 30. Jun. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Tide Moderator -
Beiträge: 4978 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 30. Jun. 2020 11:46 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Zitat: Original erstellt von mechanikuss: Was läuft da falsch bei mir?
Hallo Fredl, um das herausfinden zu können, wäre es hilfreich wenn Du Deinen Block zur Verfügung stellen könntest. Wenn das nicht geht erzeuge einen Block und stell den zur Verfügung... HTH Ralf ------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen
Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 30. Jun. 2020 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
|
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: 30. Jun. 2020 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo Fredl, beachte dass du im Featurebaum eine BlockDefinition selektierst und keine BlockInstanz. Im Grafikbereich musst du auch beachten dass du auch wirklich den Block selektierst und kein Element des Blocks, du kannst einfach mal deinen Selektionsfilter (F5) auf Block stellen und selektieren und du wirst sehen, dass das Makro problemlos funktioniert. 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 |
Ralf Tide Moderator -
Beiträge: 4978 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 30. Jun. 2020 15:24 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
|
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen
Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 30. Jun. 2020 15:42 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Spitze - geht doch - die richtige Auswahl - warum sagt man mir das nicht gleich? Das perfekte Makro wäre jetzt eins, welches nach Aufruf... 1. Diesen Auswahl-Filter aktiviert und auf meine Auswahl wartet 3. danach die Aktionen durchführt 4. Zum Schluss den Filter wieder deaktiviert Danke, Bernd, Test und Ralf, Eure Unities sind unterwegs. Fredl ------------------ LIeben Gruß vom mechanikuss 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: 01. Jul. 2020 13:55 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo Ralf, Zitat: Da funktioniert es einwandfrei wenn ich auf den "COMPRESSOR"-Text klicke...
Das hab ich nicht explizit Versucht hab einfach irgendwo auf den Block gedrückt und Macro laufen lassen. @Fredl: Umsetzbar wäre deine Idee bestimmt, evtl. mit einem Userform das aufploppt falls noch kein Block selektiert ist und dann entsprechend den Filter setzt und dann beim bestätigen nochmal schaut ob nun ein Block da ist und am Ende der Bearbeitung den Filter deaktviert unabhängig davon ob er überhaupt aktiv war. Alternativ nen Shortcut für das aktivieren des Filters anlegen, ist um einiges einfacher. 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 |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 02. Jul. 2020 10:12 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
|
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: 02. Jul. 2020 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo, Andreas packt hier wieder die Musterlösung aus, wie man es hätte auch gleich machen können wenn die Faulheit nicht so groß gewesen wäre und nur das vorschlägt was für einen persönlich der geringste Aufwand ist . 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 |
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen
Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 03. Jul. 2020 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo, Danke für eure weiteren Beiträge. Ich bin jetzt wieder nach vielen Jahren wieder an die SolidWorks-Front zurückgekehrt und muss mir einiges wieder in Erinnerung zurückholen. Da ist jeder Tipp wertvoll. Übrigens bin ich bezüglich "Warten auf Auswahl im Zeichenbereich" auch fündig geworden. Dieser Code ist schön kurz und funktioniert trotzdem - so wie ich es am liebsten mag. Allerdings habe ich schon einiges probiert, um vorher den "Block-Auswahlfilter" einzuschalten und danach wieder aus. Denn ohne aktiven Filter erwische ich keinen Block. Habe auch schon einige Beispiele gefunden, aber irgendwie habe ich dieses Prinzip nicht verstanden. Hier der Code: ______________________________________________________________________________________________________ Option Explicit Dim swApp As SldWorks.SldWorks Dim swDoc As SldWorks.ModelDoc2 Sub GetBlockInstance() Dim SelMgr As SldWorks.SelectionMgr Dim nUserCancel As Integer Set swApp = Application.SldWorks Set swDoc = swApp.ActiveDoc Set SelMgr = swDoc.SelectionManager If (SelMgr.GetSelectedObjectCount2(-1) <> 1) Or (SelMgr.GetSelectedObjectType3(1, -1) <> 114) Then MsgBox "Please select a block to continue" swDoc.ClearSelection2 True While (SelMgr.GetSelectedObjectCount <> 1) Or (SelMgr.GetSelectedObjectType3(1, -1) <> 114) If SelMgr.GetSelectedObjectCount = 1 And SelMgr.GetSelectedObjectType3(1, -1) <> 114 Then nUserCancel = MsgBox("Please select a block or CANCEL to exit", vbOKCancel) If nUserCancel = vbCancel Then Exit Sub End If swDoc.ClearSelection2 True Else DoEvents End If Wend End If MsgBox "Success: You selected a Block Instance" End Sub ______________________________________________________________________________________________________ Grüße Fredl ------------------ LIeben Gruß vom mechanikuss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 03. Jul. 2020 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo Gemäss Beispiel Set and Toggle Selection Filters Example (VBA)Bestehende Filter entfernen Code: Dim params As Variant 'Clear all existing selection filters params = swApp.GetSelectionFilters swApp.SetSelectionFilters params, False
Block Filter aktivieren Code: swApp.SetSelectionFilter 114, True 'swSelSUBSKETCHINST
Filter ausschalten Code: swApp.SetApplySelectionFilter False
Dein Code könnte dann so aussehen Code: Option ExplicitDim swApp As SldWorks.SldWorks Dim swDoc As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim params As Variant Dim FilterOn As Boolean Dim nUserCancel As Integer Sub GetBlockInstance() Set swApp = Application.SldWorks Set swDoc = swApp.ActiveDoc Set swSelMgr = swDoc.SelectionManager 'Clear all existing selection filters FilterOn = swApp.GetApplySelectionFilter params = swApp.GetSelectionFilters swApp.SetSelectionFilters params, False swApp.SetSelectionFilter 114, True 'swSelSUBSKETCHINST MsgBox "Please Select a block To continue" swDoc.ClearSelection2 True While swSelMgr.GetSelectedObjectType3(1, -1) <> 114 If swSelMgr.GetSelectedObjectCount2(-1) > 0 And swSelMgr.GetSelectedObjectType3(1, -1) <> 114 Then nUserCancel = MsgBox("Please Select a block Or CANCEL To exit", vbOKCancel) If nUserCancel = vbCancel Then Exit Sub End If swDoc.ClearSelection2 True End If DoEvents Wend 'Set previous selection filters swApp.SetSelectionFilters (params), True swApp.SetApplySelectionFilter FilterOn MsgBox "Success: You selected a Block Instance" End Sub
------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Ingenieur (m/w/d) Produktentwicklung | Ovesco Endoscopy ist ein forschendes Medizintechnikunternehmen in der flexiblen Endoskopie. Wir entwickeln, produzieren und vertreiben innovative Instrumente und Systeme zur Behandlung von gastrointestinalen Erkrankungen. Dabei bieten wir umfassende Verfahren und begleiten unsere Kunden auf dem gesamten Weg von der Schulung bis hin zur Intervention. Unsere ausgeprägte Innovationskultur, die Sinnhaftigkeit ... | Anzeige ansehen | Medizintechnik |
|
mechanikuss Mitglied Konstruktion Anlagen+Werkzeug+Maschinen
Beiträge: 97 Registriert: 04.06.2002 MS-Windows 10 Pro MS-Office Pro Plus 2019 DS-Solidworks 2019 Pro
|
erstellt am: 04. Jul. 2020 12:29 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo Andreas, super - funktioniert perfekt. Ich war auch schon nah dran. Was mich nur verwirrt hatte, ist dass der Filter-Status in der Filter-Symbolleiste nicht korrekt (also gedrückt) angezeigt wird. Besten Dank und Grüße Fredl ------------------ LIeben Gruß vom mechanikuss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |