Тема: Задание и вывод списка координат в окне DCL

Здравствуйте! Подскажите пож-ста как сделать так, чтобы из edit_boх значение добавлялось в список и этот список  выводился в list_box.
ЗЫ: Все это нужно для задания списка координат точек в окне DCL.

Re: Задание и вывод списка координат в окне DCL

Для полнофункциональности тогда ещё нужно сделать возможность:
1. редактирования уже добавленных точек
2. удаление уже добавленных точек
3. перемещение по списку введённых точек
И в двух словах это не подсказать. Могу посоветовать Н.Полещук Visual Lisp и секреты адаптации AutoCAD.
Хотя бы набросок окна или лиспа привёл.
ЗЫ: чую дело пахнет контрольной в универе...:)

Re: Задание и вывод списка координат в окне DCL

я кстати все это предусмотрел )
У меня есть книжка Н.Полещук Разработка приложений и адаптация, но там не чисто про лисп, а еще про адаптацию, но я разбираюсь потихоньку.
А пример окна вот:

DW1 :dialog {label="построение автодороги";
:boxed_row {label="ось дороги";
:column {
: list_box {
    width = 20 ;
    height = 10 ;
      key = "c_coord" ;
      label = "координаты" ;
      multiple_select = true ;}
      :edit_box {key = "icoord" ;}
     :row {:button {fixed_height = true ; fixed_width = true ; height = 1 ; key = "add"; label = "+"; width = 7 ;}
     :button {height=1; key="del"; label ="-"; width =7;fixed_width = true; fixed_height = true;}
     :button {height=1; key="change"; label="edit"; width =7;fixed_width = true; fixed_height = true;}}
     :row {:button {height=1; key="get"; label="get"; width =7; fixed_width = true; fixed_height = true;}
     :button {height=1; key="save"; label="save"; width =1; fixed_width = true; fixed_height = true;}
     :button {height=1; key="load"; label="load"; width =1; fixed_width = true; fixed_height = true;}
}}
:column {:toggle {label="показать ось"; key="px"; value=0;}
: popup_list {
      alignment = centered ;
      key = "type_axis" ;
      list = "\n\n" ;
      fixed_width_font = true ;
   }
: edit_box {key = "v_color" ;}
: row {: button {
               mnemonic = "C" ;
               label = "Color..." ;
               key = "b_color" ;
            }
            : swatch {
               key = "color_image" ;
            }}}
}
:boxed_row {label="дорога ";
:row {:concatenation {:text_part {label="ширина";}
:edit_box {key="b"; edit_width=7;}}
:concatenation {:text_part {label="цвет линии";}
:edit_box {key="clr00"; edit_width=4;}}}
}
:row {ok_cancel; :button {label="показать"; key="pok";}}}

ЗЫ: А насчет контрольной ты полностью прав! =)

Re: Задание и вывод списка координат в окне DCL

Подскажите, хотя бы самое главное: имеется список plist, как его отобразить в поле list_box?

Re: Задание и вывод списка координат в окне DCL

(start_list "c_coord")
  (mapcar 'add_list plist)
  (end_list)

Re: Задание и вывод списка координат в окне DCL

Я так пробовал, но не помогает =( пишет ; error: bad argument type: stringp)
вот пример Lisp программы:
(defun dlg ()
  (setq dcl_id (load_dialog "road.dcl"))
  (New_dialog "DW1" dcl_id)
  (action_tile "b_color" "(clrx)")
  (action_tile "load" "(DRAWPOLY)")
  (start_dialog)
(unload_dialog dcl_id))
(defun C:road ()
(dlg))
;Назначение цвета оси
(defun clrx ()
(setq n_color (acad_colordlg 0 0))
(set_tile "v_color" (RTOS n_color 2 0))
  )
;загрузка списка точек из файла
(defun DRAWPOLY()
(setq fin (getfiled "Select file" "" "" 4))
(setq f (open fin "r") plist '())
(if f
(progn
     (setq olc (getvar "CMDECHO"))(setvar "CMDECHO" 0)
      (while (setq str (read-line f))
          (setq len (strlen str) fs (ascii (substr str 1 1)))
            (if (or (= fs 46)(and (<= 48 fs)(>= 57 fs)))
             (progn
               (setq x (atof str) i 1)
               (while (and (< i len)(/= (substr str i 1) " "))(setq i (1+ i)))
               (setq plist (cons (list x (atof (substr str i))) plist))
           (s_list)
))))))
(defun s_list ()
(start_list "c_coord")
  (mapcar 'add_list plist)
  (end_list))

Re: Задание и вывод списка координат в окне DCL

(defun dlg ( / plist)
(setq dcl_id (load_dialog "road.dcl"))
(if (not (new_dialog "DW1" dcl_id)) (exit))
(setq plist '("Точка 1" "Точка 2" "Точка 3"))
(start_list "c_coord")
(mapcar 'add_list plist)
(end_list)
(action_tile "b_color" "(clrx)")
(action_tile "load" "(setq plist (DRAWPOLY))")
(start_dialog)
(unload_dialog dcl_id))
(defun C:road ()
(dlg))
;Назначение цвета оси
(defun clrx ()
(setq n_color (acad_colordlg 0 0))
(set_tile "v_color" (RTOS n_color 2 0))
)
;загрузка списка точек из файла
(defun DRAWPOLY()
(setq fin (getfiled "Select file" "" "" 4))
(setq f (open fin "r") plist '())
(if f
(progn
(setq olc (getvar "CMDECHO"))(setvar "CMDECHO" 0)
(while (setq str (read-line f))
(setq len (strlen str) fs (ascii (substr str 1 1)))
(if (or (= fs 46)(and (<= 48 fs)(>= 57 fs)))
(progn
(setq x (atof str) i 1)
(while (and (< i len)(/= (substr str i 1) " "))(setq i (1+ i)))
(setq plist (cons (list x (atof (substr str i))) plist))
)))))
)

Незная формат читаемого файла мне долго разбираться.
Бегло просмотрев код подправил.
Смысл: функция DRAWPOLY должна возвращать в главную функцию считанный список точек.
Я вручную его задал чтобы просто вывести.
Разбирайся, да и не забуть локалить переменные в функциях!!

Re: Задание и вывод списка координат в окне DCL

Спасибо, большое!

Re: Задание и вывод списка координат в окне DCL

Люди, мне нуже параметрический чертёж направляющей "Ласточкин хвос" с вводом команд с меню, которое тоже естевственно нужно зарограмировать. Может кто то может помоч??????????????????????
      Естевственно это небесплатно!!!!!

Re: Задание и вывод списка координат в окне DCL

Клавиатура заподает. Направляющая - Ласточкин хвост

Re: Задание и вывод списка координат в окне DCL

Пиши на мыльник. Сделаю.

Re: Задание и вывод списка координат в окне DCL

Ася - 70868713

Re: Задание и вывод списка координат в окне DCL

Ест хоть кто то с Киева???????