Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: melkalex90 от 14-10-2015, 16:01:17

Название: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 16:01:17
Добрый день!
Уважаемые форумчане, на работе есть необходимость написать программу(это отдельная программа, а не плагин для автокада), которая по запросу юзера подключается к автокаду, дает команду автокаду на измерить площадь(_AREA так понимаю команда в автокаде) и после обратно в программу возвращает значение площади и периметра.
Подскажите как это сделать или ткните где это можно почитать. Это не учебное задание) Первый раз сталкиваюсь с программированием C# для автокада.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 16:02:48
...
(это отдельная программа, а не плагин для автокада)
...
Подскажите как это сделать
В твоём случае - через COM.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 16:07:26
melkalex90
Приветствую на форуме! Я так понимаю, что это продолжение/развитие темы: http://forum.dwg.ru/showthread.php?t=125800
Для того чтобы не изобретать велосипед, выложи фрагмент dwg-файла с несколькими "помещениями".
Тогда станет понятно, что можно и нужно с ними делать. И можно ли вообще без помощи пользователя с ними что-то делать.
P.S.: Команду _AREA точно запускать не нужно. Как и любые другие команды. Через COM/ActiveX-модель AutoCAD можно добраться до свойств примитивов (площадь полилинии, список вершин, и т.д.)
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 16:11:38
Я так понимаю, что это продолжение/развитие темы: http://forum.dwg.ru/showthread.php?t=125800
Похоже двгру лежит на лопатках, многие темы кажут это:
Цитата: двгру
502 Bad Gateway
-----------------------
nginx/1.4.1
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 16:12:47
Похоже двгру лежит на лопатках:
Цитата: двгру

    502 Bad Gateway
    -----------------------
    nginx/1.4.1

У меня работает.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 16:16:03
У меня работает.
у меня ссылку, которую вы дали - открывает, а вот все соседние топики - нет. В принципе, меня это не тревожит...
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 16:24:26
или ткните где это можно почитать
акадовская справка содержит информацию по своему COM API.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 16:25:23
Во вложении план помещения. У меня по каждому помещению необходимо получить площади и периметр.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 16:35:12
Во вложении план помещения.
Слово "мусор" к данному контенту более подходит. ИМХО. Прежде чем программно обрабатывать чертёж, его нужно к этому подготовить. То, что выложил ты - однозначно мусор, которому до программной обработки, как до Луны... Тому, кто создал этот "шедевр" не лишним будет открыть для себя такие примитивы, как "полилиния", а так же "область", дабы перспектива возможности программной обработки этого DWG замаячила хотя бы на горизонте.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 16:39:10
Уважаемый, мне не надо, чтобы программа полностью считала все сама. Второе это не мой чертеж а то, что мне предоставили. Третье, мне надо выделять определенные области и получать их площадь и периметр(потому я и писал про инструмент Измерить Площадь(_AREA) на сколько понимаю), остальное считаться будет в программе.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 16:40:01
Третье, мне надо выделять определенные области и получать их площадь и периметр
Я тебе об этом и пишу.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 16:42:56
Во вложении план помещения. У меня по каждому помещению необходимо получить площади и периметр.
Я не нашел во вложении никакого помещения - это черт знает что (набор отрезков), а не помещение.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 16:46:33
Третье, мне надо выделять определенные области и получать их площадь и периметр(потому я и писал про инструмент Измерить Площадь(_AREA) на сколько понимаю), остальное считаться будет в программе.
Если считать, что помещение может быть только многоугольником (нет круглых частей), то можно попросить пользователя указать вершины и затем вычислить площадь и периметр.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 16:48:17
Я понимаю про что вы. Но в таком виде нам поставляются такие планы. И потому как нет объектов на чертеже мне надо делать вручную замерку через инструмент Измерить Площадь. Выделяю сам область которую надо померить и мне выдается в автокаде площадь и периметр. Именно это я хочу в программе(так как в итоге не сам буду работать с этим), по нажатию кнопки в написаной програме в открытом автокаде запускалась команда AREA, полученные значения передавались бы обратно. И дальше я бы оперировал бы с этими значениями
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 16:48:45
Если считать, что помещение может быть только многоугольником
В помещении могут быть части, которые следует вычитать из общей площади: колонны, проёмы аля "второй свет", кладовки со швабрами, если они реализованы в виде отдельных закутков, не примыкающих к основным стенам. :) В виду этого примитивы областей использовать было бы более желательно (имхо).
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 16:50:48
в таком виде нам поставляются такие планы
Это не устраняет необходимость предварительной подготовки чертежа. Если этого не делают те, кто высылает, значит это придётся делать тебе. В противном случае каковы исходники - таков будет и результат.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 16:56:02
Выделяю сам область которую надо померить и мне выдается в автокаде площадь и периметр.
Видимо ты не понимаешь, что в AutoCAD'е нельзя выделить область (в твоём понимании). В нём можно выделить только примитивы AutoCAD. У тебя в качестве примитивов - куча отрезков, которые тебе ничем не помогут. У них нет площади. Поэтому тебе придётся попросить пользователя указать точки - вершины помещения.
В помещении могут быть части, которые следует вычитать из общей площади: колонны, проёмы аля "второй свет", кладовки со швабрами, если они реализованы в виде отдельных закутков. :) В виду этого примитивы областей использовать было бы более желательно (имхо).
Вполне возможно, что их нужно учитывать - в постановке задачи я этого не увидел.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 16:59:53
в постановке задачи я этого не увидел.
не удивлюсь, если сейчас выяснится, что это "подразумевалось само собой". Кроме того, не исключено, что даже если сейчас это не требуется учитывать, то совершенно не факт, что завтра требования не изменятся (самый плохой вариант).

Нередко то, что вопрошающему кажется мелочью, которую он не посчитал необходимым упомянуть, является одним из ключевых факторов, влияющих на выбор архитектуры приложения или способа решения задачи.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Владимир Шу от 14-10-2015, 17:05:58
Накинулись...
В принципе, если выключить слой размеров и попробовать вот этот (http://through-the-interface.typepad.com/through_the_interface/2010/06/tracing-a-boundary-defined-by-autocad-geometry-using-net.html) способ, то может и получится...

Хотя, блоки оборудования в слое стены, какие то рллеты в слое размеры , а сами размеры в слое АМ-5 и прочие прелести, жалко мне автора.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 17:06:21
Я так понимаю, что не правильно вам объясняю чего хочу сделать)
В Автокаде есть инструмент Измерить Площадь(через ком строку _AREA). Я так понимаю, что этим инструментом я указываю опорные точки, по которым строится область, которая считается.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 17:08:54
В принципе, если выключить слой размеров и попробовать вот этот способ, то может и получится...
Ты не забывай, что ему это нужно делать из внешнего приложения.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 17:09:19
Я так понимаю, что этим инструментом я указываю опорные точки, по которым строится область, которая считается.
Область не строится. Вычисляется площадь, которая ограничена указанными пользователем точками.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Владимир Шу от 14-10-2015, 17:11:32
Я так понимаю, что этим инструментом я указываю опорные точки, по которым строится область, которая считается.
Как запросить эти точки у пользователя (через COM) я тебе показывал, пебе осталось только площадь посчитать, самому.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 17:12:15
Автокаде есть инструмент Измерить Площадь(через ком строку _AREA). Я так понимаю, что этим инструментом я указываю опорные точки, по которым строится область, которая считается.
В автокаде есть такой примитив, так и называется: "область". Что юзеру легче сделать: указать стопятьцот точек помещения или одним кликом мышки выбрать объект "область", показывающую контур помещения за вычетом (при необходимости) всех лишних площадей? Не вопрос, ты, конечно, можешь и точки указывать, но ты поручишься за свою точность (что тебя не отвлекли и ты не забыл пару-тройку точек кликнуть, или что ты не указал пару лишних)?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Владимир Шу от 14-10-2015, 17:13:31
Ты не забывай, что ему это нужно делать из внешнего приложения.
Ну идея то понятна.
Через сом спросить у пользователя очку, запустить команду "_boundary" и считать последний созданный объект...
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 17:14:14
В автокаде есть такой примитив, так и называется: "область". Что юзеру легче сделать: указать стопятьцот точек помещения или одним кликом мышки выбрать объект "область", показывающую контур помещения за вычетом (при необходимости) всех лишних площадей? Не вопрос, ты, конечно, можешь и точки указывать, но ты поручишься за свою точность (что тебя не отвлекли и ты не забыл пару-тройку точек кликнуть, или что ты не указал пару лишних)?
Заказчик не будет переделывать свои планы в автокаде, ему параллельно каким образом мы на фирме считаем эти площади. Я это делаю непосредственно для упрощения работы менеджеров ведущих объекты.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 17:17:03
Заказчик не будет переделывать свои планы в автокаде, ему параллельно каким образом мы на фирме считаем эти площади. Я это делаю непосредственно для упрощения работы менеджеров ведущих объекты.
Я не настаиваю, можешь каждый раз для одного и того же помещения повторно указывать точки и игнорировать колонны, проёмы и т.п. - главное, чтобы тебя и твоих пользователей это устраивало. :)

Короче - показывай код, который у тебя не работает и задавай вопросы по нему (дабы всё было более конкретным). Уговаривать тебя не наступать на грабли я более не буду. :)
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 17:24:58
Я не настаиваю, можешь каждый раз для одного и того же помещения повторно указывать точки и игнорировать колонны, проёмы и т.п. - главное, чтобы тебя и твоих пользователей это устраивало. :)

Короче - показывай код, который у тебя не работает и задавай вопросы по нему. Уговаривать тебя не наступать на грабли я более не буду. :)
У меня в любом случае будут примерные итоговые расчеты(в итоге считаются материалы), так как каждый человек в итоге по разному делает отделку(в плане самого процесса) + при транспортировке что то может уйти в утиль.
В том и беда, что я не понимаю коим образом подцепиться к автокаду и запросить указать точки. В данной статье(https://sites.google.com/site/bushmansnetlaboratory/translate-manual/upravlenie-sredoj-autocad/dostup-k-komandnoj-stroke-autocad) нашел как получить доступ к командной строке автокада, но он у меня начинает ругаться на "Document acDoc = Application.DocumentManager.MdiActiveDocument;"
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 17:28:37
melkalex90
Резюмируем. Постановка задачи у тебя в голове и ты не собираешься её менять под возможности AutoCAD.
Значит разбивай свою задачу на подзадачи и задавай вопрос по каждой из них.
Например,
1) как запустить команду в AutoCAD из внешнего приложения?
2) как отследить завершение команды?
3) как получить результаты выполнения команды _AREA?
Один вопрос - одна тема на форуме.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 17:29:41
В том и беда, что я не понимаю коим образом подцепиться к автокаду и запросить указать точки. В данной статье(https://sites.google.com/site/bushmansnetlaboratory/translate-manual/upravlenie-sredoj-autocad/dostup-k-komandnoj-stroke-autocad) нашел как получить доступ к командной строке автокада, но он у меня начинает ругаться на "Document acDoc = Application.DocumentManager.MdiActiveDocument;"
Потому что в той статье описано создание не внешнего приложения, а сборки, которая грузится внутрь AutoCAD.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 17:30:00
Цитата: 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 один и тот же для любого приложения)?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 17:34:23
melkalex90
Резюмируем. Постановка задачи у тебя в голове и ты не собираешься её менять под возможности AutoCAD.
....
Я понимаю, что в моем представление эта задача есть реализация кучи ненужной и не совсем правильной наверно работы. Просто если переделывать полностью каждый план времени не хватит. Приходиться работать с тем что есть.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 17:37:35
..
... ты вообще в курсе, что такое COM API и как его использовать извне? Например, как при помощи COM создать объект приложения AutoCAD, или MS Excel или MS Word или др. (принцип-то работы через COM один и тот же для любого приложения)?
Нет, честно говоря не понимаю. Я вообще в первые сталкиваюсь с такого рода вещами. Голова кругом идет от всего. С программированием сталкивался в институте и то поверхностно. Я в принципе работаю сотрудником тех поддержки(IT специалист). А тут поставили задачу написать программу, которая считает материалы для отделки(ремонта) объектов. При этом просят как можно больше упростить работу менеджерам, при наличии такого рода планов в автокаде.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Владимир Шу от 14-10-2015, 17:41:14
Ты сам себе могилу копаешь, посмотри, входит ли в твои обязоности написание программ...
Вообще, такие задачи решаются привлечением инженера САРП и заказом на написание софта, в противном случае, в любой ошибке будешь виноват именно ТЫ и ТВОЯ программа и совершенно не важно так ли это или пользователь рукажоп.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 17:46:43
Нет, честно говоря не понимаю.
вообще-то, насколько я знаю, написание программного кода - это нифига не обязанности IT. Если задачу ставят за рамками твоих должностных обязанностей, то... Стоит ли браться за это, тем более, что ты в этом вопросе не силён? Вопрос риторический...

Нет, честно говоря не понимаю.
Тогда ты "к лошади" не с той стороны подходишь. Почитай о том, как в .net коде использовать COM API сторонних приложений, а так же о позднем связывании.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 17:46:56
melkalex90
Потихоньку становится понятнее. Не нужно стесняться говорить что ты чего-то не знаешь, не умеешь или не понимаешь. Предлагаю изменить концепцию. Так как ты (практически) не знаком ни с AutoCAD, ни с программированием под AutoCAD, то мы будем давать советы как делать, а ты будешь к ним прислушиваться и делать как мы тебе советует. Можешь поверить моему 25 летнему опыту программирования под AutoCAD, что ты пытаешься уйти не туда...
Итак.
1) Не внешнее приложение, а плагин под AutoCAD. Менеджеру просто нужно будет запустить AutoCAD и нажать кнопочку для запуска твоей программы. Если ты будешь делать внешнее приложение, то огребёшь такое количество проблем, с которыми не распутаешься вовек.
2) В плагине под AutoCAD ты будешь запрашивать внешний контур помещения и внутренние контура (колонны и т.д., т.е. то чью площадь нужно вычитать). Параллельно будешь по точкам эти контура строить (полилиния) для того чтобы при повторном запросе не нужно было повторно указывать все точки. Идея с командой _BOUNDARY мне не нравится - слишком часто она возвращает не то то, что ожидалось.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 17:47:09
в любой ошибке будешь виноват именно ТЫ и ТВОЯ программа и совершенно не важно так ли это или пользователь рукажоп.
+1000
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 17:48:09
Ты сам себе могилу копаешь, посмотри, входит ли в твои обязоности написание программ...
Вообще, такие задачи решаются привлечением инженера САРП и заказом на написание софта, в противном случае, в любой ошибке будешь виноват именно ТЫ и ТВОЯ программа и совершенно не важно так ли это или пользователь рукажоп.
Скажем так, если все же выйдет вытащить эту информацию с Автокада, мне это упростит задачу. Если же не выйдет такого, буду просто писать программку, с кучей датагридов, которые менеджеры будут заполнять ручками. В процессе работы все будет переделываться. Мне бы главное подцепить данные. Кроме всего прочего у меня допустимая погрешность(на расчет материалов) max 15%. Точность до тысячных не требуется.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 17:50:10
melkalex90
Потихоньку становится понятнее. Не нужно стесняться говорить что ты чего-то не знаешь, не умеешь или не понимаешь. Предлагаю изменить концепцию. Так как ты (практически) не знаком ни с AutoCAD, ни с программированием под AutoCAD, то мы будем давать советы как делать, а ты будешь к ним прислушиваться и делать как мы тебе советует. Можешь поверить моему 25 летнему опыту программирования под AutoCAD, что ты пытаешься уйти не туда...
Итак.
1) Не внешнее приложение, а плагин под AutoCAD. Менеджеру просто нужно будет запустить AutoCAD и нажать кнопочку для запуска твоей программы. Если ты будешь делать внешнее приложение, то огребёшь такое количество проблем, с которыми не распутаешься вовек.
2) В плагине под AutoCAD ты будешь запрашивать внешний контур помещения и внутренние контура (колонны и т.д., т.е. то чью площадь нужно вычитать). Параллельно будешь по точкам эти контура строить (полилиния) для того чтобы при повторном запросе не нужно было повторно указывать все точки. Идея с командой _BOUNDARY мне не нравится - слишком часто она возвращает не то то, что ожидалось.
Я уже думал на этот счет, но к сожалению не все заказчики работают через автокад. Есть те, кто работают с визио. Потому и делаю стороннее приложение. Мб я не совсем прав и правильно думаю. Мб есть смысл сделать для автокада плагин, а с визио думать.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 17:51:40
1) Не внешнее приложение, а плагин под AutoCAD. Менеджеру просто нужно будет запустить AutoCAD и нажать кнопочку для запуска твоей программы.
Ну, или так.
Если ты будешь делать внешнее приложение, то огребёшь такое количество проблем, с которыми не распутаешься вовек.
С этим не соглашусь. Использовать плагин - несомненно более удобно, но и COM не смертелен.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 18:03:02
С этим не соглашусь. Использовать плагин - несомненно более удобно, но и COM не смертелен.
Он становится смертелен, когда не удаётся получить от него отклика, а то и вообще не запускается через COM
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 14-10-2015, 18:04:51
Мб я не совсем прав и правильно думаю. Мб есть смысл сделать для автокада плагин
Сделай плагин для AutoCAD и сохрани нужные данные во внешний файл (или файлы), который ты потом прочитаешь из своего внешнего приложения.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 14-10-2015, 18:09:46
Сделай плагин для AutoCAD и сохрани нужные данные во внешний файл (или файлы), который ты потом прочитаешь из своего внешнего приложения.
Как вариант.

2 melkalex90,
В обозначенном случае, возможно, будет интересен для изучения этот (https://sites.google.com/site/bushmansnetlaboratory/moi-zametki/points) пример. В примере юзер указывает в акаде точки и сохраняет их координаты во внешние текстовые файлы. При необходимости - выполняет обратную задачу.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 14-10-2015, 18:35:43
Сделай плагин для AutoCAD и сохрани нужные данные во внешний файл (или файлы), который ты потом прочитаешь из своего внешнего приложения.
Как вариант.

2 melkalex90,
В обозначенном случае, возможно, будет интересен для изучения этот (https://sites.google.com/site/bushmansnetlaboratory/moi-zametki/points) пример. В примере юзер указывает в акаде точки и сохраняет их координаты во внешние текстовые файлы. При необходимости - выполняет обратную задачу.

Хммм... Посмотрю, что это и как оно работает) Благодарю, по результатам или вопросам отпишусь сюда
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Дима_ от 14-10-2015, 22:59:44
Мне бы главное подцепить данные. Кроме всего прочего у меня допустимая погрешность(на расчет материалов) max 15%. Точность до тысячных не требуется.
А 15% это точность относительно чего? Если между тем что заказали по таким как у тебя "чертежам" и реальным материалом - это еще постараться уложится надо + наверняка есть еще и технологические вопросы про которые ты пока не думаешь - я сомневаюсь что у тебя там равный пол песком засыпать надо - есть еще партии, отходы, укладка, подгонка и пр  - только на ней можно и на 35% "разбежаться". Сделать для галочки (это как предлагаешь ты) можно и 15 строками на лиспе - осталось только услышать куда данные девать - запустить команду "_area", а потом считать в нужное место указанные Александром системные переменные. Сделать, чтоб реально считало с приемлемым процентом погрешности - дело не простое не столько даже программно - сколько организационно - надо и файлы кому-то подгонять под нужный формат - то есть ручками "подчеркивать" что нужно - это одна программа; данные получить и их разобрать (например свести номенклатуры со слоями или еще как) - это надо отдельную БД держать (или из 1С экспортировать - чтоб бухгалтерам было понятно что Вы там насчитали) - в любом случае или еще отдельная программа - либо модуль экспотра из вашей системы учета, потом линейные и площадные номенклатуры надо оптимизировать и дать карты оптимального раскроя (для справки в общем виде это не решенная математическая задача - и тут для "нормального" результата надо немало "попотеть" с математикой - Контрапович, Симплекс метод и др. радости), потом еще не плохо бы посмотреть - что есть из реальных остатков от других заказов на текущий момент (когда пора уже делать работу, а не на стадии проектирования - т.к. они еще только "виртуальны") и возможно все придется "немного" пересчитать - остатки кстати тоже надо, чтоб кто-то учел и каким-либо образом ввел. И это только часть которую надо организовать, написать и проверить - еще куча подводных камней - без которых это не автоматизация, а легкое упрощение возни. Чтоб стал реальный прирост в экономии материала, производительности (человеко часах), точности оценки и корректности - это достаточно серьезная задача - 100% выходящая за рамки (оклад) IT-шника.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 00:10:41
Мне бы главное подцепить данные. Кроме всего прочего у меня допустимая погрешность(на расчет материалов) max 15%. Точность до тысячных не требуется.
А 15% это точность относительно чего? Если между тем что заказали по таким как у тебя "чертежам" и реальным материалом - это еще постараться уложится надо + наверняка есть еще и технологические вопросы про которые ты пока не думаешь - я сомневаюсь что у тебя там равный пол песком засыпать надо - есть еще партии, отходы, укладка, подгонка и пр  - только на ней можно и на 35% "разбежаться". Сделать для галочки (это как предлагаешь ты) можно и 15 строками на лиспе - осталось только услышать куда данные девать - запустить команду "_area", а потом считать в нужное место указанные Александром системные переменные. Сделать, чтоб реально считало с приемлемым процентом погрешности - дело не простое не столько даже программно - сколько организационно - надо и файлы кому-то подгонять под нужный формат - то есть ручками "подчеркивать" что нужно - это одна программа; данные получить и их разобрать (например свести номенклатуры со слоями или еще как) - это надо отдельную БД держать (или из 1С экспортировать - чтоб бухгалтерам было понятно что Вы там насчитали) - в любом случае или еще отдельная программа - либо модуль экспотра из вашей системы учета, потом линейные и площадные номенклатуры надо оптимизировать и дать карты оптимального раскроя (для справки в общем виде это не решенная математическая задача - и тут для "нормального" результата надо немало "попотеть" с математикой - Контрапович, Симплекс метод и др. радости), потом еще не плохо бы посмотреть - что есть из реальных остатков от других заказов на текущий момент (когда пора уже делать работу, а не на стадии проектирования - т.к. они еще только "виртуальны") и возможно все придется "немного" пересчитать - остатки кстати тоже надо, чтоб кто-то учел и каким-либо образом ввел. И это только часть которую надо организовать, написать и проверить - еще куча подводных камней - без которых это не автоматизация, а легкое упрощение возни. Чтоб стал реальный прирост в экономии материала, производительности (человеко часах), точности оценки и корректности - это достаточно серьезная задача - 100% выходящая за рамки (оклад) IT-шника.
Все что вы написали в итоге будет учитываться позже(по разбегу на 35%). Так сказать в процессе. А сейчас главное получить промежуточные результаты, от чего можно будет отталкиваться дальше. Расчет по остаткам это возня менеджеров и бухгалтерии меня никоим образом не касающаяся. Данная программа больше необходимо для того чтобы уменьшить количество рейсов транспортного цеха на объекта с довозом материалов. Ситуация такова, что из за неправильных расчетов менеджеров, машина на объект может сделать и 5 ходок. Когда реально можно было бы уложиться и за две(это пример).  Я понимаю, что все еще придеться очень долго приводит скажем так в "порядок". Но старт должен быть.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Владимир Шу от 15-10-2015, 09:48:19
Параллельно будешь по точкам эти контура строить (полилиния) для того чтобы при повторном запросе не нужно было повторно указывать все точки. Идея с командой _BOUNDARY мне не нравится - слишком часто она возвращает не то то, что ожидалось.
Но старт должен быть.

Вот Ваш старт: ссылка (http://through-the-interface.typepad.com/through_the_interface/2010/12/jigging-an-autocad-polyline-with-arc-segments-using-net.html)
ИМХО, маленькое дополнение к коду, в методе Update() сразу после объявления переменной pl имеет смысл указать pl.Closed = true;

Стало Легче?
Вам взрослые дяди, которые ходили по этим граблям, говорят, что за тем холмиком, на который Вы пытаетесь залезть, Вас ждут горы и скалы и если этот холмик для Вас проблема, то не нужно туда идти...
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 15-10-2015, 10:36:16
Вот Ваш старт: ссылка
Возможно для старта это будет слишком сложно.
Можно начать с этого: http://adn-cis.org/forum/index.php?topic=975.msg4284#msg4284
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 11:45:35
Возможно для старта это будет слишком сложно.
Можно начать с этого: http://adn-cis.org/forum/index.php?topic=975.msg4284#msg4284

Ну да  ;D  Это очень просто  ;D ;D ;D Ну просто вариант для школьника  ;D ;D ;D
Вот рассмешили  :D

Есть еще проще вариант - обучиться Автокаду (можно за пару недель освоить) и пользоваться уже готовым функционалом Автокада.

Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 15-10-2015, 12:01:34
Есть еще проще вариант - обучиться Автокаду (можно за пару недель освоить) и пользоваться уже готовым функционалом Автокада.
1. Этот функционал не даёт то, что нужно автору - данные о площади и периметре в его программу.
2. _BOUNDARY очень часто даёт совсем не тот результат, на который расчитываешь. Особенно если рисовали без привязок.

Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Владимир Шу от 15-10-2015, 12:06:30
Есть еще проще вариант - обучиться Автокаду (можно за пару недель освоить) и пользоваться уже готовым функционалом Автокада.
Этот функционал не даёт то, что нужно автору - данные о площади и периметре в его программу.
_DATAEXTRACTION и дальше внешней программой обрабатывать, впрочем я этот вариант автору уже предлагал, не пошло.

По поводу привязок, автор же написал что точности в 15% вполне достаточно =)
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 12:08:46
Уважаемые, я понимаю, что вы проходили множество "кочек". Но я не совсем все понимаю из того, что вы говорите. Я потому и обратился к Вам за помощью.
Для меня программирование под AutoCAD это темный лес.

Я так понимаю, при создании плагина для автокада, надо cоздавать библиотеку классов? Если да, то подключать в автокад надо будет таким способом

Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 12:09:10
Особенно если рисовали без привязок.

Абсолютно с Вами согласен.

Этот функционал не даёт то, что нужно автору - данные о площади и периметре в его программу.

Прекрасно понимаю, но будьте честны с melkalex90, что быстро свою задачу он не решит, даже если будет учиться по примерам. Я знаю как решить эту задачу с помощью COM, но даже я не рискну предположить со сколькими проблемами он столкнется прежде, чем сможет получить площадь и периметр объектов. Особенно, если ему потребуется конкретная полилиния.

Своим видео я продемонстрировал, что melkalex90 сможет быстро обработать чертеж, прежде чем сработает его будущее приложение.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Владимир Шу от 15-10-2015, 12:13:13
Я так понимаю, при создании плагина для автокада, надо cоздавать библиотеку классов? Если да, то подключать в автокад надо будет таким способом
Я же Вам скидывал ссылку на плэй лист в youtube, где подробно разбирается как писать и с чего начать, по каким  причинам игнорируете?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 12:14:58
Я так понимаю, при создании плагина для автокада, надо cоздавать библиотеку классов? Если да, то подключать в автокад надо будет таким способом
Я же Вам скидывал ссылку на плэй лист в youtube, где подробно разбирается как писать и с чего начать, по каким  причинам игнорируете?
Это и есть ссылка на одно видео из плэй листа
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 15-10-2015, 12:16:49
Я так понимаю, при создании плагина для автокада, надо cоздавать библиотеку классов?
Да.
Если да, то подключать в автокад надо будет таким способом
Это вопрос или утверждение? Смотреть 40 минут видео чтобы понять всё ли там в порядке у меня нет времени.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 12:18:59
Да уж  :D  Проще дать сразу готовое решение  :)
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Владимир Шу от 15-10-2015, 12:19:35
Если да, то подключать в автокад надо будет таким способом
Если вопрос, то ответ наверное тут: ссылка (https://sites.google.com/site/bushmansnetlaboratory/translate-manual/nacinaem-rabotu-s-ms-visual-studio/zagruzka-sborki-v-autocad)
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 12:20:48
Для меня программирование под AutoCAD это темный лес.
Похоже что не только программирование, но и работа в AudoCAD в целом - судя по тому, что такие примитивы как "полилиния" и "область" тебе не знакомы. Прежде чем писать плагины для приложения, не лишним было бы получить хотя бы базовые навыки работы с ним. ИМХО.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 12:21:09
Это вопрос или утверждение? Смотреть 40 минут видео чтобы понять всё ли там в порядке у меня нет времени.
Это был вопрос.
Пойду смотреть да разбираться. Благодарю за помощь.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 15-10-2015, 12:21:34
Своим видео я продемонстрировал, что melkalex90 сможет быстро обработать чертеж, прежде чем сработает его будущее приложение.
1) Обрабатывать чертеж будет не он, а менеджеры.
2) Это (как я понял) лишь небольшой фрагмент реального чертежа.
3) Где там реально помещение, а где оборудование или шкафы, приставленные к стенам я понять не смог. Смогут ли это понять менеджеры - это тоже вопрос.
Тут не 15% будет, а все 50%.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 12:24:50
melkalex90, а чертежи все в таком виде приходят, или есть более солидные варианты? Чтобы Вам помочь, нужно понять с чем Вы столкнулись.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 12:28:16
1) Обрабатывать чертеж будет не он, а менеджеры.
2) Это (как я понял) лишь небольшой фрагмент реального чертежа.
3) Где там реально помещение, а где оборудование или шкафы, приставленные к стенам я понять не смог. Смогут ли это понять менеджеры - это тоже вопрос.
Тут не 15% будет, а все 50%.

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

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

Не буду врать, но на чертеже я тоже не понял где находится помещение, а где крыльцо от входной двери.
Хоть бы по слоям нормально раскидали...
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 12:36:15
melkalex90, а чертежи все в таком виде приходят, или есть более солидные варианты? Чтобы Вам помочь, нужно понять с чем Вы столкнулись.
Все приходит в таком виде. Но опять же это только один магазин(в плане компания одна). Другие приходят в Визио. В результате конечном должна быть программа, которая по заданным площади и периметру считает материалы(в зависимости от материала надо либо периметр либо высота) и сверху от полученных результатов накидывается 15% на каждый материал. Точность расчетов будет еще пересматриваться  в процессе работы.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 12:38:21
1) Обрабатывать чертеж будет не он, а менеджеры.
2) Это (как я понял) лишь небольшой фрагмент реального чертежа.
3) Где там реально помещение, а где оборудование или шкафы, приставленные к стенам я понять не смог. Смогут ли это понять менеджеры - это тоже вопрос.
Тут не 15% будет, а все 50%.

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

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

Не буду врать, но на чертеже я тоже не понял где находится помещение, а где крыльцо от входной двери.
Хоть бы по слоям нормально раскидали...
Я понимаю, что в действительности это некорректный чертеж. Данный чертеж без оборудования(удалил сам только оборудование). Красным отмечены перегородки, которые будут возводиться между помещениями.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 12:46:18
Все приходит в таком виде. Но опять же это только один магазин(в плане компания одна). Другие приходят в Визио. В результате конечном должна быть программа, которая по заданным площади и периметру считает материалы(в зависимости от материала надо либо периметр либо высота) и сверху от полученных результатов накидывается 15% на каждый материал. Точность расчетов будет еще пересматриваться  в процессе работы.

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

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

Программу написать не сложно, но в нее нужно зашить алгоритм выбора ТЕХ САМЫХ (НЕОБХОДИМЫХ) полилиний. С безобразными чертежами - это чистый провал.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 12:48:58
Я понимаю(с ваших слов). Потому я с самого начала хотел попробовать запустить инструмент "Измерить площадь", по заданным точкам, посчитать площадь необходимого помещения магазина и передать это в программу. О полной автоматизации этого процесса я пока и не думаю даже.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 12:54:28
Я понимаю(с ваших слов). Потому я с самого начала хотел попробовать запустить инструмент "Измерить площадь", по заданным точкам, посчитать площадь необходимого помещения магазина и передать это в программу. О полной автоматизации этого процесса я пока и не думаю даже.

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

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

Если у Вас есть только набор точек полилинии, то я Вам расскажу как посчитать площадь такой полилинии без Автокада, и уж тем более периметр.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 13:07:17
Все приходит в таком виде. Но опять же это только один магазин(в плане компания одна). Другие приходят в Визио.
Я предлагаю тебе не бежать впереди паровоза, но включить голову...

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

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

Согласование правил формирования контента чертежей, в контексте твоей хотелки - это обязательное условие, не зависимо от того, нравится тебе это или нет. Начинать нужно именно с этого. Программная обработка таких чертежей - это будет уже дело техники. ИМХО.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 15-10-2015, 13:14:47
Я же попытаюсь внести долю "программистского" в эту тему и покажу алгоритм вычисления площади многоугольника (полилинии без дуг):
Код - 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. }
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 13:35:15
Александр Ривилис, правильно ли я понимаю, что Вы решаете эту задачу через определители?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 13:48:01
Уважаемые, возникли трудности.
Воспользовался кодом, ссылку на который давал Александр(http://adn-cis.org/forum/index.php?topic=975.msg4284#msg4284). Создаю dll, через netload загружаю в автокаде. Дальше пытаюсь вызвать команду MakeContour, на что автокад меня посылает с примечанием "Неизвестная команда".
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 13:49:35
Значит эта библиотека не загрузилась
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 13:50:42
Уважаемые, возникли трудности.
Воспользовался кодом, ссылку на который давал Александр(http://adn-cis.org/forum/index.php?topic=975.msg4284#msg4284). Создаю dll, через netload загружаю в автокаде. Дальше пытаюсь вызвать команду MakeContour, на что автокад меня посылает с примечанием "Неизвестная команда".

Можно видео снять, чтобы мы все могли посмотреть, как это у тебя происходит?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 15-10-2015, 13:52:48
Давай уточним:
1) Версия и разрядность AutoCAD?
2) Версия Visual Studio?
3) Для какой версии .NET выполнялась компиляция? Для какой разрядности: x86/x64?
4) Нормально ли загрузился dll-файл? Не было ли сообщений об ошибках?
5) Если AutoCAD версии >= 2014, то путь к dll-файлу находится в доверенных?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 13:53:13
через netload загружаю в автокаде
что акад пишет в консоль сразу после твоей первой попытки загрузить dll? Какая версия акада? Из какого каталога грузишь dll (локальный, сетевой | доверенный, не доверенный)?

ой, А.Н. уже спросил, пока я набирал текст.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 14:02:57
Давай уточним:
1) Версия и разрядность AutoCAD?
2) Версия Visual Studio?
3) Для какой версии .NET выполнялась компиляция? Для какой разрядности: x86/x64?
4) Нормально ли загрузился dll-файл? Не было ли сообщений об ошибках?
5) Если AutoCAD версии >= 2014, то путь к dll-файлу находится в доверенных?
1) AutoCad Mechanical 2016 х64
2) Visual 2015(32 бита)
3) .NET 4.5.2, Any CPU
4) Да загрузился без каких либо проблем, ошибок не было.
5) А как это проверить?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 14:08:45
4) Да загрузился без каких либо проблем, ошибок не было.
не пишет в консоль - это ещё не значит что их не было вовсе.
.NET 4.5.2, Any CPU
а в конфиг-файле акада (acad.exe.config) какая целевая версия дотнета указана (по умолчанию там v4.0)?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Пашин Евгений от 15-10-2015, 14:09:27
А как это проверить?

Ну если Автокад не спросил: «А вы уверены, что хотите загрузить эту библиотеку?», то значит НЕдоверенный, иначе - доверенный.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 14:12:05
5) А как это проверить?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 14:17:57
4) Да загрузился без каких либо проблем, ошибок не было.
не пишет в консоль - это ещё не значит что их не было вовсе.
.NET 4.5.2, Any CPU
а в конфиг-файле акада (acad.exe.config) какая целевая версия дотнета указана (по умолчанию там v4.0)?
В конфиг файле <supportedRuntime version="v4.0"/>. это?
А как это проверить?

Ну если Автокад не спросил: «А вы уверены, что хотите загрузить эту библиотеку?», то значит НЕдоверенный, иначе - доверенный.
Автокад спросил про загрузку данной библиотеки
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 14:41:44
какие dll акада подключал к проекту? установил ли для них Copy Local в False?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 14:48:05
какие dll акада подключал к проекту? установил ли для них Copy Local в False?
Подключал accoremgd acdbmgd acmgd Autodesk.AuroCAD.Interop и Interop.Common.
Да устанавливал Copy Local False
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 14:51:45
Autodesk.AuroCAD.Interop и Interop.Common
эти не нужны для кода, который ты пытаешься запустить. Я тебя спрашивал про сетевой каталог. Из каких соображений молчишь?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 14:53:17
Autodesk.AuroCAD.Interop и Interop.Common
эти не нужны для кода, который ты пытаешься запустить. Я тебя спрашивал про сетевой каталог. Из каких соображений молчишь?
Ой, прошу прощения, пропустил. Dll гружу с компа(что автокад что длл лежат на одном разделе).
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 14:57:27
показывай содержимое твоего csproj-файла.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 15-10-2015, 15:04:20
показывай содержимое твоего csproj-файла.
А лучше весь проект в архиве - вдруг еще чего напутал.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 15:06:52
в виду того, что моё последнее сообщение повергло автора, судя по всему, в ступор, то... меня терзают смутные сомнения: возможно, что автор не знает что такое "csproj-файл" и как посмотреть | опубликовать его содержимое. как следствие - я начинаю сомневаться в том, что он вообще знаком с C#... хочется верить, что ошибаюсь, но опыт предыдущего общения не настраивает на позитивный лад :(
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 15:52:14
Содержимое csproj.
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{D6AE4A9A-0901-4CB1-9F2C-64B2CD8F60D8}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>ClassLibrary2</RootNamespace>
    <AssemblyName>ClassLibrary2</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x64\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
    <OutputPath>bin\x64\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="accoremgd">
      <HintPath>..\..\..\..\..\Programms\AutoCAD 2016\accoremgd.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="acdbmgd">
      <HintPath>..\..\..\..\..\Programms\AutoCAD 2016\acdbmgd.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="acmgd">
      <HintPath>..\..\..\..\..\Programms\AutoCAD 2016\acmgd.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Autodesk.AutoCAD.Interop">
      <HintPath>..\..\..\..\..\Programms\AutoCAD 2016\Autodesk.AutoCAD.Interop.dll</HintPath>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </Reference>
    <Reference Include="Autodesk.AutoCAD.Interop.Common">
      <HintPath>..\..\..\..\..\Programms\AutoCAD 2016\Autodesk.AutoCAD.Interop.Common.dll</HintPath>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Class1.cs" />
    <Compile Include="MakeContour\MyCommands.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>
Во вложении архив с проектом.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 15-10-2015, 16:17:07
Попробуй во вложении.
P.S.: Проблемы были не с моим кодом, а с твоим кодом. Нельзя так бездумно переименовывать имена классов.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 16:43:29
Нельзя так бездумно переименовывать имена классов.
Что и требовалось доказать... :( Прежде чем садиться писать код на .net, необходимо потратить некоторое время на изучения базовых вещей. Это не AutoLISP, где элементарные приложения можно писать уже через пару-тройку часов чтения справочника Н.Н. Полещука...
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 16:46:08
Уважаемые, прошу прощения за такие ошибки. Спасибо теперь заработало.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 15-10-2015, 17:05:16
Спасибо теперь заработало.
О! Первый шаг сделан. :)
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 17:37:08
Спасибо теперь заработало.
О! Первый шаг сделан. :)
Александр, я скажу что первый шажочек оказался чуть больше чем я даже ожидал) Кроме того что я могу обвести замкнутый контур, я теперь могу посчитать его периметр и площадь замкнутую внутри контура(взял ваш код по ссылке http://adn-cis.org/forum/index.php?topic=772.msg2887#msg2887). И кроме всего прочего сделал это все одной DLL))))) Все благодаря вам)
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 15-10-2015, 17:51:44
Такой вопрос, а можно ли сделать маленькую панельку с кнопками, по нажатию которых вызываются эти процедуры?
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Андрей Бушман от 15-10-2015, 19:39:47
Такой вопрос, а можно ли сделать маленькую панельку с кнопками, по нажатию которых вызываются эти процедуры?
Ответ на этот вопрос легко находится в справке автокада, а так же в гугле.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 15-10-2015, 20:56:44
Такой вопрос, а можно ли сделать маленькую панельку с кнопками, по нажатию которых вызываются эти процедуры?
Множество предложений: https://goo.gl/gKNxsX
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 16-10-2015, 00:48:46
Такой вопрос, а можно ли сделать маленькую панельку с кнопками, по нажатию которых вызываются эти процедуры?
Ответ на этот вопрос легко находится в справке автокада, а так же в гугле.
Такой вопрос, а можно ли сделать маленькую панельку с кнопками, по нажатию которых вызываются эти процедуры?
Множество предложений: https://goo.gl/gKNxsX
Благодарствую. Предложенным Вами способом решение моей задачки будет проще.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 16-10-2015, 12:20:19
Добрый день!
Александр, подскажите пожалуйста, в каком месте у вас идет прорисовка конечной линии в контуре(ваш код http://adn-cis.org/forum/index.php?topic=975.msg4284#msg4284)?
Мне есть необходимость просто нарисовать полилинию, чтобы измерить ее длину.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 16-10-2015, 12:23:22
Александр, подскажите пожалуйста, в каком месте у вас идет прорисовка конечной линии в контуре
Ты имеешь в виду соединение первой и последней вершины? Это управляется свойством Closed.
Т.е. тебе нужно убрать poly.Closed = true; (или заменить на  poly.Closed = false;)
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: melkalex90 от 16-10-2015, 12:29:25
Ты имеешь в виду соединение первой и последней вершины? Это управляется свойством Closed.
Т.е. тебе нужно убрать poly.Closed = true; (или заменить на  poly.Closed = false;)
Да имеено это и было надо) Но я сам разобрался, но все равно спасибо.
Название: Re: C# и AutoCAD2016. Открытие чертежей и получение параметров инструмента "Измерить
Отправлено: Александр Ривилис от 16-10-2015, 12:44:29
Пожалуйста. В дальнейшем запомни, что "один вопрос - одна тема", т.е. этот вопрос нужно было задать в новой теме.