| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: BlockTableRecord kopieren und bearbeiten (1176 mal gelesen)
|
Theo37 Mitglied Techniker
 
 Beiträge: 427 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 08. Okt. 2015 16:04 <-- editieren / zitieren --> Unities abgeben:         
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 |
Brischke Moderator CAD on demand GmbH
       

 Beiträge: 4201 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 08. Okt. 2015 16:28 <-- editieren / zitieren --> Unities abgeben:          Nur für Theo37
Hallo Theo, mach einen WBlock von deinem zu kopierenden Block und füge den dann wieder ein: _btr => ist der zu kopierende BlockTableRecord _Name => ist der Name des kopierten Blocks Database _clonedDB = _btr.Database.Wblock(_btr.ObjectId); _btr.Database.Insert(_Name, _clonedDB, false); Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
 defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Theo37 Mitglied Techniker
 
 Beiträge: 427 Registriert: 08.10.2008 ACAD 2024 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 08. Okt. 2015 16:59 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |