ADN Club > Civil 3D API

Копирование PropertySet

(1/3) > >>

Захаров Максим:
Добрый день.
Подскажите как скопировать 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?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии