Как создать таблицу с данными из примитивов в чертеже

Автор Тема: Как создать таблицу с данными из примитивов в чертеже  (Прочитано 16576 раз)

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

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

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Всем добра! Необходимо создать плагин для создания динамически расширяемых (по высоте) таблиц, в которые необходимо заносить данные на основе вычисления длин линий (в чертеже это профиль и план) на основании двух видов.

в файл .csv заносит данные и формирует длины линий, но не совсем такие, как в файле тестовый расчет.xlsx (в прикреплении два архива). Не могу понять пока, как сделать, что бы все веерные линии в разрезе укорачивались по условию длин линий в плане. Прошу помощи сообщества. Спасибо!
« Последнее редактирование: 03-03-2020, 13:29:08 от ДмитрийПетров »

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

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Приветствую на форуме!
Необходимо создать плагин для создания динамически расширяемых (по высоте) таблиц
Не существует "динамически расширяемых по высоте таблиц". Есть просто таблицы. И сколько строк ты в них добавишь, столько и будет. Т.е. в твоём коде необходимо провести расчеты (какие именно я даже не хочу разбираться - это твоя специфика), а затем создать таблицу с необходимым количеством строк и выполнить её построчное заполнение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Не существует "динамически расширяемых по высоте таблиц". Есть просто таблицы. И сколько строк ты в них добавишь, столько и будет. Т.е. в твоём коде необходимо провести расчеты (какие именно я даже не хочу разбираться - это твоя специфика), а затем создать таблицу с необходимым количеством строк и выполнить её построчное заполнение.

Про таблицы, спасибо Александр, буду пробовать! а вот на счет того как создать условие пересчета линий разреза относительно плана, думаю какой метод применить?
p.s. а на счет расчетов, там переводится длина линий профиля и делиться на cos угла линий в плане, что бы получить итоговую длину линий в пространстве массива.

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

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

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

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Пока мы говорим на разных языках и я не понимаю о чем речь. Думаю, что самый простой вариант - это запуск по кнопке команды для пересчета и построения таблицы. Не думаю, что следует усложнять логику работы программы

На счет кнопки подумаю, спасибо. До таблиц я пока не дошел, но думаю это будет не так сложно. Понимаю, логику я всегда стараюсь упростить, что бы самому потом не запутаться. В плагине есть команда gattable она пока для дебага, в данный момент плагин создает файл в который заносит данные длин, эти длины должны не сильно отличаться от длин которые посчитаны в файле тестовый пример.7z/тестовый расчет.xlsx (столбик - общая длина, м), а они пока отличаются, т.к. я пока не придумал метод который будет обрезать длины в разрезе (файл автокад в прикреплении) относительно длин в плане, другими словами, т.к длина линий в плане в зависимости от граничных условий уменьшается, то и веер длин в профиле тоже должен уменьшаться до тех же длин как мы видим на плане. Думаю как сделать так, что бы все длины правильно посчитались  в дебагерной таблице .csv. Собственно поэтому я и прошу вашей помощи.

Перезалил архив тестовый пример.7z (в файле тестовый расчет.dwg убрал ненужные слои и добавил слой CalcLayer и переместил туда два вида разрез и план, а так же изменил цвет линий в разрезе на синий, т.к в плагине реализован цветовой фильтр)

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

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Ну как минимум углы должны быть в радианах, а не в градусах. Math.Cos() оперирует радианами.
И что это такое:
Код - C# [Выбрать]
  1. int aaa =  Convert.ToInt16(Math.Round(val * 57.3, 0));  //57,3 переводим из рад в градус

???
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Ну как минимум углы должны быть в радианах, а не в градусах. Math.Cos() оперирует радианами.
И что это такое:
Код - C# [Выбрать]
  1. int aaa =  Convert.ToInt16(Math.Round(val * 57.3, 0));  //57,3 переводим из рад в градус

???

а что не так, округляем и переводим в градусы

 мне необходимо получить сравнительные данные длин и углов что бы они совпадали с данным расчета в эксель

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

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Я пас:
1) не вижу нормальной постановки задачи.
2) куча терминов из прикладной области, в которую я вникать не собираюсь.
Я бы мог помочь с задачей, которая вынесена в название темы - а именно "создание таблицы с данными из чертежа", но не буду разбираться с тем, как пересчитывать из длин отрезков по каким-то запутанным алгоритмам.
3) В AutoCAD принято работать с радианами и только в таблицу можешь заносить округленные градусы.
Поэтому расчет длин доводи сам. А вот про остальное, связанное с AutoCAD .NET API можешь спрашивать - обязательно отвечу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Я пас:
1) не вижу нормальной постановки задачи.
2) куча терминов из прикладной области, в которую я вникать не собираюсь.
Я бы мог помочь с задачей, которая вынесена в название темы - а именно "создание таблицы с данными из чертежа", но не буду разбираться с тем, как пересчитывать из длин отрезков по каким-то запутанным алгоритмам.
3) В AutoCAD принято работать с радианами и только в таблицу можешь заносить округленные градусы.
Поэтому расчет длин доводи сам. А вот про остальное, связанное с AutoCAD .NET API можешь спрашивать - обязательно отвечу.

