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

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

Поле для ввода данных в DCL-окно

Ответ
Поиск в этой теме
Непрочитано 21.02.2020, 05:57 #1
Поле для ввода данных в DCL-окно
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 616

Добрый день всем!

Напомните, плиз, какое поле нужно использовать
для создания DCL-окна для ввода текстовых данных,
(что-то типа edit_box ), но только чтобы это был ещё
и раскрывающийся список.

Т.е. хочешь - вводи свои данные, хочешь - выбирай
из предварительной наборки.
__________________
Счастливо, Алексей!
Просмотров: 7447
 
Непрочитано 21.02.2020, 07:34
#2
Кулик Алексей aka kpblc
Moderator

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


list_box ?

----- добавлено через 9 сек. -----
popup_list ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.02.2020, 09:25
#3
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


не бывает такого
koMon вне форума  
 
Непрочитано 21.02.2020, 10:11
#4
Кулик Алексей aka kpblc
Moderator

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


А, точно, не бывает... Забыл уже (
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.02.2020, 14:18
#5
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


В смысле - "не бывает" ?

Autodesk, если мне склероз не изменяет, декларирует,
что все стандартные окна Автокада написаны на DCL.

Команда: _DSETTINGS

Далее вкладка "Отслеживание", "Полярные углы", "Шаг углов".

Вот такое поле и нужно.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 21.02.2020, 14:23
| 1 #6
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Autodesk, если мне склероз не изменяет, декларирует,
что все стандартные окна Автокада написаны на DCL
Где это он такое, интересно, декларирует? Это явно не так.
skkkk вне форума  
 
Непрочитано 21.02.2020, 14:30
#7
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Autodesk, если мне склероз не изменяет, декларирует,
что все стандартные окна Автокада написаны на DCL.

Возможно, когда-то давно так и было.
Сейчас это не так, конечно же.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 21.02.2020, 14:47
#8
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Ну, как вариант, просто два поля edit_box и popup_list зрительно расположены рядом.

И при выборе чего-нибудь в popup_list этот выбор ставится в edit_box .

Упс! Хотел одной строкой обойтись…

Не, не получается.

Список всё равно не в виде единичной стрелочки,
а в виде широкого поля выглядит.
__________________
Счастливо, Алексей!

Последний раз редактировалось ===AAA===, 21.02.2020 в 14:55.
===AAA=== вне форума  
 
Непрочитано 21.02.2020, 15:34
#9
Сергей812


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


Offtop:
Цитата:
Сообщение от skkkk Посмотреть сообщение
Где это он такое, интересно, декларирует? Это явно не так.
ну если посмотреть в википендии
Цитата:
Написана на AutoLISP[d], Visual Basic и C++
Сергей812 вне форума  
 
Непрочитано 21.02.2020, 15:41
#10
Кулик Алексей aka kpblc
Moderator

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


===AAA===, по-моему, заставить код реагировать на ввод символа в текстовое поле dcl-диалога невозможно. Хотел бы ошибиться.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.02.2020, 15:49
#11
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Не, идея в другом.

Сперва выбираешь из раскрывающегося списка, оно в качестве
значения по-умолчанию подставляется в текстовое поле рядом.
Хочешь - оставляешь, хочешь - заменяешь на любое своё.

Но, видимо, овчинка выделки не стоит...
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 21.02.2020, 16:12
#12
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


так можно, легко
koMon вне форума  
 
Непрочитано 21.02.2020, 17:37
#13
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Если использовать DCL, то можно как-то так:
Миниатюры
Нажмите на изображение для увеличения
Название: img-2020-02-21-17-36-06.png
Просмотров: 85
Размер:	30.4 Кб
ID:	223376  
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 21.02.2020, 17:57
#14
Кулик Алексей aka kpblc
Moderator

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


Do$, в чем рисовал? )))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.02.2020, 19:03
#15
Семёныч


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Offtop:
Цитата:
Сообщение от skkkk
Где это он такое, интересно, декларирует? Это явно не так.
ну если посмотреть в википендии
Цитата:
Написана на AutoLISP[d], Visual Basic и C++
Где здесь упоминание про язык DCL?
Семёныч вне форума  
 
Непрочитано 21.02.2020, 22:30
#16
Сергей812


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


Offtop:
Цитата:
Сообщение от Семёныч Посмотреть сообщение
Где здесь упоминание про язык DCL?
в AutoLisp есть другие встроенные технологии создания диалогов?)
По факту, думаю, что ядро изначально писалось на С/С++, а вот интерфейсная часть сначала неизвестно на чем.. WTL, MFC, Windows Forms, WPF появились позже первых версий акада.
Сергей812 вне форума  
 
Непрочитано 22.02.2020, 09:20
#17
ShaggyDoc

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
думаю, что ядро изначально писалось на С/С++, а вот интерфейсная часть сначала неизвестно на чем.
Известно на чем - на том же языке. Никаких "вижуальных" средств ведь не было, в теле программы надо было описывать всё - позиционирование, рамки элементов, цвета, движения мыши, обработку нажатия клавиш и вообще всё.

И даже если в названии присутствовало "Vision" никакой визуализации не было. Просто можно было использовать заранее заготовленные формы в модулях. И так во времена DOS работали на всех языках - C, C++, Pascal, Clipper, Basic. Пока не произошел переход на Windows и не появились визуальные редакторы.

Появление DCL в R12 для Автолиспа было весьма прогрессивным делом, до этого диалоговые окна приходилось делать в других системах. Но средства DCL весьма примитивны и все это безнадежно устарело.

Нет никакого смысла за них держаться.
ShaggyDoc вне форума  
 
Непрочитано 22.02.2020, 09:49
#18
Семёныч


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


Если уж вспомнили древние версии AutoCAD, то не мешало бы вспомнить и файлы acad.dcl и base.dcl.
Конечно, все это безнадежно устарело. Как и сам AutoCAD. IMHO.
Семёныч вне форума  
 
Непрочитано 22.02.2020, 11:48
#19
Сергей812


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
позиционирование, рамки элементов, цвета, движения мыши, обработку нажатия клавиш и вообще всё.
за движение мыши драйвер мыши отвечал, наверно, все таки.. а вот взаимодействие низкоуровневое с драйвером мыши через регистры было полностью на совести программиста... Зато программист фактически полностью управлял ресурсами напрямую в MS-DOS, а сейчас в современных языках типа того же .Net его пускают резвиться в выделенной песочнице управляемого кода за счет увеличения потребляемых ресурсов - зато безопасно для других приложений.
Сергей812 вне форума  
 
Непрочитано 22.02.2020, 12:35
#20
ShaggyDoc

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


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

Код:
[Выделить все]
  procedure SaveMousePos;
  begin
    if MouseInstalled then begin
      MX := MouseWhereX;
      MY := MouseWhereY;
    end;
  end;

  procedure RestoreMousePos;
  begin
    if MouseInstalled then
      MouseGotoXY(MX, MY);
  end;

 function Sign(X : Integer) : Integer;
    {-Clamp integer to range -1..+1}
  begin
    if X < 0 then
      Sign := -1
    else if X > 0 then
      Sign := +1
    else
      Sign := 0;
  end;

  function ReadKeyMouseXY : Word;
    {-ReadKeyWord with mouse buttons mapped to <Enter> and <Esc>}
  const
    {Keys to return for various mouse directions}
    ArrowKeys : array[-1..1, -1..1] of Word =
    {DX=-1  DX=0   DX=+1}
    (($4700, $4800, $4900),  {DY = -1}
      ($4B00, $FFFF, $4D00), {DY = 0}
      ($4F00, $5000, $5100)); {DY = +1}
  var
    KW : Word;
    MW : Word;
    InitMX : Byte;
    InitMY : Byte;
    Xdel : Integer;
    Ydel : Integer;
  begin
    SetMickeyToPixelRatio(16, 32);
    InitMX := MouseWhereX;
    InitMY := MouseWhereY;
    KW := $FFFF;
    repeat
      if KeyPressed then
        KW := ReadKeyWord
      else if MousePressed then begin
        MW := MouseKeyWord;
        if MW = MouseLft then
          KW := $1C0D
        else if MW = MouseRt then
          KW := $011B;
      end else begin
        Xdel := Integer(MouseWhereX)-InitMX;
        Ydel := Integer(MouseWhereY)-InitMY;
        if Abs(Xdel) > 2*Abs(Ydel) then
          Ydel := 0
        else if Abs(Ydel) > 2*Abs(Xdel) then
          Xdel := 0;
        KW := ArrowKeys[Sign(Ydel), Sign(Xdel)];
      end;
    until KW <> $FFFF;
    ReadKeyMouseXY := KW;
    SetMickeyToPixelRatio(8, 16);
  end;
Это всего лишь мышка, а далее надо было отслеживать, например её перевод на поле вводы или еще куда.
И это надо было делать в каждой программе. В современных средах программирования ничем подобным и не надо заниматься.
ShaggyDoc вне форума  
 
Непрочитано 22.02.2020, 13:03
#21
Сергей812


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


Offtop:
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
В современных средах программирования ничем подобным и не надо заниматься.
ну там и нет прямого доступа к физическим ресурсам ПК вследствие многозадачности операционных систем, если не написан тот же драйвер, например. Но написание драйверов - это сейчас уже далеко за границами прикладного программирования, имхо)


странно, конечно - что за все эти годы не был реализован в DCL ComboBox режим ввода, в результате чего ТС приходится колхоз городить. Или "движок" DCL не трогали с момента его реализации - работает, ну и хорошо)
Сергей812 вне форума  
 
Непрочитано 22.02.2020, 18:15
#22
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Do$, в чем рисовал? )))
https://pencil.evolus.vn/
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 23.02.2020, 00:01
#23
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Offtop:
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну если посмотреть в википендии
В этой статье столько бредовой информации, что плевался чуть ли ни на каждой строке...
Александр Ривилис вне форума  
 
Непрочитано 23.02.2020, 10:28
#24
Сергей812


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


Offtop:
Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
В этой статье столько бредовой информации, что плевался чуть ли ни на каждой строке...
это же вики, а не научное издание или официальное руководство) Да и для подавляющего большинства пользователей Акада и не нужна эта информация, имхо - они пользуются лишь готовыми решениями и шаблонными действиями, не углубляясь в технические дебри...
Сергей812 вне форума  
 
Непрочитано 24.02.2020, 21:18
#25
Zemlemer


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


Здравствуйте! Еще вопрос про dcl. При переходе в новый диалог меняются введенный текст и исчезают значения переменных. Скажите, корректно ли обращаться так с диалогом и что я делаю с ним не так?

(action_tile "pipeD" "(setq pipeD (atof (get_tile \"pipeD\")))")
Zemlemer вне форума  
 
Непрочитано 24.02.2020, 21:53
1 | #26
Кулик Алексей aka kpblc
Moderator

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


Вообще-то все будет зависеть от того, что происходит до вызова второго диалога. Данные сохранены? Тогда ставь set_tile. Нет? Тогда сохраняй.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.02.2020, 08:44
#27
Zemlemer


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


Куда тут ставить Set_tile?
Заранее извиняюсь за глупые вопросы, но пока так и не понял, как работать с этими вот диалогами.
Вот так это выглядит сейчас:


Код:
[Выделить все]
  (defun	NVK ()

   (setq dcl_id (load_dialog "NVK.DCL"))


   (while (and (/= ddi 1) (/= ddi 0))
     (if (null (new_dialog "NVK" dcl_id))
       (exit)
     )

     (action_tile "settings" "(done_dialog 6)")
     (action_tile
       "pipeD"
       "(setq pipeD (atof (get_tile \"pipeD\")))"
     )
     (setq ddi (start_dialog))

     (cond ((= ddi 6)
	    (settings)
	   )
     )
   )
 )


 (defun	settings ()

   (if (null (new_dialog "settings" dcl_id))
     (exit)
   )

   (action_tile
     "scale"
     "(setq scale (atof (get_tile \"scale\")))"
   )

   (setq ddi (start_dialog))

   (unload_dialog dcl_id)

   (NVK)
 )

Последний раз редактировалось Кулик Алексей aka kpblc, 25.02.2020 в 09:01.
Zemlemer вне форума  
 
Непрочитано 25.02.2020, 10:39
#28
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


Цитата:
Сообщение от Do$ Посмотреть сообщение
Если использовать DCL, то можно как-то так:
или так... только вот для перевода фокуса нужно кликать 2 раза
Миниатюры
Нажмите на изображение для увеличения
Название: Gone_DCLing.gif
Просмотров: 47
Размер:	1.01 Мб
ID:	223415  
koMon вне форума  
 
Непрочитано 25.02.2020, 16:34
#29
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от koMon Посмотреть сообщение
или так...
Неужели это в DCL сделано?
Насколько я помню, там с картинками беда была. Можно было использовать только слайды.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 25.02.2020, 16:59
#30
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


Цитата:
Сообщение от Do$ Посмотреть сообщение
Неужели это в DCL сделано?
Насколько я помню, там с картинками беда была. Можно было использовать только слайды.
dcl, не только слайды.

----- добавлено через ~2 мин. -----
хотя сделать полноценную превьюшку блока вряд ли получится...
Миниатюры
Нажмите на изображение для увеличения
Название: DCL_Imaging.JPG
Просмотров: 32
Размер:	129.3 Кб
ID:	223443  
koMon вне форума  
 
Непрочитано 25.02.2020, 17:41
#31
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от koMon Посмотреть сообщение
не только слайды.
Я имел в виду, что нельзя вставить привычную картинку в виде png, bmp, jpg и т.п.
То, что можно векторами-отрезками рисовать - это "так себе" альтернатива...
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 25.02.2020, 17:56
#32
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


это вообще не альтернатива! это такие конкретные костыли! это же касается и слайдов! но разрабы ведь не собираются добавлять в традиционный в dcl ничего нового, поэтому что имеем, из того и лепим. какой уж dcl они там используют для своих окошек - неведомо)))
koMon вне форума  
 
Непрочитано 25.02.2020, 18:22
| 1 #33
ShaggyDoc

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Я имел в виду, что нельзя вставить привычную картинку в виде png, bmp, jpg и т.п.
То, что можно векторами-отрезками рисовать - это "так себе" альтернатива...
Много лет уже показываю, как навсегда избавиться от возни с DCL, при этом иметь все современные интерфейсные средства. Для сотен программ в итоге у меня оказались необходимыми всего несколько один раз и навсегда написанных диалогов:

1. Иллюстрированное древовидное меню с возможностью брать иллюстрации из чертежа или из любого окна или из буфера. Имеет наибольшее применение для чего угодно.
2. Выбор из списка.
3. Выбор из двух списков.
4. Ввод одной или двух строк (или чисел) с возможностями выбора из справочников и "взять в чертеже".
5. Отбор из списка с возможностью сортировки.

Научиться такое дело проще, чем разобраться с DCL. А для использования ничего не надо программировать, надо только обычным текстовым редактором править меню. При этом один диалог может использоваться и в других программах.
Миниатюры
Нажмите на изображение для увеличения
Название: xml_3d_pipe_support.png
Просмотров: 50
Размер:	21.1 Кб
ID:	223445  Нажмите на изображение для увеличения
Название: xml_tables_veddwg.png
Просмотров: 41
Размер:	13.4 Кб
ID:	223446  Нажмите на изображение для увеличения
Название: dlg_dwg_props.png
Просмотров: 40
Размер:	3.7 Кб
ID:	223447  Нажмите на изображение для увеличения
Название: dlg_get_two_number.png
Просмотров: 35
Размер:	6.1 Кб
ID:	223448  Нажмите на изображение для увеличения
Название: dlg_select_layouts_list.png
Просмотров: 40
Размер:	10.5 Кб
ID:	223449  

ShaggyDoc вне форума  
 
Непрочитано 27.02.2020, 22:04
#34
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Это в чём сделанные окошки? Вы, скорее всего, уже раз сто на этот вопрос отвечали. Но я забыл... Вид у них, конечно, не сказать, что современный. Сейчас "в моде" анимация, динамика, прозрачность, полупрозрачность, креативный дизайн, адаптация под темы оформления ОС и тд и тп... По новым "веяниям", привнесённым разработкой для Web и мобильных приложений, меняются правила "хорошего тона" при составлении диалогов. Например - не принято делать кнопки "Сохранить" и "Отменить". Подразумевается, что все изменения должны сразу автоматически сохраняться.
А так - да, согласен, что можно много взаимодействий с пользователем свести к этому списку диалогов.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 27.02.2020 в 22:10.
Do$ вне форума  
 
Непрочитано 27.02.2020, 22:13
#35
Кулик Алексей aka kpblc
Moderator

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


Отвечу немного "наперед"
Delphi, регистрируемый COM-сервер, все дела...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.02.2020, 00:03
#36
Сергей812


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Вид у них, конечно, не сказать, что современный. Сейчас "в моде" анимация, динамика, прозрачность, полупрозрачность, креативный дизайн, адаптация под темы оформления ОС и тд и тп... По новым "веяниям", привнесённым разработкой для Web и мобильных приложений, меняются правила "хорошего тона" при составлении диалогов. Например - не принято делать кнопки "Сохранить" и "Отменить". Подразумевается, что все изменения должны сразу автоматически сохраняться.
ничто сейчас не мешает запихать в сборку dll интерфейс на WPF со всеми эти красотами (обернув в Lisp подобные функции) и загрузив эту сборку в акад, вызывать прямо из кода lisp как обыкновенную функцию.
Сергей812 вне форума  
 
Непрочитано 28.02.2020, 07:17
#37
ShaggyDoc

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ничто сейчас не мешает запихать в сборку dll интерфейс на WPF со всеми эти красотами (обернув в Lisp подобные функции) и загрузив эту сборку в акад, вызывать прямо из кода lisp как обыкновенную функцию.
Конечно. Тем более, что вариантов уже не один. А если кому нужны "свистелки-перделки", так все диалоги изменяют свой вид в зависимости от версии Windows и установленной темы оформления.

Цитата:
Сообщение от Do$ Посмотреть сообщение
Например - не принято делать кнопки "Сохранить" и "Отменить".
У кого это "не принято"? Если пользователю надо выбрать что-то в диалоге, то какое изменение должно сразу сохраняться? Должна быть возможность именно выбрать с закрытием диалога (ОК) или просто его закрыть, ничего не выбрав.

Ну да, можно и здоровенных иконок наделать, где не надо. А где надо покрупнее - наоборот, унаследовать микроскопический навигатор БД, как у мелкософта и заставлять напрягать зрение.

Вот когда работаем с БД, так там для приложения в целом, нет пунктов Сохранить или Отменить - всё автоматом. Но для редактирования одной записи непременно есть и Применить и Отменить.

Вот из-за того, что "привнесено из WEB" одной из самых популярных услуг является замена Win10 на нормальные ОС.
ShaggyDoc вне форума  
 
Непрочитано 28.02.2020, 10:44
#38
Diman111

промышл проектант
 
Регистрация: 26.05.2005
Изовсехщелей
Сообщений: 323


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ничто сейчас не мешает запихать в сборку dll интерфейс на WPF со всеми эти красотами (обернув в Lisp подобные функции) и загрузив эту сборку в акад, вызывать прямо из кода lisp как обыкновенную функцию.
А не подскажите готовые решения для людей знакомых с ЛИСП но и только. Для которых регистрация DLL и вызов серверов не совсем тривиальная задача. Решения с готовыми библиотеками и кодом на лисп с вызовом окон, передачей и получением данных.
Diman111 вне форума  
 
Непрочитано 28.02.2020, 11:15
#39
Кулик Алексей aka kpblc
Moderator

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


Готовые решения только самостоятельно. dcl, callback-функции, вызывающие функции, обработка контролов и т.д.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.02.2020, 15:08
#40
Сергей812


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


Цитата:
Сообщение от Diman111 Посмотреть сообщение
А не подскажите готовые решения для людей знакомых с ЛИСП но и только. Для которых регистрация DLL и вызов серверов не совсем тривиальная задача. Решения с готовыми библиотеками и кодом на лисп с вызовом окон, передачей и получением данных.
Ну регистрация DLL и вызов серверов для того, что предлагал выше - не требуется: это не внешний COM-сервер. Но придется изучить азы программирования на .Net - как накидать мышкой контролы на форму (чтобы сделать похоже на диалоги от ShaggyDoc), как организовать хранение данных. Затем почитайте документ de211-2.pdf "Communication between AutoLISP functions and .NET functions" от Аутодеска (он, правда, на английском языке).

Т.е. суть какая - хранение и выбор данных на внешних носителях пишется и отлаживается в бесплатной студии вообще отдельно от акада - а потом переносите отлаженные формы и сопутствующий код в проект сборки *.dll, оборачивая в вызов функций .Net с атрибутом LispFunction. Код на лиспе получает сразу готовые значения из возвращаемого значения функции .Net, а в аргументах этой же функции ResultBuffer args можно передать исходные значения для инициализации начального состояния диалогов - см. de211-2.pdf.

Можете конечно сразу и в WPF сунуться вместо WinForms, но там изначально не настолько прозрачно для понимания - цена за гибкость технологии)
Сергей812 вне форума  
 
Непрочитано 02.03.2020, 13:37
#41
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ничто сейчас не мешает запихать в сборку dll интерфейс на WPF со всеми эти красотами (обернув в Lisp подобные функции) и загрузив эту сборку в акад, вызывать прямо из кода lisp как обыкновенную функцию.
Ну это как посмотреть. С нашей колокольни - да, всё просто до безобразия. Но в то же время, умея уже вот это всё, зачем тогда что-то писать на LISP? На LISP, в основном, пишут программы для автоматизации своей работы инженеры. Изучать .NET, WinForm/WPF требует довольно много времени и немалой мотивации. Далеко не каждый к такому готов. А изучив, уже вряд ли захочет вернуться на LISP.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 02.03.2020, 13:50
#42
trir


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


http://bushman-andrey.blogspot.com/2...sual-lisp.html
trir вне форума  
 
Непрочитано 02.03.2020, 13:56
#43
Сергей812


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Ну это как посмотреть. С нашей колокольни - да, всё просто до безобразия. Но в то же время, умея уже вот это всё, зачем тогда что-то писать на LISP? На LISP, в основном, пишут программы для автоматизации своей работы инженеры. Изучать .NET, WinForm/WPF требует довольно много времени и немалой мотивации. Далеко не каждый к такому готов. А изучив, уже вряд ли захочет вернуться на LISP.
хотя бы по одной причине - что если для написания и отладки кода на лиспе была потрачено до фига человекочасов, при этом работа программы удовлетворяет, а вот интерфейс с точки зрения юзабилити - нет. Ведь изучив, как делать те же WinForms и как обертывать их вместе с функциями вызова в сборку - человеку нужно затратить лишь малую часть усилий от тех, сколько ему понадобилось бы - чтобы переписать функционал полностью с лиспа на .Net. А дальше может втянется, а может так и будет писать в гибридном стиле - если уже много наработок под лисп.
Сергей812 вне форума  
 
Непрочитано 02.03.2020, 14:12
#44
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
У кого это "не принято"? Если пользователю надо выбрать что-то в диалоге, то какое изменение должно сразу сохраняться? Должна быть возможность именно выбрать с закрытием диалога (ОК) или просто его закрыть, ничего не выбрав.
Конечно же, где требуется результат выбора после закрытия диалога, эти кнопки должны быть. Хотя, не удивлюсь, если уже и для этого случая что-то придумали, типа "кликните два раза для выбора", "свопните нужное значение" или "для выбора значения наведите курсор и удерживайте 5 сек".
Я имел в виду, что раньше, изменяя настройки, всегда была опция все эти изменения не применять, пока не нажата кнопка подтверждения. Сейчас от этого стали избавляться.
Зайдёте в настройки браузера - Вы не увидите кнопки "Сохранить". Всякие бегунки-переключатели, радио-кнопки, комбобоксы, изменения которых применяются сразу. Переключили всё что надо и закрыли страницу настроек - всё сохранилось автоматически.
На смартфоне, в большинстве случаев, то же самое.
В Google-документах так вообще нет опции сохранения. Все изменения сохраняются в момент их внесения. Закончил редактировать, закрыл вкладку, открыл - всё в том же состоянии, как и до закрытия.

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а может так и будет писать в гибридном стиле - если уже много наработок под лисп.
Вы хоть одного такого человека знаете?
Я тоже думал, что буду писать в гибридном стиле. Но выяснилось, что это жутко неудобно.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 02.03.2020, 14:34
#45
Сергей812


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Вы хоть одного такого человека знаете?
а вы знаете многих людей, кто пишет на лиспе большие приложения, а не наборы утилит?) А из этого еще сделать выборку тех, кто захочет двигаться дальше, а не сделал решение текущих задач и забыл как кошмарный сон)
Сергей812 вне форума  
 
Непрочитано 02.03.2020, 15:04
#46
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


а я поддержу Do$, гибридный стиль это конечно ОЧЕНЬ круто, но требует много лишнего, в то время, когда любой чистый лисп работает из коробки. и наверное можно смириться и обходиться брошенкой-dcl
koMon вне форума  
 
Непрочитано 02.03.2020, 15:13
#47
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Я на основе собственного опыта и пишу. Не встретил пока ни одного "гибридника": либо "лиспер", либо "дотнетчик". Но вот чтобы на LISP писал, а .NET как вспомогательный инструмент использовал - не встречал, увы.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а вы знаете многих людей, кто пишет на лиспе большие приложения, а не наборы утилит?
Ну даже в этой теме недолго искать придётся.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а не сделал решение текущих задач и забыл как кошмарный сон
Таких не знаю.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 02.03.2020, 15:35
#48
Сергей812


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Но вот чтобы на LISP писал, а .NET как вспомогательный инструмент использовал - не встречал, увы.
Имхо, на .Net попроще будет написать непрофессиональному программисту "вставки" диалогов, чем с COM-сервером внешним) А что применять или нет - это личное дело каждого.
Сергей812 вне форума  
 
Непрочитано 02.03.2020, 15:42
#49
ShaggyDoc

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Конечно же, где требуется результат выбора после закрытия диалога, эти кнопки должны быть. Хотя, не удивлюсь, если уже и для этого случая что-то придумали, типа "кликните два раза для выбора", "свопните нужное значение" или "для выбора значения наведите курсор и удерживайте 5 сек"
Так выбор в правильно написанном диалоге может работать и без нажатия кнопки. Двойной щелчок или нажатие Enter - выбор, ESC - отмена, F1 - справка, причем контекстная.

А вот насчет "свопните" или "удерживайте 5 сек" - это уже извращения. В смартфонах это еще обоснованно, но не надо распространять на нормальные приложения, потому что "так модно".

Из-за "моды" и с некоторыми смартфонами трудно работать. Вот прекрасные смартфоны Redmi снабжаются жуткой оболочкой MIUI. Там надо "квест" проходить - как что-то элементарное сделать наподобие удаления ненужных смс или настройки контактов. Да еще и "модные" кнопочки - светлосерые на белом. И после каждой новой модели на форумах сотни страниц с разгадками интерфейса. А вот у другой фирмы, по тот же Андроид всё понятно сделано.

Цитата:
Сообщение от Do$ Посмотреть сообщение
Я имел в виду, что раньше, изменяя настройки, всегда была опция все эти изменения не применять, пока не нажата кнопка подтверждения. Сейчас от этого стали избавляться.
Зайдёте в настройки браузера - Вы не увидите кнопки "Сохранить". Всякие бегунки-переключатели, радио-кнопки, комбобоксы, изменения которых применяются сразу. Переключили всё что надо и закрыли страницу настроек - всё сохранилось автоматически
Это потому, что теперь "ума-то нету". В каких-то случаях действительно, настройки можно сразу применить без подтверждения. А когда-то это делать нельзя.

Все-таки браузер и смарфоны - "для блондинок" и приравненных к ним. Они же не знают "всё что надо". А если не всё надо, если надо только попробовать? А уже чуть сложнее и без Применить не обойтись.

Элементарная Настройка даты и времени - захотите взглянуть на "календарик", передвинете на другое число - и настройки изменятся? Потому и три кнопки ОК, Отменить, Применить. Я уж не говорю про более сложные случаи, которые в серьезных программах всегда имеются.

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
А дальше может втянется, а может так и будет писать в гибридном стиле - если уже много наработок под лисп.
Так ведь и не обязательно самому всё писать. Весь необходимый набор диалогов - 5-6 "единиц". И они доступны в DOSlib, которая продолжает развиваться. Ну а хочется непременно свое, "импортозамещение" сделать, так это вполне возможно.

Разобраться один раз, как это делается будет быстрее, чем каждый раз биться с DCL.
ShaggyDoc вне форума  
 
Непрочитано 02.03.2020, 16:01
#50
Кулик Алексей aka kpblc
Moderator

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


Offtop: К вопросу о DosLib
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.03.2020, 17:42
#51
ShaggyDoc

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Offtop: К вопросу о DosLib
А это показывает, как связываться именно с ARX. В DOSlib нет ничего эдакого, чтобы использовать всю мощь ObjectARX, это не какое-то "вертикальное" приложение, всего лишь хороший набор полезных функций.

Еще во времена AutoCAD R14 мы сделали свой аналог. Но тогда ARX можно было написать хоть на каком языке и с любым компилятором. Мы работали с Borland C++ и Zortech C++, и на Delphi делали ARX. Это же DLL с тремя обязательными функциями, одна из которых acrxGetApiVersion возвращает версию AutoCAD.

Но начиная с 2000 Autodesk "легла" под Microsoft и стало обязательным использование именно Visual Studio, да еще в сочетании с версиями AutoCAD. И acrxGetApiVersion стала не просто выдавать только номер версии, но делаеть что-то еще, не позволяя загрузить "неправильный" ARX в AutoCAD.

Тогда и пришлось переходить на COM, что оказалось даже лучше и проще.

Сделал 25 COM-dll, содержащих и интерфейсные и "тихие" функции и больше ничего оказалось и не нужно. Причем одни и те же DLL работают не только с AutoCAD (с вызовом из Лисп), но и с другими программами, например с Mapinfo (с вызовом из MapBasic).
ShaggyDoc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Поле для ввода данных в DCL-окно



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ГОСТ 21.1101-2009. Как правильно оформить изменения на листе общих данных? Pavel13 Прочее. Архитектура и строительство 7 17.04.2025 13:53
Как с помощью LISP нарисовать окно линиями? Aндрeй LISP 13 24.06.2011 14:37
Связь данных в поле автокад Илья М. Программирование 2 11.02.2011 11:43
Текстовое окно не появляется при нажатии F2 Боныч AutoCAD 3 09.04.2008 16:21
Окно ввода аттрибутов блока. Как убрать? Pave1 AutoCAD 7 15.06.2007 14:13