ADN Club > Civil 3D API
Копирование PropertySet
Захаров Максим:
Добрый день.
Подскажите как скопировать PropertySet из другого чертежа в текущий. Идея такая, есть чертеж-шаблон в котором определены таблицы со свойствами PropertySet
Нужно их скопировать. Я не понимаю что поставить в строке Dim destDictId1 As ObjectId = destDb1.MLeaderStyleDictionaryId
Или вообще идея не правильная
--- Код - vb.net [Выбрать] ---Dim sourceFileName As String = Path.Combine(NameFullPatch, NameFile) Dim sourceDb As Database = New Database(False, True) sourceDb.ReadDwgFile(sourceFileName, FileShare.Read, True, String.Empty) Dim sourceTr As Transaction = sourceDb.TransactionManager.StartTransaction() Using sourceTr Dim sourceBtr As BlockTableRecord = sourceTr.GetObject(sourceDb.CurrentSpaceId, OpenMode.ForRead, False) For Each id As ObjectId In sourceBtr Dim ent As Autodesk.AutoCAD.DatabaseServices.Entity = sourceTr.GetObject(id, OpenMode.ForRead, False) 'открываем объект на чтение If ent.Handle.ToString Like StrHandle Then Dim acDoc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument Dim destDb1 As Database = acDoc.Database Dim destDictId1 As ObjectId = destDb1.[color=orange]MLeaderStyleDictionaryId[/color] Dim setIds As ObjectIdCollection = Autodesk.Aec.PropertyData.DatabaseServices.PropertyDataServices.GetPropertySets(ent) Dim ObjColID As ObjectIdCollection = New ObjectIdCollection For Each psId As ObjectId In setIds ObjColID.Add(psId) Next Dim iMap1 As IdMapping = New IdMapping() destDb1.WblockCloneObjects(ObjColID, destDictId1, iMap1, DuplicateRecordCloning.Replace, False) Exit For End If Next sourceTr.Commit() End Using
Александр Ривилис:
--- Цитата: Захаров Максим от 28-07-2021, 15:08:47 ---destDb1.MLeaderStyleDictionaryId
--- Конец цитаты ---
А это причем здесь?
Захаров Максим:
Да вообще не причем, я и прошу помочь, что вместо этой строчки написать, не могу разобраться
Александр Ривилис:
PropertySets Definitions содержатся в словаре "AEC_PROPERTY_SET_DEFS" в NOD (т.е. в словаре, у которого ObjectId равен Database.NamedObjectsDictionaryId). Теоретически их можно скопировать с помощью WblockCloneObjects. Но я совсем не уверен, что копирование будет корректным. Вообще WblockCloneObjects хорошо работает только с объектами AutoCAD, но не с объектами вертикальных приложений.
Попробуй метод Autodesk.Aec.ApplicationServices.Utility.CloningHelper(). Он описан здесь: https://adndevblog.typepad.com/aec/2012/08/importexport-styles-fromto-another-drawing-in-net-.html
Захаров Максим:
Александр подскажите пожалуйста, как мне rxClass определить?
--- Код - vb.net [Выбрать] ---helpme.Clone(sourceDb, destDb1, setIds, dictStyle.RecordType, True)dictStyle.RecordType - что мне подставить для PropertySet?
Навигация
Перейти к полной версии