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

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

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

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

Доброй ночи!

В общем вопрос в название. Что может быть в качестве слайда? Может быть например изображение в формате jpeg или bmp и др.?
Просмотров: 18058
 
Непрочитано 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 поставить можно) может какой получше метод есть - поделитесь)).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум 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