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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Возможно ли такое в DCL и лиспе

Возможно ли такое в DCL и лиспе

Ответ
Поиск в этой теме
Непрочитано 31.08.2018, 13:52
Возможно ли такое в DCL и лиспе
protorgovec
 
газо- нефтепереработка
 
Уфа
Регистрация: 22.07.2015
Сообщений: 98

Добрый день. Подскажите, возможно ли вообще такое. Если да, то подскажите как.
Есть одно диалоговое окно:
Код:
[Выделить все]
 KolichestvoNaimenovaniiShtycerov: dialog {label = "Количество наименований штуцеров"; // название диалогового окна

    : spacer{height=1;} // вставка пустой строки

    : boxed_row {

    : row {
    : text {label = "Количество строк в таблице штуцеров"; alignment = centered;}
    : edit_box {key = "KolNaimShtyc"; edit_width=5;}
    }
    }
    
    : spacer{height=1;}   // вставка пустой строки

    ok_cancel;   // добавление кнопок ОК и Отмена
}  // окончание диалога
Вызываю его:
Код:
[Выделить все]
 (setq dcl_filename_full "U:\\Автоматизация проекта\\Lisp\\Проект колонны\\Корпус колонны\\Количество наименований штуцеров.dcl"
              fs_dcl_id (load_dialog dcl_filename_full)
              KolNaimShtyc "0"
    )
        (if (not fs_dcl_id)
            (progn
                (alert "Ошибка загрузки DCL файла!")
                (exit)
            )
            (progn
                (if (not (new_dialog "KolichestvoNaimenovaniiShtycerov" fs_dcl_id))
                    (progn
                        (alert "Ошибка загрузки DCL файла!")
                        (exit)
                    )
                    (progn
                        (action_tile "OK" "(done_dialog 1)")
                        (action_tile "Cancel" "(done_dialog 2)")
		        (action_tile "KolNaimShtyc" "(setq KolNaimShtyc $value)")
                        (setq diag_result (start_dialog))
                        (unload_dialog fs_dcl_id)
		        (setq KolNaimShtyc (atoi KolNaimShtyc))
                    ) 
                )
            )
        )
И есть второе диалоговое окно
Код:
[Выделить все]
 TablicaShtycerov : dialog {
                label = "Таблица штуцеров"; //название диалогового окна
                
                //первый блок
                    : boxed_row {
                            height = 2;
                                    width = 10;
                                    : text  {
                                            label = "Обозначение";
                                            width = 12;
                                            alignment = centered;
                                            }
                                    : text_part {
                                            label = "Наименование";
                                            width = 40;
                                            alignment = centered;
                                            }
                                    : text_part {
                                            label = "Количество";
                                            width = 10;
                                            alignment = centered;
                                            }
                                    : text_part {
                                            label = "Dy, мм";
                                            width = 10;
                                            alignment = centered;
                                            }
                                    : text_part {
                                            label = "Py, МПа";
                                            width = 10;
                                            alignment = centered;
                                            }
                                    : text_part {
                                            label = "Вылет";
                                            width = 10;
                                            alignment = centered;
                                            }
                                            }
                          
//второй блок
                    : boxed_row {
                            height = 2;
                            : row {
                                    : edit_box {
                                            key = "ShtycerOboznachenie";
                                            edit_width = 12;
                                            alignment = centered;
                                            list = "";
                                             }
                                    : edit_box {
                                            key = "ShtycerNaimenovanie";
                                            edit_width = 40;
                                            alignment = centered;
                                            list = "";
                                             }
                                    : edit_box {
                                            key = "ShtycerKolichestvo";
                                            edit_width = 10;
                                            list = "";
                                             }
                                    : edit_box {
                                            key = "ShtycerDy";
                                            edit_width = 10;
                                            list = "";
                                             }
                                    : edit_box {
                                            key = "ShtycerPy";
                                            edit_width = 10;
                                            list = "";
                                             }
                                    : edit_box {
                                            key = "ShtycerVilet";
                                            edit_width = 10;
                                            list = "";
                                             }
                                             }
                                             }
                              
                    ok_cancel;
            }
Вызов для него
Код:
[Выделить все]
 (setq dcl_filename_full "U:\\Автоматизация проекта\\Lisp\\Проект колонны\\Корпус колонны\\Таблица штуцеров.dcl"
              fs_dcl_id (load_dialog dcl_filename_full)
              ShtycerOboznachenie "0"
              ShtycerNaimenovanie "0"
              ShtycerKolichestvo "0"
              ShtycerDy "0"
              ShtycerPy "0"
              ShtycerVilet "0"
    )
        (if (not fs_dcl_id)
            (progn
                (alert "Ошибка загрузки DCL файла!")
                (exit)
            )
            (progn
                (if (not (new_dialog "TablicaShtycerov" fs_dcl_id))
                    (progn
                        (alert "Ошибка загрузки DCL файла!")
                        (exit)
                    )
                    (progn
                        (action_tile "OK" "(done_dialog 1)")
                        (action_tile "Cancel" "(done_dialog 2)")
		        (action_tile "ShtycerOboznachenie" "(setq ShtycerOboznachenie $value)")
		        (action_tile "ShtycerNaimenovanie" "(setq ShtycerNaimenovanie $value)")
		        (action_tile "ShtycerKolichestvo" "(setq ShtycerKolichestvo $value)")
		        (action_tile "ShtycerDy" "(setq ShtycerDy $value)")
		        (action_tile "ShtycerPy" "(setq ShtycerPy $value)")
		        (action_tile "ShtycerVilet" "(setq ShtycerVilet $value)")
                        (setq diag_result (start_dialog))
                        (unload_dialog fs_dcl_id)
		        (setq ShtycerKolichestvo (atoi ShtycerKolichestvo))
		        (setq ShtycerDy (atoi ShtycerDy))
		        (setq ShtycerPy (atof ShtycerPy))
		        (setq ShtycerVilet (atoi ShtycerVilet))
                    ) 
                )
            )
        )
Вопрос такой. Во втором диалоговом окне, один блок для ввода данных.
Возможно ли сделать, что бы при вводе в первом диалоговом окне количества строк, например 10, во втором диалоговом окне появлялись 10 блоков для ввода данных.
И так далее.
Можно конечно сделать кучу вариантов DCL, и прописать условия ,что если в первом окне ввели 5, то открываем DCL где 5 блоков для ввода.
Но может есть иной вариант!
Заранее благодарю!

Последний раз редактировалось protorgovec, 31.08.2018 в 13:55. Причина: Есть ошибки
Просмотров: 10155
 
Непрочитано 03.09.2018, 12:52
#21
CalcProg


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


.!.
CalcProg вне форума  
 
Непрочитано 03.09.2018, 14:31
#22
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,009


Offtop: имхо, пускай ТС еще набьёт "шишек" на реализации динамических интерфейсов на базе связки lisp+DCL. Это лет 20 назад компьютер для большинства пользователей был "таинством" и можно было любой интерфейс лепить в программу - все равно работали с большими глазами и повышенным вниманием. А сейчас люди избалованы, у многих в кармане смартфоны с интуитивным интерфейсом и с возможностями компьютеров тех лет. И когда они увидят этот "суперпродукт" от ТС с интерфейсом 15..20 летней давности, а потом еще и попользуются - у них возникнут определенные вопросы. А там уже как начальство себя поведет - по уму или традиционно положив на проблему..)
Сергей812 вне форума  
 
Автор темы   Непрочитано 05.09.2018, 08:58
#23
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от protorgovec Посмотреть сообщение
на яп Лазарус создаем новый проект
Тут проблемка, наши админы не дают мне установить эту прогу. Так что придется дома поставить, поизучать

----- добавлено через ~1 ч. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Код:
[Выделить все]
 (defun tt (/ main_file main_handle main_id main_res main_range dcl_file dcl_handle dcl_id dcl_res)
  (setq main_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg_main.dcl")
        main_handle (open main_file "w")
        ) ;_ end of setq
  (foreach item '("dlg_main:dialog{label=\"Первое окно\";"
                  "	:edit_box{key=\"range\";label=\"Количество полей\";}"
                  "	ok_cancel;"
                  "	}"
                  )
    (write-line item main_handle)
    ) ;_ end of foreach
  (close main_handle)
  (setq main_id (load_dialog main_file))
  (new_dialog "dlg_main" main_id)
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")
  (set_tile "range" "1")
  (setq main_range 1)
  (action_tile "range" "(setq main_range $value)")
  (setq main_res (start_dialog))
  (unload_dialog main_id)
  (if (and (= main_res 1) (> (setq main_range (atoi main_range)) 0))
    (progn (setq dcl_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg.dcl")
                 dcl_handle (open dcl_file "w")
                 ) ;_ end of setq
           (foreach item (append '("dlg:dialog{label=\"Второе окно\";")
                                 ((lambda (/ i lst)
                                    (setq i 0)
                                    (while (< i main_range)
                                      (setq i   (1+ i)
                                            lst (cons (strcat ":edit_box{key=\"txt" (itoa i) "\";label=\"Поле " (itoa i) "\";}") lst)
                                            ) ;_ end of setq
                                      ) ;_ end of while
                                    (reverse lst)
                                    ) ;_ end of LAMBDA
                                  )
                                 '("	ok_cancel;" "	}")
                                 ) ;_ end of append
             (write-line item dcl_handle)
             ) ;_ end of foreach
           (close dcl_handle)
           (setq dcl_id (load_dialog dcl_file))
           (new_dialog "dlg" dcl_id)
           (action_tile "accept" "(done_dialog 1)")
           (action_tile "cancel" "(done_dialog 0)")
           (setq dcl_res (start_dialog))
           (unload_dialog dcl_id)
           ) ;_ end of progn
    (alert "Эт как?")
    ) ;_ end of if
  ) ;_ end of defun
----- добавлено через 37 сек. -----

Остальные недостойны получить сие сакральное знание?
Алексей. Посмотрел, вроде бы разобрался. Один вопрос. Когда во втором окне мы даем значение в каждом поле, для них не заданы переменные, которые нужны для дальнейших построений и вычислений.
protorgovec вне форума  
 
Непрочитано 05.09.2018, 10:01
#24
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,009


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Так что придется дома поставить, поизучать
Поставьте лучше бесплатную студию - дельфи вы не знаете, насколько понимаю. И нет смысла на его изучение время тратить, имхо - лучше сразу на тот же .Net переходить. trir уже ссылку давал ранее - как на .Net через [LispFunction] создавать диалоги и потом вызывайте из своей основной программы как обыкновенную lisp функцию. Главное - сделайте модальные диалоги в .Net, чтобы выполнение основной программы остановилось на время вызова.
Сергей812 вне форума  
 
Непрочитано 05.09.2018, 10:51
1 | 1 #25
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Цитата:
Тут проблемка, наши админы не дают мне установить эту прогу
ну, что бы собрать приложение на c# - даже не надо ставить VS
trir вне форума  
 
Непрочитано 05.09.2018, 14:41
#26
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Тут проблемка, наши админы не дают мне установить эту прогу.
Обратитесь к БольшомуБоссу. Доложите, что для роста производства и прибыли лично БольшогоБосса крайне необходимо конструирование диалогов в "этой проге".
Пущай БольшойБосс вменит в обязанности админам разрабатывать по вашим заданиям и в кратчайшие сроки всё необходимое, а не ставить палки в колеса. Онижепрограммисты. Зря что-ли их кормят?

Завтра же "эта прога" и любая другая появится у вас.

И я тоже советую - не тратьте время на DCL. Быстрее освоить любую современную систему разработки.
ShaggyDoc вне форума  
 
Непрочитано 05.09.2018, 14:58
#27
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,009


Offtop:
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Обратитесь к БольшомуБоссу. Доложите, что для роста производства и прибыли лично БольшогоБосса крайне необходимо конструирование диалогов в "этой проге".
Пущай БольшойБосс вменит в обязанности админам разрабатывать по вашим заданиям и в кратчайшие сроки всё необходимое, а не ставить палки в колеса. Онижепрограммисты. Зря что-ли их кормят?
чтобы такие заявления делать - надо иметь достаточный опыт и понимание своих реальных возможностей. Иначе можно хорошо подставить самого себя - особенно, если в цепочке к ББ окажется желающие "примазаться" к результатам и потом понадобится козел отпущения - когда результаты разойдутся с реальностью.
Сергей812 вне форума  
 
Автор темы   Непрочитано 05.09.2018, 15:14
#28
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Код:
[Выделить все]
 (defun tt (/ main_file main_handle main_id main_res main_range dcl_file dcl_handle dcl_id dcl_res)
  (setq main_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg_main.dcl")
        main_handle (open main_file "w")
        ) ;_ end of setq
  (foreach item '("dlg_main:dialog{label=\"Первое окно\";"
                  "	:edit_box{key=\"range\";label=\"Количество полей\";}"
                  "	ok_cancel;"
                  "	}"
                  )
    (write-line item main_handle)
    ) ;_ end of foreach
  (close main_handle)
  (setq main_id (load_dialog main_file))
  (new_dialog "dlg_main" main_id)
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")
  (set_tile "range" "1")
  (setq main_range 1)
  (action_tile "range" "(setq main_range $value)")
  (setq main_res (start_dialog))
  (unload_dialog main_id)
  (if (and (= main_res 1) (> (setq main_range (atoi main_range)) 0))
    (progn (setq dcl_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg.dcl")
                 dcl_handle (open dcl_file "w")
                 ) ;_ end of setq
           (foreach item (append '("dlg:dialog{label=\"Второе окно\";")
                                 ((lambda (/ i lst)
                                    (setq i 0)
                                    (while (< i main_range)
                                      (setq i   (1+ i)
                                            lst (cons (strcat ":edit_box{key=\"txt" (itoa i) "\";label=\"Поле " (itoa i) "\";}") lst)
                                            ) ;_ end of setq
                                      ) ;_ end of while
                                    (reverse lst)
                                    ) ;_ end of LAMBDA
                                  )
                                 '("	ok_cancel;" "	}")
                                 ) ;_ end of append
             (write-line item dcl_handle)
             ) ;_ end of foreach
           (close dcl_handle)
           (setq dcl_id (load_dialog dcl_file))
           (new_dialog "dlg" dcl_id)
           (action_tile "accept" "(done_dialog 1)")
           (action_tile "cancel" "(done_dialog 0)")
           (setq dcl_res (start_dialog))
           (unload_dialog dcl_id)
           ) ;_ end of progn
    (alert "Эт как?")
    ) ;_ end of if
  ) ;_ end of defun
----- добавлено через 37 сек. -----

Остальные недостойны получить сие сакральное знание?
Алексей, добрый день.
На основании твоего примера сделал следующее:
Код:
[Выделить все]
 (defun tt (/ main_file main_handle main_id main_res main_range dcl_file dcl_handle dcl_id dcl_res)
 (setq main_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg_main.dcl")
       main_handle (open main_file "w")
       ) ;_ end of setq
 (foreach item '("dlg_main:dialog{label=\"Количество наименований штуцеров\";"
                 " :edit_box{key=\"range\";label=\"Количество строк в таблице штуцеров\";}"
                 " ok_cancel;"
                 " }"
                 )
   (write-line item main_handle)
   ) ;_ end of foreach
 (close main_handle)
 (setq main_id (load_dialog main_file))
 (new_dialog "dlg_main" main_id)
 (action_tile "accept" "(done_dialog 1)")
 (action_tile "cancel" "(done_dialog 0)")
 (set_tile "range" "1")
 (setq main_range 1)
 (action_tile "range" "(setq main_range $value)")
 (setq main_res (start_dialog))
 (unload_dialog main_id)
 (if (and (= main_res 1) (> (setq main_range (atoi main_range)) 0))
   (progn (setq dcl_file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg.dcl")
                dcl_handle (open dcl_file "w")
                ) ;_ end of setq
          (foreach item (append '("dlg:dialog{label=\"Таблица штуцеров\";"

" :boxed_row {height = 2; width = 10;"
" : text  {label = \"Обозначение\"; width = 12; alignment = centered;}"
" : text  {label = \"Наименование\"; width = 40; alignment = centered;}"
" : text  {label = \"Количество\"; width = 10; alignment = centered;}"
" : text  {label = \"Dy, мм\"; width = 10; alignment = centered;}"
" : text  {label = \"Py, мм\"; width = 10; alignment = centered;}"
" : text  {label = \"Вылет\"; width = 10; alignment = centered;}"
"}"
				  

				  
				  )
                                ((lambda (/ i lst)
                                   (setq i 0)
                                   (while (< i main_range)
                                     (setq i   (1+ i)
					   
                                           ;lst (cons (strcat ":edit_box{key=\"txt" (itoa i) "\";label=\" " (itoa i) "\";}") lst)

lst (cons (strcat
":boxed_row {"
":row {	"	  
":edit_box{key=\"ShtycerOboznachenie" (itoa i) "\"; edit_width = 12; alignment = centered; list = \" " (itoa i) "\";}"
":edit_box{key=\"ShtycerNaimenovanie" (itoa i) "\"; edit_width = 40; alignment = centered; list = \" " (itoa i) "\";}"
":edit_box{key=\"ShtycerKolichestvo" (itoa i) "\"; edit_width = 10; alignment = centered; list = \" " (itoa i) "\";}"
":edit_box{key=\"ShtycerDy" (itoa i) "\"; edit_width = 10; alignment = centered; list = \" " (itoa i) "\";}"
":edit_box{key=\"ShtycerPy" (itoa i) "\"; edit_width = 10; alignment = centered; list = \" " (itoa i) "\";}"
":edit_box{key=\"ShtycerVilet" (itoa i) "\"; edit_width = 10; alignment = centered; list = \" " (itoa i) "\";}"

"}" ;end row
"}" ; end boxed_row

		  ) lst)


					   
                                           ) ;_ end of setq
                                     ) ;_ end of while
                                   (reverse lst)
                                   ) ;_ end of LAMBDA
                                 )
                                '("    ok_cancel;" "   }")
                                ) ;_ end of append
            (write-line item dcl_handle)
            ) ;_ end of foreach
          (close dcl_handle)
          (setq dcl_id (load_dialog dcl_file))
          (new_dialog "dlg" dcl_id)
          (action_tile "accept" "(done_dialog 1)")
          (action_tile "cancel" "(done_dialog 0)")
          (setq dcl_res (start_dialog))
          (unload_dialog dcl_id)
          ) ;_ end of progn
   (alert "Эт как?")
   ) ;_ end of if
 ) ;_ end of defun
Убрал нумерацию, мне она не нужна.
Но появилось 2 вопроса, надеюсь поможешь!
Первый. Вводя количество штуцеров 20 и более, он выдает что размер диалогового окна не влазиет. Как можно это сделать? Очень часто количество наименований штуцеров бывает больше 20, и за 30 иногда бывает.
Второй вопрос. Я ввожу все данные, но он их совсем не запоминает. Я не могу понять как заставить запоминать все данные, введенные в ячейках.
Надеюсь подскажешь!
Заранее благодарю.
protorgovec вне форума  
 
Непрочитано 05.09.2018, 15:24
#29
Кулик Алексей aka kpblc
Moderator

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


Вариантов несколько.
1. Организовывать перечень полей не только в колонки, но и в строки
2. Сделать несколько диалогов с кнопками "вперед-назад"
3. Уйти с dcl в сторону C# / VB.NET ...
А для запоминания посмотри в сторону т.н. callback-функций (насколько я помню, в справке по load_dialog они описывались).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.09.2018, 15:24
#30
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Обратитесь к БольшомуБоссу. Доложите, что для роста производства и прибыли лично БольшогоБосса крайне необходимо конструирование диалогов в "этой проге".
Пущай БольшойБосс вменит в обязанности админам разрабатывать по вашим заданиям и в кратчайшие сроки всё необходимое, а не ставить палки в колеса. Онижепрограммисты. Зря что-ли их кормят?

Завтра же "эта прога" и любая другая появится у вас.

И я тоже советую - не тратьте время на DCL. Быстрее освоить любую современную систему разработки.
Они у нас не программисты, просто айтишники. Их задача, что бы работали компы и принтеры. Программистов у нас нет, приходится все своими силами делать!

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
1. Организовывать перечень полей не только в колонки, но и в строки
Можешь в моем примере внести коррективы, как это сделать?

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
3. Уйти с dcl в сторону C# / VB.NET ...
Боюсь я переходить. Ощущение, что если перейду, вообще запутаюсь, все брошу тяжеловато мне с программированием.
protorgovec вне форума  
 
Непрочитано 05.09.2018, 15:49
#31
Кулик Алексей aka kpblc
Moderator

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


Я тоже боюсь - а приходится время от времени что-то на других языках рисовать. Просто потому, что на лиспе можно сделать не все...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.09.2018, 15:49
1 | 1 #32
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,009


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Боюсь я переходить. Ощущение, что если перейду, вообще запутаюсь, все брошу
Тратя на решение лишь одной из подзадач - создание диалогов - кучу времени, можете прийти к тому же результату)

В лиспе нет ни классов, ни пространств, ни нормальной современной среды разработки - вся организационная составляющая сводится к разнесению по файлам и попыткам следования определенной системы наименований. Куча времени и усилий тратится на решение проблем по сути застывшего в своем развитии языка вместо самой задачи. А примеров по тому же .Net в инете - как грязи, с картинками, роликами и т.п.) Причем можете часть интерфейса писать и отлаживать вообще вне акада прямо в студии (если грамотно разделите функционал кода), а потом состыковать.
Сергей812 вне форума  
 
Непрочитано 05.09.2018, 16:21
1 | 1 #33
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Боюсь я переходить.
тогда упрашивай админов
http://opendcl.com/
Vov.Ka вне форума  
 
Непрочитано 05.09.2018, 16:35
#34
CalcProg


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


вон оно как! про лазарус в этой теме писать нельзя, а про визуал студию можно. да у вас тут секта свидетелей визуальной студии.
protorgovec, извиняй больше помогать не стану, а то святой админ кулик лексей анафеме предаст.
CalcProg вне форума  
 
Непрочитано 05.09.2018, 16:39
1 | 1 #35
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Тратя на решение лишь одной из подзадач - создание диалогов - кучу времени, можете прийти к тому же результату)
А можно сделав один раз диалог (или заставив бродяг-айтишников) использовать его в сотнях программ.

В очередной раз привожу примеры - универсальное иллюстрированное XML-меню. В него можно занести любые данные, причем с описаниями и иллюстрациями. Само меню находится в текстовом файле, который изменяют и дополняют даже "смышленые тетки".

Прикладной программист в ЛИСП просто вызывает функцию наподобие
Код:
[Выделить все]
 (ru-xml-select-macro full_xml_file_name  dlg_caption)
Эта функция покажет диалог, даст возможность с ним работать, включая изменение "на лету" иллюстраций. При выборе какого-то пункта диалог вернет в ЛИСП строку из атрибута macro.

А строка меню имеет вид наподобие
Код:
[Выделить все]
   <item name="Опора ОПХ2-100.108 для трубы Ду 100" image="3d\support\ru_3d_oph2_2.png" comment="Опора с бугелем по ГОСТ 14911-82" macro="(ru-3d-support-oph2-2 108.0 12.0 128.0 3.0 50 100 170 20 100 38 45 120)" /> 
В примере строка macro
Цитата:
(ru-3d-support-oph2-2 108.0 12.0 128.0 3.0 50 100 170 20 100 38 45 120)
будет передана в ЛИСП. А там должна быть уже чисто лисповская функция рисования с именем ru-3d-support-oph2-2 и аргументами, включающими необходимые размеры.

И такой единственный диалог может быть использован в 90% программ. Да еще несколько могут пригодиться - выбор из списка, ввод числе и т.п. Сделать их проще, чем мучиться с одним DCL, в котором то строки не входят, то всё растягивается.

У меня сделано в Delphi, но точно так же может быть сделано в любой нормальной среде программирования. А вот само рисование удобней делать в ЛИСП.
Миниатюры
Нажмите на изображение для увеличения
Название: xml_3d_kip.png
Просмотров: 35
Размер:	114.5 Кб
ID:	205943  Нажмите на изображение для увеличения
Название: xml_3d_pipe_support.png
Просмотров: 27
Размер:	21.1 Кб
ID:	205944  Нажмите на изображение для увеличения
Название: xml_fans_vr300_45.png
Просмотров: 22
Размер:	12.2 Кб
ID:	205945  Нажмите на изображение для увеличения
Название: xml_vent_duct_asp.png
Просмотров: 18
Размер:	13.7 Кб
ID:	205946  Нажмите на изображение для увеличения
Название: xml_tables_ved_type_details.png
Просмотров: 14
Размер:	9.5 Кб
ID:	205947  

ShaggyDoc вне форума  
 
Непрочитано 05.09.2018, 16:39
#36
Кулик Алексей aka kpblc
Moderator

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


CalcProg, и Lazarus, и VS, и C++, и ассемблер - да хоть кого! - упоминай сколько угодно. Но вы же начали что-то обсуждать. Причем обсуждать очень странно, часть на форуме, часть явно через ЛС. Я и говорю - либо обсуждение явно нового проекта, не относящегося к lsp/dcl, вести в ЛС, либо в новой теме.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.09.2018, 07:30
#37
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
3. Уйти с dcl в сторону C# / VB.NET ...
Алексей, добрый день. Скажи пожалуйста. Могу ли я полностью уйти с lisp на C#, при этом составлять код в VB.Net совсем не используя lisp? и только с помощью C# делать в автокаде все что угодно?
protorgovec вне форума  
 
Непрочитано 06.09.2018, 07:53
#38
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Цитата:
Могу ли я полностью уйти с lisp на C#, при этом составлять код в VB.Net совсем не используя lisp? и только с помощью C# делать в автокаде все что угодно?
можешь, только VB.Net и C# - разные ЯП
trir вне форума  
 
Автор темы   Непрочитано 06.09.2018, 08:09
#39
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 98


Цитата:
Сообщение от trir Посмотреть сообщение
можешь, только VB.Net и C# - разные ЯП
Во, узнал насколько я туп теперь знаю что это разные языки Хорошо, могу ли я на платформе Visual studio пользуясь языком C# делать все что угодно в автокаде. Вообще не используя lisp?
protorgovec вне форума  
 
Непрочитано 06.09.2018, 08:23
#40
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


конечно, есть вещи которые можно сделать только на lisp'е - работа с динамическими блоками например, но даже на lisp'е это очень не просто
а так по функционадьности NET API уступает только ObjectARX

Последний раз редактировалось trir, 06.09.2018 в 08:33.
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Возможно ли такое в DCL и лиспе

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реконструкция подвала при свайных фундаментах, возможно такое решение? Наиль Основания и фундаменты 2 20.09.2013 10:43
Уменьшение теплоносителя после прогрева, возможно ли? vikkiners Отопление 2 24.07.2013 12:57
А возможно ли такое!??! Вопрос нефтяникам и буровикам Botan Разное 5 21.09.2009 20:12
XML и LISp - Такое возможно? Diman111 LISP 3 03.03.2008 19:06
Возможно сделать такое перекрытие? Alexcons_2 Конструкции зданий и сооружений 3 08.01.2008 14:45