ADN Club > AutoCAD .NET API

Идентифицировать примитив по записи в Xrecord

(1/4) > >>

Балиев:
День добрый,
Есть геометрический примитив - полилиния. Какие данные о ней нужно записать в Xrecord, чтобы потом можно было по этим данным идентифицировать эту полилинию. Возможно это - ObjectId, но тогда, как записать его  в Xrecord, чтобы потом его можно было считать как ObjectId?

Заранее благодарен!

Владимир Шу:
не ObjectId, скорее нужно писать хендл, он не меняется.
У объекта базы данных есть метод acCurDb.GetObjectId() который принимает хендл и возвращает ObjectId.

Балиев:


--- Цитата: Владимир Шу от 23-06-2022, 16:37:39 ---не ObjectId, скорее нужно писать хендл, он не меняется.
У объекта базы данных есть метод acCurDb.GetObjectId() который принимает хендл и возвращает ObjectId.

--- Конец цитаты ---
А как хендл из Xrecord достать?

Lemieux:

--- Цитата: Балиев от 23-06-2022, 17:07:27 ---А как хендл из Xrecord достать?

--- Конец цитаты ---

Вот примерно так XRecord добавляется к Entity


--- Код - C# [Выбрать] ---        public static void AddExtentionRecord(this Entity entity, string record, Handle handle)        {            Document doc = Application.DocumentManager.MdiActiveDocument;            using (DocumentLock docLoc = doc.LockDocument())            {                Database db = doc.Database;                 using (Transaction tr = db.TransactionManager.StartTransaction())                {                    ObjectId extId = entity.ExtensionDictionary;                    if (extId == ObjectId.Null)                    {                        entity.CreateExtensionDictionary();                        extId = entity.ExtensionDictionary;                    }                    DBDictionary dbExt = tr.GetObject(extId, OpenMode.ForWrite) as DBDictionary;                     if (!dbExt.Contains(record))                    {                        Xrecord xRec = new Xrecord();                        ResultBuffer rb = new ResultBuffer{ new TypedValue((int)DxfCode.Handle, handle) };                        xRec.Data = rb;                        dbExt.SetAt(record, xRec);                        tr.AddNewlyCreatedDBObject(xRec, true);                    }                    tr.Commit();                }            }        }
Получение XRecord в обратном порядке, просто сперва получаешь ExtensionDictionary сущности.

Александр Ривилис:
Балиев,
Это точно нужно или достаточно прописать XRecord в ExtensionDictionary полилинии и тогда искать не придется?

Навигация

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

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

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