Добрый день.
спасибо за ответ.
1. Я это понимаю. Перерисовывается в 2016 и 2024 и без regen , а в 2023 и regen не помогает.
2. Да, знаю про анонимные блоки. UpdateAnonymousBlocks() не помогло в 2023 но сломало штриховки в 2024.
3. Попробовал вот так в отдельной транзакции
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 файл где уже будут все варианты анонимных блоков, но это костыль, хоть и рабочий.
Хочется заставить автокад правильно рисовать.