1. Постановку задачи причешу
2. Согласен, что в теме присутствуют прикладные термины, могу их заменить на более простые.
3. Считал вначале в радианах, но для получения промежуточной таблицы с длинами я ввел переводной коэффициент в градусы, обязательно сделаю в конечном релизе перевод в градусы при формировании таблицы.
4. Придется запилить новую тему для приведения длин к нормальным значениям.
Спасибо за конструктивную критику.

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

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
4. Придется запилить новую тему для приведения длин к нормальным значениям.
Именно. Причем с картинками, и цифрами. На примере одного отрезка. Что есть и какое значение нужно получить.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
4. Придется запилить новую тему для приведения длин к нормальным значениям.
Именно. Причем с картинками, и цифрами. На примере одного отрезка. Что есть и какое значение нужно получить.

Ок.

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 554
  • Карма: 119
1. Постановку задачи причешу
2. Согласен, что в теме присутствуют прикладные термины, могу их заменить на более простые.

С таким подходом скорее всего задача не будет решена.  Т.к. чувствуется желание автоматизировать задачу, но нет представления с какого конца взяться и возможно нет опыта автоматизации.

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

Общая задача по описанию походит на какое-то уплотнение грунта, только вместо вместо вбивания свай происходит бурение скважин под разными углами  и заливка цементом?

Затем судя по всему есть некий объем(зона) в глубине грунта в которую должны попасть скважины. Все остальное бурения до этого объемы(зоны) считается холостым ходом.
И судя по всему есть некая форма таблицы, которую надо заполнить данными. Для расчета смет, объемов работ, сроков ....это не важно впрочем.

Исходными данными судя по всему является план и разрез на которм уже кто-то расставил скважины.

Скорее всего задачу надо решать в объеме т.е. это построение этого объема по заданным условиям, построение линий в пространстве и считывание результатов пересечений. А уже полученные данные занести в таблицу.

С первого взгляда задача непростая, полуавтоматизированная и стоит подумать решать ли ее вообще, так ли ее решать или как-то по другому, или может не в Autocad а в Civil3d. Ну уж точно не начинать с заполнения таблицы.

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

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Исходными данными судя по всему является план и разрез на которм уже кто-то расставил скважины.

Скорее всего задачу надо решать в объеме т.е. это построение этого объема по заданным условиям, построение линий в пространстве и считывание результатов пересечений. А уже полученные данные занести в таблицу.

С первого взгляда задача непростая, полуавтоматизированная и стоит подумать решать ли ее вообще, так ли ее решать или как-то по другому, или может не в Autocad а в Civil3d. Ну уж точно не начинать с заполнения таблицы.

Я вижу что Вам эта задача тоже понравилась!:) Да примерно так все и выглядит. Есть план есть разрез есть посчитанная заполненная таблица на чертеже и есть та же самая таблица в эксель только не отсортированная по группам длин. В конечном итоге должна получиться таблица, которая в автокадовом чертеже. И да, есть линии с проекциями на ось Х и углами , весь этот массив пересчитывается математически, что бы получить объемные длины, и затем вертикальным группам, если смотреть на план присваиваются порядковые номера, все сортируется по группам длин и раскладывается по ячейкам в таблице. В Civil3D я не работаю, поэтому все будет решаться по средствам автокада и этого плагина.
Это не что иное как цементация массива через пробуренные дырки (скважины). Если это решилось в эксель, то мне подумалось что тоже самое можно сделать автоматически в автокаде.

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

  • ADN OPEN
  • Сообщений: 42
  • Карма: 0
  • Skype: petroffdv
Скорее всего задачу надо решать в объеме т.е. это построение этого объема по заданным условиям, построение линий в пространстве и считывание результатов пересечений. А уже полученные данные занести в таблицу.

да это тоже подразумевалось в будущем, но пока я сам рисую все линии в плане и разрезе.. что очень сильно напрягает, т.к. процесс я сам контролирую

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

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
но пока я сам рисую все линии в плане и разрезе..
Вручную или программно по данным из какого-то файла?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение