Где-как хранятся сведения об аннотативности объектов?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Где-как хранятся сведения об аннотативности объектов?

Где-как хранятся сведения об аннотативности объектов?

Ответ
Поиск в этой теме
Непрочитано 07.01.2024, 05:21 #1
Где-как хранятся сведения об аннотативности объектов?
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,072

Уже увидел, что при назначении объектам свойства аннотативности у них появляются XData "AcadAnnotative":
Код:
[Выделить все]
* Registered Application Name: AcadAnnotative
* Code 1000, ASCII string: AnnotativeData
* Code 1002, Starting or ending brace: {
* Code 1070, 16-bit integer: 1
* Code 1070, 16-bit integer: 1
* Code 1002, Starting or ending brace: }
При отключении аннотативности эти XData не отсоединяются, но второе поле 1070 становится 0.
Эти XData и есть внутреннее описание аннотативности? Или это атавизм старых версий, и по-настоящему аннотативность прописывается где-то в другом месте?

И где-как сохраняется назначенный масштаб? Почему-то в "AcadAnnotative" его не видно.
__________________
количество моих сообщений не говорит о знании Автокада
Просмотров: 1724
 
Непрочитано 08.01.2024, 14:01
1 | #2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Эти XData и есть внутреннее описание аннотативности?
нет
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
При отключении аннотативности эти XData не отсоединяются, но второе поле 1070 становится 0.
это второе поле - свойство Аннотативный - Да/Нет , булево значение 1/0 , ну или в C# коде это выглядит вот так
Код:
[Выделить все]
acDim.Annotative = Db.AnnotativeStates.True;
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
по-настоящему аннотативность прописывается где-то в другом месте?
да, в Extensin Dictionary объекта.
Extensin Dictionary=> AcDbContextDataManager => ACDB_ANNOTATIONSCALES и там уже лежат аннотативности объекта в объектах типа Autodesk.AutoCAD.DatabaseServices.ObjectContext приведенных к типу Autodesk.AutoCAD.DatabaseServices.AnnotationScale

Вот простейший пример добавления текущей аннотативности к объекту и в нем нет ничего про XData:
Код:
[Выделить все]
    public static void AddScale(Db.Database db, Db.Entity ent)
    {
      Db.ObjectContextManager ocm = db.ObjectContextManager;
      Db.ObjectContextCollection occ = ocm.GetContextCollection("ACDB_ANNOTATIONSCALES");
      Db.ObjectContext curAnnoScale = occ.GetContext(db.Cannoscale.Name);
      ent.AddContext(curAnnoScale);
    }
Boxa вне форума  
 
Непрочитано 08.01.2024, 14:52
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Возможно, РД добавляются "под капотом". ent в результате если просмотреть - там будут соответствующие РД или нет?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.01.2024, 16:11
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


вроде это только для размерных и текстовых стилей
Сергей812 вне форума  
 
Автор темы   Непрочитано 10.01.2024, 04:00
#5
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Ндэ...

Оказалось, XData "AcadAnnotative" само-присоединяются только к аннотативным TEXT, MTEXT, LEADER, к размерам.
У аннотативных MLEADER и у блоков их нет.

Смотрю Extensin Dictionary объектов с помощью ArxDbg.
Видны и AcDbContextDataManager, и ACDB_ANNOTATIONSCALES. Если объект аннотативный, то еще есть *A с цифрой. Вроде: *A1, *A7.
Если у объекта аннотативность выключить, то у него и AcDbContextDataManager, и ACDB_ANNOTATIONSCALES остаются. Исчезает только это *A с цифрой.

Если эти *A в ArxDbg посмотреть как DXF, то с кодами 40 видны знаменатели назначенных масштабов.
Но не для всех примитивов - только для MLEADER и для блоков.
А для TEXT, MTEXT, LEADER, для размеров - при просмотре *A или др. нигде не вижу соответствующих цифр.

... Разве что - с кодами 40 без всяких словарей видна высота масштабированной надписи.
В Свойствах она же называется Высота текста в пространстве модели. И у аннотативных есть Высота текста в пространстве листа. Деление первого на второе дает знаменатель масштаба.
Но как/где записана эта Высота текста в пространстве листа у TEXT, MTEXT, LEADER, у размеров?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 10.01.2024, 11:35
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


dwg - закрытый проприентарный формат файла. Есть официальное API для работы с чертежом, зачем пытаться "изподвыподверта" чего то с чертежом делать?
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Где-как хранятся сведения об аннотативности объектов?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
Изменить порядок создания объектов в AutoCAD hwarang AutoCAD 13 26.08.2021 22:12
Исключение объектов из набора Violent MITCHELL AutoCAD 22 10.08.2016 12:09
Аттестация в Минрегионе по негосударственной экспертизе Людмила Охр Прочее. Архитектура и строительство 350 14.02.2015 17:50
Нужен перечень объектов, утверждение проектов которых не требует заключения экспертизы _andrey52 Организация проектирования и оформление документации 4 27.11.2008 12:06