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

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

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

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Цитата: melkalex90
В том и беда, что я не понимаю коим образом подцепиться к автокаду и запросить указать точки. В данной статье(https://sites.google.com/site/bushmansnetlaboratory/translate-manual/upravlenie-sredoj-autocad/dostup-k-komandnoj-stroke-autocad) нашел как получить доступ к командной строке автокада, но он у меня начинает ругаться на "Document acDoc = Application.DocumentManager.MdiActiveDocument;"
Вообще-то, показанная тобой строка относится к AutoCAD .NET API и будет работать только в составе плагина акада, но никак не во внешнем приложении...

Меня терзают смутные сомнения... А вы к Шпаку с магнитофоном пришли? ты вообще в курсе, что такое COM API и как его использовать извне? Например, ты в курсе того, как при помощи COM создавать объект приложения AutoCAD, или MS Excel или MS Word или др. (принцип-то работы через COM один и тот же для любого приложения)?

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 0
..
... ты вообще в курсе, что такое COM API и как его использовать извне? Например, как при помощи COM создать объект приложения AutoCAD, или MS Excel или MS Word или др. (принцип-то работы через COM один и тот же для любого приложения)?
Нет, честно говоря не понимаю. Я вообще в первые сталкиваюсь с такого рода вещами. Голова кругом идет от всего. С программированием сталкивался в институте и то поверхностно. Я в принципе работаю сотрудником тех поддержки(IT специалист). А тут поставили задачу написать программу, которая считает материалы для отделки(ремонта) объектов. При этом просят как можно больше упростить работу менеджерам, при наличии такого рода планов в автокаде.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Ты сам себе могилу копаешь, посмотри, входит ли в твои обязоности написание программ...
Вообще, такие задачи решаются привлечением инженера САРП и заказом на написание софта, в противном случае, в любой ошибке будешь виноват именно ТЫ и ТВОЯ программа и совершенно не важно так ли это или пользователь рукажоп.

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

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

Нет, честно говоря не понимаю.
Тогда ты "к лошади" не с той стороны подходишь. Почитай о том, как в .net коде использовать COM API сторонних приложений, а так же о позднем связывании.

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

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

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
в любой ошибке будешь виноват именно ТЫ и ТВОЯ программа и совершенно не важно так ли это или пользователь рукажоп.
+1000

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

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 0
Ты сам себе могилу копаешь, посмотри, входит ли в твои обязоности написание программ...
Вообще, такие задачи решаются привлечением инженера САРП и заказом на написание софта, в противном случае, в любой ошибке будешь виноват именно ТЫ и ТВОЯ программа и совершенно не важно так ли это или пользователь рукажоп.
Скажем так, если все же выйдет вытащить эту информацию с Автокада, мне это упростит задачу. Если же не выйдет такого, буду просто писать программку, с кучей датагридов, которые менеджеры будут заполнять ручками. В процессе работы все будет переделываться. Мне бы главное подцепить данные. Кроме всего прочего у меня допустимая погрешность(на расчет материалов) max 15%. Точность до тысячных не требуется.

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

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 0
melkalex90
Потихоньку становится понятнее. Не нужно стесняться говорить что ты чего-то не знаешь, не умеешь или не понимаешь. Предлагаю изменить концепцию. Так как ты (практически) не знаком ни с AutoCAD, ни с программированием под AutoCAD, то мы будем давать советы как делать, а ты будешь к ним прислушиваться и делать как мы тебе советует. Можешь поверить моему 25 летнему опыту программирования под AutoCAD, что ты пытаешься уйти не туда...
Итак.
1) Не внешнее приложение, а плагин под AutoCAD. Менеджеру просто нужно будет запустить AutoCAD и нажать кнопочку для запуска твоей программы. Если ты будешь делать внешнее приложение, то огребёшь такое количество проблем, с которыми не распутаешься вовек.
2) В плагине под AutoCAD ты будешь запрашивать внешний контур помещения и внутренние контура (колонны и т.д., т.е. то чью площадь нужно вычитать). Параллельно будешь по точкам эти контура строить (полилиния) для того чтобы при повторном запросе не нужно было повторно указывать все точки. Идея с командой _BOUNDARY мне не нравится - слишком часто она возвращает не то то, что ожидалось.
Я уже думал на этот счет, но к сожалению не все заказчики работают через автокад. Есть те, кто работают с визио. Потому и делаю стороннее приложение. Мб я не совсем прав и правильно думаю. Мб есть смысл сделать для автокада плагин, а с визио думать.

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
1) Не внешнее приложение, а плагин под AutoCAD. Менеджеру просто нужно будет запустить AutoCAD и нажать кнопочку для запуска твоей программы.
Ну, или так.
Если ты будешь делать внешнее приложение, то огребёшь такое количество проблем, с которыми не распутаешься вовек.
С этим не соглашусь. Использовать плагин - несомненно более удобно, но и COM не смертелен.

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

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

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Мб я не совсем прав и правильно думаю. Мб есть смысл сделать для автокада плагин
Сделай плагин для AutoCAD и сохрани нужные данные во внешний файл (или файлы), который ты потом прочитаешь из своего внешнего приложения.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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

