Тема: не могу запустить Lisp

Автокад 2002 рус прописал проги в формате lsp hf сработали и больше не хотят перепрописовал не идут

Re: не могу запустить Lisp

Код показать религия не позволяет?

Re: не могу запустить Lisp

> Алексей
попортились ;)

Re: не могу запустить Lisp

Стухли?

Re: не могу запустить Lisp

код любой например этот или CALCL
(defun C:OFF2 (/ d obj ent adoc *error* undo lays Flag)
  (defun *error* (msg)(vla-EndUndoMark adoc))
  (vl-load-com)(setq adoc (vla-get-activedocument (vlax-get-acad-object))
  lays (vla-get-layers adoc))(vla-StartUndoMark adoc)(setvar "CMDECHO" 0)
  (if (null *OFF2*)(setq *OFF2* (abs (getvar "OFFSETDIST"))))
  (if (zerop *OFF2*)(setq *OFF2* 1))(setq d (getvar "UNDOCTL"))
  (cond ((= d 0) (vl-cmdf "_.UNDO" "_All"))
    ((= d 3) (vl-cmdf "_.UNDO" "_Control" "_All"))
    (t nil)) ;_ end of cond
  (princ "\n Величина смещения <")(princ *OFF2*)(princ ">: ")
  (initget 6)(if (null (setq d (getdist))) (setq d *OFF2*))
  (setq  *OFF2* d undo 0 Flag t)
  (initget "Undo Отмени Г J Exit Выход У D _Undo Undo Undo Undo Exit Exit Exit Exit")
  (while Flag
    (setq obj (entsel (strcat "\n Выберите объект ["
           (if (not (zerop undo)) "Отмени/" "")
           "Выход] <выход>: ")))
    (cond ((= obj "Undo")(if (not (zerop undo))(progn
           (vl-cmdf "_UNDO" "_B")(setq undo (1- undo)))(alert "Нечего больше отменять")))
    ((= obj "Exit")(setq Flag nil))
    ((null obj)(if (= (getvar "ERRNO") 52)(setq Flag nil)(princ " *** Мимо ***")))
    (t (setq ent (vlax-ename->vla-object (car obj)))
     (cond ((= (vla-get-lock (vla-item lays (vla-get-layer ent))) :vlax-true)
      (alert "На блокированном слое!"))
     ((vlax-method-applicable-p ent 'Offset)(vl-cmdf "_UNDO" "_M")(setq undo (1+ undo))
     (vla-offset ent d)(vla-offset ent (- 0  d)))
     (t (alert "Не удается создать объект, подобный данному")))))
   (initget "Undo Отмени Г J Exit Выход У D _Undo Undo Undo Undo Exit Exit Exit Exit"))
(vla-EndUndoMark adoc)(princ))
(princ "\nНаберите в командной строке OFF2")

Re: не могу запустить Lisp

> Алексей
Специально поставил 2002 и проверил: все работает. Подробнее напиши что и как делал.

Re: не могу запустить Lisp

> Алексей
Вот работающая версия. Попробуй "перебить". Может ошибка имеется.

(defun C:OFF2 (/ d obj ent adoc *error* undo lays Flag)
  (defun *error* (msg)(vla-EndUndoMark adoc))
  (vl-load-com)(setq adoc (vla-get-activedocument (vlax-get-acad-object))
  lays (vla-get-layers adoc))(vla-StartUndoMark adoc)(setvar "CMDECHO" 0)
  (if (null *OFF2*)(setq *OFF2* (abs (getvar "OFFSETDIST"))))
  (if (zerop *OFF2*)(setq *OFF2* 1))
  (setq d (getvar "UNDOCTL"))
  (cond
    ((= d 0) (vl-cmdf "_.UNDO" "_All"))
    ((= d 3) (vl-cmdf "_.UNDO" "_Control" "_All"))
    (t nil)) ;_ end of cond
  (princ "\n Величина смещения <")(princ *OFF2*)(princ ">: ")
  (initget 6)(if (null (setq d (getdist))) (setq d *OFF2*))
  (setq  *OFF2* d undo 0 Flag t)
  (initget "Undo Отмени Г J Exit Выход У D _Undo Undo Undo Undo Exit Exit Exit Exit")
  (while Flag
    (setq obj (entsel (strcat "\n Выберите объект ["
           (if (not (zerop undo)) "Отмени/" "")
           "Выход] <выход>: ")))
    (cond ((= obj "Undo")
     (if (not (zerop undo))
       (progn (vl-cmdf "_UNDO" "_B")(setq undo (1- undo)))
       (alert "Нечего больше отменять")))
    ((= obj "Exit")(setq Flag nil))
    ((null obj)(if (= (getvar "ERRNO") 52)(setq Flag nil)(princ " *** Мимо ***")))
    (t (setq ent (vlax-ename->vla-object (car obj)))
     (cond ((= (vla-get-lock (vla-item lays (vla-get-layer ent))) :vlax-true)
      (alert "На блокированном слое!"))
     ((wcmatch (strcase (cdr(assoc 0 (entget(car obj))))) "*POLYLINE,LINE,SPLINE,ARC,CIRCLE,ELLIPSE")
     (vl-cmdf "_UNDO" "_M")(setq undo (1+ undo))
     (vla-offset ent d)(vla-offset ent (- 0  d)))
     (t (alert "Не удается создать объект, подобный данному")))))
   (initget "Undo Отмени Г J Exit Выход У D _Undo Undo Undo Undo Exit Exit Exit Exit"))
 (vla-EndUndoMark adoc)(princ))
(princ "\nНаберите в командной строке OFF2")

Макрос на кнопку:

^C^C(if (not C:offset2) (load "offset2")) offset2

Ну и не забыит указать путь к LISP программе...Все, кажется...

Re: не могу запустить Lisp

Извиняюсь, макрос на кнопку:

^C^C(if (not C:off2) (load "off2")) off2

Re: не могу запустить Lisp

BigScrew спасибо но у меня с Автокадом засада не работают все lsp пишет только Press F1 for help и в отдельную папку сохронял и прописывал и в Suport не хочет работать

Re: не могу запустить Lisp

> BigScrew
Здесь не мешало бы записать так:
Если код сохранить в файле off2.lsp, то макрос для кнопки может иметь вид:

^C^C(if (not C:off2) (load "off2")) off2

> Алексей
Приведенный вами код работает в AutoCAD 2002 РУС.

Re: не могу запустить Lisp

> Алексей
Проверь, заргужен ли vl.arx. Набери в командной строке (arx)

Command: (arx)
("acadapp.arx" "acdblclkedit.arx" "acdblclkeditpe.arx" "acdim.arx"
"aceplotx.arx" "acetlodr.arx" "achapi15.dbx" "achlnkui.arx" "aclayerp.arx"
"acpltstamp.arx" "acspacetrans.arx" "actoday.arx" "oleaprot.arx" "vl.arx")

Набери в командной строке _VLIDE Должен загрузится Автолисп.