Hallo an Alle,
ich habe ein Problem das anscheinend schon viele hatten. Zumindest findet man viel auf Google zu dem Thema. Aber die Lösung war für mich nicht dabei. Ich möchte eine Blockdefinition kopieren und anschließend die neu Blockdef noch etwas abändern. Dazu habe ich den untenstehenden Programtext geschrieben. Ganz am Ende möchte ich die Layer des neu erstellten Blocks ändern, aber leider ändern sich die Layer beider Blockdefinitionen. So daß ich zwei völlig identische Blockdefinitionen erhalte(abgesehen vom Namen). Was kann man da machen?
Vielen Dank für jeden Tipp.
Gruß Theo
Sub MakeblockDef()
Dim MyBlocktable As BlockTable
Dim OrgBlockDef As BlockTableRecord
Dim NewBlockDef As BlockTableRecord
Dim MyEnty As Entity
Dim MyId As ObjectId
Dim Index As Integer = 4
Dim OrgName As String = "NEB_Bezeichnung1"
Dim MyMap As IdMapping
Using TrAct As Transaction = MyDb.TransactionManager.StartTransaction()
MyBlocktable = TrAct.GetObject(MyDb.BlockTableId, OpenMode.ForWrite)
OrgBlockDef = TrAct.GetObject(MyBlocktable(OrgName), OpenMode.ForRead)
MyMap = New IdMapping
NewBlockDef = OrgBlockDef.DeepClone(MyBlocktable, MyMap, True)
NewBlockDef.Name = OrgName & "var" & Index
MyBlocktable.Add(NewBlockDef)
TrAct.AddNewlyCreatedDBObject(NewBlockDef, True)
NewBlockDef = TrAct.GetObject(MyBlocktable(OrgName & "var" & Index), OpenMode.ForWrite)
For Each MyId In NewBlockDef
MyEnty = TrAct.GetObject(MyId, OpenMode.ForWrite)
MyEnty.Layer = MyEnty.Layer & "var" & Index
Next
TrAct.Commit()
End Using
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP