Тема: ПОМОГИТЕ!!!как связать lisp-программу с dcl-окошком?

у меня следующая ситуация:
Задана работа по написанию программы вывода чертежа детали.
суть такая:
-должно выводиться окошко;
-в окошке должен быть слайд детали;
-кроме того там должны бить ползунки, с помощь которых можно менять параметры детали;
саму програму в лиспе прорисовки детали я написал:
                                        ;(command "vslide" "slidezagot")
(Setq BP (getpoint " Введите Базовую точку :  "))
(command "point" BP)
(setq A (getdist "введите А :  "))
(setq B (getdist "введите B :  "))
(while (> b (/ a 2))
  (setq    b (getdist
        "ОШИБКА! 'B' должно быть меньше 'А/2', повторите ввод :  "
      )
  )
)
(setq f(getdist "введите F:  "))
(while (> f(* a 0.5))
(setq f(getdist "ОШИБКА! введите f<0,5A :  "))
)
(setq d2 (getdist "введите диаметр внешнего круга:  "))
(setq d1(getdist "введите диаметр внутреннего курга:  "))
(while(> d1 (/ d2 2))
(setq d1(getdist "ОШИБКА! диаметр внутреннего круга должен быть в половину меньше диаметра внешнего круга. Повторите ввод:    "))
)
(setq d3(getdist "введите диаметр отверстий под болты:   "))
(while (> d3 (/ d1 2))
(setq d3(getdist "ОШИБКА! диаметр отверстий не должен привышать половину диаметра внутреннего круга. Повторите ввод:  "))
)
(setq r1 (getdist "введите значение радиуса1 :  "))
(while (> r1 (/ d2 2))
  (setq    r1
     (getdist
       "ОШИБКА! длина радиуса не должна превышать половины длины внешнего диаметра. Повторите ввод :   "
     )
  )
)
(setq r2 (getdist "введите значение радиуса2 :  "))
(while (> r2 r1)
  (setq    r2
     (getdist
       "ОШИБКА! длина радиуса2 не должна превышать длины радиуса1. Повторите ввод :  "
     )
  )
)
(setq r3(getdist "введите значение радиуса3 :  "))
(while (< r3(+ (/ d2 2 )(/ d3 2)))
(setq r3(getdist "ОШИБКА! недопустимо малое значение радиуса3. Повторите ввод :  "))
)
(setq r4(getdist "введите значение радиуса4 :  "))
(while (> r4 r2)
  (setq r4 (getdist "ОШИБКА! r4 должно быть меньше r2. Повторите ввод :  "))
)
(while (< r4 d3)
(setq r4(getdist "ОШИБКА! r4 должно быть больше d3. Повторите ввод :  "))
)
(setq c1
    (list
       (+(car bp) a)
       (+(cadr bp) b)
        )
     )
(setq c2
     (list
     (+(car bp) r3)
     (cadr bp)
     )
     )
   
(setq c4
     (list
     (car bp)
     (-(cadr bp) r3)
     )
  )
(setq c3
       (list
     (+(car bp)(sqrt(/(* r3 r3)2)))
     (-(cadr bp)(sqrt(/ (* r3 r3)2)))
     )
      )
        (setq f5
               (list
     (+(car bp)(sqrt(/(* (+ r3 r4)(+ r3 r4))2)))
     (-(cadr bp)(sqrt(/ (* (+ r3 r4)(+ r3 r4))2)))
     )
      )
                   
(setq t1
       (list
     (car bp)
     (+ (cadr bp) (+ b  r1 ))
       )
)
(setq t2
       (list
     (+ (car t1) (+ a  r1 ))
     (cadr t1)
       )
)
(setq t3
       (list
     (car t2)
     (- (cadr t2) (* r1 2))
       )
)
(setq t4
       (list
     (- (car t3) (/ a 2))
     (cadr t3)
       )
)
   (setq t5
      (list
        (-(car bp)(sqrt(/ (* (/ d2 2)(/ d2 2))2)))
        (+(cadr bp)(sqrt(/(* (/ d2 2)(/ d2 2))2)))
        )
     )
(setq t6
       (list
     (+(car t5)(sqrt(/(* f f)2)))
     (+(cadr t5)(sqrt(/(* f f)2)))
     )
      )
(setq f1
       (list
     (-(car t2)(* 3 r1))
     (cadr t2)
     )
      )
(setq f2
       (list
     (car c4)
     (-(cadr c4) r4)
     )
      )
(setq f3
       (list
     (-(car bp)(/ d2 2))
     (cadr bp)
     )
      )
(setq f4
       (list
     (+(car c2) r4)
     (cadr c2)
     )
      )
(setq f6
       (list
     (-(car c1) r1)
     (cadr c1)
     )
      )
(setq f8
       (list
     (car c4)
     (+(cadr c4) r4)
     )
      )
                   
                   
                   
                   
;(command "point" t1)
;(command "point" t2)
;(command "point" t3)
;(command "point" t4)
;(command "point" c1)
;(command "point" c2)
;(command "point" c3)
;(command "point" c4)
;(command "point" t5)
;(command "point" t6)
;(defun HelpText    ()
  ;(command "text" bp 2.5 0 "BP")
  ;(command "text" t1 2.5 0 "t1")
  ;(command "text" t2 2.5 0 "t2")
  ;(command "text" t3 2.5 0 "t3")
  ;(command "text" t4 2.5 0 "t4")
  ;(command "text" c1 2.5 0 "c1")
  ;(command "text" c2 2.5 0 "c2")
  ;(command "text" c3 2.5 0 "c3")
  ;(command "text" c4 2.5 0 "c4")
  ;(command "text" t5 2.5 0 "t5")
  ;(command "text" t6 2.5 0 "t6")
  ;(command "text" f8 2.5 0 "f8")
  ;(command "text" f1 2.5 0 "f1")
  ;(command "text" f2 2.5 0 "f2")
  ;(command "text" f3 2.5 0 "f3")
  ;(command "text" f4 2.5 0 "f4")
  ;(command "text" f5 2.5 0 "f5")
  ;(command "text" f6 2.5 0 "f6")
   
;)
;(HelpText)
(command "line" t1 t2 "")
(command "line" t3 t4 "")
(command "line" t5 t6 "")
(command "circle" bp (/ d2 2))
(command "circle" bp (/ D1 2))
(command "circle" c1 r1)
(command "circle" c2 (/ d3 2))
(command "circle" c3 (/ d3 2))
(command "circle" c4 (/ d3 2))
;(command "arc" c4 c3 c2)
(command "circle" c4 r4 )
(command "circle" c1 (/ d3 2))
        (command "fillet" "radius" r1 )
        (command "fillet" f1 t6)
        (command "fillet" "radius" r2)
        (command "fillet" f3 f2)
(setq cf(nth 9 (entget(entlast))))
(setq c5
       (list
     (cadr cf)
     (caddr cf)
     )
      )
(setq f7
       (list
     (+(car c5) r2)
     (cadr c5)
     )
      )
;(command "text" c5 2.5 0 "c5")
;(command "text" f7 2.5 0 "f7")
;(command "circle" "ttr" f2 f3 r2)
(command "arc" f2 f5 f4)
        (command "fillet" f4 t3)
(command "trim" t3 t2 f6 "" t3 t2 f6 "" )
(command "trim" f5 f7 f8 "" f8 "" )
(command "zoom" "extents")
(redraw)
Потом я написал общий вид окошка:
main
:dialog{
label="ПАРАМЕТРЫ ДЕТАЛИ";
:row{
label = "main";
:boxed_column{
label="slide";
:image_button{
key="sld1";
height = 15;
aspect_ratio = 1.0;
allow_accept = true;
fixed_height=true;
fixed_width=true;
color=0;
/*alignment=centered;*/
}/*image button*/
:button{
label="HELP";
key="help";
fixed_width=true;
}/*button*/
}/*boxed column*/
:column{
:boxed_column{
label = "длина А";
: column{
: text {
label = "min=0                                         max=300";
/*alignment = centered;*/
} /* text*/
:row{
:slider{
key = "a";
min_value = 0;
max_value =300;
width = 30;
height = 1;
small_increment = 1;
big_increment = 10;
fixed_width=true;
fixed_height=true;
allow_accept = true;
value = "0.0";
}/*slider*/
:edit_box{
value = "0.0";
}/*edit box*/
}/*row*/
}/* column*/
ok_cancel;
}/*boxed_column*/
:boxed_column{
label = "длина B";
: column{
: text {
label = "min=0                                         max=150";
/*alignment = centered;*/
} /* text*/
:row{
:slider{
key = "b";
min_value = 0;
max_value =150;
width = 30;
height = 1;
small_increment = 1;
big_increment = 10;
fixed_width=true;
fixed_height=true;
value = "0.0";
}/*slider*/
:edit_box{
value = "0.0";
}/*edit box*/
}/* row*/
}/* column*/
ok_cancel;
}/*boxed_column*/
:boxed_column{
label = "длина f";
: column{
: text {
label = "min=0                                         max=150";
/*alignment = centered;*/
} /* text*/
:row{
:slider{
key = "f";
min_value = 0;
max_value =150;
width = 30;
height = 1;
small_increment = 1;
big_increment = 10;
fixed_width=true;
fixed_height=true;
value = "0.0";
}/*slider*/
:edit_box{
value = "0.0";
}/*edit box*/
}/*row*/
}/*column*/
ok_cancel;
}/*boxed_column*/
:boxed_column{
label = "диметр внутреннего круга d1";
: column{
: text {
label = "min=0                                         max=60";
/*alignment = centered;*/
} /* text*/
:row{
:slider{
key = "d1";
min_value = 0;
max_value =60;
width = 30;
height = 1;
small_increment = 1;
big_increment = 10;
fixed_width=true;
fixed_height=true;
value = "0.0";
}/*slider*/
:edit_box{
value = "0.0";
}/*edit box*/
}/*row*/
}/*column*/
ok_cancel;
}/*boxed_column*/
:boxed_column{
label = "диметр внешнего круга d2";
: column{
: text {
label = "min=0                                         max=100";
/*alignment = centered;*/
} /* text*/
:row{
:slider{
key = "d2";
min_value = 0;
max_value =100;
width = 30;
height = 1;
small_increment = 1;
big_increment = 10;
fixed_width=true;
fixed_height=true;
value = "0.0";
}/*slider*/
:edit_box{
value = "0.0";
}/*edit box*/
}/*row*/
}/*column*/
ok_cancel;
}/*boxed_column*/
}/*column*/
:column{
:boxed_column{
label = "диметр отверстий под болты d3";
: column{
: text {
label = "min=0                                         max=20";
/*alignment = centered;*/
} /* text*/
:row{
:slider{
key = "d3";
min_value = 0;
max_value =20;
width = 30;
height = 1;
small_increment = 1;
big_increment = 10;
fixed_width=true;
fixed_height=true;
value = "0.0";
}/*slider*/
:edit_box{
value = "0.0";
}/*edit box*/
}/*row*/
}/*column*/
ok_cancel;
}/*boxed_column*/
:boxed_column{
label = "радиус r1";
: column{
: text {
label = "min=0                                         max=50";
/*alignment = centered;*/
} /* text*/
:row{
:slider{
key = "r1";
min_value = 0;
max_value =50;
width = 30;
height = 1;
small_increment = 1;
big_increment = 10;
fixed_width=true;
fixed_height=true;
value = "0.0";
}/*slider*/
:edit_box{
value = "0.0";
}/*edit box*/
}/* row*/
}/* column*/
ok_cancel;
}/*boxed_column*/
:boxed_column{
label = "радиус r2";
: column{
: text {
label = "min=0                                         max=50";
/*alignment = centered;*/
} /* text*/
:row{
:slider{
key = "r2";
min_value = 0;
max_value =50;
width = 30;
height = 1;
small_increment = 1;
big_increment = 10;
fixed_width=true;
fixed_height=true;
value = "0.0";
}/*slider*/
:edit_box{
value = "0.0";
}/*edit box*/
}/* row*/
}/* column*/
ok_cancel;
}/*boxed_column*/
:boxed_column{
label = "радиус r3";
: column{
: text {
label = "min=0                                         max=100";
/*alignment = centered;*/
} /* text*/
:row{
:slider{
key = "r3";
min_value = 0;
max_value =100;
width = 30;
height = 1;
small_increment = 1;
big_increment = 10;
fixed_width=true;
fixed_height=true;
value = "0.0";
}/*slider*/
:edit_box{
value = "0.0";
}/*edit box*/
}/*row*/
}/* column*/
ok_cancel;
}/*boxed_column*/
}/*column*/
}/*row*/
ok_cancel;
}/*DIALOG*/
И ВСЕ!
на этом тупик! я не знаю как этому окошку задать фунции чтобы этими ползунками можно было менть размеры детали!
Я в этом дел еще всовсем чайник...так что прошу помощи!
заранее спасибо

Re: ПОМОГИТЕ!!!как связать lisp-программу с dcl-окошком?

> loki
Посмотри здесь:
http://web2.airmail.net/terrycad/Tutori … ialogs.htm
как это реализовано в MySliders.dcl / lsp
Перевод не нужен и так все ясно
Успехов
~'J'~

Re: ПОМОГИТЕ!!!как связать lisp-программу с dcl-окошком?

> Fatty
Спасибо! буду читать!