Hallo miteinander!
Bin auf dem CAD-Gebiet noch ganz frisch, also entschuldigt evtl. umständlich formulierte Sätze! ^^"
Ich habe im Anhang mal eine DWG-Datei als Beispiel angehängt.
Mein Ziel worum es mir geht, ist folgendes:
Auf einem Layer (in diesem Fall "Raum") liegen Raumstempel welche mir im AutoCAD (verwende "Autodesk AutoCAD 2014") als "AEC_MVBLOCK_REF" angezeigt werden (das müsste dann wohl der ObjectName sein, wenn ich das richtig verstanden habe).
Ich würde gerne die Eigenschaften/Attribute dieses Raumstempels auslesen. Allerdings werden mir diese nicht bei den Eigenschaften angezeigt.
Was ich nun aber schon herausgefunden habe ist, dass wenn ich dieses Element (Raumstempel) "explode" (in den "Ursprung"), das ich dann schon mal eine "Blockreferenz" bekomme mit mehr Eigenschaften. Wiederhole ich den Schritt noch einmal, bleibt es bei einer "Blockreferenz" habe jetzt aber Attribute die genau das wiedergeben, was ich ursprünglich auslesen möchte.
So...
Also dach ich mir, VBA kannst'e, also schau ich den Layer durch und wenn ich ein Element auf dem Layer finde, das keine "Blockreferenz" ist, dann explode dieses. Leider bekomme ich immer einen "Laufzeitfehler '438' Objekt unterstützt dies Eigenschaft nicht". Wenn ich den Raumstempel jetzt allerdings in der Zeichnung markiere und dann auf "Ursprung" klicke, funktioniert das wunderbar. Kann mir das einer erklären?
Und so sieht mein VBA-Code aus:
Code:
Sub IterateLayer()
Dim eEntity As AcadEntity
Dim blockref As AcadBlockReference
For Each eEntity In ThisDrawing.ModelSpace
If eEntity.Layer = "Raum" Then
If Not eEntity.ObjectName = "AcDbBlockReference" Then
' Dim vNewEntity As Variant
'
' vNewEntity = eEntity.Explode
eEntity.Explode
End If
End If
Next eEntityEnd Sub
Ich weiß, das wird jetzt nicht die sauberste Lösung sein, daher war meine zweite Idee, den Raumstempel so zu lassen und sozusagen 2 Ebenen in das Element hineinzuschauen, ob es Attribute zum auslesen gibt.. Weiß natürlich nicht ob und wie das im AutoCAD mit VBA möglich ist.
Wäre also super dankbar, wenn mir das einer von euch Profi's erklären könnte!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP