Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Inaktive Blöcke löschen

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: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Technikerschüler der staatlichen Feintechnikschule Schwenningen zu Besuch bei SolidCAM GmbH in Schramberg
Autor Thema:  Inaktive Blöcke löschen (817 mal gelesen)
Pete85
Mitglied



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

Beiträge: 156
Registriert: 09.05.2016

erstellt am: 13. Jul. 2021 13:45    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 zusammen,

ist es möglich inaktive Blöcke, per Makro, auf einer Zeichnung zu löschen.

habe hierzu leider nichts gefunden.

Danke

und

Gruß :-)

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

deckelmaho
Mitglied
Konstrukteur


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

Beiträge: 239
Registriert: 03.03.2020

SolidWorks 2023 SP5
Windows 10 64bit
Office 2019

erstellt am: 13. Jul. 2021 14:52    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 Pete85 10 Unities + Antwort hilfreich

Hallo Pete,

der SWXHelper hat diese Funktion in dem Feature "WorkpieceEdges" dabei.

https://swxtools.de/tutorials
https://swxtools.de/downloads

Wenn du lieber Code willst, kann ich dort auch rauskopieren

------------------
HOMEPAGE | SWXTools.de - SWXHelper für SOLIDWORKS
KONTAKT | support@swxtools.de
FACEBOOK | facebook.com/SWXHelper
TWITTER | twitter.com/SWXTools

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

Pete85
Mitglied



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

Beiträge: 156
Registriert: 09.05.2016

erstellt am: 13. Jul. 2021 15: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

Der Code wäre super :-)

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

deckelmaho
Mitglied
Konstrukteur


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

Beiträge: 239
Registriert: 03.03.2020

SolidWorks 2023 SP5
Windows 10 64bit
Office 2019

erstellt am: 13. Jul. 2021 17: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 Pete85 10 Unities + Antwort hilfreich

Ich bin gerade etwas in Eile, daher hier der Code.
Der muss aber noch in VBA geändert werden. Der ist aus dem SWXHelper kopiert.
Die verwendeten Methoden, hast du ja damit...

Code:

  Private Sub UngenutzteLoeschen()

        swApp = GetTheCurrentSolidworksInstance()
        swModelDoc = swApp.ActiveDoc
        swSketchManager = swModelDoc.SketchManager


        Dim swFeat As Feature
        Dim swSketchBlockDef As SketchBlockDefinition
        Dim vSketchBlockDefs As Object
        Dim vSketchBlockDef As Object
        Dim retval As Object

        vSketchBlockDefs = swSketchManager.GetSketchBlockDefinitions
        If Not IsNothing(vSketchBlockDefs) Then
            For Each vSketchBlockDef In vSketchBlockDefs
                swSketchBlockDef = vSketchBlockDef
                'Debug.Print "Anzahl der Blockinstanzen: " & swSketchBlockDef.GetInstanceCount
                swFeat = swSketchBlockDef.GetFeature
                If swSketchBlockDef.GetInstanceCount = 0 Then
                    retval = swFeat.Select2(False, -1)
                    retval = swModelDoc.DeleteSelection(False)
                    'Debug.Print swFeat.Name & " wurde gelöscht"
                Else
                    'Debug.Print swFeat.Name & " wird nicht gelöscht"
                End If
            Next
        End If

    End Sub


------------------
HOMEPAGE | SWXTools.de - SWXHelper für SOLIDWORKS
KONTAKT | support@swxtools.de
FACEBOOK | facebook.com/SWXHelper
TWITTER | twitter.com/SWXTools

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

Pete85
Mitglied



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

Beiträge: 156
Registriert: 09.05.2016

erstellt am: 14. Jul. 2021 07:26    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

Moin...

ich versteh da gerade was nicht... bei

Code:
If Not IsNothing(vSketchBlockDefs) Then
            For Each vSketchBlockDef In vSketchBlockDefs
           
                swSketchBlockDef = vSketchBlockDef


bringt der Kompiler mir das Sub oder Funktion nicht definiert ist.

Markiert miur den Befehl IsNothing.

muss ich da noch einen Verweis definieren?

Vielen Dank

Gruß Pete

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

deckelmaho
Mitglied
Konstrukteur


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

Beiträge: 239
Registriert: 03.03.2020

SolidWorks 2023 SP5
Windows 10 64bit
Office 2019

erstellt am: 14. Jul. 2021 07:52    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 Pete85 10 Unities + Antwort hilfreich

IsNothing ist eine VB.net Methode

entweder verwendest du:

Code:
If Not MyObject is Nothing then

oder erstellts eine Funktion

Code:
Public Function IsNothing(ByRef MyObject As Variant) As Boolean
    IsNothing = (MyObject Is Nothing)
End Function

------------------
HOMEPAGE | SWXTools.de - SWXHelper für SOLIDWORKS
KONTAKT | support@swxtools.de
FACEBOOK | facebook.com/SWXHelper
TWITTER | twitter.com/SWXTools

[Diese Nachricht wurde von deckelmaho am 14. Jul. 2021 editiert.]

[Diese Nachricht wurde von deckelmaho am 14. Jul. 2021 editiert.]

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

Pete85
Mitglied



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

Beiträge: 156
Registriert: 09.05.2016

erstellt am: 14. Jul. 2021 13: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

Servus,

also irgendwie ist da der Wurm drin.

"MyObject" ist jetzt "Leer" und ich bekomme einen Laufzeitfehler '424'


ich seh es gerade nicht was nicht passt...


Code:

Sub UngenutzteLoeschen()
       

        Dim swApp As SldWorks.SldWorks
        Dim swFeat As Feature
        Dim swSketchBlockDef As SldWorks.SketchBlockDefinition
        Dim vSketchBlockDefs As Variant
        Dim vSketchBlockDef As Variant
        Dim swSketchManager As Variant
        Dim retval As Object
        Dim swmodeldoc As SldWorks.ModelDoc2
       
        Set swApp = Application.SldWorks
        Set swmodeldoc = swApp.ActiveDoc
        Set swSketchManager = swmodeldoc.SketchManager

        vSketchBlockDefs = swSketchManager.GetSketchBlockDefinitions
       
             
        If Not IsNothing(vSketchBlockDefs) Then
            For Each vSketchBlockDef In vSketchBlockDefs
           
                swSketchBlockDef = vSketchBlockDef
                'Debug.Print "Anzahl der Blockinstanzen: " & swSketchBlockDef.GetInstanceCount
                swFeat = swSketchBlockDef.GetFeature
                If swSketchBlockDef.GetInstanceCount = 0 Then
                    retval = swFeat.Select2(False, -1)
                    retval = swmodeldoc.DeleteSelection(False)
                    'Debug.Print swFeat.Name & " wurde gelöscht"
                Else
                    'Debug.Print swFeat.Name & " wird nicht gelöscht"
                End If
            Next
        End If

    End Sub

Public Function IsNothing(ByRef MyObject As Variant) As Boolean
    IsNothing = (MyObject Is Nothing)
End Function



Ich hab den unteren Teil nach "If Not is Nothing" noch nicht umgeschrieben. bin ja noch nicht so weit gekommen :-)

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: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 14. Jul. 2021 14:03    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 Pete85 10 Unities + Antwort hilfreich

Hallo Pete,

hier der Code auf VBA umgemünst, an stelle auf "Nothing" (IsNothing) prüfe ich das Arry auf "Empty" (IsEmpty).

Code:
  Sub Main()

        Set swApp = Application.SldWorks
        Set swModelDoc = swApp.ActiveDoc
        Set swSketchManager = swModelDoc.SketchManager


        Dim swFeat As Feature
        Dim swSketchBlockDef As SketchBlockDefinition
        Dim vSketchBlockDefs As Variant
        Dim vSketchBlockDef As Variant
        Dim retval As Boolean

        vSketchBlockDefs = swSketchManager.GetSketchBlockDefinitions
        If Not IsEmpty(vSketchBlockDefs) Then
            For Each vSketchBlockDef In vSketchBlockDefs
                Set swSketchBlockDef = vSketchBlockDef
                'Debug.Print "Anzahl der Blockinstanzen: " & swSketchBlockDef.GetInstanceCount
                Set swFeat = swSketchBlockDef.GetFeature
                If swSketchBlockDef.GetInstanceCount = 0 Then
                    retval = swFeat.Select2(False, -1)
                    retval = swModelDoc.DeleteSelection(False)
                    'Debug.Print swFeat.Name & " wurde gelöscht"
                Else
                    'Debug.Print swFeat.Name & " wird nicht gelöscht"
                End If
            Next
        End If

    End Sub


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

deckelmaho
Mitglied
Konstrukteur


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

Beiträge: 239
Registriert: 03.03.2020

SolidWorks 2023 SP5
Windows 10 64bit
Office 2019

erstellt am: 14. Jul. 2021 14:16    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 Pete85 10 Unities + Antwort hilfreich

Der Variant möchte IsEmpty() statt IsNothing.

So sollte es funktionieren... 

Code:

Sub UngenutzteLoeschen()
      
        Dim swApp As SldWorks.SldWorks
        Dim swFeat As Feature
        Dim swSketchBlockDef As Object
        Dim vSketchBlockDefs As Variant
        Dim vSketchBlockDef As Variant
        Dim swSketchManager As Variant
        Dim retval As Variant
        Dim swmodeldoc As SldWorks.ModelDoc2
      
        Set swApp = Application.SldWorks
        Set swmodeldoc = swApp.ActiveDoc
        Set swSketchManager = swmodeldoc.SketchManager

        vSketchBlockDefs = swSketchManager.GetSketchBlockDefinitions
      
            
        If Not IsEmpty(vSketchBlockDefs) Then
            For Each vSketchBlockDef In vSketchBlockDefs
          
                Set swSketchBlockDef = vSketchBlockDef
                'Debug.Print "Anzahl der Blockinstanzen: " & swSketchBlockDef.GetInstanceCount
                Set swFeat = swSketchBlockDef.GetFeature
                If swSketchBlockDef.GetInstanceCount = 0 Then
                    retval = swFeat.Select2(False, -1)
                    retval = swmodeldoc.DeleteSelection(False)
                    'Debug.Print swFeat.Name & " wurde gelöscht"
                Else
                    'Debug.Print swFeat.Name & " wird nicht gelöscht"
                End If
            Next
        End If

    End Sub



EDIT:Da war ich wohl zu spät
------------------
HOMEPAGE | SWXTools.de - SWXHelper für SOLIDWORKS
KONTAKT | support@swxtools.de
FACEBOOK | facebook.com/SWXHelper
TWITTER | twitter.com/SWXTools

[Diese Nachricht wurde von deckelmaho am 14. Jul. 2021 editiert.]

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

Pete85
Mitglied



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

Beiträge: 156
Registriert: 09.05.2016

erstellt am: 14. Jul. 2021 14: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

Vielen Dank!!!

das mit isEmpty kannte ich schon... macht auch sinn. hab ja eigentlich gesehen, das der Wert Leer ist...

danke auch fürs umschreiben...
Ich werde es auf jedenfall nachvollziehen.

in Zeichnungen hab ich noch ca. garnichts programmiert... bleibt also spannend..

Gruß Pete

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

deckelmaho
Mitglied
Konstrukteur


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

Beiträge: 239
Registriert: 03.03.2020

SolidWorks 2023 SP5
Windows 10 64bit
Office 2019

erstellt am: 14. Jul. 2021 15:04    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 Pete85 10 Unities + Antwort hilfreich

Dabei sind gerade Zeichnungen von den Möglichkeiten super umfangreich.

Fuchs dich rein, die API kann echt Spaß machen 

Gruß Kevin

------------------
HOMEPAGE | SWXTools.de - SWXHelper für SOLIDWORKS
KONTAKT | support@swxtools.de
FACEBOOK | facebook.com/SWXHelper
TWITTER | twitter.com/SWXTools

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)2024 CAD.de | Impressum | Datenschutz