Hot News:
  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Auslesen von Blockeigenschaften mittels VBA möglich? (Seite 9)

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

Anzeige:

Thema geschlossen  Thema geschlossen!
UBBFriend: Senden Sie diese Seite per eMail an einen Freund!
Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen Dieses Thema ist 10 Seiten lang:   1  2  3  4  5  6  7  8  9  10

nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Auslesen von Blockeigenschaften mittels VBA möglich? (12900 mal gelesen)
BloodyMess
Mitglied
Applicationingenieur


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

Beiträge: 603
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 02. Nov. 2004 13: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
Hallo kiltswitch,

dann kann ich Dir nichts weiter raten, ausser den Code auseinander zu nehmen und zu schauen, ob er in die Schleife reingeht und was da evtl. schief läuft. Der Code nimmt ganz sicher alle Blockreferenzen einer Zeichnung und deren jeweilige Attribute auseinander und speichert diese in der besagten Datei. Keine Blockdefinitionen, sondern Blockreferenzen!

Gruß TP

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

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 02. Nov. 2004 13: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
Das darf ich leider nicht, da es firmeninterne Dateien sind. Tut mir leid. Sollte ich dies doch machen, fällt das auf, da alle Aktionen mitgeloggt werden.

K

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

BloodyMess
Mitglied
Applicationingenieur


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

Beiträge: 603
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 02. Nov. 2004 13: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
Hallo kiltswitch,

häng eine Datei mit zwei oder drei Blöcken mal an, dann kuck ich mal.

Gruß TP

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

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 02. Nov. 2004 12:56    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
Na die bei mir vorhandenen Zeichnungen bestehen alle aus Blöcken.
Und ich habe zum Testen Deines Codes in meiner dwg einen einfachen
Block angelegt und dachte nun, dass seine Attribute in die Textdatei übertragen werden. Es gibt wohl nicht immer Attribute von Blöcken?

Zitat:
Original erstellt von BloodyMess:
Hallo kiltswitch,

>Ich habe vor, dieses Menü in AutoCAD anzulegen, in welchem ich die Blöcke ansprechen und die Attribute ändern kann.
Wie wäre es, wenn Du auf den Block zoomst, dann muss der Benutzer nur noch einen Doppelklick auf den Block machen und hat automatisch die Attributbearbeitung offen.

Du kannst Dich einmal per Einzelschritt durch den Code bewegen und diese Zeile auf true und false beobachten.
'If AcMapEntity.ObjectName = "AcDbBlockReference" Then'

Wird die Schleife aufgerufen, gibt es einen Block. Das muss aber noch nicht heissen, dass dieser auch Attribute hat. Denn nur diese werden in der Textdatei ausgegeben. Es kann auch sein, dass es keinen Block gibt, sondern es sich um ein anderes Element handelt, dann läuft er auch nicht in die Schleife rein.

Gruß TP


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

BloodyMess
Mitglied
Applicationingenieur


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

Beiträge: 603
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 02. Nov. 2004 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
Hallo kiltswitch,

>Ich habe vor, dieses Menü in AutoCAD anzulegen, in welchem ich die Blöcke ansprechen und die Attribute ändern kann.
Wie wäre es, wenn Du auf den Block zoomst, dann muss der Benutzer nur noch einen Doppelklick auf den Block machen und hat automatisch die Attributbearbeitung offen.

Du kannst Dich einmal per Einzelschritt durch den Code bewegen und diese Zeile auf true und false beobachten.
'If AcMapEntity.ObjectName = "AcDbBlockReference" Then'

Wird die Schleife aufgerufen, gibt es einen Block. Das muss aber noch nicht heissen, dass dieser auch Attribute hat. Denn nur diese werden in der Textdatei ausgegeben. Es kann auch sein, dass es keinen Block gibt, sondern es sich um ein anderes Element handelt, dann läuft er auch nicht in die Schleife rein.

Gruß TP

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

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 02. Nov. 2004 11: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
Ich nochmal,

das Auslesen der Blockattribute benötige ich direkt in AutoCAD zur Weiterverarbeitung - genauer Änderungsmöglichkeit - der Blöcke in einem Menü.

Ich habe vor, dieses Menü in AutoCAD anzulegen, in welchem ich die Blöcke ansprechen und die Attribute ändern kann.

Kann mir irgend jemand mit einem Tipp weiterhelfen?

K

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 02. Nov. 2004 08: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
Ah, jetzt habe ich das mit dem Microsoft Scripting Runtime gefunden und es kommt beim Ausführen auch kein Fehler mehr.

Er legt auch die Textdatei an, aber die ist leer - völlig ohne Inhalt? Muß ich noch irgendwas beachten?

K

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 02. Nov. 2004 08:18    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
Wie ist das mit der Microsoft Scripting Runtime- Aktivierung gemeint? Wo mache ich das?

Der Code wie er unten steht, funktioniert irgendwie nicht. Er bringt einen Fehler beim Kompilieren und meint bei der Zeile:

Dim fso As FileSystemObject

"benutzerdefinierter Typ nicht definiert"

Was kann da falsch sein?

K

Zitat:
Original erstellt von BloodyMess:
Hallo kiltswitch,

ja es ist möglich. Das Ausdokumentieren des Codes habe ich mir erspart, aber vielleicht mal selber reinschauen. So schwer ist es ja nicht. Was mit Eigenschaften und Informationen gemeint ist, weiß ich nicht. Folgender Code liest alle Attribute von Blöcken in der aktuellen Zeichnung in eine Textdatei aus.

Unter den Verweisen 'Microsoft Scripting Runtime' aktivieren.

Code:
Sub ReadBlockProperties()

Dim AcMapEntity As AcadEntity
Dim AcMapBlock As AcadBlockReference
Dim AcMapBlockAttributes As Variant
Dim iZaehler As Integer

Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim TxtFile As TextStream
Set TxtFile = fso.OpenTextFile("c:\ausgabe.txt", ForWriting, True)

For Each AcMapEntity In ThisDrawing.ModelSpace
    If AcMapEntity.ObjectName = "AcDbBlockReference" Then
       
        Set AcMapBlock = AcMapEntity
        AcMapBlockAttributes = AcMapBlock.GetAttributes

        For iZaehler = 0 To UBound(AcMapBlockAttributes)
            TxtFile.WriteLine (AcMapBlockAttributes(iZaehler).TagString & _
            vbTab & AcMapBlockAttributes(iZaehler).TextString)
        Next iZaehler
        TxtFile.WriteLine vbCr
   
    End If
Next

TxtFile.Close
Set TxtFile = Nothing
Set fso = Nothing
Set AcMapEntity = Nothing
Set AcMapBlock = Nothing
Set AcMapBlockAttributes = Nothing

End Sub


Gruß TP


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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 02. Nov. 2004 08: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
Danke für die Hilfe. Mit Eigenschaften und Informationen meinte ich die Attribute des Blockes.

K

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

BloodyMess
Mitglied
Applicationingenieur


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

Beiträge: 603
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 01. Nov. 2004 21: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 kiltswitch,

ja es ist möglich. Das Ausdokumentieren des Codes habe ich mir erspart, aber vielleicht mal selber reinschauen. So schwer ist es ja nicht. Was mit Eigenschaften und Informationen gemeint ist, weiß ich nicht. Folgender Code liest alle Attribute von Blöcken in der aktuellen Zeichnung in eine Textdatei aus.

Unter den Verweisen 'Microsoft Scripting Runtime' aktivieren.

Code:
Sub ReadBlockProperties()

Dim AcMapEntity As AcadEntity
Dim AcMapBlock As AcadBlockReference
Dim AcMapBlockAttributes As Variant
Dim iZaehler As Integer

Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim TxtFile As TextStream
Set TxtFile = fso.OpenTextFile("c:\ausgabe.txt", ForWriting, True)

For Each AcMapEntity In ThisDrawing.ModelSpace
    If AcMapEntity.ObjectName = "AcDbBlockReference" Then
       
        Set AcMapBlock = AcMapEntity
        AcMapBlockAttributes = AcMapBlock.GetAttributes

        For iZaehler = 0 To UBound(AcMapBlockAttributes)
            TxtFile.WriteLine (AcMapBlockAttributes(iZaehler).TagString & _
            vbTab & AcMapBlockAttributes(iZaehler).TextString)
        Next iZaehler
        TxtFile.WriteLine vbCr
   
    End If
Next

TxtFile.Close
Set TxtFile = Nothing
Set fso = Nothing
Set AcMapEntity = Nothing
Set AcMapBlock = Nothing
Set AcMapBlockAttributes = Nothing

End Sub


Gruß TP

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

[Diese Nachricht wurde von BloodyMess am 01. Nov. 2004 editiert.]

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

Anzeige:

Anzeige: (Infos zum Werbeplatz >>)

Dieses Thema ist 10 Seiten lang:   1  2  3  4  5  6  7  8  9  10

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

nächster neuerer Beitrag | nächster älterer Beitrag


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

Administrative Optionen: Beitrag öffnen | Archivieren/Bewegen | Beitrag melden!

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


(c)2011 CAD.de
-