dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Некорректно отображаются изменения атрибутов блока

Некорректно отображаются изменения атрибутов блока

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 19.09.2018, 13:49 #1
Некорректно отображаются изменения атрибутов блока
Cren
 
Регистрация: 17.02.2016
Сообщений: 11

Cren вне форума Вставить имя

Пакетная обработка чертежей. Пользователь изменяет значение и/или коэффициент сжатия выбранных атрибутов блока через форму.
При просмотре блоков после обработки некорректно отображается коэффициент сжатия атрибута (текст растянутый), либо смещаются тексты атрибутов, выравнивание которых имеет значение "Центр".
Нужно обновить отображение


При последующем (ручном) выполнении команды "_ATTSYNC" для этого блока отображение становиться корректным, но этот вариант мне не подходит.

Заранее спасибо!

Код:
[Выделить все]
db.ReadDwgFile(FileNameOut, System.IO.FileShare.ReadWrite, true, null);
using (ACAD_DS.Transaction tr = db.TransactionManager.StartTransaction())
{
         ACAD_DS.BlockTable BT = tr.GetObject(db.BlockTableId, ACAD_DS.OpenMode.ForRead) as ACAD_DS.BlockTable;
         foreach (ACAD_DS.ObjectId ObjID in BT)
         {
                    ACAD_DS.BlockTableRecord BTR = tr.GetObject(ObjID, ACAD_DS.OpenMode.ForRead) as ACAD_DS.BlockTableRecord;
                    if (!(BTR.Name == "УСП_РАМКА_АЛЬБОМ" || BTR.Name == "УСП_РАМКА_КНИГА" ||
                           BTR.Name == "УСП_ОЗУР" || BTR.Name != "УФАНИПИ_КНИГА" || BTR.Name != "УФАНИПИ_АЛЬБОМ")) continue;
                    List<ACAD_DS.AttributeDefinition> AD_list = new List<ACAD_DS.AttributeDefinition>();
                    foreach (ACAD_DS.ObjectId objID in BTR)
                    {
                             ACAD_DS.DBObject obj = tr.GetObject(objID, ACAD_DS.OpenMode.ForRead) as ACAD_DS.DBObject;
                             if (!(obj is ACAD_DS.AttributeDefinition)) continue;
                             AD_list.Add(obj as ACAD_DS.AttributeDefinition);
                    }
                    foreach (sAttribut attr in Attributes)
                    {
                             ACAD_DS.AttributeDefinition ad = AD_list.Find(x => x.Tag == attr.Name);
                             if (ad == null) continue;
                             ad.UpgradeOpen();
                             ad.WidthFactor = attr.Compression;
                    }
                    ACAD_DS.ObjectIdCollection AnonymousID = BTR.GetAnonymousBlockIds();
                    foreach (ACAD_DS.ObjectId AnonymousBTRID in AnonymousID)
                    {
                             ACAD_DS.BlockTableRecord AnonymousBTR = tr.GetObject(AnonymousBTRID, ACAD_DS.OpenMode.ForRead) as ACAD_DS.BlockTableRecord;
                             ACAD_DS.ObjectIdCollection BRefID = AnonymousBTR.GetBlockReferenceIds(true, true);
                             foreach (ACAD_DS.ObjectId id in BRefID)
                             {
                                       ObjIDCol.Add(id);
                                       ACAD_DS.BlockReference BRef = tr.GetObject(id, ACAD_DS.OpenMode.ForRead) as ACAD_DS.BlockReference;
                                       ACAD_DS.AttributeCollection AttCol = BRef.AttributeCollection;
                                       List<ACAD_DS.AttributeReference> AR_list = new List<ACAD_DS.AttributeReference>();
                                       foreach (ACAD_DS.ObjectId Attr in AttCol)
                                                    AR_list.Add(tr.GetObject(Attr, ACAD_DS.OpenMode.ForRead) as ACAD_DS.AttributeReference);
                                       foreach (sAttribut attr in Attributes)
                                       {
                                                    ACAD_DS.AttributeReference ar = AR_list.Find(x => x.Tag == attr.Name);
                                                    if (ar == null) continue;
                                                    ar.UpgradeOpen();
                                                    ar.TextString = attr.Value;
                                       }
                             }
                             AnonymousBTR.UpdateAnonymousBlocks();                    
                      }
                      //BTR.UpdateAnonymousBlocks();                   // эту строка нормализует отображение коэффициента сжатия, но и приводит к смещению текста атрибутов, выравнивание которых имеет значение "Центр".
         }
         tr.Commit();
}
file.Count = ObjIDCol.Count;
db.SaveAs(FileNameOut, ACAD_DS.DwgVersion.Current);
Просмотров: 607
 
Непрочитано 19.09.2018, 15:23
#2
Boxa

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


Реализация AttSync на .Net: https://sites.google.com/site/bushma...metki/attsynch
__________________
_бложиг
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Некорректно отображаются изменения атрибутов блока

РЕВЕРС. Автоматическая пакетная печать множества рамок (форматов) из пространства модели и листов
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP-функция для изменения значения атрибутов в блоке r7800m LISP 2 06.04.2016 13:16
Как настроить отображение атрибутов блока в панели "Свойства"? Taurustau AutoCAD 3 26.11.2014 16:45
При печати не отображаются изменения на чертеже Olya_Kursk AutoCAD 1 18.05.2012 20:09
Сбой подсказок атрибутов динамического блока gool AutoCAD 5 26.10.2011 09:29
Баг: сбрасывается аннотативность атрибутов блока + атрибуты не отображаются во вхождениях блока hwd Баги и пожелания в Autodesk 0 15.11.2009 14:55

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||