Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > Проблема с autolisp


Автор: dmalsh 17.4.2009, 10:51
Есть кусок кода:
Код
(defun C:MAKEPANEL (/ kA kB kC kD kt tkA tkB tkC tkD)

  (SETQ kA 500)
  (SETQ kB 1000)
  (SETQ kC 40)
  (SETQ kD 20)
  (SETQ kt 2)

  (setq kD (- kD kt))
  (setq kC (- kC (* 2 kt)))
  (setq kB (- kB (* 2 kt) (* 2 kD)))
  (setq kA (- kA (* 2 kt) (* 2 kD)))

  (setq tkA (rtos kA 2 4))
  (setq tkB (rtos kB 2 4))
  (setq tkC (rtos kC 2 4))
  (setq tkD (rtos kD 2 4))

  (COMMAND "_LINE" 
                  (strcat (rtos (+ kC (* 2 kD) 10) 2 4) ",10") ;point 1
                  (strcat "@-" tkD "," tkD)                    ;point 2
                  (strcat "@0," tkC)                           ;point 3
                  (strcat "@-" tkC ",0")                       ;point 4
                  (strcat "@-" tkD "," tkD)                    ;point 5
                  (strcat "@0," tkB)                           ;point 6
  ) 

  (COMMAND "")
  (COMMAND "_ZOOM" "_E")
)

При выполнении выдает:
Код
Command: MAKEPANEL
_LINE Specify first point: 82,10
Specify next point or [Undo]: @-18,18
Specify next point or [Undo]: @0,36 Zero length line created at (64.0000, 
28.0000, 0.0000)
Specify next point or [Close/Undo]: @-36,0 Zero length line created at 
(64.0000, 28.0000, 0.0000)
Specify next point or [Close/Undo]: @-18,18 Zero length line created at 
(64.0000, 28.0000, 0.0000)
Specify next point or [Close/Undo]: @0,960
Specify next point or [Close/Undo]:
Command: _ZOOM
Specify corner of window, enter a scale factor (nX or nXP), or
[All/Center/Dynamic/Extents/Previous/Scale/Window/Object] <real time>: _E 
Regenerating model.
Command: nil

Иногда срабатывает правильно (в основном при первом запуске).

Автор: Cinot 20.4.2009, 17:00
В команду "_LINE" передаются точки в виде списка (x y z) и "" в конце, а у вас - строки.

Автор: dmalsh 20.4.2009, 20:35
Цитата(Cinot @ 20.4.2009,  17:00)
В команду "_LINE" передаются точки в виде списка (x y z) и "" в конце, а у вас - строки.

Да вы, батенька, еще больший дилетант, чем я smile
Не примите за оскорбление.
Почитайте курс лекций "Программирование на AutoLISP" Троицкого Д.И., конкретно, лекция 4.
Там про команду "_LINE" хорошо написано.
А проблема решилась установкой переменной "OSMODE" в 0.

Автор: Cinot 21.4.2009, 08:34
Спасибо за советы, однако я прочитал куда более интересные книги по autolisp/visual lisp, и формы записи программ проектировщиками приводит меня в ужас.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)