Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: RevitTormentor от 21-01-2018, 01:17:06

Название: Скачет таблица
Отправлено: RevitTormentor от 21-01-2018, 01:17:06
Доброй ночи. Ни у кого не было, что таблица сделанная программно жёстко привязана к координатам её установки? В ручном режиме выделяю таблицу и пытаюсь её перенести, она переносится, когда мышку отпускаю визуально таблица возвращается на место, а ручки остаются там куда я хотел перенести таблицу.

Если кто сталкивался - как решили?
Спасибо

Название: Re: Скачет таблица
Отправлено: Александр Ривилис от 21-01-2018, 01:18:19
Вообще-то интересно глянуть на эту таблицу (dwg-файл) и уточнить версию AutoCAD.
Название: Re: Скачет таблица
Отправлено: RevitTormentor от 21-01-2018, 09:10:44
Autocad 2017x64
Вечером файл постараюсь выложить. Но после сохранения и открытия снова, таблицы ставятся на свои места и данного эффекта уже нет. Т.е. в файле который будет здесь уже ничего не будет. Думаю, что Или транзакцию не там закрываю/открываю. Блокирую документ не там или вообще не надо его блокировать. Или не там задаю установку позиции для таблицы. Может это надо делать после добавления
Код - C# [Выбрать]
  1.                    table1Id = currentSpace.AppendEntity(tableGroup);
  2.                     tr.AddNewlyCreatedDBObject(tableGroup, true);
Проверить сейчас не могу.
Так как после сохранения и повторного открытия всё нормально - думаю что что-то с транзакциями или добавлением таблицы в базу.
Название: Re: Скачет таблица
Отправлено: Дмитрий Загорулькин от 21-01-2018, 11:10:37
А есть возможность тот же код проверить в 2016 версии? И ещё такой момент - после регенерации чертежа таблица встаёт на правильное место?
Название: Re: Скачет таблица
Отправлено: Александр Ривилис от 21-01-2018, 22:56:41
Но после сохранения и открытия снова, таблицы ставятся на свои места и данного эффекта уже нет.
Ну тогда и смысла в файле нет. Возможно действительно проблема в транзакции. Точне в том, что он незакрыта.
Название: Re: Скачет таблица
Отправлено: Дмитрий Загорулькин от 21-01-2018, 23:24:08
Есть подозрение, что это действительно проблема версии. У меня тоже что-то похожее с таблицами было в 2017 версии
Название: Re: Скачет таблица
Отправлено: RevitTormentor от 21-01-2018, 23:53:45
Только начал файл готовить чтобы скинуть и тут случайно поменял две строчки в коде местами. :)
Код - C# [Выбрать]
  1.              
  2. tableGroup.Position = pntInsert;
  3. tableGroup.GenerateLayout();
  4.  
Моя оплошность. Было так
Код - C# [Выбрать]
  1.        
  2. tableGroup.GenerateLayout();    
  3. tableGroup.Position = pntInsert;
  4.  
Сначала проверил транзакции - все были закрыты. Потом _regen _regen3(вроде команда). Оказалось - порядок следования в коде.
Спасибо за ответы.


Немного подкорректирую. У меня было две проблемы - одна это таблица сбивалась. И вторая она возвращалась на место. Если у кого-то возникнет и то и то, то обязательно добавить надо опциональный параметр
Код - C# [Выбрать]
  1. tableGroup.SuppressRegenerateTable(false); //<-- optional
написано что опционально, однако у меня он повлиял очень сильно.

Название: Re: Скачет таблица
Отправлено: Александр Ривилис от 21-01-2018, 23:55:58
Тут как бы с одной стороны очевидно, а с другой стороны интересный момент. Отлично, что самостоятельно нашел решение!
Название: Re: Скачет таблица
Отправлено: Дмитрий Загорулькин от 22-01-2018, 12:19:50
Off-Topic: показать
tableGroup - неудачное название для переменной, в которой содержится таблица. Интуитивно воспринимается как "группа таблиц". Если подразумевается, что это таблица для группы, то лучше как-то так: groupTable или tableForGroup
Название: Re: Скачет таблица
Отправлено: RevitTormentor от 22-01-2018, 13:47:54
tableGroup - неудачное название для переменной, в которой содержится таблица. Интуитивно воспринимается как "группа таблиц". Если подразумевается, что это таблица для группы, то лучше как-то так: groupTable или tableForGroup

В моём случае это таблица на основе сгруппированных данных. Как то привык, может не прав.
Название: Re: Скачет таблица
Отправлено: Дмитрий Загорулькин от 22-01-2018, 13:54:29
У меня с английским довольно плохо, но если есть какие-то сомнения - гугл помогает :)
https://translate.google.ru/#en/ru/table%20group
В данном случае, название переменной сбивает с толку и не отражает того, что в ней содержится. Это может осложнить работу с кодом, когда пройдёт какое-то время. Или если кто-то другой будет его разбирать.
В моём случае это таблица на основе сгруппированных данных.
groupedDataTable или tableOfGroupedData