Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Block ein-/ausblenden über Marcos

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Direct Editing in SOLIDWORKS
Autor Thema:   Block ein-/ausblenden über Marcos (1883 mal gelesen)
Thomas 3D
Mitglied



Sehen Sie sich das Profil von Thomas 3D an!   Senden Sie eine Private Message an Thomas 3D  Schreiben Sie einen Gästebucheintrag für Thomas 3D

Beiträge: 389
Registriert: 17.09.2008

AutoCad 2016
Athena 2015
SWX 2016

erstellt am: 20. Nov. 2012 11:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.
FEM Simulant / Konstrukteur / SolidWorks Händchenhalter



Sehen Sie sich das Profil von GDawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2620
Registriert: 12.07.2004

SolidWorks_2o18 SP4.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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Thomas 3D an!   Senden Sie eine Private Message an Thomas 3D  Schreiben Sie einen Gästebucheintrag für Thomas 3D

Beiträge: 389
Registriert: 17.09.2008

AutoCad 2016
Athena 2015
SWX 2016

erstellt am: 21. Nov. 2012 10:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Draw1.zip

 
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.
FEM Simulant / Konstrukteur / SolidWorks Händchenhalter



Sehen Sie sich das Profil von GDawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2620
Registriert: 12.07.2004

SolidWorks_2o18 SP4.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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von mechanikuss an!   Senden Sie eine Private Message an mechanikuss  Schreiben Sie einen Gästebucheintrag für mechanikuss

Beiträge: 85
Registriert: 04.06.2002

MS-Windows 10 Pro
MS-Office 2010
DS-Solidworks 2014 Office

erstellt am: 27. Jun. 2020 11:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2515
Registriert: 18.07.2012

-Solid Works 2019 SP3
-Pro Engineer WF 3

erstellt am: 29. Jun. 2020 13:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von mechanikuss an!   Senden Sie eine Private Message an mechanikuss  Schreiben Sie einen Gästebucheintrag für mechanikuss

Beiträge: 85
Registriert: 04.06.2002

MS-Windows 10 Pro
MS-Office 2010
DS-Solidworks 2014 Office

erstellt am: 29. Jun. 2020 13:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von TestMitglied an!   Senden Sie eine Private Message an TestMitglied  Schreiben Sie einen Gästebucheintrag für TestMitglied

Beiträge: 74
Registriert: 15.06.2005

Nur so zum Test

erstellt am: 29. Jun. 2020 15:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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 Explicit

Dim 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


Sehen Sie sich das Profil von mechanikuss an!   Senden Sie eine Private Message an mechanikuss  Schreiben Sie einen Gästebucheintrag für mechanikuss

Beiträge: 85
Registriert: 04.06.2002

MS-Windows 10 Pro
MS-Office 2010
DS-Solidworks 2014 Office

erstellt am: 30. Jun. 2020 09:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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
Beratender Ingenieur




Sehen Sie sich das Profil von Ralf Tide an!   Senden Sie eine Private Message an Ralf Tide  Schreiben Sie einen Gästebucheintrag für Ralf Tide

Beiträge: 4567
Registriert: 06.08.2001

.-)

erstellt am: 30. Jun. 2020 11:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von mechanikuss an!   Senden Sie eine Private Message an mechanikuss  Schreiben Sie einen Gästebucheintrag für mechanikuss

Beiträge: 85
Registriert: 04.06.2002

MS-Windows 10 Pro
MS-Office 2010
DS-Solidworks 2014 Office

erstellt am: 30. Jun. 2020 12:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich


myBlocks.zip

 
Hallo Ralf,

hier sind zwei Beispiele.

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



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2515
Registriert: 18.07.2012

-Solid Works 2019 SP3
-Pro Engineer WF 3

erstellt am: 30. Jun. 2020 14:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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
Beratender Ingenieur




Sehen Sie sich das Profil von Ralf Tide an!   Senden Sie eine Private Message an Ralf Tide  Schreiben Sie einen Gästebucheintrag für Ralf Tide

Beiträge: 4567
Registriert: 06.08.2001

.-)

erstellt am: 30. Jun. 2020 15:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich


024872_AufzeichnungMakro.mp4

 
Zitat:
Original erstellt von bk.sc:
...Im Grafikbereich...
Da funktioniert es einwandfrei wenn ich auf den "COMPRESSOR"-Text klicke...

HTH
Ralf

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mechanikuss
Mitglied
Konstruktion Anlagen+Werkzeug+Maschinen


Sehen Sie sich das Profil von mechanikuss an!   Senden Sie eine Private Message an mechanikuss  Schreiben Sie einen Gästebucheintrag für mechanikuss

Beiträge: 85
Registriert: 04.06.2002

MS-Windows 10 Pro
MS-Office 2010
DS-Solidworks 2014 Office

erstellt am: 30. Jun. 2020 15:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2515
Registriert: 18.07.2012

-Solid Works 2019 SP3
-Pro Engineer WF 3

erstellt am: 01. Jul. 2020 13:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

Beiträge: 715
Registriert: 18.05.2005

SolidWorks 2020 x64 SP3.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 1703
Microsoft Office 365 ProPlus
Microsoft Visual Studio Enterprise 2019

erstellt am: 02. Jul. 2020 10:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

Hallo zusammen

Falls es jemanden interessiert,
Hier gibt es eine Funktion, die die selektierte Blockinstanz zurück gibt.
Get selected Blockinstance in Drawing
Ist zwar in vb.net, sollte aber ohne Probleme ins VBA übersetzbar sein.

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2515
Registriert: 18.07.2012

-Solid Works 2019 SP3
-Pro Engineer WF 3

erstellt am: 02. Jul. 2020 12:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von mechanikuss an!   Senden Sie eine Private Message an mechanikuss  Schreiben Sie einen Gästebucheintrag für mechanikuss

Beiträge: 85
Registriert: 04.06.2002

MS-Windows 10 Pro
MS-Office 2010
DS-Solidworks 2014 Office

erstellt am: 03. Jul. 2020 10:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

Beiträge: 715
Registriert: 18.05.2005

SolidWorks 2020 x64 SP3.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 1703
Microsoft Office 365 ProPlus
Microsoft Visual Studio Enterprise 2019

erstellt am: 03. Jul. 2020 11:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich

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 Explicit

Dim 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

mechanikuss
Mitglied
Konstruktion Anlagen+Werkzeug+Maschinen


Sehen Sie sich das Profil von mechanikuss an!   Senden Sie eine Private Message an mechanikuss  Schreiben Sie einen Gästebucheintrag für mechanikuss

Beiträge: 85
Registriert: 04.06.2002

MS-Windows 10 Pro
MS-Office 2010
DS-Solidworks 2014 Office

erstellt am: 04. Jul. 2020 12:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas 3D 10 Unities + Antwort hilfreich


2020-07-04_12-22-02__Window.png

 
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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz