1
AutoCAD .NET API / Re: Не обновляется ассоциативная штриховка в 2023 автокаде при програмном изменении
« Последний ответ от Александр_М 29-06-2025, 17:37:52 »Добрый день.
спасибо за ответ.
1. Я это понимаю. Перерисовывается в 2016 и 2024 и без regen , а в 2023 и regen не помогает.
2. Да, знаю про анонимные блоки. UpdateAnonymousBlocks() не помогло в 2023 но сломало штриховки в 2024.
3. Попробовал вот так в отдельной транзакции
т.е. ищу основной блок по имени, нахожу все его анонимные блоки и принудительно перерисовываю штриховку.
Эффекта нет. в 2016 и 2024 всё корректно, в 2023 штриховки не правильные.
Может ещё есть идеи?
Как вариант думал создать dwg файл где уже будут все варианты анонимных блоков, но это костыль, хоть и рабочий.
Хочется заставить автокад правильно рисовать.
спасибо за ответ.
1. Я это понимаю. Перерисовывается в 2016 и 2024 и без regen , а в 2023 и regen не помогает.
2. Да, знаю про анонимные блоки. UpdateAnonymousBlocks() не помогло в 2023 но сломало штриховки в 2024.
3. Попробовал вот так в отдельной транзакции
Код - C# [Выбрать]
- using (Transaction tr = db.TransactionManager.StartTransaction())
- {
- BlockTable blockTable = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
- foreach (ObjectId btrId in blockTable)
- {
- BlockTableRecord btr2 = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForRead);
- if ( btr2.Name.ToUpper() == "имя блока".ToUpper())
- {
- // получаем все анонимные блоки динамического блока
- ObjectIdCollection anonymousIds = btr2.GetAnonymousBlockIds();
- foreach (ObjectId anonymousBtrId in anonymousIds)
- {
- // получаем анонимный блок
- BlockTableRecord anonymousBtr = (BlockTableRecord)tr.GetObject(anonymousBtrId, OpenMode.ForRead);
- foreach (ObjectId objId in anonymousBtr)
- {
- try
- {
- Hatch hatch = tr.GetObject(objId, OpenMode.ForWrite) as Hatch;
- if (hatch != null)
- hatch.RecordGraphicsModified(true);
- }
- catch
- { }
- }
- }
- }
- }
- tr.Commit();
- }
Эффекта нет. в 2016 и 2024 всё корректно, в 2023 штриховки не правильные.
Может ещё есть идеи?
Как вариант думал создать dwg файл где уже будут все варианты анонимных блоков, но это костыль, хоть и рабочий.
Хочется заставить автокад правильно рисовать.