На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > Проблемы с autolisp и dcl
      Есть программа на autolisp
      ExpandedWrap disabled
        (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-файл
      ExpandedWrap disabled
        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;
        }

      и файл описания меню
      ExpandedWrap disabled
        //
        //      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. В чем дело?
        Где лежит "kurs.LSP", и находится ли его папка среди тех, где автокад ищет файлы для загрузки (Где-то в настройках автокада указывается список папок? Он вроде может грузиться из текущей папки, но не всегда можно с уверенностью сказать, какая папка является текущей.
          Я сначала подгружаю прогу, а потом выбираю пункт меню. Но когда я убираю ссылки на форму все работает.
            Аналогичная проблема. Можна ли хоть как-то обращатся к command-line (консоли автокада) в режиме DCL? Зарание благодарен буду за совет, помощь.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0222 ]   [ 15 queries used ]   [ Generated: 24.03.25, 20:16 GMT ]