Как добавить дополнительную информацию элементу (семейству)?

Автор Тема: Как добавить дополнительную информацию элементу (семейству)?  (Прочитано 9000 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Здравствуйте, подскажите пожалуйста, как семейству (или экземпляру семейства с конкретным ID) добавить дополнительную информацию и сделать ее невидимой для пользователя, НО, желательно чтобы эту информацию можно было использовать в отчетах?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
В каких именно отчетах?

Вообще говоря, есть 2 варианта - 1) Extensible Storage, 2) невидимый, нередактируемый через UI параметр.
Про все это есть в этом разделе + статьях на этом сайте

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Extensible Storage

Я пока не могу разобраться как создавать Entity в Extensible Storage. Можно ссылку получить по данному вопросу?

невидимый, нередактируемый через UI параметр.

А здесь я еще даже не был. Можете подсказать, что значит нередактируемый? Нередактируемый пользователем или программно?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Гляньте вот здесь: https://github.com/chekalin-v/VCExtensibleStorageExtension
Виктор Чекалин сделал очень полезную и простую в использовании обертку вокруг API для работы с расширяемой областью хранения, используйте её в своем проекте.

Ну и параметры, нередактируемые пользователем, программно прекрасно редактируются. Вот тут - как создать такой параметр: http://adn-cis.org/forum/index.php?topic=2802.msg10043#msg10043

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
невидимой для пользователя
чтобы эту информацию можно было использовать в отчетах
Мне одному кажется, что это два взаимоисключающих требования?:)

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Не только одному тебе :) мой первый вопрос был - "в каких отчетах?",

В целом, например, невидимые в UI параметры доступны для выбора в спецификациях. Если с ними ведется какая-то работа программно, то, наверное, они могут подойти для задачи

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
невидимые в UI параметры доступны для выбора в спецификациях
На мой взгляд не очень логичное решение.  Если спецификации - это единственное место, где можно посмотреть значение такого параметра, то у конечного пользователя могут быть непонятки по поводу откуда же такое свойство вообще взялось.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
В каких именно отчетах?

Все жду, когда же поставят NavisWorks для проверки коллизий в проекте. Там же буду разбирать вопрос создания отчетов (в HTML). Хотелось бы, чтобы я смог в NavisWorks извлечь те самые невидимые параметры и, если что, использовать их при генерации отчетов.

Пока интересует вопрос: как создавать формы отчета в проекте Revit-а (если это возможно)? НЕ спецификации, а именно формы (вроде тех, что я создавал с ListView) отчетов о количестве, о сложности семейств, об их авторах и т.д.

Забегу вперед: хочется, чтобы эта форма, как и спецификация, легко могла быть отображена пользователем. Можно ли такое сделать?

Преследую только одну цель: мне нужно создать модуль, который в процентном содержании посчитает количество наших и не наших семейств в проекте, а также проинспектирует сложность семейств в проекте на предмет количества операций при создании каждого семейства.

Можете поправить меня, если я не ясно излагаю цель своей работы.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Пример кода Виктора Чекалина: VCExtensibleStorageExtensionTestCommand настолько массивен, что задаюсь вопросом: а может ли кто-нибудь рассказать - как и в какой последовательности происходит заполнение расширяемой области хранения, а также, как происходит извлечение информации? Просто алгоритм, а то без этого набекрень встает то, что называется головой.
А то вопросы сами по-себе сыплются:
1. Для чего нужна Schema? Что за аттрибуты у нее?
2. Для чего нужен Field?
3. Как происходит участие Entity в данной схеме?
4. Для чего нужно EntityConvert?
5. Зачем используется Vendor?
... и это пока еще не все посмотрел... вопросы точно будут.
« Последнее редактирование: 22-10-2015, 12:17:55 от Пашин Евгений »

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Кажется немного стал понимать, но лишь немного:
1. Сначала определяется элемент (по типу Wall, Door или еще что) к которому будут применять добавление новых параметров.
2. Создается некий SchemaBuilder, которому задаем уникальный GUID
3. Затем устанавливаются (или определяются - не совсем ясно) права доступа на чтение и запись (тут бы кто-нибудь помог бы разобраться)
4. Затем задается имя SchemaBuilder.SetSchemaName и какой-то ShemaBuilder.SetDocumentation (типа описание что ли?)
5. Потом создаются поля с их именами в ShemaBuilder.
6. Затем создают схему Schema и задают ее равной SchemaBuilder.Finish
7. Затем создают объект Entity и через него задают значение поля.
8. Только потом к элементу (по типу Wall и т.д.) применяют объект Entity c помощью Element.SetEntity.

если я все правильно понял, то получается как-то громоздко и не логично... Крышесносный и убойный код получается, особенно для новичка вроде меня.

Переведу на VB.NET и выложу результат на видное место.

« Последнее редактирование: 22-10-2015, 14:32:48 от Пашин Евгений »

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Так, для начала нужно определиться с целью. Цель как я понял - передать параметры в Navisworks. То что передается в Navisworks - на это мы повлиять не можем. Данные из Extensible Storage не перейдут в Navisworks однозначно. Поэтому обсуждение работы с Extensible Storage не очень подходит в данной теме.

Остаются параметры. Будут ли невидимые параметры видны в Navisworks - не знаю. Тут выход только один - проверить:)

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Данные из Extensible Storage не перейдут в Navisworks однозначно.

Вот это да... а я уже написал код, который позволяет добавлять параметры через Extensible Storage.

Тогда получается мне нужно понять как создавать параметры и делать их невидимыми?!

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Вот это да... а я уже написал код, который позволяет добавлять параметры через Extensible Storage.
Полученный опыт обязательно пригодится:)

как создавать параметры и делать их невидимыми?!
Александр выше уже давал ссылку - http://adn-cis.org/forum/index.php?topic=2802.msg10043#msg10043

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Александр выше уже давал ссылку - http://adn-cis.org/forum/index.php?topic=2802.msg10043#msg10043

Еще раз посмотрю, а пока выложу то, что наработал:

Извините, вам запрещён просмотр содержимого спойлеров.


Добавлено: Виктор Чекалин
Евгений, это конечно очень хорошо, что вы везде делитесь всем своим кодом со всеми, но поверьте, код специфичен конкретно для вас, его очень тяжело читать, и найти в нем то, что касается конкретно проблемы - очень тяжело. Тем более как я уже заметил, к данной теме он вообще отношения не имеет.
Помечать его при этом как Решение - тем более не стоит.
« Последнее редактирование: 23-10-2015, 11:39:38 от Виктор Чекалин »