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

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

Что может быть слайдом в dcl-окнах?

Ответ
Поиск в этой теме
Непрочитано 22.12.2010, 00:50 #1
Что может быть слайдом в dcl-окнах?
Shraybicus
 
Регистрация: 05.12.2010
Сообщений: 104

Доброй ночи!

В общем вопрос в название. Что может быть в качестве слайда? Может быть например изображение в формате jpeg или bmp и др.?
Просмотров: 18057
 
Непрочитано 22.12.2010, 01:05
#2
Кулик Алексей aka kpblc
Moderator

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


По идее зависит от того, как этот слайд определяется: как image или как slide_image.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.12.2010, 01:07
#3
Shraybicus


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
По идее зависит от того, как этот слайд определяется: как image или как slide_image.
Я сделал dcl-окно, и как оформление хочу добавить картинку.

Это возможно? Если да, подскажите пожалуйста, как это сделать.
Shraybicus вне форума  
 
Непрочитано 22.12.2010, 01:28
#4
Кулик Алексей aka kpblc
Moderator

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


Есть три функции: fill_image, vector_image и slide_image. Советую найти книгу НН.Полещука по AutoLISP или посмотреть в справке. Пока ничего более конкретного предложить не могу ( Устал, спать хочу.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.12.2010, 08:40
#5
Do$

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


Слайдом может быть только слайд (см. команды _.mslide и _.vslide).
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
fill_image, vector_image и slide_image.
Ну и start_image и end_image.
Не впихнуть в DCL ничего, кроме слайдов - с помощью функции slide_image. Никаких jpg, bmp и пр не поддерживается.
С помощью fill_image и vector_image можно рисовать изображение.
Do$ вне форума  
 
Непрочитано 22.12.2010, 08:44
#6
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


fill_image - заполняет прямоугольник внутри графического поля одним цветом.
vector_image - рисует отрезок заданного цвета внутри графического поля диалогового окна.
slide_image - заполняет графическое поле слайдом из отдельного файла слайда или из библиотеки слайдов.
Как видим, здесь имеется в виду слайд , т.е. файл с расширением SLD (или SLB, если слайд берется из библиотеки). Никаких BMP или JPG не предусмотрено. Однако, можно попытаться вставить растровое изображение в чертеж и создать слайд вместе с этим изображением. Когда-то я делал так. Но вспоминается мне, что файл слайда в этом случае получался офигенного размера.
Profan вне форума  
 
Непрочитано 22.12.2010, 11:07
#7
ShaggyDoc

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


Слайды (как и DCL вообще) - атавизм. Но когда-то это было очень круто - вообще возможность вставлять в диалог хоть какие-то графические изображения. Тогда в DOS не было современных возможностей, кое-как можно было использовать древние графические форматы, наподобие PCX. Да и памяти было мизерное количество, поэтому формат SLD был кстати.

Теперь, если нужны хорошие диалоги, с современными "контролами" и графикой, надо использовать иные среды программирования. А вызывать диалоги можно и из LISP.
ShaggyDoc вне форума  
 
Непрочитано 22.12.2010, 11:52
1 | #8
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Increase Size Decrease Size vector image ???»???°
http://www.youtube.com/watch?v=W0oDQ-kD9W4
Код:
[Выделить все]
(defun c:vector_im (/)
  (vl-sort
    (mapcar
      (function
	(lambda	(x)
	  (list
	    (atoi (rtos (car (cdr (assoc 10 x))) 2 0))
	    (abs (atoi (rtos (cadr (cdr (assoc 10 x))) 2 0)))
	    (atoi (rtos (car (cdr (assoc 11 x))) 2 0))
	    (abs (atoi (rtos (cadr (cdr (assoc 11 x))) 2 0)))
	    (if	(assoc 62 x)
	      (cdr (assoc 62 x))
	      250
	    )
	  )
	)
      )
      (mapcar 'entget
	      (vl-remove-if-not
		'(lambda (x) (= (type x) 'ENAME))
		(mapcar 'cadr (ssnamex (ssget '((0 . "LINE")))))
	      )
      )
    )
    (function (lambda (x y) (/= (cadddr (cdr x)) 250)))
  )
)
Вложения
Тип файла: dwg
DWG 2007
Ёлка.dwg (102.3 Кб, 1365 просмотров)
Тип файла: lsp tree.LSP (1.9 Кб, 211 просмотров)
Тип файла: rar fir-tree.rar (236 байт, 144 просмотров)
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 22.12.2010 в 12:45.
Disney вне форума  
 
Непрочитано 22.12.2010, 11:52
#9
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


В дополнение к сказанному ShaggyDoc'ом - сразу скажу, что это не ахти какой метод, но все-же лучше чем - DCL. Если, по какой-либо причине есть сложности с регистрацией COM элементов (для диалоговых окон), во многих случаях, вполне можно использовать просто внешний .exe (через startapp), т.к. объектная модель автокада точно зарегестрированна.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 22.12.2010, 11:53
#10
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Теперь, если нужны хорошие диалоги, с современными "контролами" и графикой, надо использовать иные среды программирования. А вызывать диалоги можно и из LISP.
+1
С этими слайдами просто ужасно работать. Да и создавать библиотеку слайдов достаточно неудобно. Хотя на это все есть спец. прога.
Да и вообще мне кажется, что Lisp+DCL - это "для начала". Ознакомится с объектной моделью, получить азы, понять, что из себя представляют примитивы и т.д. Если уж создавать что-то, что содержит качественные диалоги - то это уже C#, C++, VBA и т.д., деланные на Visual Studio. Тем более - можно сделать диалог, например используя .NET, а к нему привязать Лисп
Modis вне форума  
 
Автор темы   Непрочитано 22.12.2010, 14:31
#11
Shraybicus


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
А вызывать диалоги можно и из LISP.
А способ вызова таких окон аналогичен как и окон DCL (например если в delphi сделать окно)? Или есть свои особенности?
Shraybicus вне форума  
 
Непрочитано 22.12.2010, 14:41
#12
ShaggyDoc

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


Цитата:
вполне можно использовать просто внешний .exe (через startapp) (через startapp), т.к. объектная модель автокада точно зарегестрированна.
Можно просто сделать диалог в exe безо всякой объектной модели. Такой "программе-диалогу" можно передать требуемые параметры разными способами (командная строка, реестр и т.п.). Я предпочитаю в таком случае передать в командной строке имя INI-файла, в котором может содержаться уже множество параметров. Результат - аналогичным образом можно вернуть в LISP.

Но тут нужна LISP-функция, запускающая exe в "модальном режиме", т.е. дожидающаяся завершения диалога любым способом. Штатные функции этого, почему-то не умеют. Можно воспользоваться DOSlib или свою сделать.

Этот метод хорош тем, что полностью не зависит от COM. И "программу-диалог" можно делать любыми средствами. Когда-то, когда недостатки DCL уже были очевидны, а ничего хорошего не было, я использовал такие "диалоги" ("нарисованные" на CLIPPER или Turbo Pascal) даже в DOS.

При этом, хотя и приходилось выгружать из памяти сам Автокад, замедления работы не ощущалось. А теперь-то тем более не почувствуется, даже с "медленными" файловыми операциями.
ShaggyDoc вне форума  
 
Непрочитано 22.12.2010, 16:04
#13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Но тут нужна LISP-функция, запускающая exe в "модальном режиме", т.е. дожидающаяся завершения диалога любым способом. Штатные функции этого, почему-то не умеют.
Умеет объект wscript.shell. Пример запуска блокнота в модальном режиме
Код:
[Выделить все]
  (vlax-invoke-method
    (setq ws (vlax-get-or-create-object "wscript.shell"))
    "run"
    (strcat "notepad.exe " "test.txt")
    1
    :vlax-true ;_дождаться завершения сеанса
  ) ;_ end of vlax-invoke-method
  (vlax-release-object ws)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.12.2010, 16:16
#14
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Так ведь один из минусов dcl - это работа ИСКЛЮЧИТЕЛЬНО в модальном режиме - ихмо наоборот приятней когда ты какой-либо бегунок тянешь, а у тебя "в онлайне" чертеж меняется.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 22.12.2010, 16:23
#15
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Так ведь один из минусов dcl - это работа ИСКЛЮЧИТЕЛЬНО в модальном режиме - ихмо наоборот приятней когда ты какой-либо бегунок тянешь, а у тебя "в онлайне" чертеж меняется.
зачем тогда диалог? рисуешь бегунок в чертеже, тянешь его и программно перерисовываешь чертеж...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 22.12.2010, 16:26
#16
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
у тебя "в онлайне" чертеж меняется
Это называется "динамически", а не "онлайн".
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 22.12.2010, 16:38
#17
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
зачем тогда диалог? рисуешь бегунок в чертеже, тянешь его и программно перерисовываешь чертеж...
Тоже вариант - просто когда что удобней (я делал подобную автокадовскую таблицу с параметрами - больно их много было).
То HWD - в кавычках же написанно - я думаю все поняли.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 22.12.2010, 18:48
#18
ShaggyDoc

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


Цитата:
Так ведь один из минусов dcl - это работа ИСКЛЮЧИТЕЛЬНО в модальном режиме
Да, это один из минусов. Иногда действительно надо бы иметь немодальный диалог.

Но DCL придумали задолго до идеологии программирования в Windows, где работа основывается на анализе "сообщений" из разных источников. "Это когда" отслеживаются все действия (шевеление мышки, нажатие на клавиши), сортируются и отправляются соответствующим "исполнителям". А раньше в памяти могла быть только одна программа и ей не с кем было взаимодействовать. "Окон" в нынешнем понимании (не визуальном) просто не было. И не было самого понятия "модальности".

Конечно, Autodesk просто обязана была где-то в версии AutoCAD 14 сделать новую систему диалогов. Старую DCL можно было оставить для совместимости. И сейчас этому нет технических препятствий, особенно с внедрением .NET. Но им это не надо. "Пипл хавает", да и сюзерен не заинтересован в этом.

Сейчас я немодальные диалоги делаю именно в виде EXE. Он запускается из LISP, подхватывает объектную модель AutoCAD и посылает ему соответствующие "команды".
ShaggyDoc вне форума  
 
Непрочитано 22.12.2010, 21:02
1 | #19
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


А я просто выражу респект товарищу Disney.
Sleekka вне форума  
 
Непрочитано 22.12.2010, 22:02
#20
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Сейчас я немодальные диалоги делаю именно в виде EXE.
Подскажите каким методом определяете местоположение exe'шника (у меня пока в виде "жесткой" привязки %appdata%... реализовано, ничего лучше в голову не приходит (в реестр лезть или переменые устанавливать - не охота, (тогда уж сразу COM поставить можно) может какой получше метод есть - поделитесь)).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 23.12.2010, 07:11
#21
ShaggyDoc

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Подскажите каким методом определяете местоположение exe'шника (у меня пока в виде "жесткой" привязки %appdata%... реализовано, ничего лучше в голову не приходит (в реестр лезть или переменые устанавливать - не охота, (тогда уж сразу COM поставить можно) может какой получше метод есть - поделитесь)).
Ну, мало ли чего неохота. Если это свой EXE, то его просто надо инсталлировать цивилизованным методом, а результат инсталляции (место) - записать в реестр, в HKCU\MyApp. И потом оттуда получать место "прописки". Записывать надо именно в реестр, т.к. HKCU\MyApp является константой для этого приложения. И это должен сделать инсталлятор.

Можно бы настройки и в файле хранить, но тогда придется решать вопрос с местом жительства этого файла. Удобен компромиссный вариант: основные пути в реестре, прочие настройки - в файлах, путь к которым извлекается из реестра. Причем эти файлы должны храниться не в %appdata% %ProgramFilesFolder%, а в %AppdataFolder% или %CommonAppdataFolder%.

%ProgramFilesFolder% (как переменную) использовать можно, но до нее тоже еще добраться надо, да и может потребоваться ставить программу в любое место. Чтобы работать с реестром совсем не надо ставить COM.

PS. Как обычно обозначаются системные папки в WinApi:

ProgramFilesFolder - папка в Program Files. Ставим сюда только то, что не должно изменяться пользователем

AppdataFolder - где-то в c:\Documents and Settings\%USER%\Application Data\ (для XP)

CommonAppdataFolder - где-то в c:\Documents and Settings\All Users\Application Data\ (для XP)
ShaggyDoc вне форума  
 
Непрочитано 23.12.2010, 07:14
#22
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Вы все забыли одно маленькое преимущество слайдов: слайды (снимки рабочего поля) делаются одним нажатием клавиши, можно даже динамически, в диалоговом окне
Модальность DCL тоже не проблема, если не пытаться впихнуть в него несвойственный функционал...
Новые контролы? А часто вы их используете? А правильно ли? А можно ли и без них обойтись? А удобны ли они на самом деле? А сколько времени занимает разработка действительно нового контрола... А насколько больше exe-шник файла DCL и т.д.
gomer вне форума  
 
Непрочитано 23.12.2010, 09:27
#23
ShaggyDoc

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


Цитата:
Вы все забыли одно маленькое преимущество слайдов: слайды (снимки рабочего поля) делаются одним нажатием клавиши, можно даже динамически, в диалоговом окне
Это было преимуществом в DOS, когда получить изображение с экрана было проблематично. Сейчас это называть "преимуществом" смешно. Все остальные рассуждения из серии "слаще редьки ничего не хочу".

Конструирование DCL-диалогов - мучение. Работа вслепую с многочисленными запусками для проверки. Ужасное "саморастягивание" элементов. Ужасный, по современным понятиям код, обработки.

Да, когда-то все диалоги писались примерно так - указывая вручную позиции и размеры (в DCL даже размером только косвенно можно управлять). Но это было когда-то. Всё-таки уже минимум 15 лет используется визуальное конструирование форм, его даже в свои программы вставляют. Дополнить IDE "Visual" LISP такими возможностями мог бы и студент, в рамках максимум дипломной работы.

В очередной раз привожу пример диалога не на DCL. Там есть Control (дерево), без которого кому-то можно и обойтись. В дереве отображаются "пункты меню". Каждый пункт сопровождается иллюстрацией, которую в любой момент обычный пользователь может заменить щелчком одной кнопки (есть несколько вариантов). Иллюстрацию еще и подредактировать "на лету" можно. Каждый пункт имеет дополнительное описание.

Дерево меню читается из XML-файла, который "кому положено" могут и редактировать. И дерево умеет выполнять "команды", которые привязаны к пунктам меню.

Попробуйте реализовать это на LISP+DCL. А показанное на рисунке меню в LISP вызывается одной строчкой:

(ru-xml-eval full_xml_file_name dlg_caption)

Причем не только показывается, но и выполняет выбранную команду.
Миниатюры
Нажмите на изображение для увеличения
Название: xml_3d_pipe_support.png
Просмотров: 141
Размер:	21.1 Кб
ID:	50517  
ShaggyDoc вне форума  
 
Непрочитано 23.12.2010, 10:47
#24
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


>ShaggyDoc
Поскольку у вас есть готовые решения, может имел бы смысл опубликовать одно из них в качестве примера? То, что вы предлагаете, несомненно гораздо лучше, чем использование DCL, но LISP-программистам, как мне кажется, было бы легче освоить данный вариант взаимодействия кода с GUI, если бы перед глазами был комментированный пример. Алексей Кулик закрепил бы тему в соответствующем разделе. ИМХО - подобные примеры никогда не будут лишними и если в примере будет подробно разобрано построение, к примеру, показанного вами выше окна + взаимодействие с ним Lisp-кода - я думаю, что очень многие будут вам признательны.
______________
P.S. Это конечно если у вас есть на то время/желание и более менее подходящий исходный код под рукой, на комментирование которого не уйдёт много времени (если комменты не присутствуют на данный момент времени).
P.S.2 Со своей стороны могу предоставить .Net-реализацию примера, который вы опубликуете (возможно это кому-нибудь будет интересно). Реализацию я предоставил бы в двух вариантах - с применением WinForms и с применением WPF, дабы можно было сравнить обе технологии построения GUI в дотнете.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 23.12.2010 в 11:12.
hwd вне форума  
 
Непрочитано 23.12.2010, 11:37
#25
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от hwd Посмотреть сообщение
но LISP-программистам, как мне кажется, было бы легче освоить данный вариант взаимодействия кода с GUI
внимательно прочитайте вышенаписанное - с этой формой нет никакого "взаимодействия" из лиспа (не считая ее вызова) - форма взаимодействует с объектной моделью автокада и написанна она может быть на чем угодно (в том числе и .Net). Знания Autolispa здесь, ну ни как не помогут.
P.S. так-что получится - выкладывать надо одно и то-же (у Вас на .Net, а у ShaggyDoc - например - на дельфи - лисопом "не пахнет" в обоих случаях).
P.P.S - чтобы было взаимодействие из лиспа - выход только один - писать GUI COM сервер.
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 23.12.2010 в 11:43.
Дима_ вне форума  
 
Непрочитано 23.12.2010, 12:19
#26
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Причем эти файлы должны храниться не в %appdata% %ProgramFilesFolder%, а в %AppdataFolder% или %CommonAppdataFolder%.

%ProgramFilesFolder% (как переменную) использовать можно, но до нее тоже еще добраться надо, да и может потребоваться ставить программу в любое место. Чтобы работать с реестром совсем не надо ставить COM.

PS. Как обычно обозначаются системные папки в WinApi:

ProgramFilesFolder - папка в Program Files. Ставим сюда только то, что не должно изменяться пользователем

AppdataFolder - где-то в c:\Documents and Settings\%USER%\Application Data\ (для XP)

CommonAppdataFolder - где-то в c:\Documents and Settings\All Users\Application Data\ (для XP)
Windows XP SP3 x86 Rus - системные переменные %ProgramFilesFolder%, %AppdataFolder% и %CommonAppdataFolder% отсутствуют, проверял так - вставлял эти переменные в командную строку проводника, ожидая, что они будут работать по аналогии с %appdata%, %allusersprofile%.
Для того, чтобы получить список системных переменных, можно в cmd.exe запустить команду SET. Как вариант - запустить этот скрипт.
Цитата:
Сообщение от Дима_
с этой формой нет никакого "взаимодействия" из лиспа (не считая ее вызова) - форма взаимодействует с объектной моделью автокада и написанна она может быть на чем угодно (в том числе и .Net). Знания Autolispa здесь, ну ни как не помогут.
Вызов exe из Lisp, с последующим запуском из запущенного exe-шника Lisp-команд при закрытии окна, передавая этим командам нужные параметры (если я верно понял автора) - это я подразумеваю под "взаимодействием". Код диалогового окна возможно будет интересен тем, кто пишет не только на Lisp, но и на Делфи.
Цитата:
Сообщение от ShaggyDoc
Сейчас я немодальные диалоги делаю именно в виде EXE. Он запускается из LISP, подхватывает объектную модель AutoCAD и посылает ему соответствующие "команды".
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 23.12.2010, 12:38
#27
ShaggyDoc

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


Цитата:
Поскольку у вас есть готовые решения, может имел бы смысл опубликовать одно из них в качестве примера?
Все это опубликовано с исходниками в книге "САПР на базе AutoCAD - как это делается" (глава 16). С тех пор произошла только незначительная правка.

Цитата:
Со своей стороны могу предоставить .Net-реализацию примера, который вы опубликуете (возможно это кому-нибудь будет интересно). Реализацию я предоставил бы в двух вариантах - с применением WinForms и с применением WPF, дабы можно было сравнить обе технологии построения GUI в дотнете.
Да, это было бы интересно и полезно. Здесь, вообще-то и не нужен код самой моей программы. Даже будет вреден - свой, возможно, будет более оптимальным. В показанном диалоге главное - синтексис XML. Вернее, не синтаксис (он стандартный), а имена атрибутов и прочее.

Но даже описывать не буду - просто приложу несколько XML в архиве. По ним будет все понятно. А чего непонятно - объясню.

Обращаю только внимание на возможность включения других XML строчкой типа
Код:
[Выделить все]
<item name="Разные линии" include="common\ru_all_lines.ruxm" />
в xml\menu\common\ru_all_draw.ruxm

Парсер XML, встретив такую строку, вставляет вместо нее в DOM дерева содержимое include-файла. А в нем могут быть и другие вложения. Это дает очень большие возможности - можно и "весь САПР" приязать к одной кнопке, и обращаться по отдельности к любому разделу.

Можно потренироваться на xml\menu\other\pltools.ruxm - в него вошли команды из PlTools от VVA, которые имеются на форуме.

Строка, которая должна возвращаться в LISP сидит в атрибуте macro, например
Код:
[Выделить все]
macro="(ru-app-load "common\\ru_draw_by_object")"
Вот этот атрибут надо внимательно заполнять - с учетом разделителе и кавычек в XML и LISP.

B такой диалог, конечно, может использоваться не только для LISP. У меня один и тот же COM-сервер используется и в других системах. Например, в Mapinfo, где также имеются сотни утилит в которых "без картинок" не разберешься. Там вместо возврата значения атрибута macro возвращается значение атрибута filename. А какой именно атрибут возвращать - передается в аргументах запуска.
Вложения
Тип файла: zip xml.zip (276.7 Кб, 70 просмотров)
ShaggyDoc вне форума  
 
Непрочитано 23.12.2010, 14:50
#28
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


А что, если диалоговые окна в AutoCAD'е писать на HTML/CSS/JavaScript. Можно всё делать очень круто и богато. Особенно если заручиться поддержкой таких библиотек, как jQuery.
Всех дел то, написать специализированный браузер
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 23.12.2010, 15:46
#29
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
А что, если диалоговые окна в AutoCAD'е писать на HTML/CSS/JavaScript. Можно всё делать очень круто и богато. Особенно если заручиться поддержкой таких библиотек, как jQuery.
Всех дел то, написать специализированный браузер
Если перевести на русский, то имя этому - XAML, а технологии, которые успешно его используют - WPF и Silverlight.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 23.12.2010, 16:52
#30
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


В переводе на русский это звучит ровно так, как написано: HTML/CSS/JavaScript.
Я имел в виду использовать вместо языка разметки DCL язык разметки HTML
плюс таблицы стилей CSS. Вся внутренняя логика диалогового окна пишется на JavaScript (VBScript), а необходимая часть событий транслируется "наружу" - передается в обработчик событий прикладной программы, написанный на lisp.
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 23.12.2010, 17:06
#31
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
Я имел в виду использовать вместо языка разметки DCL язык разметки HTML
Почему тогда не XHTML? А если XHTML, то и до XAML рукой подать. имхо.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 23.12.2010, 17:12
#32
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Можно и XHTML. Современные версии браузеров умеют отображать и то, и другое.
Можно даже XML + CSS или XML + XSLT.
Насчет XAML не знаю. Наверное требуется спец плагин (Silverlight ?)
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 23.12.2010, 18:43
#33
ShaggyDoc

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


Цитата:
А что, если диалоговые окна в AutoCAD'е писать на HTML/CSS/JavaScript
Писать можно на чем угодно. Вопрос в другом - чем читать.

HTML, Javascript со всеми его прекрасными библиотеками (jQuery и т.п.) предназначены для ВЕБ-приложений, в которых единственный инструмент - браузер. Они, безусловно, нужны. Но работают в сотни раз медленнее, чем standalone приложения. И уж для замены диалоговых окон AutoCAD это делать не имеет никакого смысла. Для их просмотра понадобится браузер (пусть свой, минимальный). А делать логику обработки таких HTML-окон пробовали? Я ежедневно этим занимаюсь (пишу CMS). Сделать это в десятки раз сложнее, чем пресловутый DCL.

А вот XAML, как язык описания диалогов - весьма перспективно. Именно как единый универсальный язык. Сейчас в каждой системе программирования свои форматы, описывающие одно и то же. А мог бы быть единый. Чтобы диалог, сконструированный в одной системе, можно было прочитать и выполнить в любой другой. Конечно, фирмы на это не пойдут. Но вот Autodesk для AutoCAD могла бы использовать XAML и для .NET, и для VisualLIsp. Да они про это вроде как сами лапшу вешали, когда ложились под Microsoft.
ShaggyDoc вне форума  
 
Непрочитано 23.12.2010, 20:44
#34
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Конструирование DCL-диалогов - мучение.
не согласен... Простой диалог пишется в течении максмимум 3 минут, если уметь, сложный - чуть дольше...
gomer вне форума  
 
Непрочитано 23.12.2010, 20:55
#35
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


А про лисп, в котором надо расписать обработку разных полей, забыл? Три минуты, ишь ты.
Profan вне форума  
 
Непрочитано 23.12.2010, 21:48
#36
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от ShaggyDoc
А вот XAML, как язык описания диалогов - весьма перспективно. Именно как единый универсальный язык. Сейчас в каждой системе программирования свои форматы, описывающие одно и то же. А мог бы быть единый. Чтобы диалог, сконструированный в одной системе, можно было прочитать и выполнить в любой другой. Конечно, фирмы на это не пойдут. Но вот Autodesk для AutoCAD могла бы использовать XAML и для .NET, и для VisualLIsp. Да они про это вроде как сами лапшу вешали, когда ложились под Microsoft.
Манагеров учат, что деньги превыше всего (иначе ты не манагер). Отсюда и все нелогичности/недоговорённости между компаниями. имхо.
Поскольку под автокад можно писать на дотнете, то один вариант xaml-парсера уже есть. Другие варианты нужно либо самому писать, либо ждать, когда они будут предоставлены сторонними девелоперскими компаниями.
Теоретически, если напрячься, то под свои задачи можно написать такой парсер (к примеру для использования WinForms).
Кстати, меня очень растроил тот факт, что Mono в своей библиотеке отказалось реализовывать WPF. Пояснения по поводу принятия такого решения, я не нашел...

Offtop: Понимаю, что это будет как камень в болото, но... Кину уж его, выскажусь...
Честно говоря, все проводимые автодеском форумы, дни открытых дверей и т.п. "крутые встречи" - это, на мой взгляд, своего рода слёт одарённых, но тем не менее "Свидетелей Иеговы", пешек (грубо конечно, но ведь по сути так и есть) Autodeska, задача которых громко и уверенно петь "Аллилуйя", компилируя эту же программу у без того откомпилированных присутствующих на мероприятии (таких же "Свидетелей Иеговы"), внушая тем самым идею покупать очередную версию продукта. Разъезжаясь обратно по своим фирмам, они несут "благую весть", "хорошие новости". Но блин, на таких мероприятиях официально не обсуждаются "косяки" и их исправление для текущей и предыдыщих версий продукта. И времени, отведённого под это дело, в программках найти никому не удастся, сколько бы ни искали. Ибо нефиг... Не надо этого... И всё пучком, ибо "масса хавает"...
Тема устранения замечаний "неприятна" и её обсуждение не входит в планы помпезных песнопений, ведь по бизнес-плану пора втюхивать очередную версию продукта (в которую, порой, добавлено что-то, что уже давно присутствет в вертикальных решениях, но преподносится как "новинка"). Оно и понятно - если начать обсуждение "багов" и пожеланий - может получиться не так красиво, как планируется. Лучше всем вместе сделать вид, что всё прекрасно и безоблачно. Плохо, когда компания ставит превыше всего деньги, а не качество. Не буду спрашивать, нахрена каждый год выпускать новую версию, вместо того, чтобы детально "причесать" уже имеющуюся... Ответ итак очевиден.
Помню, как у нас в отделе открыли одно из видео, об осеннем форуме... На нём какой-то парень, со счастливым лицом рассказывал, как он вставая с кровати, первым делом влючает компьютер и запускает Revit, потом идёт чистить зубы, чуть ли не над клавиатурой, после чего весь день он за Revit'ом, и последнее, что он делает непосредственно перед сном - закрывает Revit и выключает компьютер... И мол он так счастлив, так счастлив - в этом вся его жизнь... Вокруг стоят, радостно улыбаются и одобрительно кивают такие же "зомби"... Ужоссс... Такой неприкрытый щенячий восторг...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 23.12.2010, 21:52
#37
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Profan Посмотреть сообщение
А про лисп, в котором надо расписать обработку разных полей, забыл? Три минуты, ишь ты.
Разделяйте мух и пчол я говорю о DCL и не съезжаю с темы... хотя... а кокая собственно тема?.. В общем слайдом может быть слайд, слайд в библиотеке... либо lisp выражение...
gomer вне форума  
 
Непрочитано 23.12.2010, 22:00
#38
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Цитата:
Но вот Autodesk для AutoCAD могла бы использовать XAML и для .NET, и для VisualLIsp.
Так для .NET оно и сейчас пожалуйста: используйте библиотеки WPF.
Речь то идет о замене связки DCL + lisp на что то другое (желательно, такое же простое).
Если использовать XAML, то между XAML и lisp должен затесаться некий модуль, который является приложением к AutoCAD, умеет читать XAML, создавать на основе полученной разметки окна, транслировать события(основные), происходящие в компонентах окна, в среду lisp и предоставлять интерфейс для каждого используемого в окне типа компонента (аналогично action_tile, get_tile, set_tile). В этом случае не потребуется ничего, кроме lisp и XAML, но написать такой модуль - серьёзное дело (имхо).
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 23.12.2010, 22:03
#39
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Чем вам OpenDCL не нравится?
gomer вне форума  
 
Непрочитано 23.12.2010, 22:05
#40
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
Если использовать XAML, то между XAML и lisp должен затесаться некий модуль, который является приложением к AutoCAD, умеет читать XAML, создавать на основе полученной разметки окна, транслировать события(основные), происходящие в компонентах окна, в среду lisp и предоставлять интерфейс для каждого используемого в окне типа компонента (аналогично action_tile, get_tile, set_tile).
Нет. В подобном случае нужен модуль, который только связывает между собой лисп и впф. Ему не нужно уметь "читать разметку" и "создавать на его основе окна, транслировать события и т.п." - это уже итак делает впф.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 23.12.2010, 22:19
#41
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Для того, чтобы связать lisp и WPF, надо, чтобы из лисп можно было обратиться к любому имеющемуся в окне визуальному компоненту и установить или прочитать его свойства (аналогично set_tile, get_tile и get_attr), а так же иметь возможность из lisp "прикрутить" к каждому визуальному компоненту обработчик событий (аналогично action_tile).

Цитата:
Чем вам OpenDCL не нравится?
Лично мне не нравится тем, что нужно изучать/осваивать достаточно сложную вещь, не имеющую смысла вне AutoCAD.
Иное дело, когда вы пишете диалоговые окна к AutoCAD и, при этом, параллельно изучаете HTML/CSS/JavaScript. Однажды можно будет плюнуть в автодеск и перейти в веб-программисты.
Или XAML. Хорошая основа к тому, чтобы стать .NET программистом, владеющим темой создания современного GUI.
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 23.12.2010 в 22:40.
Pastor вне форума  
 
Непрочитано 23.12.2010, 22:29
#42
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
Для того, чтобы связать lisp и WPF, надо, чтобы из лисп можно было обратиться к любому имеющемуся в окне визуальному компоненту и установить или прочитать его свойства (аналогично set_tile, get_tile и get_attr), а так же иметь возможность из lisp "прикрутить" к каждому визуальному компоненту обработчик событий (аналогично action_tile).
Я понимаю ))) В принципе, средствами lisp получить значение свойств контрола не сложно (я даже представляю как, но для этого нужно писать .net-код и упаковывать его в lisp-оболочку, пример такой оболочки я показывал ранее). По поводу событий - вот тут не знаю, поскольку не интересовался реакторами лиспа и не представляю, насколько это развитый механизм оповещения и каковы его возможности. вообще, все эти ногой ухочесательства типа лисп + ехе, лисп + впф, мне не нравятся в свете наличия дотнета с его возможностями. лисп доска давно не развивает и откровенно говоря - забила на него. возможно, что придёт день, когда его настигнет учесть вба... Хотя мало ли, может случится чудо и в 2012-й версии юзеров ждут xaml-диалоги в лиспе + обновлённая библиотека лисповских функций + развитая система оповещений о событиях (такая как в дотнете).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 23.12.2010, 22:40
#43
ShaggyDoc

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


Цитата:
Простой диалог пишется в течении максмимум 3 минут, если уметь, сложный - чуть дольше...
Напиши. За 3 минуты - заменитель системного YesNoCancel. За 3 месяца - показанный мной.
Цитата:
Чем вам OpenDCL не нравится?
Это сторонняя приблуда, для развода древних греков. Чтобы ей пользоваться, надо изучать эту систему - с её условностями. Гораздо больше пользы будет от изучения какой-нибудь базовой системы, на вкус от VB до .NET.

Если бы что-то подобное было встроено в IDE VL - другое дело.

Цитата:
Для того, чтобы связать lisp и WPF, надо, чтобы из лисп можно было обратиться к любому имеющемуся в окне визуальному компоненту и установить или прочитать его свойства (аналогично set_tile, get_tile и get_attr), а так же иметь возможность из lisp "прикрутить" к каждому визуальномц компоненту обработчик событий (аналогично action_tile).
Ничего этого как раз не надо. В LISP должны быть только функции - здесь сила этого языка. Вызов "формы" в LISP должен быть наподобие вызова функции alert. Она сама, где-то в своих недрах вызывает стандартный диалог. Так и любой другой диалог может сам "знать" как ему рисоваться. В LISP должен только результат возвращаться. Все, что надо знать диалогу от LISP должно передаваться аргументами функции.

Вот когда стали в ActiveX устанавливать параметры через свойства, то и потеряли преимущества LISP.
ShaggyDoc вне форума  
 
Непрочитано 23.12.2010, 22:55
#44
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Цитата:
Вызов "формы" в LISP должен быть наподобие вызова функции alert. Она сама, где-то в своих недрах вызывает стандартный диалог.
Тогда средств XAML+lisp недостаточно. Требуется еще один язык, на котором будет написана логика, инкапсулированная в "форме". Я как раз и предлагал вариант, где таким языком является JavaScript (в составе разметки HTML или, если нужно, в отдельном файле).
Тогда да, взаимодействие lisp и "формы" сводится к вызову этой самой формы с одновременной передачей ей необходимых параметров, и получению результата.
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 23.12.2010, 23:01
#45
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
За 3 месяца - показанный мной.
Правильно ли я вас понял: на то, чтобы создать окно, показанное вами в #23, с построением древовидной структуры, которую вы читали из xml-файлов, и на то, чтобы прописать обработчики кликов для кнопок и вызовов лисповских функций (без написания самих функций, вычерчивающий нужные объекты по выбранным в окне параметрам), у вас ушло 3 месяца?
Цитата:
Сообщение от Pastor
Тогда средств XAML+lisp недостаточно. Требуется еще один язык, на котором будет написана логика, инкапсулированная в "форме". . Я как раз и предлагал вариант, где таким языком является JavaScript (в составе разметки HTML или, если нужно, в отдельном файле).
Этот язык уже есть - дотнет, а если ещё точнее - технология wpf. Зачем велосипед изобретать?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 23.12.2010, 23:10
#46
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Язык JavaScript тоже "уже есть" и технология HTML/CSS в придачу. И родились они раньше .NET и на них держится весь интернет.
У простых парней, пишущих на lisp, есть проблема, как выскочить за рамки убогого DCL, при этом не переходя в категорию .NET программистов. Ежу понятно, что если вы умеете писать .NET программы под AutoCAD, то вся эта тема вам абсолютно неинтересна.

p.s.
Я выбираю связку HTML/CSS/JavaScript + специализированный браузер, потому что она позволяет получить не просто банальный заменитель DCL, а нечто больше, поскольку является базовой интернет-технологией...
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 23.12.2010 в 23:39.
Pastor вне форума  
 
Непрочитано 23.12.2010, 23:38
#47
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Все это опубликовано с исходниками в книге "САПР на базе AutoCAD - как это делается" (глава 16).
Вот только одна проблема - ее не купить. А как хотелось бы получить второй экземпляр (про второе издание молчу)!
Цитата:
Сообщение от gomer Посмотреть сообщение
Чем вам OpenDCL не нравится?
Стороннее приложение, поддержка которого может прекратиться в любой момент. Достаточно вспомнить историю autoСПДС...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.12.2010, 07:00
#48
ShaggyDoc

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


Цитата:
Тогда средств XAML+lisp недостаточно. Требуется еще один язык, на котором будет написана логика, инкапсулированная в "форме".
Так это "язык-посредник" уже имеется в AutoCAD. Мы же говорим про диалект встроенный в AutoCAD.

Когда мы вызываем, например, функцию (alert "Hello World") из LISP, то она передается в недра AutoCAD, а там, внутри, вызывается функция WinAPI MessageBox. Она и работает (рисует окно, выводит сообщение, обрабатывает кнопки). Для меня такой вариант недостаточен, хотя бы потому, что нельзя передать заголовок. Поэтому делаю свою низкоуровневую функцию, которая передает больше параметров в тот же MessageBox. А для более удобного использования делаю еще функции высокого уровня
(ru-dlg-yes-no-cancel "Казнить нельзя помиловать")
(ru-yes "Понял, да")
(ru-no "Будем форматировать диск C:")
(ru-msg-alert "Ой, блин")
(ru-msg-info "Приехали")
и т.п. В этих диалогах есть и заголовки, и иконки, и требуемые кнопки (какая надо - по умолчанию), и спрятана вся логика работы.

В случае с XAML таким посредником мог бы быть .NET внутри AutoCAD, а может и более низкоуровневый код. Это уже технические детали.

Цитата:
Язык JavaScript тоже "уже есть" и технология HTML/CSS в придачу
Ну так это для других целей. HTML выводит форматированный текст, CSS определяет его внешний вид, Javascript, по сути, тоже в итоге что-то выводит (не всегда в виде HTML), работая на стороне пользователя. А PHP, например, может сделать гораздо больше, но работает на стороне сервера. Посмотрите код страницы, который выдается в браузер в результате, какую-нибудь "карту сайта". Или код, который выводится в окне "прикрепить файл" на этом форуме. Там 90% ненужного для логики работы диалогового окна.

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

Цитата:
Правильно ли я вас понял: на то, чтобы создать окно, показанное вами в #23, с построением древовидной структуры, которую вы читали из xml-файлов, и на то, чтобы прописать обработчики кликов для кнопок и вызовов лисповских функций (без написания самих функций, вычерчивающий нужные объекты по выбранным в окне параметрам), у вас ушло 3 месяца?
Три месяца я предложил для контраста с "тремя минутами". Пусть в DCL попробуют. Или в ObjectDCL.

Сконструировать само окно (раскидать компоненты) - полчаса. Доводка до скомпилированного вида - полдня. А вот дальнейшие усовершенствования, время от времени, могут тянуться бесконечно. Но это с любой программой. Вот, например, получение вырезок с экрана и запись картинок в файл сама по себе занимательная задача.

Вот еще пример простенького диалога - редактор полилинии. Там есть сетка со списком координат и изображение полилинии. Очень удобно при вводе из какой-то ведомости с обзором всего объекта разом. В AutoCAD полилинию не всегда в целом и увидишь, а тут любые ошибки можно увидеть. Предлагаю желающим потренироваться описать такое окно на DCL - там нет "каких-то эдаких" контролов.

Цитата:
Вот только одна проблема - ее не купить
Тут ничем не могу помочь. Я её не могу распространять (договор), хотя мне не жалко.

Цитата:
про второе издание молчу
Второе издание не имеет смысла, может быть только допечатка. А вот вторая часть, полностью про программирование для 3D моделирования, возможно появится. Процентов на 80 написаны еще три книги, но времени нет. Вот сниму погоны, тогда....
Миниатюры
Нажмите на изображение для увеличения
Название: dlg_pline_edit.jpg
Просмотров: 98
Размер:	41.1 Кб
ID:	50568  
ShaggyDoc вне форума  
 
Непрочитано 24.12.2010, 07:52
#49
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
У простых парней, пишущих на lisp, есть проблема, как выскочить за рамки убогого DCL, при этом не переходя в категорию .NET программистов.
...
p.s.
Я выбираю связку HTML/CSS/JavaScript + специализированный браузер, потому что она позволяет получить не просто банальный заменитель DCL, а нечто больше, поскольку является базовой интернет-технологией...
Т.е. по вашему, "простым парням" легче будет освоить HTML/CSS/JavaScript + написать "специализированный браузер"(с), чем освоить некоторую часть дотнета? Вопрос риторический... Ладно, всё равно это спор ни о чём - не будет автокад использовать вместо dcl ни html, ни xaml.
Цитата:
Сообщение от ShaggyDoc
Вот, например, получение вырезок с экрана и запись картинок в файл сама по себе занимательная задача.
Помнится, возился когда-то с этим... Вот выкладывал ранее (если кому будет интересно):
Видео:
http://www.youtube.com/watch?v=f7KAsbYW1Ec
Как это делается в AutoCAD - здесь.
Статья по теме видео.

Цитата:
Сообщение от Кулик Алексей aka kpblc
Вот только одна проблема - ее не купить
А если через интернет? Я заказал весной - мне на след. день привезли (т.е. не мне лично, а нашей компании).
Цитата:
Сообщение от ShaggyDoc
А вот вторая часть, полностью про программирование для 3D моделирования, возможно появится. Процентов на 80 написаны еще три книги, но времени нет.
На какую версию AutoCAD ориентирован материал? Я понимаю, что лисп будет работать почти в любой версии, но, к примеру, в "Сапр на базе Автокад" то, что приложено на диске, под автокад 2009 не запустилось - например, тот же стартер не работал и т.п. (оно и понятно, поскольку то, что было написано на делфях, ориентировалось на более старую версию автокада).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 24.12.2010, 08:36
#50
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


В любом случае, gomer, ты наврал про 3 минуты.
Profan вне форума  
 
Непрочитано 24.12.2010, 09:59
#51
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Цитата:
Т.е. по вашему, "простым парням" легче будет освоить HTML/CSS/JavaScript + написать "специализированный браузер"(с), чем освоить некоторую часть дотнета?
Специализированный браузер напишет добрый дядя. Это должно быть универсальное приложение к AutoCAD, способное открывать любые веб-страницы и взаимодействовать с теми из них, которые этого хотят.
Изучать HTML/CSS/JavaScript может даже сложнее, чем скажем Windows Forms. Но здесь появляется возможность выйти за рамки настольных приложений к AutoCAD и заодно стать веб-программистом
Кстати, сам автодеск что-то нутром почуял и потому в последних версиях появилась взможность через ActiveX (объект Utility) вызывать некий спецбраузер (который, правда, с лиспом взаимодействовать не умеет) и даже появилась возможность скачивать файлы. Реализовано все это предельно коряво и потому, видимо, прошло незамеченным.
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 24.12.2010 в 10:06.
Pastor вне форума  
 
Непрочитано 24.12.2010, 10:00
#52
ShaggyDoc

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


Цитата:
На какую версию AutoCAD ориентирован материал?
3D - на версию 2008 и старше, т.е. когда подключились требуемые возможности. Связано еще и с аннотативностью, т.к. модель сделать мало, надо еще и четежи по модели оформить.

Цитата:
не будет автокад использовать вместо dcl ни html, ни xaml.
Ясен пень, не будет. Им слабо и для .NET сделать возможность экспортирования в LISP функций, как это сделано с ObjectARX. Хотя тут я могу ошибаться, может не слабо, а просто не хотят.
ShaggyDoc вне форума  
 
Непрочитано 24.12.2010, 10:32
#53
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
Но здесь появляется возможность выйти за рамки настольных приложений к AutoCAD и заодно стать веб-программистом
Фига се... круто... Ну да, дотнет это конечно-же предоставить не сможет, куда уж ему... Сдаюсь.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 24.12.2010, 10:41
#54
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Offtop:
hwd
Количество упоминаний о .нет и связанных технологиях в Ваших постах напоминает серенькую часть #36
zamtmn вне форума  
 
Непрочитано 24.12.2010, 10:43
#55
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Offtop:
hwd
Количество упоминаний о .нет и связанных технологиях в Ваших постах напоминает серенькую часть #36
Тогда что Вам напоминает количество упоминаний о Lisp? Их намного больше. На чём пишу, то и использую в своих постах. И этим я ничем не отличаюсь от лисперов, делфийцев и т.п. Думаю, что вам лучше не развивать эту тему.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 24.12.2010, 10:44
#56
Лиспер


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


ShaggyDoc, в .NET SDK начиная с версии 2007 вроде бы появилась возможность писать lisp-функции на .NET. Могу ошибаться
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 24.12.2010, 10:47
#57
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Лиспер Посмотреть сообщение
ShaggyDoc
вроде бы появилась возможность писать lisp-функции на .NET. Могу ошибаться
Не ошибаешься.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 24.12.2010 в 10:52.
hwd вне форума  
 
Непрочитано 24.12.2010, 11:57
#58
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Цитата:
Ну да, дотнет это конечно-же предоставить не сможет,
Конечно же сможет. Именно на нем и стоит писать тот самый спец браузер.
Браузером можно будет пользоваться из прикладных программ, написанных на lisp, ObjectARX и ObjectARX.NET.
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 24.12.2010 в 12:05.
Pastor вне форума  
 
Непрочитано 24.12.2010, 12:09
#59
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
Конечно же сможет. Именно на нем и стоит писать тот самый спец браузер.
Глупо писать велосипед браузер, если уже имеется XAML, и механизм работы с ним. То, что кто-то не умеет работать с XAML, но умеет работать с HTML/CSS/JavaScript - это его личные проблемы, а не проблемы Майкрософта. Мелкомягкие со своей стороны предоставили хорошую технологию, решающую задачу отделения GUI от кода и построения его на основе разметки.
Кому нужно - тот освоит технологию.
Кому лень - будет сидеть у разбитого корыта и ждать, что с неба упадёт "браузер" что-то написанное специально под его уровень знаний. имхо.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 24.12.2010, 12:25
#60
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Браузер уже написан - Internet Explorer. Его просто нужно обернуть в удобоваримую форму.

Мы спорим непонятно о чем.
Напишите приложение, которое будет использовать разметку XAML и строить на её основе диалоги для AutoCAD. Приложение должно экспортировать в AutoCAD комплект функций, позволяющих из lisp (или ObjectARX) строить и обслуживать диалоги на основе файлов с разметкой XAML. Вам будет слава, автодеску -позор.
А я потихонечку продолжу писать свой браузер, который, уверен, тоже будет востребован.
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 24.12.2010 в 12:46.
Pastor вне форума  
 
Непрочитано 24.12.2010, 12:56
#61
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
Напишите приложение, которое будет использовать разметку XAML и строить на её основе диалоги для AutoCAD
Мои приложения именно так и работают.
Цитата:
Сообщение от Pastor Посмотреть сообщение
Приложение должно экспортировать в AutoCAD комплект функций, позволяющих из lisp (или ObjectARX) строить и обслуживать диалоги на основе файлов с разметкой XAML. Вам будет слава, автодеску -позор.
Мне это не нужно.
Цитата:
Сообщение от Pastor Посмотреть сообщение
А я потихонечку продолжу писать свой браузер, который, уверен, тоже будет востребован.
Ну пишите, коль есть желание.
Предлагаю тему более не мусолить - толку всё равно нет и каждый останется при своём.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 24.12.2010, 16:19
#62
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Profan Посмотреть сообщение
В любом случае, gomer, ты наврал про 3 минуты.
да ниче я не наврал! Попробуйте сделать простой диалог из 3 х полей и 2х кнопок например такой:
Код:
[Выделить все]
: test : dialog {
  : edit_box {key = "1";label = "label1";}
  : edit_box {key = "2";label = "label2";}
  : edit_box {key = "3";label = "label3";}
  ok_cancel;
}
у меня заняло это 2 минуты с нуля... я дольше сообщение это писал
gomer вне форума  
 
Непрочитано 24.12.2010, 16:31
#63
Лиспер


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


gomer, нарисовать диалог (точнее, форму) и сделать его обработку есть две большие разницы. Теперь попробуй в dcl прописать: если в "1" введено число, то активно "2", иначе - "3". Проверку выполнять после потери фокуса полем "1"
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 24.12.2010, 16:41
#64
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Лиспер Посмотреть сообщение
нарисовать диалог (точнее, форму) и сделать его обработку есть две большие разницы. Теперь попробуй в dcl прописать: если в "1" введено число, то активно "2", иначе - "3". Проверку выполнять после потери фокуса полем "1"
я зыки разные - алгоритм тот же... и лисп ничуть не дольше и не сложней других языков... Да, все процедуры придется ручками объявлять... но лень ни до чего хорошего, кроме инфаркта не доведет...
gomer вне форума  
 
Непрочитано 24.12.2010, 17:14
#65
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от hwd Посмотреть сообщение
Offtop: Понимаю, что это будет как камень в болото, но... Кину уж его, выскажусь...
Честно говоря, все проводимые автодеском форумы, дни открытых дверей и т.п. "крутые встречи" - это, на мой взгляд, своего рода слёт одарённых, но тем не менее "Свидетелей Иеговы", пешек (грубо конечно, но ведь по сути так и есть) Autodeska, задача которых громко и уверенно петь "Аллилуйя", компилируя эту же программу у без того откомпилированных присутствующих на мероприятии (таких же "Свидетелей Иеговы"), внушая тем самым идею покупать очередную версию продукта. Разъезжаясь обратно по своим фирмам, они несут "благую весть", "хорошие новости". Но блин, на таких мероприятиях официально не обсуждаются "косяки" и их исправление для текущей и предыдыщих версий продукта. И времени, отведённого под это дело, в программках найти никому не удастся, сколько бы ни искали. Ибо нефиг... Не надо этого... И всё пучком, ибо "масса хавает"...
Тема устранения замечаний "неприятна" и её обсуждение не входит в планы помпезных песнопений, ведь по бизнес-плану пора втюхивать очередную версию продукта (в которую, порой, добавлено что-то, что уже давно присутствет в вертикальных решениях, но преподносится как "новинка"). Оно и понятно - если начать обсуждение "багов" и пожеланий - может получиться не так красиво, как планируется. Лучше всем вместе сделать вид, что всё прекрасно и безоблачно. Плохо, когда компания ставит превыше всего деньги, а не качество. Не буду спрашивать, нахрена каждый год выпускать новую версию, вместо того, чтобы детально "причесать" уже имеющуюся... Ответ итак очевиден.
Помню, как у нас в отделе открыли одно из видео, об осеннем форуме... На нём какой-то парень, со счастливым лицом рассказывал, как он вставая с кровати, первым делом влючает компьютер и запускает Revit, потом идёт чистить зубы, чуть ли не над клавиатурой, после чего весь день он за Revit'ом, и последнее, что он делает непосредственно перед сном - закрывает Revit и выключает компьютер... И мол он так счастлив, так счастлив - в этом вся его жизнь... Вокруг стоят, радостно улыбаются и одобрительно кивают такие же "зомби"... Ужоссс... Такой неприкрытый щенячий восторг...
Весной, был ты на дне открытых дверей и там же тебе предлагали вступление в ADN. Не послушал, а теперь говоришь только половину правды!

теперь от себя - небольшое разоблачение мифа...

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

ps. Еще раз напомню, для всех жителей россиии и снг, сейчас есть возможность личного вступления в ADN бесплатно. Почитать, что это такое, можно здесь, по вопросам вступления можно обратиться напрямую к Наталье Поликарповой или ко мне. Чуть поясню, что такое личное вступление на собственном примере. Я зарегистрировался как компания Elpanov и деятельность - консультант, на эти данные я получил договор, после подписания стал членом ADN и получил доступ к внутренним сайтам autodesk, личный серийный номер для всей продукции автодеска с возможностью скачать три последних версии любых продукатов. Как бонус - бесплатное обучение на семинарах, встречи, консультации и многое другое...

Единственный минус, это понимание, что когда нибудь это перестанет быть халявой для меня и нужно будет решать - платить или нет...

pps. забыл добавить - в adn приглашаются разработчики - программисты всех мастей, а не вообще все знающие, что такое acad...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/

Последний раз редактировалось Елпанов Евгений, 24.12.2010 в 18:00. Причина: pps
Елпанов Евгений вне форума  
 
Непрочитано 24.12.2010, 19:15
#66
ShaggyDoc

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


Цитата:
Попробуйте сделать простой диалог из 3 х полей и 2х кнопок например такой:
Попробуй, чтобы это описание еще и работало без ошибок.

И попробуй, например, разместить несколько контролов хоть в ряд, хоть по высоте или произвольно, чтобы у них были заданные размеры и позиции. А уж потом хвастайся скоростью набивки символов в редакторе.
ShaggyDoc вне форума  
 
Непрочитано 24.12.2010, 19:30
#67
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


>ShaggyDoc
Хочется уточнить насчёт системных переменных, о которых я писал в #26 (может вы проглядели) - таких переменных вроде нет, или я ошибаюсь?
Цитата:
Сообщение от ShaggyDoc
Парсер XML, встретив такую строку, вставляет вместо нее в DOM дерева содержимое include-файла.
Интересное решение. Сделаю так же в XAML. Для того, чтобы применить ваши XML-файлы в GUI, построенном на основе XAML-разметки, нужно будет написать пару строчек кода - реализовать IValueConverter. Если бы синтаксис ваших файлов был чуть-чуть другой - вообще не пришлось бы писать код.
Я покажу оба варианта (мне и самому интересно), но не сегодня, т.к. сегодня уже ничего не хочу... ((((
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 24.12.2010, 22:22
#68
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от hwd Посмотреть сообщение
И попробуй, например, разместить несколько контролов хоть в ряд, хоть по высоте или произвольно, чтобы у них были заданные размеры и позиции.
А зачем? Это же не новогодняя елка?
gomer вне форума  
 
Непрочитано 24.12.2010, 23:21
#69
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
А зачем? Это же не новогодняя елка?
Эти вопросы были бы к месту, если бы тебе предложили действительно что-то нелепое...
Offtop: п.с. Автора цитаты не верно указываешь.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 24.12.2010, 23:35
#70
ShaggyDoc

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


Цитата:
Хочется уточнить насчёт системных переменных, о которых я писал в #26 (может вы проглядели) - таких переменных вроде нет, или я ошибаюсь?
Это?
Цитата:
Windows XP SP3 x86 Rus - системные переменные %ProgramFilesFolder%, %AppdataFolder% и %CommonAppdataFolder% отсутствуют
Та это не системные переменные. Это литеральные обозначения системных папок, заменяющие их CSIDL_* при обращении к WinAPI. Например, есть CSIDL_PROGRAM_FILES = $0026, а в библиотеках более высокого уровня их называют ProgramFilesFolder и т.д.

Цитата:
Если бы синтаксис ваших файлов был чуть-чуть другой - вообще не пришлось бы писать код.
Так синтаксис (и заодно кодировку) изменить не проблема. Если это валидный XML, он все равно будет читаться. Имена элементов вообще значения не имеют, там специально, для примера, даже русские имена кое-где есть. Имена атрибутов могут быть и другие, это не влияет ни на что. Критичное место - значение атрибута, содержащего "макрос" для LISP. там имеет значение вид "кавычек". Эта строка непосредственно обрабатывается в LISP функцией eval, внутри неё не должно быть недопустимых символов.

Теоретически в XML могут быть заданы любые виды парных "кавычек", а вот практически MSXML заменяет их по своему разумению (по крайней мере в прежних версиях). Именно из-за этого, да из-за низкой скорости я использую другие парсеры.
ShaggyDoc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Что может быть слайдом в dcl-окнах?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Быть может куда-то надо ввести какой-то коэффициент? psik AutoCAD 1 16.01.2007 02:32
Высокий простенок (а может быть столб) Koker Прочее. Архитектура и строительство 7 16.10.2006 14:46
Может разорвать анкерные болты от мороза? Колян Прочее. Архитектура и строительство 4 12.08.2005 09:14
eTransmit вырубается! В чем может быть дело? Maps AutoCAD 2 22.01.2004 17:12