Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Blöcke auslesen

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
  
SIMULIA Regional User Meeting 2026, eine Veranstaltung am 17.06.2026
Autor Thema:  Blöcke auslesen (4255 mal gelesen)
maho007
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 09.12.2010

SWx 2009

erstellt am: 10. Dez. 2010 08:31    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,

ich habe folgendes Problem: Ich soll alle Blöcke aus den Konstruktionszeichnungen sichten und dann hinsichtlich Terminologie überprüfen.
Jetzt stellt sich mir die Frage, ob man die Blöcke einer Zeichnung ggf. über ein Makro oder eine API Text automatisch auslesen könnte und diese in einer beispielsweise Excel-Tabelle transferiert werden.

schöne Grüße,
Martin

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1384
Registriert: 20.12.2003

SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000

erstellt am: 10. Dez. 2010 08:38    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 maho007 10 Unities + Antwort hilfreich

Moin Martin,

herzlich willkommen "on Board"...
Schau dir mal das Beispiel "Get Block Information Example (VBA)" in der
API-Hilfe an. Da findest du schon mal erste Infos...

------------------
==========
Gruß
Andreas
==========

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

nahe
Ehrenmitglied



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

Beiträge: 1764
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 10. Dez. 2010 11:14    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 maho007 10 Unities + Antwort hilfreich

Hallo

was verstehst Du unter "hinsichtlich Terminologie"?

Welche Informationen sollen wie ausgelesen werden?

------------------
Grüße
Heinz

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

maho007
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 09.12.2010

SWx 2009

erstellt am: 10. Dez. 2010 11: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

Erst einmal "Danke" für die Antworten.
Ich möchte gerne einfach nur den Text aus dem Block in einer Excel Liste kopiert haben. Hintergrund: Im Rahmen eines Projektes wurde ich damit beauftragt, die Datenqualität von Blöcken unter SolidWorks zu untersuchen. Und Zeichnungen gibt es Unmengen.
Deswegen die Überlegung, die Texte aus Excel zu untersuchen. Also nur den reinen STRING, wenn der Text als solches in SWXSolidWorks als Blcok hinterlegt wird.

Grüße

[Diese Nachricht wurde von maho007 am 10. Dez. 2010 editiert.]

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

nahe
Ehrenmitglied



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

Beiträge: 1764
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 10. Dez. 2010 11:58    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 maho007 10 Unities + Antwort hilfreich

jetzt hab ich noch etwas vergessen zu fragen

sind es wirklich Texte in Blöcken oder Attribute?

PS
schönes Wochenende, werde erst wieder am Mo antworten können

------------------
Grüße
Heinz

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

maho007
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 09.12.2010

SWx 2009

erstellt am: 13. Dez. 2010 10: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,

die Blöcke, welche ich bearbeiten soll besitzen keine Attribute, weil der Button im PopertyManager unter Text-/Bemaßungsanzeige grau hinterlegt ist. Aber falls man die Attribute ohne Beschwerden mitnhemen kann würde ich dies außerdem gerne machen.
Lese mich gerade in API ein unter http://solidworks.cad.de/apitut_kap04.htm
Kennt jemand vielleicht noch weitere hilfreiche Einführungen?

grüße

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

nahe
Ehrenmitglied



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

Beiträge: 1764
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 13. Dez. 2010 13: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 maho007 10 Unities + Antwort hilfreich

Hallo

da versuch das mal
ACHTUNG:
Du musst unter "Extras->Verweise" auf das "Excel Object Library" verweisen

Sub main()
  Dim swapp                       As Object
  Dim swmodel                     As Object
  Dim swDraw                      As Object
  Dim SwSketchMgr                 As Object
  Dim swblockdef                  As Object
  Dim vBlockDef                   As Variant
  Dim vBlockInst                  As Variant
  Dim vNote                       As Variant
  Dim swNote                      As Object
  Dim i, j                        As Integer
 
  Dim excel                       As Object
  
               
  Set swapp = CreateObject("SldWorks.Application")
  Set swmodel = swapp.ActiveDoc
  Set swDraw = swmodel
  If swDraw Is Nothing Then
    MsgBox "Keine Zeichnung geladen!", vbOKOnly, "Fehler"
    Exit Sub
  End If
     

  Set SwSketchMgr = swmodel.SketchManager
  vBlockDef = SwSketchMgr.GetSketchBlockDefinitions

  If Not IsEmpty(vBlockDef) Then
 
    ' Excel initialisieren
    Set excel = CreateObject("excel.application")
    excel.Visible = True
    excel.Workbooks.Add
    excel.ActiveSheet.Cells(1, 1).Value = "Blockname"
    excel.ActiveSheet.Cells(1, 2).Value = "Anzahl"
    excel.ActiveSheet.Cells(1, 3).Value = "Text"
   
    ' für alle Blockdefinitionen
    For i = 0 To UBound(vBlockDef)
      Set swblockdef = vBlockDef(i)
     
      ' Blockname
      excel.ActiveSheet.Cells(i + 2, 1).Value = swblockdef.GetFeature.Name
     
      ' wie oft wurde der Block eingefügt
      vBlockInst = swblockdef.GetInstances
      excel.ActiveSheet.Cells(i + 2, 2).Value = swblockdef.GetInstanceCount
    
      ' Texte vom Block
      vNote = swblockdef.GetNotes
      If Not IsEmpty(vNote) Then
        For j = 0 To UBound(vNote)
          Set swNote = vNote(j)
          excel.ActiveSheet.Cells(i + 2, 3 + j).Value = swNote.GetText
        Next j
      End If
    Next i
  Else
    MsgBox "Keine Blöcke gefunden!", vbOKOnly, "Meldung"
  End If
End Sub


------------------
Grüße
Heinz

[Diese Nachricht wurde von nahe am 13. Dez. 2010 editiert.]

[Diese Nachricht wurde von nahe am 13. Dez. 2010 editiert.]

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

maho007
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 09.12.2010

SWx 2009

erstellt am: 13. Dez. 2010 16:40    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

Danke Heinz,ich habe es schon kurz ausprobiert und es funktioniert. Wer hätte das gedacht 
Jetzt ist aber erstmal gleich Feierabend und Morgen werde ich mich dann in die Tiefen dieses Programm der API Sprache hereinlesen. Habe auch schon ein kleines einfacheres Tool gebastelt.

Grüße,
Martin

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

nahe
Ehrenmitglied



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

Beiträge: 1764
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 14. Dez. 2010 06:40    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 maho007 10 Unities + Antwort hilfreich

Hallo nochmals

ich hab das noch ein wenig verbessert
1.) Abfrage ob Zeichnung geladen ist od. nicht
2.) Abfrage ob es sich um ein Attribut handelt
    (wenn TagName = "")
    od. nicht Attribute werden nicht ausgewertet

Sub get_Block_Text()
  Dim swapp                      As Object
  Dim swmodel                    As Object
  Dim swDraw                      As Object
  Dim SwSketchMgr                As Object
  Dim swblockdef                  As Object
  Dim vBlockDef                  As Variant
  Dim vBlockInst                  As Variant
  Dim vNote                      As Variant
  Dim swNote                      As Object
  Dim i, j                        As Integer
 
  Dim excel                      As Object
  Dim edoc                        As Object
  Dim temp                        As String
 
               
  Set swapp = CreateObject("SldWorks.Application")
  Set swmodel = swapp.ActiveDoc
  Set swDraw = swmodel
 
  If swDraw Is Nothing Then
    MsgBox "Keine Datei geladen!", vbOKOnly, "Fehler"
    Exit Sub
  End If
 
  If swDraw.GetType <> 3 Then
    MsgBox "Keine Zeichnung geladen!", vbOKOnly, "Fehler"
    Exit Sub
  End If
     

  Set SwSketchMgr = swmodel.SketchManager
  vBlockDef = SwSketchMgr.GetSketchBlockDefinitions

  If Not IsEmpty(vBlockDef) Then
    ' Excel initialisieren
    Set excel = CreateObject("excel.application")
    excel.Visible = True
    excel.Workbooks.Add
    excel.ActiveSheet.Cells(1, 1).Value = "Blockname"
    excel.ActiveSheet.Cells(1, 2).Value = "Anzahl"
    excel.ActiveSheet.Cells(1, 3).Value = "Text"
   
    ' für alle Blockdefinitionen
    For i = 0 To UBound(vBlockDef)
      Set swblockdef = vBlockDef(i)
     
      ' Blockname
      excel.ActiveSheet.Cells(i + 2, 1).Value = swblockdef.GetFeature.Name
     
      ' wie oft wurde der Block eingefügt
      excel.ActiveSheet.Cells(i + 2, 2).Value = swblockdef.GetInstanceCount
   
      ' Texte vom Block
      vNote = swblockdef.GetNotes
      If Not IsEmpty(vNote) Then
        temp = ""
        For j = 0 To UBound(vNote)
          Set swNote = vNote(j)
          If swNote.TagName = "" Then
            excel.ActiveSheet.Cells(i + 2, 3 + j).Value = swNote.GetText
          End If
        Next j
      End If
    Next i
  Else
    MsgBox "Keine Blöcke gefunden!", vbOKOnly, "Meldung"
  End If
End Sub

------------------
Grüße
Heinz

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

nahe
Ehrenmitglied



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

Beiträge: 1764
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 14. Dez. 2010 13:37    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 maho007 10 Unities + Antwort hilfreich

anbei für Attribute

Sub get_Block_Attribute()
  Dim swapp                      As Object
  Dim swmodel                    As Object
  Dim swDraw                      As Object
  Dim SwSketchMgr                As Object
  Dim swblockdef                  As Object
  Dim swblockinst                As Object
  Dim vBlockDef                  As Variant
  Dim vBlockInst                  As Variant
  Dim vNote                      As Variant
  Dim attr                        As Variant
  Dim att                        As Object
  Dim swNote                      As Object
  Dim i, j, z, k, y              As Integer
 
  Dim excel                      As Object
  Dim edoc                        As Object
  Dim temp                        As String
 
               
  Set swapp = CreateObject("SldWorks.Application")
  Set swmodel = swapp.ActiveDoc
  Set swDraw = swmodel
 
  If swDraw Is Nothing Then
    MsgBox "Keine Datei geladen!", vbOKOnly, "Fehler"
    Exit Sub
  End If
 
  If swDraw.GetType <> 3 Then
    MsgBox "Keine Zeichnung geladen!", vbOKOnly, "Fehler"
    Exit Sub
  End If
     

  Set SwSketchMgr = swmodel.SketchManager
  vBlockDef = SwSketchMgr.GetSketchBlockDefinitions

  If Not IsEmpty(vBlockDef) Then
    ' Excel initialisieren
    Set excel = CreateObject("excel.application")
    excel.Visible = True
    excel.Workbooks.Add
    excel.ActiveSheet.Cells(1, 1).Value = "Blockname"
    excel.ActiveSheet.Cells(1, 2).Value = "Blockinstanz"
    y = 1
    j = 0
   
    ' für alle Blockdefinitionen
    For i = 0 To UBound(vBlockDef)
   
      Set swblockdef = vBlockDef(i)
   
      vBlockInst = swblockdef.GetInstances
      For z = 0 To UBound(vBlockInst)
        Set swblockinst = vBlockInst(z)
        attr = swblockinst.GetAttributes
        If Not IsEmpty(attr) Then
          If temp = "" Then
            temp = swblockdef.GetFeature.Name
            y = y + 1
            excel.ActiveSheet.Cells(y, 1).Value = swblockdef.GetFeature.Name
          ElseIf temp <> swblockdef.GetFeature.Name Then
            y = y + 1
            excel.ActiveSheet.Cells(y, 1).Value = swblockdef.GetFeature.Name
            temp = swblockdef.GetFeature.Name
          End If
          y = y + 1
          excel.ActiveSheet.Cells(y, 2).Value = swblockinst.Name
          For k = 0 To UBound(attr)
            Set att = attr(k)
            excel.ActiveSheet.Cells(1, 3 + k * 2).Value = "Attribut"
            excel.ActiveSheet.Cells(1, 4 + k * 2).Value = "Wert"
           
            excel.ActiveSheet.Cells(y, 3 + k * 2).Value = att.TagName
            excel.ActiveSheet.Cells(y, 4 + k * 2).Value = att.GetText
          Next k
        End If
      Next z
    Next i
  Else
    MsgBox "Keine Blöcke gefunden!", vbOKOnly, "Meldung"
  End If
End Sub

------------------
Grüße
Heinz

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

maho007
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 09.12.2010

SWx 2009

erstellt am: 15. Dez. 2010 11:54    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 Heinz,

ob ich die Attribute mit einbaue in das Werkzeug ist noch nicht sicher.
Aber werde es definitiv benutzen oder meiner Nachfolgeperson zur Verfügung stellen, damit wir alle Textblöcke mal pflegen.

Eine andere Frage:
Gibt es eine Möglichkeit, dass ich Elemente(beispielsweise einen Textblock) mit einem Editor öffne und dann alle Werte(swblockdef.GetFeature.Name, swblockdef.GetNotes) überblicken kann! Damit ich mir mal ein Bild machen kann, was so alles hinter einem Textblock oder anderen SolidWorks Objekten steckt.

Viel Grüße,
Martin

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

nahe
Ehrenmitglied



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

Beiträge: 1764
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 15. Dez. 2010 12: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 maho007 10 Unities + Antwort hilfreich

Hallo Martin

dazu fällt mir nichts ein, außer wieder ein Makro zu programmieren
das Dir das so darstellt.
So in der Art
  Block auswählen
    Makro über Tastenkombination starten
      Daten anzeigen

Aber das sollte mit den Informationen die Du im obigen Makro vorliegen hast kein Problem zu sein.

------------------
Grüße
Heinz

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