Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  ThisDrawing.Blocks

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 Autodesk Produkte
  
PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
Autor Thema:  ThisDrawing.Blocks (2587 mal gelesen)
egug
Mitglied
 


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

Beiträge: 42
Registriert: 11.11.2001

erstellt am: 13. Jun. 2008 18: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

schönen guten Abend an alle Nichtfussballfans :-)

habe folgende VBA Routine die in einer Zeichnung den Block mit dem Namen LOGO suchen soll und die enthaltenen Attribute anzeigen soll.

Private Sub CommandButton19_Click()
  Set allblocks = ThisDrawing.Blocks
  For Each blk In allblocks
    If blk.Name = "LOGO " Then
      MsgBox (blk.Name)
      'Block Attribute auslesen
    End If
  Next
End Sub


Besten Dank für Eure Hilfe

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 13. Jun. 2008 20:06    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 egug 10 Unities + Antwort hilfreich

 
Zitat:
schönen guten Abend an alle Nichtfussballfans :-)

Ich fühle mich zwar nicht angesprochen, aber ...

Du durchsuchst die Blockdefinitionen. Da gibt es keine Attribute mit Werten. Wenn du nur wissen willst ob die Blockdefinition eine Attributsdefinition hat, musst du alle Entitys in der Blockdefinition durchlaufen.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht. 
www.ib-stelberg.de

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

egug
Mitglied
 


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

Beiträge: 42
Registriert: 11.11.2001

erstellt am: 15. Jun. 2008 10: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

was ich eigentlich möchte ist folgendes :

- block in der dwg suchen
- da ich weiss dass der block attribute hat, diese ausgeben z.B. msgbox, file etc.

diese routine funktioniert, aber ich will den block nicht picken müssen

  ThisDrawing.Utility.GetEntity blk, pickedPoint, "Block picken"
  If blk.HasAttributes = True Then
      If blk.Name = "LOGO" Then
        numfile = Replace(zeichnung, ".dwg", ".num")
        Open numfile For Output As #1
        Write #1, zeichnung
        Block_Attribute = blk.GetAttributes
        For cnt = LBound(Block_Attribute) To UBound(Block_Attribute)
          atttxt = Block_Attribute(cnt).TagString + " : " + Block_Attribute(cnt).textString
          Select Case Block_Attribute(cnt).TagString
            Case "TITEL", "NAME"
              Write #1, atttxt
          End Select
        Next
        Close #1
      End If
  End If

Besten Dank für die Hilfe

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9807
Registriert: 01.12.2003

AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil
Inventor AIP 4-11, 2008 -2022
Win 10

erstellt am: 15. Jun. 2008 11: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 egug 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von egug:
was ich eigentlich möchte ist folgendes :

- block in der dwg suchen ...aber ich will den block nicht picken müssen


Dann mache eine Auswahl (Selection) auf alle Blockreferenzen (Insert) namens "Logo" in der Zeichnung, und Zeige dann die Atribute an.
Hier hats Wilfried schon fix und fertig vorgestellt: http://ww3.cad.de/foren/ubb/Forum259/HTML/001218.shtml#000007

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

egug
Mitglied
 


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

Beiträge: 42
Registriert: 11.11.2001

erstellt am: 15. Jun. 2008 18:51    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


habe nun die Routine von Stelli mal eingebunden, die funktioniert auch :-)

    Dim sset As AcadSelectionSet
    Dim Entity As AcadEntity
    Dim fType%(1), fData(1)
    On Error Resume Next
 
    Set sset = ThisDrawing.SelectionSets("Rahmen")
    If err.Number Then
      Set sset = ThisDrawing.SelectionSets.Add("Rahmen")
    End If
    On Error GoTo 0
   
    fType(0) = 0
    fData(0) = "INSERT"
    fType(1) = 8  ' Layer
    fData(1) = "Layer1"
    fType(1) = 2  ' Blockname
    fData(1) = "LOGO"
   
    sset.Select acSelectionSetAll, , , fType, fData
    For Each Entity In sset
        If Entity.ObjectName = "AcDbBlockReference" Then
          MsgBox Entity.Name
        End If
    Next
    sset.Delete

aber ich verstehe noch nicht, wie ich an die Attribute des selektierten Blocks rankomme

