Hi Alfred,
das dachte ich auch aber es klappt leider nicht.
Foldender Code soll schauen, ob der Block in der Zeichnung vorhanden ist. (Der Code ist von verschiedenen Autoren zusammengetragen. Hier auch ein Dank an alle.)
Wenn er vorhanden ist, dann den Code aus der Zeichnung nehmen.
Wenn er nicht vorhanden ist, dann aus der Bibliothek "nachladen".
'Hauptprogramm:
...
' Ist der gewünschte Block schon in der Zeichnung definiert ?
Set Blockdef = GetBlockDef(BlkNameDWG)
'Block in die Zeichnung laden, wenn er nicht schon vorhanden ist.
If Blockdef Is Nothing Then
'' Block aus einer externen Zeichnung laden
Set Blockdef = LoadBlock(BlkNameDWG)
End If
'Block einfügen, der schon in der Zeichnung vorhanden ist.
Dim Blk As AcadBlockReference
If ThisDrawing.ActiveSpace = acModelSpace Then
Set Blk = ThisDrawing.ModelSpace.InsertBlock(EPkt, BlkNameVoll, XF, YF, ZF, RiWi)
Else
Set Blk = ThisDrawing.PaperSpace.InsertBlock(EPkt, BlkNameVoll, XF, YF, ZF, RiWi)
End If
....
'Code:
Function GetBlockDef(Blockname As String) As AcadBlock
'' Blockdefinition holen
On Error Resume Next
' Versuch eine Blockdefinition zu holen
Set GetBlockDef = ThisDrawing.Blocks(Blockname)
If Err.Number Then
' Ist der Block nicht vorhanden
Set GetBlockDef = Nothing
End If
On Error GoTo 0
End Function
Function LoadBlock(BlkNameVoll As String) As AcadBlock
'' DWG als Block laden
Dim tmpBlockRef As AcadBlockReference
Dim tmpPkt(0 To 2) As Double
Dim tmpBlockName As String
'Temporären Einfügepunkt festlegen.
tmpPkt(0) = 0#: tmpPkt(1) = 0#: tmpPkt(2) = 0#
' Fügt eine DWG temporär ein
Set tmpBlockRef = ThisDrawing.ModelSpace.InsertBlock(tmpPkt, BlkNameVoll, 1, 1, 1, 0)
' Name des Block innerhalb von AutoCAD ermitteln
tmpBlockName = tmpBlockRef.Name
' Blockreferenz löschen
tmpBlockRef.Delete
' Rückgabe der Blockdefinition
Set LoadBlock = ThisDrawing.Blocks(tmpBlockName)
End Function
'________________________________
So dachte ich funktioniert's.
Hi Didi,
ja ich bin sicher, dass der Block existiert.
Hab ihn schon mehrmals eingefügt, bevor ich die Blockdefinition in der Zeichnung geändert habe.
Der andere Beitrag bezog sich nicht auf dieses Problem.
Aber danke für das Mitdenken.
------------------
Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP