Hallo Nancy,
ich habe eine Frage an Dich zu Deinen von Dir im Thread dargestellten Code zum Einlesen der Attribute von ACAD in Excel
Sub bla()
Dim acApp As Object, acDoc As Object
Dim fType%(0), fData(0), sset As Object, x As Object
Dim r&, i%, attr
Set acApp = GetObject(, "autocad.application")
Set acDoc = acApp.ActiveDocument
Set sset = acDoc.SelectionSets.Add("NewSet03")
'Block-Filter setzen
fType(0) = 0: fData(0) = "INSERT"
'alle Blöcke wählen
sset.Select acSelectionSetAll, , , fType, fData
r = 2
For Each x In sset
If x.HasAttributes Then
Cells(r, 1) = acDoc.FullName
Cells(r, 2) = x.handle
Cells(r, 3) = x.name
attr = x.GetAttributes
For i = LBound(attr) To UBound(attr)
Cells(r, i + 4) = attr(i).TagString
Cells(r + 1, i + 4) = attr(i).TextString
Next
End If
r = r + 2
Next
sset.Delete
End Sub
und zum Einlesen der Exceldaten nach ACAD
Sub blubb()
Dim acApp As Object, acDoc As Object
Dim fType%(0), fData(0), sset As Object, x As Object
Dim r&, i%, attr
Set acApp = GetObject(, "autocad.application")
Set acDoc = acApp.ActiveDocument
Set sset = acDoc.SelectionSets.Add("NewSet03")
fType(0) = 0: fData(0) = "INSERT"
sset.Select acSelectionSetAll, , , fType, fData
'Spalte B (Blockhandle)
For r = 2 To Cells(Rows.Count, 2).End(xlUp).Row Step 2
For Each x In sset
If Cells(r, 2) = x.handle Then
If x.HasAttributes Then
attr = x.GetAttributes
For i = LBound(attr) To UBound(attr)
attr(i).TagString = Cells(r, i + 4)
attr(i).TextString = Cells(r + 1, i + 4)
Next
End If
Exit For
End If
Next
Next
sset.Delete
End Sub
Wir haben uns intensiv mit den Codes beschäftigt und wir bleiben der Meinung das die Codes genial sind. Allerdings haben wir ein paar Ungereimtheiten festgestellt.
Was uns am Herzen liegt ist der Weg von Excel nach ACAD. Momentan sieht es folgendermaßen aus: Damit die Daten von Excel nach ACAD eingelesen werden kann, müssen vorher die Daten von ACAD in Excel eingelesen werden. Erst dann werden die Änderungen die man in der Exceltabelle vornimmt vom Makroprogramm akzeptiert.
Nancy, ist es möglich die Codes so zu ändern, das man ohne vorheriges Öffnen der ACAD-Zeichnung bzw. deren vorheriges Einlesen, es möglich ist, die Excelliste unabhängiger zu bearbeiten, die Zeichnung zu öffnen, um dann die geänderten Daten einzulesen zu können.
Gruß
Nat_Bambo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP