Логотип сайта поддержки пользователей САПРО сайте поддержки пользователей САПР Translate to:
Hosting Ukraine

Советы по программированию в AutoCAD.

  1. Как защитить свои авторские права на Lisp-программы?
  2. Visual Lisp - новое средство разработки приложений для AutoCAD.
  3. Принципы шифрования LISP-файлов.
  4. Как создавать анонимные блоки в AutoCAD.
  5. Как написать счетчик времени на языке AutoLISP?

Как защитить свои авторские права на Lisp-программы?

Поскольку Lisp-код исполняется интерпретатором AutoCAD, Lisp-программа как правило представляется в исходном тексте. Однако существуют несколько способов сделать ее не читабельной, но при этом исполняемой.

  1. С помощью программы protect.exe, кодирующей исходный текст.
  2. С помощью программы kelv.exe, которая удаляет все пробелы, комментарии в исходном тексте, а так же изменяет имена переменных.
  3. С помощью специального компилятора Lisp-файлов. Данный метод приемлем только для DOS-версии AutoCAD по 12 включительно.
Как простейший способ защиты, я бы рекомендовал сначала обработать Lisp-программу с помощью kelv.exe что бы привести ее в нечитаемый вид, а затем закодировать ее с помощью protect.exe. Получить эти сервисные средства можно в разделе программы этого сайта.
Приятной новостью в этом плане стала покупка AutoDesk программы фирмы Basiss Software Vital lisp. После модификации этот программный продукт получил название Visual Lisp. Он представляет собой интегрированную среду разработки и компилятор Lisp-файлов. Более подробная информация находится в разделе "Visual Lisp - новое средство разработки приложений для AutoCAD.".


Visual Lisp - новое средство разработки приложений для AutoCAD.

Autodesk купил Vital Lisp, компилятор Lisp-программ для AutoCAD R13 - R14 у компании Basiss Software. После модификации данный программный продукт получил название Visual Lisp и до 1 января 1999 года был доступен для Download на сайте Autodesk. В настоящее время Visual Lisp является коммерческим продуктом, но я думаю приобрести его не составляет проблемы :-).

Возможности Visual Lisp:
Visual Lisp построен на технологии ObjectARX, и планируется AutoDesk как еще один стандарт средств программирования под AutoCAD наряду с AutoLisp, ObjectARX и Microsoft Visual Basic for Applications.

Характеристики Visual Lisp:

Некоторые ресурсы по Visual Lisp можно найти на этом сайте в разделе "Ссылки"


Опишите пожалуйста хоть вкратце формат лисповских защищенных файлов.

В начале идет текст "AutoCAD PROTECTED LISP file", после него CR/LF, дальше EOF. Следом идет однобайтовый ключ, с помощью которого и осуществяется кодирование.

См. програмку декодирования на REXX. Она не совсем корректно работает в общем случае, но идея думаю будет понятна. Hепонятные для меня места отмечены ???

/**/
arg file tofile
lin= linein(file)
call charin(file) /* skip '1a'x */
key= charin(file)
say "key=" c2x(key)
signal on notready name eof
do i=1 by 1
  ch= charin(file)
  if ch='1A'x then leave
  if ch='20'x then iterate /* ??? */
  out= bitxor(ch, key)
  key= shl(c2x(ch))
  if out='1A'x then out= ch
  if out='0D'x then out= ch
  if out='10'x then say d2x(i-1)
  call charout tofile, out
  end

eof:
  call stream file, 'c', 'close'
  call stream tofile, 'c', 'close'
  exit

shl: arg hex
  bit= x2b(hex)
  if left(bit,1) then
    res= substr(bit,2)'1'
  else 
    res= substr(bit,2)'0'
  return x2c(b2x(res))
Serg Shikov, 2:5020/52, (RU.ACAD)

Как создавать анонимные блоки в AutoCAD.

Большинство программ AutoLISP, результатом работы которых является отрисовка объектов, состоящих из нескольких примитивов (например кокой-нибудь спецзнак), обладают одним общим недостатком - отрисованный элемент состоит из нескольких объектов и поэтому, если возникнет необходимость удалить, переместить, повернуть и т. п. весь объект, то выделить его целиком не всегда удобно. Иногда для решения этой проблемы все объекты спецзнака отрисовываются в отдельном слое. Другим способом является создание таких объектов как анонимные блоки. В этом случае объект представляет из себя единое целое и оперировать с ним гораздо легче. При этом сам блок в, отличие от обычного, для пользователя не видим и его имя не появляется в списке имен блоков при использовании команды insert. В случае удаления отрисованного спецзнака из чертежа, анонимный блок, на который ссылался этот элемент автоматически удаляется из базы данных чертежа при закрытии файла.

  Процедура называется (UnBlock pt ss) , где
       pt - точка вставки объекта
       ss - набор объектов, которые надо превратить в анонимный блок.
             ss можно создать с помощью команды ssget или ssadd.

Количество объектов в наборе ss ограничено только возможностями AutoCAD'а. Как мне кажется, это процедуру можно без каких либо проблем использовать в любой версии AutoCAD начиная с v10, т. к. используемые в ней команды AutoLISP не претерпели за последнее время никаких изменений. Так-же она не зависит и от языка используемого AutoCAD'а. При создании этой процедуры я пользовался документацией от AutoCAD'а v10, использую же я ее в AutoCAD'е 2000 (15) .

Процедура UnBlock содержится в файле UnBlock.zip
В файле SpSign.zip содержится пример использования этой процедуры (маленький набор программ отрисовки таких спецзнаков как "Разрез" и "Вид").

Евгений Калашников
Технологическое бюро цеха металлоконструкций
ОАО "Западно-Сибирский металлургический комбинат"
E-Mail: tb5@ugm.zsmk.nvkz.kuzbass.net


Как написать счетчик времени на языке AutoLISP?

С помощью системной переменной CDATE (возможно использование других переменных).

В нужных местах программы следует прочитать текущие дату и время, которые возвращаются через системную переменную CDATE, например:

выражение (setq d1 (rtos (getvar "CDATE") 2 8)) возвратит (примерно) "20010528.14221139" (это соответствует 28 мая 2001 г., 14 час. 22 мин. 11,39 сек.).

В возвращаемом значении перед точкой - год (4 цифры), месяц (2 цифры) и день (2 цифры), после точки - часы (первые 2 цифры), минуты (2 цифры), секунды (2 цифры) и сотые доли секунды (2 последние цифры). Больше 8 десятичных знаков после точки в CDATE получить нельзя.

Обработайте таким образом показания часов в соответствующих местах работы программы, получите интересующие вас данные.

Полещук Н.Н.,
автор книг: AutoCAD 2000. Самоучитель.
AutoCAD 2000 и Visual LISP. Самоучитель.
Visual LISP и секреты адаптации AutoCAD. Практическое руководство.



Copyright © Сайт поддержки пользователей САПР