C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить

Автор Тема: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить  (Прочитано 52998 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Своим видео я продемонстрировал, что melkalex90 сможет быстро обработать чертеж, прежде чем сработает его будущее приложение.
1) Обрабатывать чертеж будет не он, а менеджеры.
2) Это (как я понял) лишь небольшой фрагмент реального чертежа.
3) Где там реально помещение, а где оборудование или шкафы, приставленные к стенам я понять не смог. Смогут ли это понять менеджеры - это тоже вопрос.
Тут не 15% будет, а все 50%.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
melkalex90, а чертежи все в таком виде приходят, или есть более солидные варианты? Чтобы Вам помочь, нужно понять с чем Вы столкнулись.

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
1) Обрабатывать чертеж будет не он, а менеджеры.
2) Это (как я понял) лишь небольшой фрагмент реального чертежа.
3) Где там реально помещение, а где оборудование или шкафы, приставленные к стенам я понять не смог. Смогут ли это понять менеджеры - это тоже вопрос.
Тут не 15% будет, а все 50%.

Ну тогда решения не видать! Одни не знают, что к ним приходит (я о чертежах), другие не смогут отличить шкаф от помещения... Ну точно ведь говорю - финиш  :D

Если человек не понимает где шкаф, а где помещение, тогда как программа это сделает?

Не буду врать, но на чертеже я тоже не понял где находится помещение, а где крыльцо от входной двери.
Хоть бы по слоям нормально раскидали...

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

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 0
melkalex90, а чертежи все в таком виде приходят, или есть более солидные варианты? Чтобы Вам помочь, нужно понять с чем Вы столкнулись.
Все приходит в таком виде. Но опять же это только один магазин(в плане компания одна). Другие приходят в Визио. В результате конечном должна быть программа, которая по заданным площади и периметру считает материалы(в зависимости от материала надо либо периметр либо высота) и сверху от полученных результатов накидывается 15% на каждый материал. Точность расчетов будет еще пересматриваться  в процессе работы.

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

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 0
1) Обрабатывать чертеж будет не он, а менеджеры.
2) Это (как я понял) лишь небольшой фрагмент реального чертежа.
3) Где там реально помещение, а где оборудование или шкафы, приставленные к стенам я понять не смог. Смогут ли это понять менеджеры - это тоже вопрос.
Тут не 15% будет, а все 50%.

Ну тогда решения не видать! Одни не знают, что к ним приходит (я о чертежах), другие не смогут отличить шкаф от помещения... Ну точно ведь говорю - финиш  :D

Если человек не понимает где шкаф, а где помещение, тогда как программа это сделает?

Не буду врать, но на чертеже я тоже не понял где находится помещение, а где крыльцо от входной двери.
Хоть бы по слоям нормально раскидали...
Я понимаю, что в действительности это некорректный чертеж. Данный чертеж без оборудования(удалил сам только оборудование). Красным отмечены перегородки, которые будут возводиться между помещениями.

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Все приходит в таком виде. Но опять же это только один магазин(в плане компания одна). Другие приходят в Визио. В результате конечном должна быть программа, которая по заданным площади и периметру считает материалы(в зависимости от материала надо либо периметр либо высота) и сверху от полученных результатов накидывается 15% на каждый материал. Точность расчетов будет еще пересматриваться  в процессе работы.

Задача мне предельно понятна.
Я все думаю по поводу автоматического выбора нужных полилиний. Вот если бы они были на определенном слое ВСЕГДА! То все - считай задача решается просто.
С Visio проблем тоже не должно быть, с учетом того, что можно сохранить его в чертеж Автокада. И это опять же можно сделать автоматически.

Правильно оформленный чертеж снимет 90% всех проблем в будущем.

Программу написать не сложно, но в нее нужно зашить алгоритм выбора ТЕХ САМЫХ (НЕОБХОДИМЫХ) полилиний. С безобразными чертежами - это чистый провал.

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

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 0
Я понимаю(с ваших слов). Потому я с самого начала хотел попробовать запустить инструмент "Измерить площадь", по заданным точкам, посчитать площадь необходимого помещения магазина и передать это в программу. О полной автоматизации этого процесса я пока и не думаю даже.

Оффлайн Пашин Евгений

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

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

Это простая математика.

Если у Вас есть только набор точек полилинии, то я Вам расскажу как посчитать площадь такой полилинии без Автокада, и уж тем более периметр.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Все приходит в таком виде. Но опять же это только один магазин(в плане компания одна). Другие приходят в Визио.
Я предлагаю тебе не бежать впереди паровоза, но включить голову...

Если исходные данные поступают из разных приложений (акад, визио, ворд, пэйнт и т.д.) то имеет смысл либо под каждый из них написать отдельный плагин, экспортирующий данные в единый формат который, в свою очередь, и будет обрабатываться твоей основной программой, либо использовать результаты их [акада, визио, ворда, пэйнта и т.д.] "родного" экспорта (если он в природе существует) но дополнительно написать конвертеры, преобразующие экспортированные данные во всё тот же определённый тобою основной формат. Использование конвертера - наиболее предпочтительный вариант, поскольку это позволит сделать так, чтобы твои заказчики слали тебе не чертежи, но сразу результаты экспорта, что избавит тебя от засирания твоего компьютера необходимости установки на твой комп кучи дополнительного софта (акад, визио, ворд, пэйнт и т.д.).

Для того, чтобы извлечение информации не уподоблялось выдёргиванию зубов плоскогубцами через анальное отверстие, исходные файлы чертежей должны создаваться в соответствии с определёнными правилами. Если ты, упираясь рогами в стенку, будешь твердить, что мол на входе априори будет мусор и ты ничего с этим поделать не можешь, что ты не во состоянии согласовать правила оформления "чертежей" (да простят меня за это слово, применительно к твоим DWG) с теми, кто тебе их высылает, то на качество результатов, выдаваемых твоим приложением, я не поставлю и ломанного гроша (уверен, что не только я). Более того - твой работодатель оторвёт тебе сам знаешь что и посадит в долговую яму, когда по результатам твоих "расчётов" он конкретно "попадёт" на деньги и ему самому открутят то же самое, что он затем открутит и тебе...

Согласование правил формирования контента чертежей, в контексте твоей хотелки - это обязательное условие, не зависимо от того, нравится тебе это или нет. Начинать нужно именно с этого. Программная обработка таких чертежей - это будет уже дело техники. ИМХО.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Я же попытаюсь внести долю "программистского" в эту тему и покажу алгоритм вычисления площади многоугольника (полилинии без дуг):
Код - C# [Выбрать]
  1. class Point { double x, y; }
  2.  
  3. double PolygonArea(Point[] polygon)
  4. {
  5.    int i,j;
  6.    double area = 0;
  7.  
  8.    for (i=0; i < polygon.Length; i++) {
  9.       j = (i + 1) % polygon.Length;
  10.  
  11.       area += polygon[i].x * polygon[j].y;
  12.       area -= polygon[i].y * polygon[j].x;
  13.    }
  14.  
  15.    area /= 2;
  16.    return (area < 0 ? -area : area);
  17. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Александр Ривилис, правильно ли я понимаю, что Вы решаете эту задачу через определители?

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

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 0
Уважаемые, возникли трудности.
Воспользовался кодом, ссылку на который давал Александр(http://adn-cis.org/forum/index.php?topic=975.msg4284#msg4284). Создаю dll, через netload загружаю в автокаде. Дальше пытаюсь вызвать команду MakeContour, на что автокад меня посылает с примечанием "Неизвестная команда".

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Значит эта библиотека не загрузилась

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Уважаемые, возникли трудности.
Воспользовался кодом, ссылку на который давал Александр(http://adn-cis.org/forum/index.php?topic=975.msg4284#msg4284). Создаю dll, через netload загружаю в автокаде. Дальше пытаюсь вызвать команду MakeContour, на что автокад меня посылает с примечанием "Неизвестная команда".

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Давай уточним:
1) Версия и разрядность AutoCAD?
2) Версия Visual Studio?
3) Для какой версии .NET выполнялась компиляция? Для какой разрядности: x86/x64?
4) Нормально ли загрузился dll-файл? Не было ли сообщений об ошибках?
5) Если AutoCAD версии >= 2014, то путь к dll-файлу находится в доверенных?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение