
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.171] |
![]() |
|
Сообщ.
#1
,
|
|
|
Есть программа на autolisp
![]() ![]() (Defun c:rama() (setq fnm "D:/Институт/ПС САПР/Курсовой/tmp" di (load_dialog fnm) dnm "recvesit" ) (new_dialog dnm di) (action_tile "vysota" "(setq h_str atoi($value))") (action_tile "shirina" "(setq w_st atoi($value))") (setq state (start_dialog)) (unload_dialog di) (print h_str) (setq h (atoi h_str)) (setq w (atoi w_str)) (setq thickness (GetInt "\nЗадайте толщину рамы ")) (setq stvor (GetInt "\nЗадайте количество створок ")) (if (= state 1) (progn (setq p0 (GetPoint "\nЗадайте начальную точку вывода")) (setq stvorwidths (list)) (setq types (list)) (setq i 1) (setq sum 0) (setq fort -1) (while (< i stvor) (princ "ширина ") (princ i) (princ "-й створки ") (setq width (GetInt)) (setq stvorwidths (append stvorwidths (list width))) (setq sum (+ sum width)) (setq i (+ i 1)) ) (setq i 1) (while (<= i stvor) (princ "тип открывания ") (princ i) (princ "створки (1 - неоткрывающаяся, 2 - распашная, 3 - откидная, 4 - поворотно-откидная") (setq stvortype (GetInt)) (setq types (append types (list stvortype))) (setq i (+ i 1)) (if (= fort -1) (setq answer (GetString "Створка с форточкой? y/n")) ) (if (= answer "y") (setq fort (- i 1)) ) ) (setq horimpost 0) () (if (>= sum w) (progn (princ "Суммарная ширина первых") (princ stvor) (princ "створок должна быть меньше общей ширины рамы\n") ) ) (setq lastwidth (- w (+ sum (* thickness 2)))) (setq stvorwidths (append stvorwidths (list lastwidth))) (command "osnap" "none") (setq p1 (polar p0 0 w)) (setq p2 (polar p1 (/ pi 2) (- h))) (setq p3 (polar p2 (- pi) w)) (command "pline" p0 p1 p2 p3 "close") (setq pr1 (polar p3 (* pi 1.5) 20)) (setq pr2 (polar p1 0 20)) (command "dim" "horiz" p3 p2 pr1 "" *cancel*) (command "dim" "vert" p1 p2 pr2 "" *cancel*) (setq p (polar p0 (- (/ pi 2)) thickness)) (setq p4 (polar p 0 thickness)) (setq height (- h (* thickness 2))) (setq i 0) (while (< i stvor) (setq p5 (polar p4 0 (nth i stvorwidths))) (setq p6 (polar p5 (/ pi 2) (- height))) (setq p7 (polar p6 (- pi) (nth i stvorwidths))) (command "pline" p4 p5 p6 p7 "close") (setq p (polar p4 (- (/ pi 2)) 10)) (setq p8 (polar p 0 10)) (setq p9 (polar p8 0 (- (nth i stvorwidths) 20))) (setq p10 (polar p9 (- (/ pi 2)) (- height 20))) (setq p11 (polar p10 (- pi) (- (nth i stvorwidths) 20))) (command "pline" p8 p9 p10 p11 "close") (command "pline" p4 p8 *cancel*) (command "pline" p5 p9 *cancel*) (command "pline" p6 p10 *cancel*) (command "pline" p7 p11 *cancel*) (if (= fort i) (progn (setq p21 (polar p8 (- (/ pi 2)) (- (/ height 3) 10))) (setq p22 (polar p21 0 (- (nth i stvorwidths) 40))) (command "pline" p21 p22) ) ) (setq p (polar p8 (- (/ pi 2)) 1.5)) (setq p17 (polar p 0 1.5)) (setq p18 (polar p17 0 (- (nth i stvorwidths) 23))) (setq p19 (polar p18 (- (/ pi 2)) (- height 23))) (setq p20 (polar p19 (- pi) (- (nth i stvorwidths) 23))) (command "pline" p17 p18 p19 p20 "close") (setq stvortype (nth i types)) (if (= stvortype 1) (progn (setq p12 (polar p4 0 (/ (nth i stvorwidths) 2))) (setq p12 (polar p12 (- (/ pi 2)) (/ height 2))) (setq p13 (polar p12 (- pi) 5)) (setq p14 (polar p12 0 5)) (setq p15 (polar p12 (/ pi 2) 5)) (setq p16 (polar p12 (- (/ pi 2)) 5)) (command "pline" p15 p16 *cancel*) (command "pline" p13 p14 *cancel*) ) ) (if (and (= stvortype 2) (= i 0)) (progn (setq p12 (polar p18 (- (/ pi 2)) (/ height 2))) (command "pline" p17 p12 p20 *cancel*) ) ) (if (and (= stvortype 2) (> i 0)) (progn (setq p12 (polar p17 (- (/ pi 2)) (/ height 2))) (command "pline" p18 p12 p19 *cancel*) ) ) (if (= stvortype 3) (progn (setq p12 (polar p4 0 (/ (nth i stvorwidths) 2))) (setq p12 (polar p12 (- (/ pi 2)) 10.25)) (command "pline" p20 p12 p19 *cancel*) ) ) (if (and (= stvortype 4) (= i 0)) (progn (setq p12 (polar p4 0 (/ (nth i stvorwidths) 2))) (setq p12 (polar p12 (- (/ pi 2)) 10.25)) (setq p13 (polar p18 (- (/ pi 2)) (/ height 2))) (command "pline" p19 p12 p20 p13 p17 *cancel*) ) ) (if (and (= stvortype 4) (> i 0)) (progn (setq p12 (polar p4 0 (/ (nth i stvorwidths) 2))) (setq p12 (polar p12 (- (/ pi 2)) 10.25)) (setq p13 (polar p17 (- (/ pi 2)) (/ height 2))) (command "pline" p20 p12 p19 p13 p18 *cancel*) ) ) (setq pr3 (polar p7 (* pi 1.5) (* thickness 2))) (command "dim" "horiz" p7 p6 pr3 "" *cancel*) (setq p4 p5) (setq i (+ i 1)) ) ) ) ) DCL-файл ![]() ![]() recvesit : dialog { label = "Параметры рамы"; :column { : edit_box { label = "Высота "; key = "vysota"; value = "250"; edit_width = 10; alignment = center; fixed_width = true; } : edit_box { label = "Ширина"; key = "shirina"; value = "280"; edit_width = 10; alignment = center; fixed_width = true; } } ok_only; } и файл описания меню ![]() ![]() // // AutoCAD menu file - D:\Students\kurs.mnc // ***MENUGROUP=D:\Students\kurs.mns ***POP1 **TYPE ID_Type [Курсовой проект] ID_T1 [Построить](LOAD "kurs.LSP") ^C^C^Ckurs ***TOOLBARS // // End of AutoCAD menu file - D:\Students\kurs.mnc // При выборе пункта меню возникает ошибкав (LOAD "kurs.LSP") ; error: LOAD failed "kurs.LSP"), а при щелчке на кнопке error bad argument type string nil. В чем дело? |
Сообщ.
#2
,
|
|
|
Где лежит "kurs.LSP", и находится ли его папка среди тех, где автокад ищет файлы для загрузки (Где-то в настройках автокада указывается список папок? Он вроде может грузиться из текущей папки, но не всегда можно с уверенностью сказать, какая папка является текущей.
|
Сообщ.
#3
,
|
|
|
Я сначала подгружаю прогу, а потом выбираю пункт меню. Но когда я убираю ссылки на форму все работает.
|
Сообщ.
#4
,
|
|
|
Аналогичная проблема. Можна ли хоть как-то обращатся к command-line (консоли автокада) в режиме DCL? Зарание благодарен буду за совет, помощь.
|