среда, 31 декабря 2014 г.

Об отступах в коде Haskell

Отступы - они бывают разными. Два hs-файла могут совершенно одинаково визуально выглядеть в текстовом редакторе, однако один из них при этом компилироваться не будет.

Проблема с обновлением cabal

Проблема: попытки обновить cabal не приводят к появлению более новой версии программы.

понедельник, 22 декабря 2014 г.

Управляемая альтернатива ExplodeAllProxy и RemoveAllProxy

В данной заметке даётся ссылка на полный (т.е. без "цензуры" того или иного форума) исходный код управляемой библиотеки, реализующей функционал, аналогичный командам ExplodeAllProxy и RemoveAllProxy от Александра Ривилиса. Обозначенный исходный код может использоваться не только в AutoCAD, но и в nanoCAD, BricsCAD, а так же в любом приложении, работающем на базе платформы Teigha.

вторник, 16 декабря 2014 г.

О пользе возможности частичного применения функции

Маленький пример на тему практической пользы возможности частичного применения функций.

суббота, 22 ноября 2014 г.

Замечания по новой книге Н.Н. Полещука о программировании в AutoCAD 2013-2015

Замечания и пожелания по книге Н.Н. Полещука, не пропущенные цензурой Autodesk, я буду опубликовывать в этом блоге. То, что цензура пропустит, будет размещаться в соответствующей теме на форуме. Пишу замечания в Блокноте и затем копирую в блог или на форум, полагая, что выбранный мною способ обособления цитат и ссылок на их размещение в книге не вызовет каких-либо проблем в понимании. То, что я пишу - это моё личное мнение, не претендующее на абсолютную истину.

среда, 17 сентября 2014 г.

Autodesk и санкции против России

Заявление генерального директора Autodesk в России и СНГ Алексея Рыжова заставляет серьёзно задуматься о том, какие "сюрпризы" могут неожиданно свалиться нам на голову, поскольку и мы являемся пользователями AutoCAD... На всякий случай продублирую содержимое обозначенного заявления, т.к. не исключено, что со временем оно может исчезнуть с сайта Autodesk, или подвергнуться редактированию (политика ведь и всё такое...).

вторник, 16 сентября 2014 г.

Управление способом работы с базой данных чертежа: с использованием транзакции, или же с её эмуляцией

Маленький пример на тему того, как не меняя программный код можно управлять способом работы с базой данных чертежа: с использованием транзакции, или же с её эмуляцией. Используя такой подход можно моментально поменять способ работы сразу во многих местах, не внося правки в исходный код.

вторник, 5 августа 2014 г.

Последовательность действий AutoCAD при загрузке управляемого расширения

Маленькая шпаргалка на тему того, как AutoCAD обрабатывает загруженное в него управляемое расширение.

среда, 11 июня 2014 г.

Единая "точка входа" (DLL файл) в плагин .NET, ARX или VBA, не зависящая от версии AutoCAD

Поскольку .NET плагины AutoCAD (и не только они) имеют зависимость от версий обозначенной САПР, то нередко приходится один и тот же исходный код компилировать отдельно под разные версии AutoCAD. Результаты компиляции я, как правило, размещаю либо в одном и том же каталоге плагина, либо по специальным его подкаталогам, имена которых указывают на целевую версию ядра AutoCAD, а так же зависимость от разрядности приложения (если таковая присутствует). Какой из двух перечисленных вариантов использовать - зависит от конкретного случая.

четверг, 5 июня 2014 г.

Стиль точек в AutoCAD

Задачка, что называется "в два действия", но раз уж стал выкладывать информацию по работе с различными стилями в AutoCAD, то покажу и настройку стиля точек (для полноты картины), хотя, скорее всего, это и без моих заметок ни у кого не должно вызывать трудностей.

Текстовые стили в AutoCAD

Заметка содержит пример программного создания и детальной настройки текстового стиля в AutoCAD.

Стили мультилиний в AutoCAD

Заметка содержит пример программного создания и детальной настройки стиля мультилиний в AutoCAD.

Стили мультивыносок в AutoCAD

В заметке показан пример программного создания и детальной настройки стиля мультивыносок в AutoCAD. В коде каждая изменяемая нами опция настроек помечена комментарием, содержащим наименование этой опции в англоязычной версии AutoCAD.

Табличные стили в AutoCAD

В заметке показан пример создания и детальной настройки базового табличного стиля. Затем, на его основе создан производный табличный стиль к которому применён пользовательский шаблон таблиц (так же созданный нами в коде). После создания и настройки табличных стилей, в коде продемонстрированы примеры создания таблиц на основе обозначенных выше стилей.

Размерные стили в AutoCAD

В данной заметке показан подробный пример по созданию и настройке размерного стиля в AutoCAD. Рассмотрена программная настройка каждой опции каждой вкладки диалогового окна редактирования размерных стилей.

четверг, 29 мая 2014 г.

Нарезка областей (regions) на прямоугольные куски заданного размера

Задача стояла следующая: необходимо для указанных областей (regions) создать их копию, нарезанную либо на прямоугольники заданного размера, либо на заданное количество строк и столбцов. При этом исходные области (regions), подлежащие разрезке могут быть абсолютно любой, произвольной формы: например, созданными на основании сплайнов и содержащими в себе отверстия.

Выполнение логических операций с областями (regions)

В приведённом ниже коде сначала создаётся две области (красная и жёлтая), затем к их копиям применяются различные логические операции. Результат размещается рядом и подсвечивается зелёным цветом. Результат работы кода показан на скрине.

вторник, 20 мая 2014 г.

InternalsVisibleTo и Intellysience

Порой наши библиотеки могут содержать некоторый функционал, который мы активно используем в составе сборки, но который мы бы не хотели делать общедоступным. Такие методы и классы, как правило, объявляются с модификатором доступа internal. Если программист желает разрешить доступ к этому функционалу из внешних сборок, то в целевой сборке он помечает их как дружественные, при помощи атрибута сборки InternalsVisibleTo. Однако может случиться так, что в дружественной сборке Intellysience откажется показывать то, что в целевой было объявлено с модификатором internal. При этом компиляция проектов по прежнему будет проходить благополучно.

понедельник, 21 апреля 2014 г.

Git & Unicode

Начиная с версии V1.7.10 Git for Windows поддерживает кодировку Unicode.

пятница, 11 апреля 2014 г.

О совместимости версий .NET плагинов, AutoCAD, .NET Framework и MS Visual Studio

Маленькая шпаргалка на тему совместимости версий .NET плагинов, AutoCAD, .NET Framework и MS Visual Studio. Вообще, Visual Studio можно использовать любую: главное, чтобы она поддерживала возможность писать код под нужную нам версию .NET Framework. Разные версии AutoCAD могут использовать разные версии .NET Framework и плагины, использующие эти платформы. Кроме того, некоторые управляемые плагины можно использовать в разных версиях AutoCAD без необходимости их перекомпиляции.

четверг, 20 марта 2014 г.

Баг BlockTableRecord.HasAttributeDefinitions.

На форуме adn-cis.org недавно появилось сообщение о том, что BlockTableRecord.HasAttributeDefinitions возвращает неверное значение для тех записей, из которых определения атрибутов на самом деле были ранее удалены. Наличие данного бага было подтверждено и заявка отправлена в ADN. Соответственно, придётся писать свою, корректную реализацию данного функционала.

пятница, 14 марта 2014 г.

tlbimp.exe и целевая версия .NET Framework

ObjectARX SDK содержит некоторый набор TLB файлов. Для некоторых из них приходится генерировать управляемую обёртку "вручную" (причина указана ниже), посредством утилиты tlbimp.exe (если нужная обёртка изначально отсутствует). Обозначенная утилита содержит некоторый набор ключей для конфигурирования конечного результата. Однако одной, очень важной настройки, всё же не хватает...

среда, 12 марта 2014 г.

Об управляемых "заглушках" из ObjectARX SDK и целевой платформе (x86\x64)

Как известно, управляемые "заглушки" находятся в ObjectARX SDK в подкаталогах inc, inc-win32 и inc-x64. В идеальном варианте, хотелось бы всегда компилировать код как AnyCPU, однако не во всех случаях это возможно и порой приходится создавать сборки отдельно для x86 и отдельно для x64.

Разработка приложений: виртуальные машинки и удалённая отладка

Для того, чтобы на компьютер "с нуля" установить всё необходимое для работы программное обеспечение, нередко требуется много времени. При этом не имеет значения, физическая это машинка или же виртуальная.

вторник, 11 марта 2014 г.

AutoCAD .NET API & IDisposable

В данной заметке речь пойдёт об использовании IDisposable в AutoCAD .NET API. Если не освобождать ресурсы, то будет происходить утечка памяти, которая может привести к серьёзным проблемам. Дабы этого не происходило, нужно понимать, для каких объектов и когда следует вызывать Dispose(), а так же для каких объектов этого делать категорически нельзя.

пятница, 21 февраля 2014 г.

Работа с реестром в операционных системах Windows x64; разрядность системы и приложения

Мною ранее была написана некоторая библиотека AcadInfo.dll, скомпилированная как AnyCPU. В ней, помимо прочего, определён метод, считывающий из реестра необходимую информацию обо всех установленных на локальной машине версиях программы AutoCAD (нередко их может быть установлено сразу несколько) и представляющий её в виде массива объектов AcadInfo, с которыми достаточно удобно работать (примеры в справке). Как правило, в наиболее свежих версиях AutoCAD разрядность установленного AutoCAD совпадает с разрядностью операционной системы, но так было не всегда и это следует учитывать. В данной заметке речь пойдёт о нюансах работы приложения с реестром операционной системы x64 в случаях, когда разрядность приложения является иной, т.е. x86...