Тема: ПОМОГИТЕ!!!как связать 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*/
И ВСЕ!
на этом тупик! я не знаю как этому окошку задать фунции чтобы этими ползунками можно было менть размеры детали!
Я в этом дел еще всовсем чайник...так что прошу помощи!
заранее спасибо