...В твоём случае - через COM.
(это отдельная программа, а не плагин для автокада)
...
Подскажите как это сделать
Я так понимаю, что это продолжение/развитие темы: http://forum.dwg.ru/showthread.php?t=125800Похоже двгру лежит на лопатках, многие темы кажут это:
502 Bad Gateway
-----------------------
nginx/1.4.1
Похоже двгру лежит на лопатках:У меня работает.
Цитата: двгру
502 Bad Gateway
-----------------------
nginx/1.4.1
У меня работает.у меня ссылку, которую вы дали - открывает, а вот все соседние топики - нет. В принципе, меня это не тревожит...
или ткните где это можно почитатьакадовская справка содержит информацию по своему COM API.
Во вложении план помещения.Слово "мусор" к данному контенту более подходит. ИМХО. Прежде чем программно обрабатывать чертёж, его нужно к этому подготовить. То, что выложил ты - однозначно мусор, которому до программной обработки, как до Луны... Тому, кто создал этот "шедевр" не лишним будет открыть для себя такие примитивы, как "полилиния", а так же "область", дабы перспектива возможности программной обработки этого DWG замаячила хотя бы на горизонте.
Третье, мне надо выделять определенные области и получать их площадь и периметрЯ тебе об этом и пишу.
Во вложении план помещения. У меня по каждому помещению необходимо получить площади и периметр.Я не нашел во вложении никакого помещения - это черт знает что (набор отрезков), а не помещение.
Третье, мне надо выделять определенные области и получать их площадь и периметр(потому я и писал про инструмент Измерить Площадь(_AREA) на сколько понимаю), остальное считаться будет в программе.Если считать, что помещение может быть только многоугольником (нет круглых частей), то можно попросить пользователя указать вершины и затем вычислить площадь и периметр.
Если считать, что помещение может быть только многоугольникомВ помещении могут быть части, которые следует вычитать из общей площади: колонны, проёмы аля "второй свет", кладовки со швабрами, если они реализованы в виде отдельных закутков, не примыкающих к основным стенам. :) В виду этого примитивы областей использовать было бы более желательно (имхо).
в таком виде нам поставляются такие планыЭто не устраняет необходимость предварительной подготовки чертежа. Если этого не делают те, кто высылает, значит это придётся делать тебе. В противном случае каковы исходники - таков будет и результат.
Выделяю сам область которую надо померить и мне выдается в автокаде площадь и периметр.Видимо ты не понимаешь, что в AutoCAD'е нельзя выделить область (в твоём понимании). В нём можно выделить только примитивы AutoCAD. У тебя в качестве примитивов - куча отрезков, которые тебе ничем не помогут. У них нет площади. Поэтому тебе придётся попросить пользователя указать точки - вершины помещения.
В помещении могут быть части, которые следует вычитать из общей площади: колонны, проёмы аля "второй свет", кладовки со швабрами, если они реализованы в виде отдельных закутков. :) В виду этого примитивы областей использовать было бы более желательно (имхо).Вполне возможно, что их нужно учитывать - в постановке задачи я этого не увидел.
в постановке задачи я этого не увидел.не удивлюсь, если сейчас выяснится, что это "подразумевалось само собой". Кроме того, не исключено, что даже если сейчас это не требуется учитывать, то совершенно не факт, что завтра требования не изменятся (самый плохой вариант).
В принципе, если выключить слой размеров и попробовать вот этот способ, то может и получится...Ты не забывай, что ему это нужно делать из внешнего приложения.
Я так понимаю, что этим инструментом я указываю опорные точки, по которым строится область, которая считается.Область не строится. Вычисляется площадь, которая ограничена указанными пользователем точками.
Я так понимаю, что этим инструментом я указываю опорные точки, по которым строится область, которая считается.Как запросить эти точки у пользователя (через COM) я тебе показывал, пебе осталось только площадь посчитать, самому.
Автокаде есть инструмент Измерить Площадь(через ком строку _AREA). Я так понимаю, что этим инструментом я указываю опорные точки, по которым строится область, которая считается.В автокаде есть такой примитив, так и называется: "область". Что юзеру легче сделать: указать стопятьцот точек помещения или одним кликом мышки выбрать объект "область", показывающую контур помещения за вычетом (при необходимости) всех лишних площадей? Не вопрос, ты, конечно, можешь и точки указывать, но ты поручишься за свою точность (что тебя не отвлекли и ты не забыл пару-тройку точек кликнуть, или что ты не указал пару лишних)?
Ты не забывай, что ему это нужно делать из внешнего приложения.Ну идея то понятна.
В автокаде есть такой примитив, так и называется: "область". Что юзеру легче сделать: указать стопятьцот точек помещения или одним кликом мышки выбрать объект "область", показывающую контур помещения за вычетом (при необходимости) всех лишних площадей? Не вопрос, ты, конечно, можешь и точки указывать, но ты поручишься за свою точность (что тебя не отвлекли и ты не забыл пару-тройку точек кликнуть, или что ты не указал пару лишних)?Заказчик не будет переделывать свои планы в автокаде, ему параллельно каким образом мы на фирме считаем эти площади. Я это делаю непосредственно для упрощения работы менеджеров ведущих объекты.
Заказчик не будет переделывать свои планы в автокаде, ему параллельно каким образом мы на фирме считаем эти площади. Я это делаю непосредственно для упрощения работы менеджеров ведущих объекты.Я не настаиваю, можешь каждый раз для одного и того же помещения повторно указывать точки и игнорировать колонны, проёмы и т.п. - главное, чтобы тебя и твоих пользователей это устраивало. :)
Я не настаиваю, можешь каждый раз для одного и того же помещения повторно указывать точки и игнорировать колонны, проёмы и т.п. - главное, чтобы тебя и твоих пользователей это устраивало. :)У меня в любом случае будут примерные итоговые расчеты(в итоге считаются материалы), так как каждый человек в итоге по разному делает отделку(в плане самого процесса) + при транспортировке что то может уйти в утиль.
Короче - показывай код, который у тебя не работает и задавай вопросы по нему. Уговаривать тебя не наступать на грабли я более не буду. :)
В том и беда, что я не понимаю коим образом подцепиться к автокаду и запросить указать точки. В данной статье(https://sites.google.com/site/bushmansnetlaboratory/translate-manual/upravlenie-sredoj-autocad/dostup-k-komandnoj-stroke-autocad) нашел как получить доступ к командной строке автокада, но он у меня начинает ругаться на "Document acDoc = Application.DocumentManager.MdiActiveDocument;"Потому что в той статье описано создание не внешнего приложения, а сборки, которая грузится внутрь AutoCAD.
В том и беда, что я не понимаю коим образом подцепиться к автокаду и запросить указать точки. В данной статье(https://sites.google.com/site/bushmansnetlaboratory/translate-manual/upravlenie-sredoj-autocad/dostup-k-komandnoj-stroke-autocad) нашел как получить доступ к командной строке автокада, но он у меня начинает ругаться на "Document acDoc = Application.DocumentManager.MdiActiveDocument;"Вообще-то, показанная тобой строка относится к AutoCAD .NET API и будет работать только в составе плагина акада, но никак не во внешнем приложении...
melkalex90Я понимаю, что в моем представление эта задача есть реализация кучи ненужной и не совсем правильной наверно работы. Просто если переделывать полностью каждый план времени не хватит. Приходиться работать с тем что есть.
Резюмируем. Постановка задачи у тебя в голове и ты не собираешься её менять под возможности AutoCAD.
....
..Нет, честно говоря не понимаю. Я вообще в первые сталкиваюсь с такого рода вещами. Голова кругом идет от всего. С программированием сталкивался в институте и то поверхностно. Я в принципе работаю сотрудником тех поддержки(IT специалист). А тут поставили задачу написать программу, которая считает материалы для отделки(ремонта) объектов. При этом просят как можно больше упростить работу менеджерам, при наличии такого рода планов в автокаде.
... ты вообще в курсе, что такое COM API и как его использовать извне? Например, как при помощи COM создать объект приложения AutoCAD, или MS Excel или MS Word или др. (принцип-то работы через COM один и тот же для любого приложения)?
Нет, честно говоря не понимаю.вообще-то, насколько я знаю, написание программного кода - это нифига не обязанности IT. Если задачу ставят за рамками твоих должностных обязанностей, то... Стоит ли браться за это, тем более, что ты в этом вопросе не силён? Вопрос риторический...
Нет, честно говоря не понимаю.Тогда ты "к лошади" не с той стороны подходишь. Почитай о том, как в .net коде использовать COM API сторонних приложений, а так же о позднем связывании.
в любой ошибке будешь виноват именно ТЫ и ТВОЯ программа и совершенно не важно так ли это или пользователь рукажоп.+1000
Ты сам себе могилу копаешь, посмотри, входит ли в твои обязоности написание программ...Скажем так, если все же выйдет вытащить эту информацию с Автокада, мне это упростит задачу. Если же не выйдет такого, буду просто писать программку, с кучей датагридов, которые менеджеры будут заполнять ручками. В процессе работы все будет переделываться. Мне бы главное подцепить данные. Кроме всего прочего у меня допустимая погрешность(на расчет материалов) max 15%. Точность до тысячных не требуется.
Вообще, такие задачи решаются привлечением инженера САРП и заказом на написание софта, в противном случае, в любой ошибке будешь виноват именно ТЫ и ТВОЯ программа и совершенно не важно так ли это или пользователь рукажоп.
melkalex90Я уже думал на этот счет, но к сожалению не все заказчики работают через автокад. Есть те, кто работают с визио. Потому и делаю стороннее приложение. Мб я не совсем прав и правильно думаю. Мб есть смысл сделать для автокада плагин, а с визио думать.
Потихоньку становится понятнее. Не нужно стесняться говорить что ты чего-то не знаешь, не умеешь или не понимаешь. Предлагаю изменить концепцию. Так как ты (практически) не знаком ни с AutoCAD, ни с программированием под AutoCAD, то мы будем давать советы как делать, а ты будешь к ним прислушиваться и делать как мы тебе советует. Можешь поверить моему 25 летнему опыту программирования под AutoCAD, что ты пытаешься уйти не туда...
Итак.
1) Не внешнее приложение, а плагин под AutoCAD. Менеджеру просто нужно будет запустить AutoCAD и нажать кнопочку для запуска твоей программы. Если ты будешь делать внешнее приложение, то огребёшь такое количество проблем, с которыми не распутаешься вовек.
2) В плагине под AutoCAD ты будешь запрашивать внешний контур помещения и внутренние контура (колонны и т.д., т.е. то чью площадь нужно вычитать). Параллельно будешь по точкам эти контура строить (полилиния) для того чтобы при повторном запросе не нужно было повторно указывать все точки. Идея с командой _BOUNDARY мне не нравится - слишком часто она возвращает не то то, что ожидалось.
1) Не внешнее приложение, а плагин под AutoCAD. Менеджеру просто нужно будет запустить AutoCAD и нажать кнопочку для запуска твоей программы.Ну, или так.
Если ты будешь делать внешнее приложение, то огребёшь такое количество проблем, с которыми не распутаешься вовек.С этим не соглашусь. Использовать плагин - несомненно более удобно, но и COM не смертелен.
С этим не соглашусь. Использовать плагин - несомненно более удобно, но и COM не смертелен.Он становится смертелен, когда не удаётся получить от него отклика, а то и вообще не запускается через COM
Мб я не совсем прав и правильно думаю. Мб есть смысл сделать для автокада плагинСделай плагин для AutoCAD и сохрани нужные данные во внешний файл (или файлы), который ты потом прочитаешь из своего внешнего приложения.
Сделай плагин для AutoCAD и сохрани нужные данные во внешний файл (или файлы), который ты потом прочитаешь из своего внешнего приложения.Как вариант.
Сделай плагин для AutoCAD и сохрани нужные данные во внешний файл (или файлы), который ты потом прочитаешь из своего внешнего приложения.Как вариант.
2 melkalex90,
В обозначенном случае, возможно, будет интересен для изучения этот (https://sites.google.com/site/bushmansnetlaboratory/moi-zametki/points) пример. В примере юзер указывает в акаде точки и сохраняет их координаты во внешние текстовые файлы. При необходимости - выполняет обратную задачу.
Мне бы главное подцепить данные. Кроме всего прочего у меня допустимая погрешность(на расчет материалов) max 15%. Точность до тысячных не требуется.А 15% это точность относительно чего? Если между тем что заказали по таким как у тебя "чертежам" и реальным материалом - это еще постараться уложится надо + наверняка есть еще и технологические вопросы про которые ты пока не думаешь - я сомневаюсь что у тебя там равный пол песком засыпать надо - есть еще партии, отходы, укладка, подгонка и пр - только на ней можно и на 35% "разбежаться". Сделать для галочки (это как предлагаешь ты) можно и 15 строками на лиспе - осталось только услышать куда данные девать - запустить команду "_area", а потом считать в нужное место указанные Александром системные переменные. Сделать, чтоб реально считало с приемлемым процентом погрешности - дело не простое не столько даже программно - сколько организационно - надо и файлы кому-то подгонять под нужный формат - то есть ручками "подчеркивать" что нужно - это одна программа; данные получить и их разобрать (например свести номенклатуры со слоями или еще как) - это надо отдельную БД держать (или из 1С экспортировать - чтоб бухгалтерам было понятно что Вы там насчитали) - в любом случае или еще отдельная программа - либо модуль экспотра из вашей системы учета, потом линейные и площадные номенклатуры надо оптимизировать и дать карты оптимального раскроя (для справки в общем виде это не решенная математическая задача - и тут для "нормального" результата надо немало "попотеть" с математикой - Контрапович, Симплекс метод и др. радости), потом еще не плохо бы посмотреть - что есть из реальных остатков от других заказов на текущий момент (когда пора уже делать работу, а не на стадии проектирования - т.к. они еще только "виртуальны") и возможно все придется "немного" пересчитать - остатки кстати тоже надо, чтоб кто-то учел и каким-либо образом ввел. И это только часть которую надо организовать, написать и проверить - еще куча подводных камней - без которых это не автоматизация, а легкое упрощение возни. Чтоб стал реальный прирост в экономии материала, производительности (человеко часах), точности оценки и корректности - это достаточно серьезная задача - 100% выходящая за рамки (оклад) IT-шника.
Все что вы написали в итоге будет учитываться позже(по разбегу на 35%). Так сказать в процессе. А сейчас главное получить промежуточные результаты, от чего можно будет отталкиваться дальше. Расчет по остаткам это возня менеджеров и бухгалтерии меня никоим образом не касающаяся. Данная программа больше необходимо для того чтобы уменьшить количество рейсов транспортного цеха на объекта с довозом материалов. Ситуация такова, что из за неправильных расчетов менеджеров, машина на объект может сделать и 5 ходок. Когда реально можно было бы уложиться и за две(это пример). Я понимаю, что все еще придеться очень долго приводит скажем так в "порядок". Но старт должен быть.Мне бы главное подцепить данные. Кроме всего прочего у меня допустимая погрешность(на расчет материалов) max 15%. Точность до тысячных не требуется.А 15% это точность относительно чего? Если между тем что заказали по таким как у тебя "чертежам" и реальным материалом - это еще постараться уложится надо + наверняка есть еще и технологические вопросы про которые ты пока не думаешь - я сомневаюсь что у тебя там равный пол песком засыпать надо - есть еще партии, отходы, укладка, подгонка и пр - только на ней можно и на 35% "разбежаться". Сделать для галочки (это как предлагаешь ты) можно и 15 строками на лиспе - осталось только услышать куда данные девать - запустить команду "_area", а потом считать в нужное место указанные Александром системные переменные. Сделать, чтоб реально считало с приемлемым процентом погрешности - дело не простое не столько даже программно - сколько организационно - надо и файлы кому-то подгонять под нужный формат - то есть ручками "подчеркивать" что нужно - это одна программа; данные получить и их разобрать (например свести номенклатуры со слоями или еще как) - это надо отдельную БД держать (или из 1С экспортировать - чтоб бухгалтерам было понятно что Вы там насчитали) - в любом случае или еще отдельная программа - либо модуль экспотра из вашей системы учета, потом линейные и площадные номенклатуры надо оптимизировать и дать карты оптимального раскроя (для справки в общем виде это не решенная математическая задача - и тут для "нормального" результата надо немало "попотеть" с математикой - Контрапович, Симплекс метод и др. радости), потом еще не плохо бы посмотреть - что есть из реальных остатков от других заказов на текущий момент (когда пора уже делать работу, а не на стадии проектирования - т.к. они еще только "виртуальны") и возможно все придется "немного" пересчитать - остатки кстати тоже надо, чтоб кто-то учел и каким-либо образом ввел. И это только часть которую надо организовать, написать и проверить - еще куча подводных камней - без которых это не автоматизация, а легкое упрощение возни. Чтоб стал реальный прирост в экономии материала, производительности (человеко часах), точности оценки и корректности - это достаточно серьезная задача - 100% выходящая за рамки (оклад) IT-шника.
Параллельно будешь по точкам эти контура строить (полилиния) для того чтобы при повторном запросе не нужно было повторно указывать все точки. Идея с командой _BOUNDARY мне не нравится - слишком часто она возвращает не то то, что ожидалось.
Но старт должен быть.
Вот Ваш старт: ссылкаВозможно для старта это будет слишком сложно.
Возможно для старта это будет слишком сложно.
Можно начать с этого: http://adn-cis.org/forum/index.php?topic=975.msg4284#msg4284
Есть еще проще вариант - обучиться Автокаду (можно за пару недель освоить) и пользоваться уже готовым функционалом Автокада.1. Этот функционал не даёт то, что нужно автору - данные о площади и периметре в его программу.
Есть еще проще вариант - обучиться Автокаду (можно за пару недель освоить) и пользоваться уже готовым функционалом Автокада.
Этот функционал не даёт то, что нужно автору - данные о площади и периметре в его программу._DATAEXTRACTION и дальше внешней программой обрабатывать, впрочем я этот вариант автору уже предлагал, не пошло.
Особенно если рисовали без привязок.
Этот функционал не даёт то, что нужно автору - данные о площади и периметре в его программу.
Я так понимаю, при создании плагина для автокада, надо cоздавать библиотеку классов? Если да, то подключать в автокад надо будет таким способомЯ же Вам скидывал ссылку на плэй лист в youtube, где подробно разбирается как писать и с чего начать, по каким причинам игнорируете?
Это и есть ссылка на одно видео из плэй листаЯ так понимаю, при создании плагина для автокада, надо cоздавать библиотеку классов? Если да, то подключать в автокад надо будет таким способомЯ же Вам скидывал ссылку на плэй лист в youtube, где подробно разбирается как писать и с чего начать, по каким причинам игнорируете?
Я так понимаю, при создании плагина для автокада, надо cоздавать библиотеку классов?Да.
Если да, то подключать в автокад надо будет таким способомЭто вопрос или утверждение? Смотреть 40 минут видео чтобы понять всё ли там в порядке у меня нет времени.
Если да, то подключать в автокад надо будет таким способомЕсли вопрос, то ответ наверное тут: ссылка (https://sites.google.com/site/bushmansnetlaboratory/translate-manual/nacinaem-rabotu-s-ms-visual-studio/zagruzka-sborki-v-autocad)
Для меня программирование под AutoCAD это темный лес.Похоже что не только программирование, но и работа в AudoCAD в целом - судя по тому, что такие примитивы как "полилиния" и "область" тебе не знакомы. Прежде чем писать плагины для приложения, не лишним было бы получить хотя бы базовые навыки работы с ним. ИМХО.
Это вопрос или утверждение? Смотреть 40 минут видео чтобы понять всё ли там в порядке у меня нет времени.Это был вопрос.
Своим видео я продемонстрировал, что melkalex90 сможет быстро обработать чертеж, прежде чем сработает его будущее приложение.1) Обрабатывать чертеж будет не он, а менеджеры.
1) Обрабатывать чертеж будет не он, а менеджеры.
2) Это (как я понял) лишь небольшой фрагмент реального чертежа.
3) Где там реально помещение, а где оборудование или шкафы, приставленные к стенам я понять не смог. Смогут ли это понять менеджеры - это тоже вопрос.
Тут не 15% будет, а все 50%.
melkalex90, а чертежи все в таком виде приходят, или есть более солидные варианты? Чтобы Вам помочь, нужно понять с чем Вы столкнулись.Все приходит в таком виде. Но опять же это только один магазин(в плане компания одна). Другие приходят в Визио. В результате конечном должна быть программа, которая по заданным площади и периметру считает материалы(в зависимости от материала надо либо периметр либо высота) и сверху от полученных результатов накидывается 15% на каждый материал. Точность расчетов будет еще пересматриваться в процессе работы.
Я понимаю, что в действительности это некорректный чертеж. Данный чертеж без оборудования(удалил сам только оборудование). Красным отмечены перегородки, которые будут возводиться между помещениями.1) Обрабатывать чертеж будет не он, а менеджеры.
2) Это (как я понял) лишь небольшой фрагмент реального чертежа.
3) Где там реально помещение, а где оборудование или шкафы, приставленные к стенам я понять не смог. Смогут ли это понять менеджеры - это тоже вопрос.
Тут не 15% будет, а все 50%.
Ну тогда решения не видать! Одни не знают, что к ним приходит (я о чертежах), другие не смогут отличить шкаф от помещения... Ну точно ведь говорю - финиш :D
Если человек не понимает где шкаф, а где помещение, тогда как программа это сделает?
Не буду врать, но на чертеже я тоже не понял где находится помещение, а где крыльцо от входной двери.
Хоть бы по слоям нормально раскидали...
Все приходит в таком виде. Но опять же это только один магазин(в плане компания одна). Другие приходят в Визио. В результате конечном должна быть программа, которая по заданным площади и периметру считает материалы(в зависимости от материала надо либо периметр либо высота) и сверху от полученных результатов накидывается 15% на каждый материал. Точность расчетов будет еще пересматриваться в процессе работы.
Я понимаю(с ваших слов). Потому я с самого начала хотел попробовать запустить инструмент "Измерить площадь", по заданным точкам, посчитать площадь необходимого помещения магазина и передать это в программу. О полной автоматизации этого процесса я пока и не думаю даже.
Все приходит в таком виде. Но опять же это только один магазин(в плане компания одна). Другие приходят в Визио.Я предлагаю тебе не бежать впереди паровоза, но включить голову...
Уважаемые, возникли трудности.
Воспользовался кодом, ссылку на который давал Александр(http://adn-cis.org/forum/index.php?topic=975.msg4284#msg4284). Создаю dll, через netload загружаю в автокаде. Дальше пытаюсь вызвать команду MakeContour, на что автокад меня посылает с примечанием "Неизвестная команда".
через netload загружаю в автокадечто акад пишет в консоль сразу после твоей первой попытки загрузить dll? Какая версия акада? Из какого каталога грузишь dll (локальный, сетевой | доверенный, не доверенный)?
Давай уточним:1) AutoCad Mechanical 2016 х64
1) Версия и разрядность AutoCAD?
2) Версия Visual Studio?
3) Для какой версии .NET выполнялась компиляция? Для какой разрядности: x86/x64?
4) Нормально ли загрузился dll-файл? Не было ли сообщений об ошибках?
5) Если AutoCAD версии >= 2014, то путь к dll-файлу находится в доверенных?
4) Да загрузился без каких либо проблем, ошибок не было.не пишет в консоль - это ещё не значит что их не было вовсе.
.NET 4.5.2, Any CPUа в конфиг-файле акада (acad.exe.config) какая целевая версия дотнета указана (по умолчанию там v4.0)?
А как это проверить?
5) А как это проверить?
В конфиг файле <supportedRuntime version="v4.0"/>. это?4) Да загрузился без каких либо проблем, ошибок не было.не пишет в консоль - это ещё не значит что их не было вовсе..NET 4.5.2, Any CPUа в конфиг-файле акада (acad.exe.config) какая целевая версия дотнета указана (по умолчанию там v4.0)?
Автокад спросил про загрузку данной библиотекиА как это проверить?
Ну если Автокад не спросил: «А вы уверены, что хотите загрузить эту библиотеку?», то значит НЕдоверенный, иначе - доверенный.
какие dll акада подключал к проекту? установил ли для них Copy Local в False?Подключал accoremgd acdbmgd acmgd Autodesk.AuroCAD.Interop и Interop.Common.
Autodesk.AuroCAD.Interop и Interop.Commonэти не нужны для кода, который ты пытаешься запустить. Я тебя спрашивал про сетевой каталог. Из каких соображений молчишь?
Ой, прошу прощения, пропустил. Dll гружу с компа(что автокад что длл лежат на одном разделе).Autodesk.AuroCAD.Interop и Interop.Commonэти не нужны для кода, который ты пытаешься запустить. Я тебя спрашивал про сетевой каталог. Из каких соображений молчишь?
показывай содержимое твоего 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>
Во вложении архив с проектом.
Нельзя так бездумно переименовывать имена классов.Что и требовалось доказать... :( Прежде чем садиться писать код на .net, необходимо потратить некоторое время на изучения базовых вещей. Это не AutoLISP, где элементарные приложения можно писать уже через пару-тройку часов чтения справочника Н.Н. Полещука...
Спасибо теперь заработало.О! Первый шаг сделан. :)
Александр, я скажу что первый шажочек оказался чуть больше чем я даже ожидал) Кроме того что я могу обвести замкнутый контур, я теперь могу посчитать его периметр и площадь замкнутую внутри контура(взял ваш код по ссылке http://adn-cis.org/forum/index.php?topic=772.msg2887#msg2887). И кроме всего прочего сделал это все одной DLL))))) Все благодаря вам)Спасибо теперь заработало.О! Первый шаг сделан. :)
Такой вопрос, а можно ли сделать маленькую панельку с кнопками, по нажатию которых вызываются эти процедуры?Ответ на этот вопрос легко находится в справке автокада, а так же в гугле.
Такой вопрос, а можно ли сделать маленькую панельку с кнопками, по нажатию которых вызываются эти процедуры?Множество предложений: https://goo.gl/gKNxsX
Такой вопрос, а можно ли сделать маленькую панельку с кнопками, по нажатию которых вызываются эти процедуры?Ответ на этот вопрос легко находится в справке автокада, а так же в гугле.
Благодарствую. Предложенным Вами способом решение моей задачки будет проще.Такой вопрос, а можно ли сделать маленькую панельку с кнопками, по нажатию которых вызываются эти процедуры?Множество предложений: https://goo.gl/gKNxsX
Александр, подскажите пожалуйста, в каком месте у вас идет прорисовка конечной линии в контуреТы имеешь в виду соединение первой и последней вершины? Это управляется свойством Closed.
Ты имеешь в виду соединение первой и последней вершины? Это управляется свойством Closed.Да имеено это и было надо) Но я сам разобрался, но все равно спасибо.
Т.е. тебе нужно убрать poly.Closed = true; (или заменить на poly.Closed = false;)