schönen Abend

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9807
Registriert: 01.12.2003

AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil
Inventor AIP 4-11, 2008 -2022
Win 10

erstellt am: 15. Jun. 2008 21: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 egug 10 Unities + Antwort hilfreich


VBADoku-GetAttributes.jpg

 
Benutze doch die Suche hier bei CAD.de - hier hab ich es noch einmal für dich gemacht.
Nancy (startrek) hat da schon mal Beispielcode eingestellt. http://ww3.cad.de/foren/ubb/Forum259/HTML/001048.shtml#000001

Zum Auslesen der Attribute einer Blockreferenz benutzt man die Methode GetAttributes.
Dazu steht in der VBA-Entwickerdoku von AutoCAD (F1) auch ein lauffähiges VBA Programm (siehe Example)

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 16. Jun. 2008 10: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 egug 10 Unities + Antwort hilfreich

Hallo egug,

brauchst doch nur Deinen ersten obigen Code verwenden und die Zuweisung

blk = Entity

verwenden.

Grüße,
Klaus

[Edit]natürlich nicht den ersten, sondern Deinen zweiten Eintrag. Du ersetzt ja das picken mit der SelectionSet-Auswahl. [\Edit]

[Diese Nachricht wurde von KlaK am 16. Jun. 2008 editiert.]

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



Anzeige:Infos zum Werbeplatz >>

HGS-STAHL CAD APP für AEC - Architektur-, Ingenieur- und Bauwesen

Dieses Tool ermöglicht eine präzise Planung und Visualisierung von Stahlbausystemen und trägt dazu bei, die Effizienz und Qualität des Stahlbaus zu verbessern. HGS-STAHL ist ein Software-Tool von HGSimon CAD Engineering für den Stahlbau, für AUTO-CAD; BRICS-CAD; ZWCAD; GSTAR-CAD

egug
Mitglied
 


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

Beiträge: 42
Registriert: 11.11.2001

erstellt am: 16. Jun. 2008 19:01    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

zuerst mal besten Dank an alle die mich unterstützt haben. Habs geschafft und hier mal eine Funktionsbeschreibung des Programms.

- suche alle DWG's in einem ausgewählten Directory
- erstelle von jeder gefundenen DWG ein ASCII File von dem Block LOGO mit den
  vorbestimmten Attributen TITEL, ZEICHNUNGSNUMMER, INDEX und DATUM

hier der Programmcode :

Private Sub CommandButton1_Click()
  Dim zeichnung, numfile, atttxt As String
  Dim Objekt As AcadObject, myAtts, att
  Dim j, cnt As Integer
  Dim sNextFile, startfo As String
  Dim oShell, oFolder As Object
  Set oShell = CreateObject("Shell.Application")
  Set oFolder = oShell.BrowseForFolder(HWND, "Ordner auswählen", 1)
  If Not oFolder Is Nothing Then
    cnt = 0
    startfo = oFolder.Self.Path
    sNextFile = Dir$(startfo & "\*.DWG")
    Do While sNextFile <> ""
      ComboBox1.AddItem (startfo & "\" & sNextFile)
      sNextFile = Dir$()
      cnt = cnt + 1
    Loop
    ComboBox1.ListIndex = 0
  Else
    MsgBox ("es wurde kein Ordner ausgewählt")
    Exit Sub
  End If
  For j = 0 To cnt - 1
    ComboBox1.ListIndex = j
    Documents.Open ComboBox1.Text, True
    zeichnung = ThisDrawing.FullName
    numfile = Replace(zeichnung, ".dwg", ".num")
    Open numfile For Output As #1
    Write #1, zeichnung
    For Each Objekt In ActiveDocument.PaperSpace
      If Objekt.ObjectName = "AcDbBlockReference" Then
        If Objekt.Name = "LOGO" Then
          If Objekt.HasAttributes Then _
            myAtts = Objekt.GetAttributes
            For Each att In myAtts
              Select Case att.TagString
                Case "TITEL", " ZEICHNUNGSNUMMER ", "INDEX",  "DATUM"
                    Write #1, (att.TagString & " : " & att.TextString)
              End Select
            Next
          End If
        End If
    Next
    Documents.Close
    Close #1
  Next
  MsgBox ("File wurde erstellt"
End Sub

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