2 melkalex90,
В обозначенном случае, возможно, будет интересен для изучения этот пример. В примере юзер указывает в акаде точки и сохраняет их координаты во внешние текстовые файлы. При необходимости - выполняет обратную задачу.

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

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

2 melkalex90,
В обозначенном случае, возможно, будет интересен для изучения этот пример. В примере юзер указывает в акаде точки и сохраняет их координаты во внешние текстовые файлы. При необходимости - выполняет обратную задачу.

Хммм... Посмотрю, что это и как оно работает) Благодарю, по результатам или вопросам отпишусь сюда

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Мне бы главное подцепить данные. Кроме всего прочего у меня допустимая погрешность(на расчет материалов) max 15%. Точность до тысячных не требуется.
А 15% это точность относительно чего? Если между тем что заказали по таким как у тебя "чертежам" и реальным материалом - это еще постараться уложится надо + наверняка есть еще и технологические вопросы про которые ты пока не думаешь - я сомневаюсь что у тебя там равный пол песком засыпать надо - есть еще партии, отходы, укладка, подгонка и пр  - только на ней можно и на 35% "разбежаться". Сделать для галочки (это как предлагаешь ты) можно и 15 строками на лиспе - осталось только услышать куда данные девать - запустить команду "_area", а потом считать в нужное место указанные Александром системные переменные. Сделать, чтоб реально считало с приемлемым процентом погрешности - дело не простое не столько даже программно - сколько организационно - надо и файлы кому-то подгонять под нужный формат - то есть ручками "подчеркивать" что нужно - это одна программа; данные получить и их разобрать (например свести номенклатуры со слоями или еще как) - это надо отдельную БД держать (или из 1С экспортировать - чтоб бухгалтерам было понятно что Вы там насчитали) - в любом случае или еще отдельная программа - либо модуль экспотра из вашей системы учета, потом линейные и площадные номенклатуры надо оптимизировать и дать карты оптимального раскроя (для справки в общем виде это не решенная математическая задача - и тут для "нормального" результата надо немало "попотеть" с математикой - Контрапович, Симплекс метод и др. радости), потом еще не плохо бы посмотреть - что есть из реальных остатков от других заказов на текущий момент (когда пора уже делать работу, а не на стадии проектирования - т.к. они еще только "виртуальны") и возможно все придется "немного" пересчитать - остатки кстати тоже надо, чтоб кто-то учел и каким-либо образом ввел. И это только часть которую надо организовать, написать и проверить - еще куча подводных камней - без которых это не автоматизация, а легкое упрощение возни. Чтоб стал реальный прирост в экономии материала, производительности (человеко часах), точности оценки и корректности - это достаточно серьезная задача - 100% выходящая за рамки (оклад) IT-шника.