Программное создание поля.

В AutoCAD 2005 появился очень интересный объект - поле. Что это такое и с чем его едят, описывать не буду, все это есть в справке. Но вот про создание поля как-то не очень все понятно. Попробую заполнить этот пробел (может, и сам чего еще пойму ;))
Далее

Работа с неактивным документом

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

Особенности примитивов TEXT и ATTRIB*

С точки зрения программирования достаточно большой интерес представляют примитивы TEXT, MTEXT и ATT* (соответственно однострочные и многострочные тексты и атрибуты - как описания, так и вхождения). Я бы хотел рассмотреть такую достаточно забавную штуку, как точка вставки текста.
Далее

Диалоговые окна dcl – зло? Или все же нет?

Редко какая программа обходится без взаимодействия с пользователем. Поскольку здесь разговор ведется именно о разработке для AutoCAD, уточняю: "редко какое пользовательское дополнение для AutoCAD обходится без взаимодействия с пользователем".

Можно запросить выбрать из контекстного меню опцию, а можно написать диалог. Вопрос: что выгоднее?

Ответа (по крайней мере однозначного ответа) лично я не знаю. Хотя для себя я выбрал правило: если запросов больше чем 3, надо задумываться о написании и вызове диалогового окна.
Далее

Локализация и команды

Просто захотелось дать полный ответ на такой вопрос: "Как в русском / немецком / китайском etc AutoCAD написать лисп / DIESEL / макрос, не зависящий от локализации?
Далее

Динамическое изменение примитивов

Скажу честно: лично меня зрелище изменения примитивов чертежа "на лету" всегда завораживало. До очень многих вещей мне не дорасти (например, как показан здесь), но кое-что можно попытаться разобрать.
Далее

К вопросу о существовании Бога, зла, тепла, холода и т.п.

Преобразование единиц измерения блоков в файле

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

Оптимальным решением, как ни странно, будут "безразмерные" блоки. То есть те, у которых единицы - "Unitless" (в русской версии перевода не помню). С новыми блоками все понятно - достаточно контролировать это значение и стараться не допускать ошибок. А что делать со старыми, уже вставленными? Да очень просто - заменить!
Далее

Выполнение кода сразу после загрузки .NET-dll

Иногда бывает необходимо до вызова команд (а еще лучше - прямо после загрузки кода) выполнить некоторые действия: установить системные переменные, установить пути поддержки и т.п.). В лиспе это просто:

1
2
3
4
5
6
(defun test()
  (alert "test")
  )

;; А вот и выполнение
(test)

Это то, что в лиспе часто называют "самовызовом". Выполнение кода начинается сразу после загрузки соответствующего lsp-файла в память.

Механизм достаточно удобный, несмотря на некоторые трудности, описанные здесь и здесь.

С .NET ситуация немного иная.

Далее

История ника