В .NET-атрибутах можно указывать только константные выражения. Т.о. атрибуту DllImport нужно указывать имя библиотеки статически, дабы это имя было известно на этапе компиляции. Порой это порождает уродливые конструкции, разрастающиеся как снежный ком, по мере появления новых версий AutoCAD. Наглядный тому пример можно увидеть здесь в коде Александра Ривилиса: по мере появления AutoCAD 2018, 2019 и т.д. - этот код придётся каждый раз дописывать.
Программирование, настройка и администрирование CAD систем
Показаны сообщения с ярлыком AutoCAD. Показать все сообщения
Показаны сообщения с ярлыком AutoCAD. Показать все сообщения
суббота, 20 августа 2016 г.
пятница, 22 июля 2016 г.
NuGet пакеты для AutoCAD .NET API
Пару лет назад, компания Autodesk начала (наконец-то!) опубликовывать NuGet-пакеты для AutoCAD .NET API. Об этом так же было радостно сообщено в блоге ADN. Однако, как это обычно и бывает у Autodesk, тестированием пакетов перед их публикацией в Autodesk не заморачиваются (как собственно и тестированием самого AutoCAD, ибо длительная, печальная практика показывает, что группа тестирования даже самого AutoCAD в компании Autodesk в принципе нарисована только "для галочки" - примеров, доказывающих это - множество, в т.ч. и в моём блоге).
понедельник, 27 июня 2016 г.
четверг, 21 апреля 2016 г.
И снова о хостинге WCF-сервисов в 2016-м accoreconsole.exe...
Подумал тут... Вполне возможно, что Autodesk умышленно прикрыла
возможность хостинга сервисов в 2016-м accoreconsole.exe, дабы если не
полностью пресечь (т.к. это не возможно), то хотя бы максимально
усложнить возможность использования инструмента в системе распределённых
приложений взаимодействующих через сервисы...
вторник, 19 апреля 2016 г.
четверг, 14 апреля 2016 г.
О хостинге WCF-сервисов в accoreconsole.exe (AutoCAD 2016)
Как известно, WCF-сервисы могут в качестве хостинга использовать не только IIS и WAS, но так же и произвольные приложения (консольные или GUI). Как показывает практика, в качестве хоста можно использовать acad.exe. В идеале хотелось бы иметь возможность хостить службы в accoreconsole.exe, но не забываем, что это Autodesk, а это означает, что скучать не придётся...
пятница, 8 апреля 2016 г.
Блокировка кнопки и контекстного меню закрытия консольного окна
Как известно, accoreconsole.exe
всегда был и до сих пор остаётся достаточно кривым... Один из неприятных
аспектов его поведения, присутствующий по сей день, заключается в том,
что если завершать работу приложения кликом мышки по кнопке закрытия
консольного окна в верхнем правом углу, либо выбирая соответствующий
пункт из контекстного меню консольного окна, то приложение завершает свою работу через
задницу - не выполняя код методов Terminate(), а так же код зарегистрированных событий, таких например, как AppDomain.CurrentDomain.ProcessExit.
Ярлыки:
.net,
Консольное окно,
accoreconsole,
AutoCAD,
C#,
WinAPI
среда, 3 февраля 2016 г.
среда, 11 ноября 2015 г.
Быстрый способ проверить наличие запущенного процесса acad.exe или accoreconsole.exe
То, что предоставлено в данной заметке не является документированным способом и получено на основе анализирования состава мьютексов, создаваемых и используемых AutoCAD в процессе своей работы. Способ применим как к acad.exe, так и к accoreconsole.exe. Проверялся с AutoCAD 2009-2016 x64, а так же с AutoCAD 2008 x86, запущенном в Windows x64. Решение продемонстрировано в двух вариантах: C++ и C#.
вторник, 3 ноября 2015 г.
Открытие и закрытие консольного окна для GUI-приложения
Работая с GUI приложением иногда бывает удобно в режиме реального времени посмотреть, что оно отправляет себе на консоль (т.е. в потоки stdout и stderr), а порой может возникнуть и желание что-то отправить в поток stdin с клавиатуры. Можно, конечно же, выполнять перенаправление в файлы, но этот вариант не всегда удобен. В данной заметке, на примере AutoCAD, показано, как для GUI-приложения открыть консольное окно, выполнить перенаправление потоков и, после того как консольное окно не будет нужно, закрыть его.
суббота, 26 сентября 2015 г.
Опубликован проект AcadKeyParser
Выложил на BitBucket проект AcadKeyParser. Информацию о назначении библиотеки, примеры её использования и откомпилированные версии под .NET 3.5, 4.0, 4.5 и 4.6 разместил там же. В составе решения присутствуют модульные тесты (NUnit) и консольная утилита, позволяющая интерактивно проверять "валидность" ключей AutoCAD. Результаты модульных тестов автоматом оформляются в виде HTML отчёта при помощи утилиты ReportUnit (более детальную информацию см. в файле run_me.bat).
Ярлыки:
AcadKeyParser,
AutoCAD,
BitBucket,
NUnit,
ReportUnit
четверг, 18 июня 2015 г.
NUnit: Тестирование DLL, использующей внешние данные
В составе одной из моих DLL присутствует функционал, позволяющий проверять на предмет корректности выражения вида ACAD-E001:409 (а так же создавать их) и, если выражение корректно, то полностью расшифровывать эту информацию. Для работы обозначенной DLL необходим специальный XML файл, содержащий информацию о существующих версиях AutoCAD и их вертикальных продуктах. Этот файл размещается в том же каталоге, в котором находится DLL. Для тестирования обозначенного функционала я написал пару тестов и запустил их в GUI NUnit...
пятница, 17 апреля 2015 г.
Шаблоны проектов для управляемых расширений AutoCAD
Опубликовал шаблоны для разработки и тестирования управляемых расширений для AutoCAD и вертикальных решений на его базе.
среда, 8 апреля 2015 г.
Немного о качестве accoreconsole.exe
Как говорится, страна должна знать своих героев... В данном контексте речь пойдёт о багах, с которыми предстоит столкнуться пользователям утилиты accoreconsole.exe. Ранее я уже писал об этом инструменте здесь. За четыре года уж точно можно было бы выявить очевидные ляпы и исправить их. Однако "можно было бы", не означает, что это "было сделано" в реальности.
вторник, 31 марта 2015 г.
TestCase в NUnit и Gallio
В NUnit, TestCase - это атрибут, однако в Gallio это не так. Т.о. в каждой из обозначенных платформ своя реализация поведения обозначенного элемента. В этой заметке показан пример исходного кода, который успешно компилируется и работает как в случае использования Gallio, так и в случае использования NUnit.
четверг, 26 марта 2015 г.
Шаблон проекта VS для написания модульных тестов для .Net-расширений AutoCAD
Ранее я уже приводил пример создания общего шаблона для .NET плагина под любую версию AutoCAD не старше чем 2009-я. Аналогичный шаблон можно создать и для модульных тестов под эти плагины.
пятница, 13 марта 2015 г.
Шаблон проекта VS для создания .Net-расширений AutoCAD
Давно хотелось реализовать, да всё руки не доходили. На данный момент имеется некоторая вполне рабочая версия. Возможно будет проведён его некоторый рефакторинг, но сути это не изменит.
четверг, 26 февраля 2015 г.
Аудит средствами Teigha
Возможность выполнять аудит программно, "родными" средствами AutoCAD .NET API, появилась в AutoCAD только начиная с версии 2015. В то же время библиотека Teigha предоставляет эту возможность уже достаточно давно.
понедельник, 22 декабря 2014 г.
Управляемая альтернатива ExplodeAllProxy и RemoveAllProxy
В данной заметке даётся ссылка на полный (т.е. без "цензуры" того или иного форума) исходный код управляемой библиотеки, реализующей функционал, аналогичный командам ExplodeAllProxy и RemoveAllProxy от Александра Ривилиса. Обозначенный исходный код может использоваться не только в AutoCAD, но и в nanoCAD, BricsCAD, а так же в любом приложении, работающем на базе платформы Teigha.
вторник, 16 сентября 2014 г.
Управление способом работы с базой данных чертежа: с использованием транзакции, или же с её эмуляцией
Маленький пример на тему того, как не меняя программный код можно управлять способом работы с базой данных чертежа: с использованием транзакции, или же с её эмуляцией. Используя такой подход можно моментально поменять способ работы сразу во многих местах, не внося правки в исходный код.
Ярлыки:
.net,
AutoCAD,
OpenCloseTransaction,
Transaction
Подписаться на:
Сообщения (Atom)