Как в Civil 3D 2013 - 2017 в таблице объемов ввести значение коэффициента

Автор Тема: Как в Civil 3D 2013 - 2017 в таблице объемов ввести значение коэффициента  (Прочитано 9832 раз)

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

Оффлайн durasovartyomАвтор темы

  • ADN OPEN
  • Сообщений: 19
  • Карма: 0
Добрый день!
Подскажите пожалуйста, как к "таблица расчета объемов работ для вида сечения" добавить значение коэффициента увеличения/уменьшения объема?


« Последнее редактирование: 02-08-2016, 16:24:31 от durasovartyom »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Добрый день!
Подскажите пожалуйста, как в таблице объемов работ добавить значение коэффициента увеличения/уменьшения объема?
Выложи пожалуйста в виде чертежа (это обязательно!!!) и объясни подробнее чего ты хочешь получить. Это должна быть отдельная колонка? Или значения должны учитывать (умножаться на) этот коэффициент?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн durasovartyomАвтор темы

  • ADN OPEN
  • Сообщений: 19
  • Карма: 0



Именно отдельная колонка, в которую выводится значение объема с коэффициентом. Так же колонку со значением этого коэффициента на который нужно умножить значение объема.


Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Ну, начнем с того, что это не "таблица объемов работ", а "таблица вида сечения - материал" "таблица расчета объемов работ для вида сечения" (пардон).
В саму таблицу программно добавить ничего нельзя. Можно лишь редактировать стиль этой таблицы, но это можно сделать и без программирования. Вывести можно только те данные, которые уже заложены. Если среди них нет нужных данных (см. рисунок) - то тут уже ничего не сделаешь. Это если использовать такую таблицу.
Как вариант, с помощью программирования, можно извлечь необходимые данные из нужных видов сечений (поперечников) и нарисовать нужную таблицу как таблицу автокада.
P.S. Можно еще, наверное, использовать DrawableOverrule для дорисовки столбцов для такой таблицы, но, сдается мне, что это будет очень непросто.

Оффлайн durasovartyomАвтор темы

  • ADN OPEN
  • Сообщений: 19
  • Карма: 0
Благодарю вам за ответ!
В редакторе списка материалов есть такие значения, как Коэффициент выемки, Коэффициент засыпки, Коэффициент повторной засыпки.
А их ни как "Таблицу расчета объемов работ для вида сечения" занести программно нельзя.
Подскажите пожалуйста, как извлечь программно необходимые данные из "Таблицы расчета объемов работ для вида сечения" как таблицу AutoCADa, с сохранением связей, чтобы при изменении объемов менялась эта таблица.




Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Подскажите пожалуйста, как извлечь программно необходимые данные из "Таблицы расчета объемов работ для вида сечения" как таблицу AutoCADa, с сохранением связей, чтобы при изменении объемов менялась эта таблица.
Это можно сделать только если это можно сделать "вручную" (т.е. используя средства самого Civil 3D). Если ты сможешь это сделать "вручную", то тогда можно будет придумать как это сделать программно. Мне такая возможность не известна.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
В редакторе списка материалов есть такие значения, как Коэффициент выемки, Коэффициент засыпки, Коэффициент повторной засыпки.
А их ни как "Таблицу расчета объемов работ для вида сечения" занести программно нельзя.
Попробуйте с этим вопросом обратиться к специалистам по адаптации Civil 3D (тут: http://forums.autodesk.com/t5/autocad-civil-3d-russkiy/bd-p/374 или через форму подписки) , возможно, что есть какой-то способ сделать это стандартными средствами.
Подскажите пожалуйста, как извлечь программно необходимые данные из "Таблицы расчета объемов работ для вида сечения" как таблицу AutoCADa
По-нормальному - никак. Когда я извлекал данные из такой таблицы, я ее взрывал до линий и текста и потом обрабатывал полученные тексты по рядам. Думаю, что гораздо надежнее будет получать данные программно напрямую из вида сечения. Надо только изучить API для вида сечения и понять, есть ли там все необходимые инструменты.
с сохранением связей, чтобы при изменении объемов менялась эта таблица
Можно попробовать программно связать таблицу AutoCAD с видом сечения каким-то образом и отслеживать изменения. Либо сделать кнопку "обновить таблицы" и нажимать ее перед печатью чертежа или в другой нужный момент.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Можно попробовать программно связать таблицу AutoCAD с видом сечения каким-то образом и отслеживать изменения.
Можно. Но это будет работать только при наличии загруженного приложения, которое подписано на событие изменения таблицы. По хорошему нужно делать (средствами ObjecARX) некий Custom Object, который является Persistent Reactor и реагирует на изменение таблицы, но это настолько сложно, что я  даже не буду предлагать...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Можно. Но это будет работать только при наличии загруженного приложения, которое подписано на событие изменения таблицы.
Разумеется.
По хорошему нужно делать (средствами ObjecARX) некий Custom Object, который является Persistent Reactor и реагирует на изменение таблицы
Ну, как вариант, можно прописывать хендл вида сечения в расширенных данных таблицы и таким образом осуществлять связь. Не самый надежный способ, но, при толковом подходе, работать будет. Возможно только, что сильно пострадает быстродействие Civil при обновлении данных, а может быть и не сильно...
но это настолько сложно
Если стандартными средствами это не удастся сделать, то тут простого выхода просто нет. Любой другой способ будет сложным (или очень сложным :) ).

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Ну, как вариант, можно прописывать хендл вида сечения в расширенных данных таблицы и таким образом осуществлять связь.
Это связь, но не реактор. А вот тот Custom Object, который я предлагал в качестве Persistent Reactor, сам  (!!!) отреагирует на изменение таблицы Civil 3D и пересчитает (перестроит) таблицу AutoCAD. Он же в себе должен хранить ObjectId обеих таблиц (в документации: ObjectARX for AutoCAD 201X: Developer Guide > Advanced Topics > Advanced Topics > Notification > Using Reactors > Using an Object Reactor >)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
А реакторы уже потом можно будет цеплять как обработчики события модификации объекта. Либо к каждому виду сечения в чертеже цеплять DBObject.ObjectModified, либо Database.ObjectModified с проверкой модифицированного объекта на принадлежность к виду сечения. Где-то в памяти при этом должен храниться словарь связей Id вида сечения - Id таблицы. Этот словарь должен формироваться при запуске Civil и дополняться данными при открытии каждого чертежа и при создании новой таблицы для вида сечения. Естественно, что понадобятся обработки событий удаления-восстановления видов сечений и таблиц. В общем - адский труд :). Я нечто подобное делал, поэтому, есть уверенность, что получится работоспособный инструмент.
Persistent Reactor, наверное, львиную долю этой работы берет на себя. Но я не знаю ObjectARX, приходится выкручиваться возможностями .NET.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Persistent Reactor, наверное, львиную долю этой работы берет на себя.
Именно. И хранится он в чертеже.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение