Hallo zusammen,
habe ein hoffentlich nur ein kleines Problem. Ich erstelle einige Hilfsmittel für unser AutoCAD 2006 mit SP1 in VB.Net.
In einnem Modul versuche ich einen unbenannten Block (Beispiel *U2) umzubennen. Ich lasse hier hierzu die Blockreferenz selektieren, suche den entsprechenden BlockTableRecord in der Blocktable und gebe dem Record den neuen Namen. Merwürdig ist dabei, das die Blockreferenzen in der Zeichnung den neuen Namen haben, aber der Block selbst im Dialog (Block einfügen) nicht aufgelistet wird. Außerdem läßt er sich in der Blocktabelle nicht mehr lokalisieren. Der Block scheint in der Blocktabelle irgendwie unsichtbar enthalten zu sein.
Hat irgendjemand eine Idee oder eine Vermutung, woran das liegen kann?
Hier der Quellcode:
Public Function renameBlock(ByRef blk As BlockTableRecord) As String
Dim db As Database = HostApplicationServices.WorkingDatabase()
Dim ta As Transaction = db.TransactionManager.StartTransaction()
Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
Dim newname As String = blk.Name
Try
Dim strRes = ed.GetString(vbNewLine + "Blocknamen eingeben(" + blk.Name + ") :")
If strRes.StringResult <> "" And strRes.Status = PromptStatus.OK Then
newname = strRes.StringResult
End If
Dim bt As BlockTable = ta.GetObject(db.BlockTableId, OpenMode.ForWrite)
Dim btr As BlockTableRecord
Dim btrid As ObjectId
If (bt.Has(blk.Name)) Then
btrid = bt.Item(blk.Name)
btr = ta.GetObject(btrid, OpenMode.ForWrite)
btr.Name = newname
End If
ta.Commit()
Catch ex As Exception
ta.Abort()
End Try
ta.Dispose()
Return newname
End Function
Danke vorab an alle !
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP