| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите подредактировать программный код в LISP

Помогите подредактировать программный код в LISP

Ответ
Поиск в этой теме
Непрочитано 13.01.2020, 12:16 #1
Помогите подредактировать программный код в LISP
Alina7142
 
Регистрация: 13.01.2020
Сообщений: 1

Добрый день, написала код по построению фигуры, еще нужно диалоговое окно, вроде написала, а не работает, не могли бы вы мне помочь, посмотреть код и указать на ошибки? Заранее благодарю
Код:
[Выделить все]
 (DEFUN c:mp_1 (/ dcl_id nub sr sd1 sd2)
(defun c:mp_1 (sr sd1 sd2 /)

(setq p (getpoint "\Укажите точку: ")
	R sr
        D1 sd1
        b1 (/(* R 4) 2)
        b2 sd2
      b3 2)
  (setq c1 (polar p (/ pi 2) (/(* R 5) 3))) ; определение координат точки c1
  (setq c2 (polar p (* (/ pi 2) 3) (/(* R 5) 3)))
  (setq c3 (polar p  (/ pi 3)  (/(* R 5) 3)))
  (setq c4 (polar p (* (/ pi 3) 4) (/(* R 5) 3)))
  (setq c5 (polar p (* (/ pi 3) 2) (/(* R 5) 3)))
  (setq c6 (polar p (* (/ pi 3) 5) (/(* R 5) 3)))
  
  (setq p3 (polar p  (* (/ pi 9) 4)  (/(* R 7)9)))
  (setq p4 (polar p (* (/ pi 180) 83) R))
  (setq g3 (polar p  (* (/ pi 9) 5)  (/(* R 7)9)))
  (setq g4 (polar p  (* (/ pi 180) 97)  R))

  (setq p5 (polar p  (* (/ pi 9) 13)  (/(* R 7)9)))
  (setq p6 (polar p (* (/ pi 180) 263) R))
  (setq g5 (polar p  (* (/ pi 9) 14)  (/(* R 7)9)))
  (setq g6 (polar p  (* (/ pi 180) 277)  R))
  
  (setq p1 (polar p  (* (/ pi 18) 13)  b1))
  (setq p2 (polar p (*(/ pi 18)5) b1))
  (setq g1 (polar p   (* (/ pi 18) 23) b1))
  (setq g2 (polar p  (* (/ pi 18) 31)  b1))

  (setq osm (getvar "osmode")) ; запоминаем привязки пользователя
  (setvar "osmode" 0) ; отключаем привязки
  
  (command "_circle" p R)
  (command "_circle" p (/(* R 7)9))
  (command "_circle" p (/ R 3))	   

  
   (command "_circle" c1 b3)
   (command "_circle" c2 b3)
   (command "_circle" c3 b3)
   (command "_circle" c4 b3)
   (command "_circle" c5 b3)
   (command "_circle" c6 b3)
  
  " (command "_circle" g b2)"

(vl-load-com) ; загружаем функции расширения
  (setq acad_object (vlax-get-acad-object)) 
  (setq active_document (vla-get-activedocument acad_object))
  (setq model_space (vla-get-modelspace active_document))
  
  (vla-addarc model_space (vlax-3d-point p) b1   (*(/ pi 18)5) (* (/ pi 18) 13))
  (vla-addarc model_space (vlax-3d-point p) b1 (* (/ pi 18) 23) (* (/ pi 18) 31))


  (command "_line" p1 g1 "") ; рисуем линию 
  (command "_line" p2 g2 "")

  (command "_line" p3 p4 "") ; рисуем линию 
  (command "_line" g3 g4 "")
  
   (command "_line" p5 p6 "") ; рисуем линию 
  (command "_line" g5 g6 "")
  )
  (defun raz_exm ()
    (setq sr (atoi (get_tile "eb_sr1")))
    (setq sd1 (atoi (get_tile "eb_sd1")))
    (setq sd2 (atoi (get_tile "eb_sd2")))
    
  )
  ;-------------------------------------
  ;--------------Диалоговое окно--------
  (setq dcl_id (load_dialog "mp_1.dcl")) ; загружаем диалог (файл DCL)
  (if (not (new_dialog "mp_1" dcl_id))(exit))  ; проверка существования диалога
  (action_tile "accept" "(raz_exm) (done_dialog 1)")  ; Если нажата кнопка "аccept"
  (action_tile "cancel" "(done_dialog 0)") ; Если нажата кнопка "cancel"
  (setq ddi (start_dialog))
  (unload_dialog dcl_id) ; выгрузить Диалоговое окно
  ;-----------------------------------------------------------------------------
  (if (= ddi 1) (mp_exm sr sd1 sd2))
  (princ)
)
Просмотров: 1476
 
Непрочитано 14.01.2020, 15:19
#2
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


А зачем внутри одного defun другой с тем же именем?
См. первые две строчки кода.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 27.01.2020, 10:47
#3
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


вот мне интересно, как преподают автолисп? дают такие вот задачки на попробуй разберись?
а это запоздалый дюспаталин)

Код:
[Выделить все]
 
(DEFUN c:mp_1 (/ dcl_id sr sd1 sd2 mp_2 osm)

;****************************************************

(defun mp_2 (R D1 b2 / c1 c2 c3 c4 c5 c6 p1 p2 p3 p4 g1 g2 g3 g4 p5 p6 g5 g6 raz_exm) ;acad_object active_document model_space)
	(setq p (getpoint "\nУкажите точку: ")
	      ;R sr
	      ;D1 sd1
	      b1 (/(* R 4) 2)
	      ;b2 sd2
	      b3 2)
	  (setq c1 (polar p (/ pi 2) (/(* R 5) 3))) ; определение координат точки c1
	  (setq c2 (polar p (* (/ pi 2) 3) (/ (* R 5) 3)))
	  (setq c3 (polar p  (/ pi 3) (/ (* R 5) 3)))
	  (setq c4 (polar p (* (/ pi 3) 4) (/ (* R 5) 3)))
	  (setq c5 (polar p (* (/ pi 3) 2) (/ (* R 5) 3)))
	  (setq c6 (polar p (* (/ pi 3) 5) (/ (* R 5) 3)))

	  (setq p3 (polar p  (* (/ pi 9) 4)  (/ (* R 7)9)))
	  (setq p4 (polar p (* (/ pi 180) 83) R))

	  (setq g3 (polar p  (* (/ pi 9) 5)  (/ (* R 7)9)))
	  (setq g4 (polar p  (* (/ pi 180) 97)  R))

	  (setq p5 (polar p  (* (/ pi 9) 13)  (/ (* R 7)9)))
	  (setq p6 (polar p (* (/ pi 180) 263) R))

	  (setq g5 (polar p  (* (/ pi 9) 14)  (/ (* R 7)9)))
	  (setq g6 (polar p  (* (/ pi 180) 277)  R))

	  (setq p1 (polar p  (* (/ pi 18) 13)  b1))
	  (setq p2 (polar p (* (/ pi 18) 5) b1))

	  (setq g1 (polar p   (* (/ pi 18) 23) b1))
	  (setq g2 (polar p  (* (/ pi 18) 31)  b1))

	  (setq osm (getvar "osmode")) ; запоминаем привязки пользователя
	  (setvar "osmode" 0) ; отключаем привязки
	  (setvar "cmdecho" 0) ; отключаем командное эхо

	  (command "_circle" p R)
	  (command "_circle" p (/(* R 7)9))
	  (command "_circle" p (/ R 3))

	  (command "_circle" c1 b3)
	  (command "_circle" c2 b3)
	  (command "_circle" c3 b3)
	  (command "_circle" c4 b3)
	  (command "_circle" c5 b3)
	  (command "_circle" c6 b3)

;	  (command "_circle" g b2)

;	  (vl-load-com) ; загружаем функции расширения
;	  (setq acad_object (vlax-get-acad-object))
;	  (setq active_document (vla-get-activedocument acad_object))
;	  (setq model_space (vla-get-modelspace active_document))

;	  (vla-addarc model_space (vlax-3d-point p) b1 (* (/ pi 18) 5) (* (/ pi 18) 13))
;	  (vla-addarc model_space (vlax-3d-point p) b1 (* (/ pi 18) 23) (* (/ pi 18) 31))

	  (command "_arc" "_c" p (polar p (* (/ pi 18) 5) b1) (polar p (* (/ pi 18) 13) b1))	;рисуем дуги
	  (command "_arc" "_c" p (polar p (* (/ pi 18) 23) b1) (polar p (* (/ pi 18) 31) b1))

	  (command "_line" p1 g1 "") ; рисуем линию
	  (command "_line" p2 g2 "")

	  (command "_line" p3 p4 "") ; рисуем линию
	  (command "_line" g3 g4 "")

	  (command "_line" p5 p6 "") ; рисуем линию
	  (command "_line" g5 g6 "")
  )
  ;****************************************************

  (defun raz_exm ()
    (setq sr (atof (get_tile "eb_sr1")))
    (setq sd1 (atof (get_tile "eb_sd1")))
    (setq sd2 (atof (get_tile "eb_sd2")))
  )

  ;--------------Диалоговое окно--------

  (setq dcl_id (load_dialog "mp_1.dcl")) ; загружаем диалог (файл DCL)
  (if (not (new_dialog "mp_1" dcl_id))(exit))  ; проверка существования диалога
  (action_tile "accept" "(raz_exm) (done_dialog 1)")  ; Если нажата кнопка "OK"
;  (action_tile "cancel" "(done_dialog 0)") ; Если нажата кнопка "cancel"
  (setq ddi (start_dialog))
  (unload_dialog dcl_id) ; выгрузить Диалоговое окно

  ;-----------------------------------------------------------------------------

  (if (and
  		(= ddi 1) ;	нажат <Enter>
		(and sr sd1 sd2) ;	не пустые sr sd1 sd2 
		(and (not (zerop sr)) (not (zerop sd1)) (not (zerop sd2))) ;	не нулевые sr sd1 sd2
	  )
		(progn
	  		(mp_2 sr sd1 sd2)
	  		(setvar "osmode" osm) ; восстанавливаем привязки
	  		(setvar "cmdecho" 1) ; включаем командное эхо
		)
  )
  (princ)
)
код диалога mp_1.dcl
Код:
[Выделить все]
 
mp_1 : dialog {
 label = "Данные";
 initial_focus = "eb_sr1";
: column
	{
		: edit_box {
			key = "eb_sr1";
			label = "R";
			edit_width = 5;
			allow_accept = true;
		}
		: edit_box {
			key = "eb_sd1";
			label = "D1";
			edit_width = 5;
			allow_accept = true;
		}
		: edit_box {
			key = "eb_sd2";
			label = "D2";
			edit_width = 5;
			allow_accept = true;
		}
		ok_cancel;
	}
}
koMon вне форума  
 
Непрочитано 27.01.2020, 10:52
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Цитата:
вот мне интересно, как преподают автолисп?
его вообще не преподают
trir вне форума  
 
Непрочитано 27.01.2020, 11:06
#5
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от trir Посмотреть сообщение
его вообще не преподают
тогда откуда берутся подобные "задачки"?
koMon вне форума  
 
Непрочитано 27.01.2020, 11:08
#6
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Цитата:
тогда откуда берутся подобные "задачки"?
"народное" творчество
trir вне форума  
 
Непрочитано 27.01.2020, 11:11
#7
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от trir Посмотреть сообщение
"народное" творчество
блин, ну может быть конечно... но штамповать вид сверху какой-то детали лиспом это как-то "крафтово"
koMon вне форума  
 
Непрочитано 27.01.2020, 11:30
#8
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Offtop: лучше хоть как то попытаться, чем под подобным заголовком о помощи в коде вываливать свои хотелки и сидеть в ожидании чуда-халявы)
Сергей812 вне форума  
 
Непрочитано 27.01.2020, 11:32
#9
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Offtop: так попыталась же, да так не по-детски)))
koMon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите подредактировать программный код в LISP

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Умер разработчик языка программирования Lisp andr_g LISP 1 27.10.2011 08:36
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
LISP помогите разобраться. Elenaka LISP 5 20.10.2006 18:15
Помогите отладить lisp программу Мишаня LISP 7 31.07.2006 12:54
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19