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

Вернуться   Форум 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. Причина: Есть ошибки
Просмотров: 5594
 
Автор темы   Непрочитано 06.09.2018, 08:32
#41
protorgovec

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


Цитата:
Сообщение от trir Посмотреть сообщение
конечно
А вообще, какой ЯП самый мощный?
protorgovec вне форума  
 
Непрочитано 06.09.2018, 08:50
#42
trir


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


c++, но это не правильный вопрос ;=)
trir вне форума  
 
Автор темы   Непрочитано 06.09.2018, 08:53
#43
protorgovec

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


Цитата:
Сообщение от trir Посмотреть сообщение
c++
Может мне тогда, раз уж я ни один из них не знаю, сразу на C++ переходить? На какой платформе пишется код? В Visual Studio это возможно?
protorgovec вне форума  
 
Непрочитано 06.09.2018, 08:55
#44
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,073


Цитата:
Сообщение от trir Посмотреть сообщение
есть вещи которые можно сделать только на lisp'е - работа с динамическими блоками например
Не вводите в заблуждения. Работа с динамическими блоками в .NET реализована более чем полно, часто встречал обратное, некоторые вещи которые можно делать с дин блоками в NET, в лиспе не получиться.

Если Вам не нужны собственные объекты, то смысла лезть в C++ (ObjectARX) лично я не вижу, да и если нужны... то же варианты есть. Для инженера возможностей C# более чем достаточно.
__________________
_бложиг
Boxa вне форума  
 
Автор темы   Непрочитано 06.09.2018, 08:58
#45
protorgovec

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


Цитата:
Сообщение от Boxa Посмотреть сообщение
Не вводите в заблуждения. Работа с динамическими блоками в .NET реализована более чем полно, часто встречал обратное, некоторые вещи которые можно делать с дин блоками в NET, в лиспе не получиться.

Если Вам не нужны собственные объекты, то смысла лезть в C++ (ObjectARX) лично я не вижу, да и если нужны... то же варианты есть. Для инженера возможностей C# более чем достаточно.
мне нужен язык, с помощью которого я сделаю все что угодно в автокаде. Вообще не используя иные ЯП
protorgovec вне форума  
 
Непрочитано 06.09.2018, 09:05
#46
trir


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


Цитата:
В Visual Studio это возможно?
возможно

Цитата:
сразу на C++ переходить?
не стоит, он сложнее и писать на нём придётся больше
trir вне форума  
 
Непрочитано 06.09.2018, 09:08
#47
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,073


Все что угодно и на С++ сделать не получиться, т.к. набор инструментов ограничен производителем ПО, но да, для С++ набор инструментов самый большой.
Однако и порог вхождения в этот язык несколько выше чем на .NET, оправдано ли это... если хотите стать проф. программистом, то да, если вам нужно решать инженерные задачи, то смысла тратить на это время нет.
Впрочем, решать Вам.
Цитата:
Сообщение от protorgovec Посмотреть сообщение
Вообще не используя иные ЯП
Я не использую другие языки, для акада пишу на С#, пока проблем не было, в "потолок" не уперся.
__________________
_бложиг
Boxa вне форума  
 
Непрочитано 06.09.2018, 09:10
#48
trir


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


Цитата:
Я не использую другие языки, для акада пишу на С#
уверен? RegEx, SQL, XML, LINQ
trir вне форума  
 
Автор темы   Непрочитано 06.09.2018, 09:11
#49
protorgovec

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


Всем спасибо! Ухожу с данного блога, встретимся с новыми вопросами уже в C#
protorgovec вне форума  
 
Непрочитано 06.09.2018, 09:18
#50
Сергей812


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


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

не язык программирования определяет "потолок" возможностей человека - просто lisp наименее подходящий для задач с развитыми интерактивными диалогами. Зачем вообще его выбрали, какой "профи" вам это посоветовал...

Цитата:
Сообщение от trir Посмотреть сообщение
уверен? RegEx, SQL, XML, LINQ
хм?
Сергей812 вне форума  
 
Непрочитано 06.09.2018, 09:22
#51
trir


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


начинай
trir вне форума  
 
Автор темы   Непрочитано 06.09.2018, 09:30
#52
protorgovec

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Offtop:
пишите сразу тогда уж свой акад))

не язык программирования определяет "потолок" возможностей человека - просто lisp наименее подходящий для задач с развитыми интерактивными диалогами. Зачем вообще его выбрали, какой "профи" вам это посоветовал...


хм?
Да ни кто не советовал. Просто узнал что при автокаде есть lisp, и начал его изучать
protorgovec вне форума  
 
Непрочитано 06.09.2018, 09:37
#53
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,073


Цитата:
Сообщение от trir Посмотреть сообщение
уверен? RegEx, SQL, XML, LINQ
Вполне, если можно так сказать, это библиотечные функции (расширения) языка и почти всё перечисленное не является самостоятельными языками программирования (SQL - это то самое почти) для работы с базами можно и ADO.NET использовать и не сильно то в SQL залезать.

Offtop: Language Integrated Query (LINQ) — проект Microsoft по добавлению синтаксиса языка запросов, напоминающего SQL, в языки программирования платформы .NET Framework. Ранее был реализован в языках C# и Visual Basic .NET.
RegEx - System.Text.RegularExpressions.Regex Пространство имен: System.Text.RegularExpressions т.е NET библиотека и т.д.

Таким темпом WPF, WinForms, JSON и прочие технологии можно за отдельный язык продать...


Что то сильно в оффтоп ушли, админ огорчиться.
__________________
_бложиг

Последний раз редактировалось Boxa, 06.09.2018 в 09:44.
Boxa вне форума  
 
Непрочитано 06.09.2018, 09:54
#54
trir


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


Цитата:
Я не использую другие языки, для акада пишу на С#
regular expressions — формальный язык поиска
structured query language — «язык структурированных запросов»
XML - eXtensible Markup Language
Language Integrated Query (LINQ)
JSON - JavaScript Object Notation, фактически JavaScript
WPF - XAML eXtensible Application Markup Language

фактически когда мы пишим на C# - мы используем и другие специалезированные языки
trir вне форума  
 
Непрочитано 06.09.2018, 10:04
#55
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,073


Offtop: trir, ну да, а VBA, C#, F# - вообще не языки, в названии то слова Language нет =о)
Перед началом дискуссии мы не договорились о понятиях, а потому под ЯП каждый понимает что то свое, при таком подходе развивать данный диалог, тем более не относящейся к теме топика, не вижу смысла.
__________________
_бложиг
Boxa вне форума  
 
Непрочитано 06.09.2018, 10:05
#56
Сергей812


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


Цитата:
Сообщение от trir Посмотреть сообщение
regular expressions — формальный язык поиска
structured query language — «язык структурированных запросов»
XML - eXtensible Markup Language
Language Integrated Query (LINQ)
JSON - JavaScript Object Notation, фактически JavaScript
WPF - XAML eXtensible Application Markup Language
а еще используем английский, родной литературный и не совсем литературный (в трудные моменты творчества) язык.. Имхо, ТС достаточно знать, что большая часть всего этого есть в .NetFramework, без которого просто не запуститься акад - и поэтому он смело может использовать все это в своей программе - не боясь за работоспособность на других машинах. С учетом версий и разрядности акада, конечно...
Сергей812 вне форума  
 
Непрочитано 06.09.2018, 10:18
#57
ShaggyDoc

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


Цитата:
Сообщение от trir Посмотреть сообщение
конечно, есть вещи которые можно сделать только на lisp'е - работа с динамическими блоками например, но даже на lisp'е это очень не просто
а так по функционадьности NET API уступает только ObjectARX
Без Lisp совсем не обойтись. Хотя бы для того, чтобы запустить любую другую программу.

И многие вещи на LISP делаются гораздо проще базовыми средствами самого языка, без подключения каких-то библиотек.
Вот эта строчка
Код:
[Выделить все]
 (apply 'mapcar (cons 'list lst))
заменяет несколько страниц кода на "нефункциональных языках". Это "переворачивание" местами колонок и строк в какой-нибудь таблице. Любых размеров. Да и вообще работа со списками.

Конкретно в Автокад на Лисп удобнее делать многие вещи. Типичный пример - вставить много раз блок, но так, чтобы он висел на курсоре, его было видно. А не сначала указать точку, а потом в нее вставится блок.

Просто надо знать и умело применять разные средства. Конечно, для диалогов ЛИСП подходит менее всего.
ShaggyDoc вне форума  
 
Непрочитано 06.09.2018, 10:20
#58
CalcProg


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


protorgovec, я бы не советовал бросать лисп.
я лично разбиваю программу на две части.
ввод данных и вычисление в лазарусе.
черчение в автолиспе.

а то что вижуальщики тебе напели, что в Си# всебудет легко и просто не верь.
начни с яп по проще VB.net.

Последний раз редактировалось CalcProg, 06.09.2018 в 10:31. Причина: замечание от гуру
CalcProg вне форума  
 
Непрочитано 06.09.2018, 10:22
#59
trir


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


Цитата:
а потому под ЯП каждый понимает что то свое
я не говорю, чтоэто ЯП, я говорю что эти языки, которые нужно знать
например для работы с WPF полезно (хотя и не обязательно) знать XAML и XML

Цитата:
начни с яп по проще VBA.net.
VB.net, я так начинал, а ещё пришлось переводить кучу примеров с C# на VB.net- в принципе C# я так и выучил
начинать с VB.net может быть проше, только если есть опыт с VBA

Цитата:
я лично разбиваю программу на две части.
я тоже так делаю, просто это разные классы

Цитата:
Хотя бы для того, чтобы запустить любую другую программу.
необязательно

Последний раз редактировалось trir, 06.09.2018 в 10:31.
trir вне форума  
 
Непрочитано 06.09.2018, 10:28
#60
Сергей812


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


Offtop:
Цитата:
Сообщение от CalcProg Посмотреть сообщение
VBA.net.
VB.Net может?)


----- добавлено через ~5 мин. -----
Цитата:
Сообщение от trir Посмотреть сообщение
WPF полезно (хотя и не обязательно) знать XAML и XML
не путайте ТС - ему то как раз с XAML работать для создания интерактивных диалогов) Хотя может и WinForms обойдется..
Сергей812 вне форума  
Ответ
Вернуться   Форум 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