ПЗ (1218806), страница 13
Текст из файла (страница 13)
(action_tile "accept" "(num_CSP_opr) (done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq ddi (start_dialog))
(unload_dialog dcl_id)
(if (= ddi 1)
(num_CSP getTypeNum)
)
(princ)
)
;-----------------------------------------------------------
;------------------- панель настроек-------------------------
(defun made (getWidthMainPut getWidthStancPut getWidthStr
getWidthSmezhStr getMaxNum getSizeSymbols / )
(alert "Параметры изменены!")
)
(defun getParam()
(setq getWidthMainPut (atof (get_tile "mainPUT")))
(setq getWidthStancPut (atof (get_tile "stancPUT")))
(setq getWidthStr (atof (get_tile "str_easy")))
(setq getWidthSmezhStr (atof (get_tile "smezh_str")))
(setq getMaxNum (atoi (get_tile "maxnum")))
(setq getSizeSymbols (get_tile "sizeS"))
)
(defun c:dialog_settings (/ dcl_id)
(setq dcl_id
(load_dialog
"C:/Users/Игорь/Desktop/diplom/group/Dialogs/settings.dcl"
)
)
(if (null (new_dialog "fix" dcl_id))
(exit)
)
(action_tile "accept" "(getParam) (done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq ddi (start_dialog))
(unload_dialog dcl_id)
(if (= ddi 1)
(made getWidthMainPut getWidthStancPut getWidthStr getWidthSmezhStr getMaxNum getSizeSymbols
)
)
(princ)
)
;--------------------------------------------------------
;---------------- ПАРАЛЛЕЛЬНОЕ СОЕДИНЕНИЕ -----------------
(DEFUN soed (R e mark type_r stolb / m a0 b0 q b1 k_m k_a0 k_x k_t k_b1 k_d k_d2 osm s1 s2 tan X TG K f Lp l1 l2 dist_sv1 sv0
sv1 sv2 sv3 sv4 svc1 svc2 svc3 sv00 sv01 sv02 sv03 svc01 svc02 svc03 sv000 sv001 sv002 sv003 sv004 svc001 svc002 svc003 k_rad st1 st2 st3 P ctan Lpr circ dist_tg tg01 tg02 tg03 tg04 tg05 tg06 k_rady rad rad_txt)
(if (and (= mark "1") (= type_r "1")) ; стрелочный перевод 11-65
(progn
(setq alpha 0.09066015836748323)
(setq m 2.769)
(setq a0 11.294)
(setq b0 16.754)
(setq q 2.550)
(setq b 19.304)
); end progn
) ;end if
(if (and (= mark "1") (= type_r "0")) ; стрелочный перевод 11-50
(progn
(setq alpha 0.09066015836748323)
(setq m 4.327)
(setq a0 10.148)
(setq b0 16.754)
(setq q 2.300)
(setq b 19.054)
); end progn
);end if
(if (and (= mark "0") (= type_r "1")) ; стрелочный перевод 9-65
(progn
(setq alpha 0.11065872271325158)
(setq m 2.769)
(setq a0 12.458)
(setq b0 13.722)
(setq q 2.090)
(setq b 15.812)
); end progn
);end if
(if (and (= mark "0") (= type_r "0")) ; стрелочный перевод 9-50
(progn
(setq alpha 0.11065872271325158)
(setq m 4.327)
(setq a0 11.132)
(setq b0 13.722)
(setq q 1.880)
(setq b 15.602)
); end progn
) ;end if
(setq tan (/ (sin alpha) (cos alpha))) ; расчет соединения
(setq X (/ e tan))
(setq TG (* R (/ (sin (/ alpha 2)) (cos (/ alpha 2)))))
(setq K (* R alpha))
(setq f (- (/ e (sin alpha)) b TG))
(setq Lp (+ X TG a0))
(setq ang (getangle "Укажите угол"))
(setq k_m0 (getpoint "\n Укажите точку начала перевода:"))
(setq k_m (polar k_m0 ang m)); устанавливаем координаты точи m
(setq k_a0 (polar k_m ang a0)); устанавливаем координаты точи a0
(setq k_x (polar k_a0 ang X)); устанавливаем координаты точи
(setq k_t (polar k_x ang TG));
(setq k_b1 (polar k_a0 (+ ang alpha) (/ e (sin alpha))))
; устанавливаем координаты точи b1
(setq k_d2 (polar k_a0 (+ ang alpha) (- (/ e (sin alpha)) TG)))
;первый тангенс
(setq k_d (polar k_b1 ang TG)) ;второй тангенс
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;расстановка тангенсов
(setq tg01 (polar k_d2 (+ (/ pi 2) ang alpha) 0.5))
(setq tg02 (polar tg01 (+ pi ang alpha) 1.5))
(setq tg03 (polar tg01 (+ (* pi 2) ang alpha) 1.5))
(setq tg04 (polar k_d (+ (/ pi 2) ang) 0.5))
(setq tg05 (polar tg04 (+ pi ang) 1.5))
(setq tg06 (polar tg04 (+ (* pi 2) ang) 1.5))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq dist_tg (/ (distance tg01 tg04) 2))
(setq k_rad (polar tg01 (/ pi 2) 2)) ; позиция x надписи
(setq k_rady (polar k_rad ang (- dist_tg 4)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq osm (getvar "osmode")); запоминаем привязки пользователя
(setq s1 (polar k_a0 (+ (/ pi 2) ang) 2)); координаты точек штриха в центре перевода
(setq s2 (polar k_a0 (- (/ (* 3 pi) 2) (- ang)) 2))
(setq rad_txt (strcat "R" (itoa R)))
(setvar "osmode" 1); отключаем привязки
(setvar "PLINEWID" getWidthStr) ; устанавливаем толщину линий
(command "_.pline" k_m0 k_m k_a0 k_x k_t "") ;отрисовываем отрезки
(command "_.pline" k_a0 k_b1 "")
(setq l1 (entlast))
(command "_.pline" k_b1 k_d "")
(setq l2 (entlast))
(command "_.pline" s1 s2 "")
(setq rad R)
(command "_fillet" "_r" rad "_fillet" k_d2 k_d "")
(command "_text" k_rady getSizeSymbols (angtos ang) rad_txt "")
(setvar "osmode" 0)
;;огр. столбики ;;;;
(if (= stolb 1)
(progn
(setq P (/ e 2))
(setq ctan (/ (cos (/ alpha 2)) (sin (/ alpha 2))))
(setq Lpr (* P ctan)) ; расположение столбика по оси X
(setq st1 (polar k_a0 ang Lpr))
(setq st2 (polar st1 (+ (/ pi 2) ang) P))
(setq st3 (polar st2 (+ (/ pi 2) alpha ang) P))
(command "_.circle" st2 0.2)
(setq circ (entlast))
(command "_.hatch" "solid" circ "")
)
) ; end if
;;;;;;;;;;;;;;;;;;;
;;тип тяги ;;
(if (= taga 0)
(progn
(setq dist_sv1 50)
)
(progn
(setq dist_sv1 300)
)
)
;;;;;;;;;;;;;;;;;;;
;;;светофор перед центром перевода
(if (= svet_before 1)
(progn
(setq sv0 (polar k_m (/ (* 3 pi) 2) (/ e 2)))
(setq sv1 (polar sv0 (+ pi ang) dist_sv1))
(setq sv2 (polar sv1 (+ (/ (* 3 pi) 2) ang) 1))
(setq sv3 (polar sv1 (+ (/ pi 2) ang) 1))
(setq sv4 (polar sv1 ang 5.0))
(setq svc1 (polar sv4 ang 1.0)) ; окр1
(setq svc2 (polar svc1 ang 2.0)) ; окр2
(setq svc3 (polar svc2 ang 2.0)) ; окр3
(command "_.line" sv1 sv2 "")
(command "_.line" sv1 sv3 "")
(command "_.line" sv1 sv4 "")
(command "_.circle" svc1 1.0)
(command "_.circle" svc2 1.0)
(command "_.circle" svc3 1.0)
)
); end if
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; --------светофор внутри перевода
(if (= svet_inside 1)
(progn
(setq sv00 (polar st2 ang dist_sv1))
(setq sv01 (polar sv00 (+ (/ pi 2) ang) 1.0))
(setq sv02 (polar sv00 (+ (/ (* 3 pi) 2) ang) 1.0))
(setq sv03 (polar sv00 (+ pi ang) 5.0))
(setq svc01 (polar sv03 (+ pi ang) 1.0)) ; окр1
(setq svc02 (polar svc01 (+ pi ang) 2.0)) ; окр2
(setq svc03 (polar svc02 (+ pi ang) 2.0)) ; окр3
(command "_.line" sv00 sv01 "")
(command "_.line" sv00 sv02 "")
(command "_.line" sv00 sv03 "")
(command "_.circle" svc01 1.0)
(command "_.circle" svc02 1.0)
(command "_.circle" svc03 1.0)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;----светофор снаружи ------
(if (= svet_outside 1)
(progn
(setq sv000 (polar st2 (+ (/ pi 2) ang) 10))
; высота светофора над столбом
(setq sv001 (polar sv000 (+ ang alpha) 3.5))
(setq sv002 (polar sv001 (+ (/ pi 2) ang alpha) 1.0))
(setq sv003 (polar sv001 (+ (/ (* 3 pi) 2) ang alpha) 1.0))
(setq sv004 (polar sv001 (+ pi ang alpha) 5.0))
(setq svc001 (polar sv004 (+ pi ang alpha) 1.0))
(setq svc002 (polar svc001 (+ pi ang alpha) 2.0))
(setq svc003 (polar svc002 (+ pi ang alpha) 2.0))
(command "_.line" sv001 sv002 "")
(command "_.line" sv001 sv003 "")
(command "_.line" sv001 sv004 "")
(command "_.circle" svc001 1.0)
(command "_.circle" svc002 1.0)
(command "_.circle" svc003 1.0)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(command "_.line" k_d2 tg01 "")
(command "_.line" tg01 tg02 "")
(command "_.line" tg01 tg03 "")
(command "_.line" k_d tg04 "")
(command "_.line" tg04 tg05 "")
(command "_.line" tg04 tg06 "")
(setvar "osmode" 7)
); end defun soed()
(defun raz_soed ()
(setq e (atof (get_tile "e")))
(setq R (atoi (get_tile "R")))
(setq type_r (get_tile "type_r"))
(setq mark (get_tile "mark"))
(setq stolb (atoi (get_tile "stolb_checkbox")))
(setq taga (atoi (get_tile "tyaga")))
(setq svet_before (atoi (get_tile "svet_beforecent_checkbox")))
(setq svet_inside (atoi (get_tile "svet_inside_checkbox")))
(setq svet_outside (atoi (get_tile "svet_outside_checkbox")))
)
;--------------------диалоговое окно----------------------
(DEFUN c:paral_s (/ dcl_id R e mark type_r stolb)
(setq dcl_id
(load_dialog
"C:/Users/Игорь/Desktop/diplom/group/Dialogs/soed_nesok_odin.dcl"
)
) ; загружаем диалог (файл DCL)
(if (null (new_dialog "soed_nesok_odin" dcl_id))
(exit)); проверка существования диалога
(action_tile "accept" "(raz_soed) (done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq ddi (start_dialog))
(unload_dialog dcl_id); выгрузить Диалоговое окно
(if (= ddi 1)
(soed R e mark type_r stolb)
)
(princ)
); end defun paral_s()
;----------------------------------------------------------------
;---------------Нумерация путей (арабские цифры)------------
(defun num_paths (getNumbers / v1 v2 v3 v4 v5 osm k o m)
(if (= getNumbers 0);--четные
(progn
(setq k 2)
(while (<= k getMaxNum)
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq v1(getpoint "Укажите место для нумерации. Чтобы завершить - нажмите ESC")) (setq v2 (polar v1 pi 5))
(setq v3 (polar v1 0 5))
(setq v4 (polar v1 pi 1.0))
(setq v5 (polar v4 (/ (* 3 pi) 2) 1.0))
(command "_break" v2 v3)
(command "_text" v5 getSizeSymbols (angtos 0) k "")
(setq k (+ k 2))
(if (> k getMaxNum)
(alert "Нумерация завершена")
)
)
)
)
(if (= getNumbers 1);---нечетные
(progn
(setq m 1)
(while (<= m getMaxNum)
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq v1(getpoint "Укажите место для нумерации. Чтобы завершить - нажмите ESC"))
(setq v2 (polar v1 pi 5))
(setq v3 (polar v1 0 5))
(setq v4 (polar v1 pi 1.0))
(setq v5 (polar v4 (/ (* 3 pi) 2) 1.0))
(command "_break" v2 v3)
(command "_text" v5 getSizeSymbols (angtos 0) m "")
(setq m (+ m 2))
(if (> m getMaxNum)
(alert "Нумерация завершена")
)
)
)
)
(if (= getNumbers 2);---нечетные
(progn
(setq o 1)
(while (<= o getMaxNum)
(setq osm (getvar "osmode"))
(setvar "osmode" 0)