Подсчет периметра детали AutoCAD 2010

Автор Тема: Подсчет периметра детали AutoCAD 2010  (Прочитано 19738 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Подсчет периметра детали AutoCAD 2010
« Ответ #15 : 27-10-2014, 18:43:55 »
Для этой цели нужно подключить Autodesk.AutoCAD.Interop.dll и Autodesk.AutoCAD.Interop.Common.dll. Они есть в подкаталогах inc-win32 и inc-x64 в составе ObjectARX SDK (для AutoCAD 2010 нужно брать ObjectARX SDK 2010: http://download.autodesk.com/akdlm/esd/dlm/objectarx/ObjectARX_2010_Win_64_and_32Bit.exe )
Сразу предупрежу, что такой короткий и красивый код как у меня в этом случае не получится, т.к. в ActiveX/COM модели AutoCAD нужно будет для каждого типа примитива вычислять его длину и специальных методов для этого нет.
Возможен второй вариант. Всё-таки ты делаешь сборку, которая грузится твоим exe-файлом в AutoCAD, запускается команда TLEN, которая кроме того что считает суммарную длину еще устанавливает системную переменную USERR1 этим значением (используя Application.SetSystemVariable("USERR1",...), а ты из exe-файла через ActiveX/COM метод AcadDocument.GetVariable("USERR1") считываешь это значение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Подсчет периметра детали AutoCAD 2010
« Ответ #16 : 27-10-2014, 18:50:23 »
P.S.: Хочу сказать, что ты слишком усложняешь задачу. Видимо от незнания AutoCAD. И описываешь постановку задачи очень расплывчато. Допустим чертится деталь. Как ты собираешься из своего отдельного exe-файла посчитать её длину? А вдруг открыты сразу два AutoCAD? А вдруг в AutoCAD открыты сразу несколько чертежей? С каким из них работать? Нужно написать нормальную постановку задачи и описать условия, в которых она может работать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Подсчет периметра детали AutoCAD 2010
« Ответ #17 : 27-10-2014, 19:23:33 »
Сорри, я и вправду autocad вот в первый раз увидела.

Нужно  windows приложение (.exe файл) в котором есть кнопка, которая  обращается к открытому, текущему чертежу в autocad.
В автокаде выделяем мышкой  деталь  (пока  не понимаю зачем)
нажимаем enter
Считается периметр и отображается  в  приложении в текстовом поле.
кроме периметра еще нужны длина и ширина детали, что пока вообще непонятно
вот как то так
 
 
« Последнее редактирование: 27-10-2014, 19:35:10 от Tatiana85 »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Подсчет периметра детали AutoCAD 2010
« Ответ #18 : 27-10-2014, 19:40:07 »
В автокаде выделяем мышкой  деталь  (пока  не понимаю зачем)
нажимаем enter
Не получится. Деталь состоит из нескольких примитивов AutoCAD (в данном случае это было несколько отрезков, дуги и окружности). Так что одним нажатием мышки это сделать не получится.
P.S.: Меняйте постановку задачи. Всё нужно делать внутри AutoCAD без никаких дополнительных exe-файлов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Подсчет периметра детали AutoCAD 2010
« Ответ #19 : 27-10-2014, 21:25:44 »
Большое спасибо за наводку на ObjectARX. Сейчас подключилась  и смогла вытащить выделенные примитивы. Хотя да, использовать Autocad было бы правильнее, переговорю с заказчиком.  А еще лучше было бы вытаскивать из  dxf файла.
 

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Подсчет периметра детали AutoCAD 2010
« Ответ #20 : 27-10-2014, 21:35:19 »
Хотя да, использовать Autocad было бы правильнее, переговорю с заказчиком.
Обязательно! К сожалению Ваше и заказчика незнание AutoCAD, а точнее возможностей его API, приводит к неправильной (и как минимум сложно реализуемой) постановке задачи. В качестве особенности сразу подскажу, что если работать внутри AutoCAD и обратится к AutoCAD из внешнего приложения через ActiveX/COM, то AutoCAD откажется выполнять ваше действие (результат - exception). Потребуется ожидание освобождения AutoCAD и еще куча разных тонкостей...
Вот пример элементарного обращения к AutoCAD (на C++): http://adn-cis.org/kak-ispolzuya-visual-c-zapustit-autocad-i-zastavit-ego-vyipolnyat-nekotoryie-dejstviya.html
Там одни сплошные проверки на то, что AutoCAD готов выполнить ваши действия.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение