Ich versuche gerade ein VB-Programm auf die Beine zu stellen, welches Attribute aus Blöcken in einer AutoCAD R2002-Zeichnung in Excel ausließt. Prinzipiell funktioniert das auch recht gut. Nur ist noch ein Schönheitsfehler vorhanden. Das Auslesen der Attribute dauert relativ lange. Ich habe z.B. eine Din A4 AutoCAD-Zeichnung mit ca. 350 Objekten, darunter auch diverse Blöcke mit Attributen. Für das Ausfiltern der Blöcke und das Auslesen der Attribute wird ca. 15-20 Sekunden benötigt. Dieses Phänomen hatte ich schon einmal bei einem VB-Programm unter AutoCAD R14. Auch benötigte hier das Auslesen der Attribute ca. 15-20 Sekunden/Zeichnung. Nach diversen Modifikationen am diesem Programm ging der Auslesevorgang der Attribute bei den gleichen Zeichnungen jedoch plötzlich erheblich schneller (etwa 2-5 Sekunden/Zeichnung). Den Grund hierfür habe ich bis heute nicht gefunden.
Wer hat vielleicht einen Lösungsvorschlag für mein Problem. Zum besseren Verständnis habe ich den Code in Auszügen unten dargestellt:
' Excel wird gestartet, anschließend AutoCAD ...
Set acad = Nothing
Set acad = GetObject(, "AutoCAD.Application") 'AutoCAD-Objekt wird ausgelesen
If Err Then 'Wenn AutoCAD nicht geladen ist -> aufrufen
Set acad = CreateObject("AutoCAD.Application") 'AutoCAD-Objekt wird erstellt
Err.Clear
End If
Set objAutoCad = acad.ActiveDocument
objAutoCad.SetVariable "SDI", 1 ' Setzt Variable SDI auf 1 (= SDI)
objAutoCad.Open QuelleDWG ' Öffnet Zeichnung
objAutoCad.WindowState = 3 ' Zeichnungs-Fenster wird maximiert
acad.Visible = True ' und angezeigt
Set objModelSpace = objAutoCad.ModelSpace
For Each DWGElement In objModelSpace
On Error Resume Next
If StrComp(.EntityName, "AcDbBlockReference", 1) = 0 Then
If .HasAttributes Then ' Attribute vorhanden?
' Attribute werden in Excel ausgelesen ...
End If
End If
Next DWGElement
objAutoCad.SetVariable "SDI", 0 ' Setzt Variable SDI auf 0 (= MDI)
Set acad = Nothing
objAutoCad.Application.Quit
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP