Форма для ввода данных в LISP
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Форма для ввода данных в LISP

Форма для ввода данных в LISP

Ответ
Поиск в этой теме
Непрочитано 05.05.2009, 12:59 #1
Форма для ввода данных в LISP
HooDRooK
 
Регистрация: 11.03.2009
Сообщений: 33

Вопрос. Необходимо начертить, например, прямоугольник со сторонами a и b. Длины сторон необходимо вводить с формы, проверяя одновременно, ну например, чтобы введённые величины не были больше максимальной.
Вот я не знаю есть ли в ЛИСПе такая возможность?...Было бы в VB вопросов бы не было, но надо чтобы чертился прямоугольник именно с помощью ЛИСПа...
Может есть возможность обмена данными ЛИСПа с VB? Например форма и проверка делается на VB, затем проверенные данные передаются в ЛИСП?...
Помогите.

С Уважением!
Просмотров: 5536
 
Непрочитано 05.05.2009, 13:04
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


1. Если разговор именно про VB, то можно попытаться сделать свой СОМ-сервер, который зарегистрировать в системе и обращаться к нему из-под лиспа.
2. Если разговор про VBA, то на форуме была тема про обмен данными между VBA и LISP.
3. Я бы задумывался о dcl-окне, где на каждый text_box прописывается свой action_tile.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.05.2009, 13:10
#3
HooDRooK


 
Регистрация: 11.03.2009
Сообщений: 33


Алексей я с ЛИСПом только в последнее время более менее начал общаться (так мельком только в универе изучал), так что если можно, опиши по подробнее про dcl окна.
HooDRooK вне форума  
 
Непрочитано 05.05.2009, 13:26
#4
-mavlin-


 
Регистрация: 30.04.2008
Сообщений: 401


http://aco.ifmo.ru/~nadinet/html/lectures/dcl_tile.html
-mavlin- вне форума  
 
Автор темы   Непрочитано 05.05.2009, 13:30
#5
HooDRooK


 
Регистрация: 11.03.2009
Сообщений: 33


А киньте кто нить пример как это можно сделать?...самый простой, чтоб разобраться спокойно...
HooDRooK вне форума  
 
Непрочитано 05.05.2009, 13:49
#6
-mavlin-


 
Регистрация: 30.04.2008
Сообщений: 401


Вот содержимое dcl файла 000.dcl

Код:
[Выделить все]
name: dialog{label="Название диалога";
:text{label="какойто текст";key="a";alignment=left;}
:edit_box{label="значение";key="b";value="начальное значение";}
ok_only;}
А вот содержимое файла lsp
Код:
[Выделить все]
(defun c:dialog ( / dn zn)
  (setq dn(LOAD_DIALOG "000.dcl"))
  (new_dialog "name" dn "") 
  (setq zn (GET_TILE "b"))
  (ACTION_TILE "b" "(setq zn $value)")
  (START_DIALOG) 
  (UNLOAD_DIALOG dn)
  (princ zn))

Последний раз редактировалось Кулик Алексей aka kpblc, 15.05.2009 в 10:36.
-mavlin- вне форума  
 
Непрочитано 05.05.2009, 14:08
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Еще пример:
файл диалога (в коде прописан как c:\tmp.dcl)
Код:
[Выделить все]
dlg :dialog{label="Название диалога";
	:edit_box{label="Длина х, мм:";key="len_x";}
	:edit_box{label="Длина у, мм:";key="len_y";}
	ok_cancel;
}
и сам лисп
Код:
[Выделить все]
(defun test (/ fun_checklen dcl_file dcl_id dcl_res base_point tmp len_x len_y)

  (defun fun_checklen (key value)
    (if (and (setq value (atof value))
             (> value 0.)
             ) ;_ end of and
      (if (= key "len_x")
        (setq len_x value)
        (setq len_y value)
        ) ;_ end of if
      (progn
        (alert "Нельзя вводить не числа и отрицательные значения!")
        (setq value 0.)
        (if (= key "len_x")
          (setq len_x 0.)
          (setq len_y 0.)
          ) ;_ end of if
        ) ;_ end of progn
      ) ;_ end of if
    (set_tile key (rtos value))
    ) ;_ end of defun

  (if (and (setq dcl_file (findfile "c:\\tmp.dcl"))
           (setq dcl_id (load_dialog dcl_file))
           ) ;_ end of and
    (progn
      (new_dialog "dlg" dcl_id)
      (set_tile "len_x" "0.")
      (set_tile "len_y" "0.")
      (action_tile "len_x" "(fun_checklen $key $value)")
      (action_tile "len_y" "(fun_checklen $key $value)")
      (action_tile "accept" "(done_dialog 1)")
      (action_tile "cancel" "(done_dialog 0)")
      (setq dcl_res (start_dialog))
      (if (= dcl_res 1)
        (progn
          (if (setq base_point (getpoint "\nУкажите базовую точку вставки <Отмена> : "))
            (entmakex
              (list
                '(0 . "LWPOLYLINE")
                '(100 . "AcDbEntity")
                '(100 . "AcDbPolyline")
                '(90 . 4)
                '(70 . 1)
                '(43 . 0.0)
                '(38 . 0.0)
                '(39 . 0.0)
                (cons 10 (setq tmp (list (- (car base_point) (/ len_x 2.)) (- (cadr base_point) (/ len_y 2.)))))
                (cons 10 (setq tmp (polar tmp 0. len_x)))
                (cons 10 (setq tmp (polar tmp (/ pi 2.) len_y)))
                (cons 10 (polar tmp pi len_x))
                ) ;_ end of list
              ) ;_ end of entmakex
            ) ;_ end of if
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.05.2009, 14:45
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Здесь еще посмотри
Dcl_Tiles.lsp и Dcl_Tiles.dcl
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 15.05.2009, 08:20
#9
HooDRooK


 
Регистрация: 11.03.2009
Сообщений: 33


Блин чего то ничего не понимаю...
Создаю 000.dcl загружаю приложение...пишу (c:dialog)...
в ответ nilnil...Как это понимать?
HooDRooK вне форума  
 
Непрочитано 15.05.2009, 09:46
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Теперь я уже ничего не понимаю. Какой 000.dcl? Какой у него код? Какой лисп запускается?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.05.2009, 10:11
#11
HooDRooK


 
Регистрация: 11.03.2009
Сообщений: 33


Это код из поста -mavlin-...После моего по поводу какого нить примера...
HooDRooK вне форума  
 
Непрочитано 15.05.2009, 10:35
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


(findfile "000.dcl") что возвращает?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.05.2009, 11:16
#13
HooDRooK


 
Регистрация: 11.03.2009
Сообщений: 33


nil возвращает
HooDRooK вне форума  
 
Непрочитано 15.05.2009, 11:23
#14
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Значит у тебя сам файл диалога не находится. Помещай его в любой каталог поддержки AutoCAD'a
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.05.2009, 11:35
#15
HooDRooK


 
Регистрация: 11.03.2009
Сообщений: 33


Вроде заработало...
Так вроде всё понятно, но вот вопрос, а как например если мне надо второе окошко сделать указывать его положение на форме?...координаты как-то прописывать?

name: dialog{label="Название диалога";
:text{label="какойто текст";key="a";alignment=left;}
:edit_box{label="значение";key="b";value="начально е значение";}
ok_only;}

Последний раз редактировалось HooDRooK, 15.05.2009 в 11:42.
HooDRooK вне форума  
 
Непрочитано 15.05.2009, 11:55
#16
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Переведи вопрос. Ничего не понял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.05.2009, 12:00
#17
HooDRooK


 
Регистрация: 11.03.2009
Сообщений: 33


короче где прописывается сколько окошек на открывающейся форме и как они распологаются? в коде диалога или ЛИСПа? и каким образом...например мне надо два окошка друг над другом... и чего то смотря на оба кода я как то не смог найти этого...
HooDRooK вне форума  
 
Непрочитано 15.05.2009, 12:12
#18
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Два окошка - это два окошка. А два элемента диалога - это два элемента диалога. Хоть какой-нибудь скрин сделай (формы хоть на VBA, это сейчас неважно), чтоб понять чего хотишь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.05.2009, 12:14
#19
HooDRooK


 
Регистрация: 11.03.2009
Сообщений: 33


Да согласен что я дурак..)))...два элемента диалога мне надо..))))
HooDRooK вне форума  
 
Непрочитано 15.05.2009, 21:59
#20
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Так это напрямую в dcl-файле прописывается...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Форма для ввода данных в LISP



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закладные лифтовых приямков винсент75 Поиск литературы, чертежей, моделей и прочих материалов 13 11.08.2009 10:16
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов Red Nova Программирование 177 08.12.2008 11:35
LISP для AutoCAD-2009: проблемы со скобками Лентяй LISP 14 16.11.2008 02:40
Нужен LISP для заливки отверстий ilka_t AutoCAD 20 24.03.2004 16:06