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

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

Создание DCL

Ответ
Поиск в этой теме
Непрочитано 07.07.2010, 14:08 #1
Создание DCL
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Поискал на форуме, точного ничего не нашел.
Подскажите чайнику, как нужно создавать DCL и как его потом запустить (это самое важное). Ничего не пойму...везде сразу коды коды...а как и куда ничего нету...Что еще важней, как все запустить, если создавать окно в ObjectDCL.
Хотелось бы сделать окошко в котором был бы комбо бокс...в нем выбрав нужную деталь показывались бы 4 картинки с различными ее видами...к каждой картинке был бы прикреплен файл... и ткнув на картинку я мог бы вставить это в чертеж. Такое реально сделать?
Просмотров: 11399
 
Непрочитано 07.07.2010, 14:41
#2
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Посмотри по ссылкам, хорошо расписано, жаль не по-русски, но картинок много
http://aco.ifmo.ru/~nadinet/html/lectures/dcl_tile.html
http://web2.airmail.net/terrycad/Tut.../MyDialogs.htm
http://www.jefferypsanders.com/autolisp_DCL.html
http://www.afralisp.net/dialog-control-language/

Про ObjectDCL (он же OpenDCL) написано тут: http://forum.dwg.ru/showthread.php?t...hlight=OpenDCL
Гуру рекомендуют им не пользоваться.
alex8888 вне форума  
 
Непрочитано 07.07.2010, 14:51
#3
Кулик Алексей aka kpblc
Moderator

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


Практически любая книга Н.Н.Полещука по программированию в AutoCAD
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.07.2010, 15:18
#4
Zaghim


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


Как раз в книге такого не нашел...или я вообще туп
А чем лучше создавать окошки? и Реально ли сделать то, о чем писал в заголовке темы?
Zaghim вне форума  
 
Непрочитано 07.07.2010, 15:19
#5
hwd

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


Цитата:
Сообщение от Zaghim Посмотреть сообщение
Как раз в книге такого не нашел...или я вообще туп
А чем лучше создавать окошки? и Реально ли сделать то, о чем писал в заголовке темы?
ну и в какой книге ты искал?
hwd вне форума  
 
Автор темы   Непрочитано 07.07.2010, 15:23
#6
Zaghim


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


Полещук Alisз и Vlisp в среде Автокад
Zaghim вне форума  
 
Непрочитано 07.07.2010, 15:23
#7
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


В книге Полещука Н.Н. и Лоскутова П.В. "AutoLisp и VisualLisp в среде AutoCAD" см. стр. 234-293.
alex8888 вне форума  
 
Непрочитано 07.07.2010, 15:30
#8
hwd

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


Открой оглавление, найди в ней главу 3 (Диалоговые окна), посмотри номер страницы (подсказываю: 234)... Самостоятельно в книге страничку найдёшь?
hwd вне форума  
 
Автор темы   Непрочитано 07.07.2010, 15:32
#9
Zaghim


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


В одно не врубаюсь пока... Сделал я ДСЛ в котором описал все кнопки и тд нужного окошка. Ок... в программе сделал лоад этого файла...окно запустится, я там что-то введу... А потом куда девается информация, которую я ввел, скажем, в текст бокс и как с ней дальше работать? Как сделать что бы в появившемся окне я выбрал картинку и нажав на нее смог вставить блок в чертеж? Насколько я понял стандартным дсл так нельзя делать...
Zaghim вне форума  
 
Непрочитано 07.07.2010, 15:36
#10
hwd

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


Цитата:
Сообщение от Zaghim Посмотреть сообщение
В одно не врубаюсь пока... Сделал я ДСЛ в котором описал все кнопки и тд нужного окошка. Ок... в программе сделал лоад этого файла...окно запустится, я там что-то введу... А потом куда девается информация, которую я ввел, скажем, в текст бокс и как с ней дальше работать? Как сделать что бы в появившемся окне я выбрал картинку и нажав на нее смог вставить блок в чертеж? Насколько я понял стандартным дсл так нельзя делать...
Т.е. ты хочешь сказать, что Полещук об этом не написал? А если открыть стр. 265 и посмотреть на get_tile...
Ну и лодырь же ты...
hwd вне форума  
 
Автор темы   Непрочитано 07.07.2010, 15:40
#11
Zaghim


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


Да нет, не лодырь... вообще сам все привык делать, но тут дуб дубом вообще...пока оч мало понимаю, так бы не писал сюда.
А как насчет:
Цитата:
Как сделать что бы в появившемся окне я выбрал картинку и нажав на нее смог вставить блок в чертеж?

Кажется допер. Если ошибаюсь - поправьте. В общем делаю дсл файл в котором описываю свойства окна комбобокс, списка и картинок... После выбора из комбобокса значения, раскрывается список в котором тыкнув на любую строчку появляется картинка, далее закрываю окно кнопкой ок и получается, что на какую кнопку тыкнул та ифна сохраняется в переменной и после чего могу уже вызвать нужный файл.
Теперь вопрос еще...после того, как я выбрал значения в одном окошке и по нему должен открытся список - это нужно описывать в дсл или в лиспе?

Последний раз редактировалось Zaghim, 07.07.2010 в 15:53.
Zaghim вне форума  
 
Непрочитано 07.07.2010, 15:47
#12
hwd

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


Цитата:
Сообщение от Zaghim Посмотреть сообщение
Да нет, не лодырь... вообще сам все привык делать, но тут дуб дубом вообще...пока оч мало понимаю, так бы не писал сюда.
А как насчет:
не отмазывайся. Это не оправдание тому, что ты имея такой справочник, даже не открываешь его. Найти в нём ответы на твои вопросы просто. Но ты предпочитаешь сидеть перед монитором и в носу ковырять, в ожидании, что тебе ответят. А если не ответят? Так и будешь неделями сидеть? При таком отношении к работе, твой КПД ниже плинтуса. Бери книгу и читай, нефиг глупые вопросы задавать. Я более отвечать не буду - пусть Sad Dog отвечает (он у нас рубаха-парень, времени свободного у него вагон...).
hwd вне форума  
 
Непрочитано 09.07.2010, 09:57
1 | #13
Disney

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


hwd, зря ты всех обзываешь, Zaghim - лентяем, Sad Dog - альтруистом.

Мне вот тоже было тяжело в своё время разбираться с DCL, и имея ту же книгу Полещука, я так же задавал вопросы на форуме, например: Включение\выключение edit_box по toggle, кстати там целая ветка повещена DCL Главная / Форум / Программирование / DCL /



Цитата:
Сообщение от Zaghim Посмотреть сообщение
А потом куда девается информация, которую я ввел, скажем, в текст бокс и как с ней дальше работать?
допустим есть у нас
Код:
[Выделить все]
my_dial: dialog{label="Пример";
...
:edit_box{label="Тра-ля-ля"; key="box1"; edit_width=6;}
:edit_box{label="Трум-пум-пум"; key="box2"; edit_width=6;}
...
ok_cancel;
}
вариант 1:

Код:
[Выделить все]
(defun c:test
... 
(action_tile
    "accept"
    "(setq vol_box1 (get_tile \"box1\")
	  vol_box2 (get_tile \"box2\")
    )
    (done_dialog)"
)
...
)
Т.е. при задействии (action) элемента диалога (tile), кнопки Ok ("accept") в перменные vol_box1 и vol_box2 записывается (setq) значение (get_tile) box1 и box2 соответственно.

вариант 2

Очень часто нужно не просто записать все значения при выходе из диалога, но и произвести какое-либо действие при их вводе, напремер проверить тип вводимых данных, тогда делаем (action_tile) конкретно на сам элемент edit_box
Код:
[Выделить все]
(action_tile
  "box1"
  "(setq vol_box1 $value)
  (if (and (/= vol_box1 \"0\") (= (atof vol_box1) 0))(progn (alert \"Введённое значение должно быть число!\")(mode_tile \"box1\" 2)))"
  )
Здесь, уже при завершении ввода значения в edit_box, оно будет присвоено переменной vol_box1, а также проверенно являеться ли оно(значение) числом, если нет, то программа не позволит завершить ввод значения пока оно не удовлетворит условие.
Так же очень не удобно выражение action_tile писать в виде строки, т.е. в кавычках, по-этому гораздо удобнее записывать так:
Код:
[Выделить все]
(action_tile
  "box2"
  (vl-prin1-to-string
    (quote
      (progn
	(setq vol_box2 $value)
	(if (and (/= vol_box2 "0") (= (atof vol_box2) 0))
	  (progn (alert "Введённое значение должно быть число!")
		 (mode_tile "box2" 2)
	  )
	)
      )
    )
  )
)
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 09.07.2010, 10:35
#14
hwd

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


Цитата:
Сообщение от Disney Посмотреть сообщение
hwd, зря ты всех обзываешь
Это не "обзывание"...
Одно дело имея книгу реально пользоваться ею и задавать вопросы, а другое - лодырничать, что и продемонстрировал топикстартер. Ответы на его вопросы элементарно находятся по оглавлению (что я и продемонстрировал выше). Он даже и не пытался найти, а это:
Цитата:
вообще сам все привык делать, но тут дуб дубом вообще...пока оч мало понимаю, так бы не писал сюда.
чушь полная, поскольку если бы он всё делал сам, то книга была бы первым его первым и основным источником информации. А он ею совсем не пользуется. Если он всё так делает, то это полный ппц... Автор топика даже не пытается читать книгу, ему проще задать вопрос и сидеть ждать ответа, хотя времени на это уйдёт больше и качество знаний будет хуже, чем если бы он прочёл на эту тему инфу у Полещука.

То, что представители данного форума начинают защищать таких лодырей - это прямое поощрение лени и разгильдяйства. Это превращает форум из источника интересной информации в набор бесполезных топиков.

Поскольку бороться с ветряными мельницами бесполезно (да и не нужно - это забота модераторов), прекращаю делать замечания и буду игнорировать глупые вопросы, тем более что на форуме полно мемберов, которые с удовольствием на них отвечают, понижая тем самым уровень обсуждаемой информации до уровня "Как нарисовать линию в Автокаде?", называя это "помощью", а не "поощрением к лени". ИМХО - это зло.
hwd вне форума  
 
Непрочитано 09.07.2010, 11:00
1 | #15
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


hwd. Мне кажется, что Вы напрасно так резко обозвали людей лентяями. Дело в том, что у нас справочная литература почему-то делается
в основом двух типов:
1. Для абсолютных "чайников".
2. Для крутых "профи".

А между ними как в старом анекдоте - "диспропорция", а точнее полный вакуум.
Не скрою, сам нарывался на такие ситуации: гляжу в книгу, а вижу ......
Нужна литература типа от "простого к сложному"- вот в чем дело, а не в лени, как Вы утверждаете.

PS: это моё личное мнение без претензий на истину.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 09.07.2010, 11:51
#16
Zaghim


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


Мда уж...навалилось критики на меня)))
Честно принаюсь, перед тем как писать пробежал по главе DCL... вот честно... и прям перед тем как мне написали смотри страницу такую-то (get_title) я эту самую страницу и смотрел...прочитал не заострил внимания и пошел дальше... В книге все идет можно сказать в кучу и тут уж надо уметь из этой кучи доставать нужное...а тому, кто вообще не понимает в этом - это адский труд)))) сейчас уже более менее въехал и понимаю, благобдабдаря всем вам, критикам и светлым душам )))
Zaghim вне форума  
 
Непрочитано 09.07.2010, 12:44
#17
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Книга Полещука - это справочник, а не учебник, поэтому там так немного непонятно написано. Лучше всего на Афралиспе расписано, прямо по шагам, что и куда.
alex8888 вне форума  
 
Автор темы   Непрочитано 09.07.2010, 13:04
#18
Zaghim


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


Это что такое?)
Zaghim вне форума  
 
Непрочитано 09.07.2010, 13:15
#19
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Так ссылку я давал , сайт такой: http://www.afralisp.net/index.php,там не только DCL, но программирование во всех прелестях.
alex8888 вне форума  
 
Непрочитано 09.07.2010, 13:18
#20
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Да сайт такой www.afralisp.com. Если не изменяет память.(склероз однако)

Опоздал, однако.
E-degtyarev вне форума  
 
Непрочитано 09.07.2010, 13:37
#21
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


E-degtyarev,теперь он не .com, a .net
alex8888 вне форума  
 
Автор темы   Непрочитано 09.07.2010, 14:46
#22
Zaghim


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


На английском тяжко(((
Zaghim вне форума  
 
Непрочитано 09.07.2010, 15:02
#23
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Offtop: Zaghim, и не говори Было б хотя бы на немецком.
Правда, на Зулу было бы еще хуже
alex8888 вне форума  
 
Непрочитано 09.07.2010, 15:05
#24
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Я тоже аглицкого не знаю, но в таких ситуациях мне помогает машинный перевод - разобраться можно.
E-degtyarev вне форума  
 
Непрочитано 09.07.2010, 15:25
#25
gomer

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


Цитата:
Сообщение от Disney Посмотреть сообщение
Так же очень не удобно выражение action_tile писать в виде строки, т.е. в кавычках, по-этому гораздо удобнее записывать так:
ИМХО для вывода ошибок в дилогах есть errtile вместо alert,
а то задолбает, если ума нет,
а с vl-prin1-to-string хорошо придумано,
хотя можно тип ООП с отдельными функциями,
а в action_tile только название функции отклика забивать
gomer вне форума  
 
Непрочитано 09.07.2010, 15:48
#26
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


gomer
Цитата:
хотя можно тип ООП с отдельными функциями,
а в action_tile только название функции отклика забивать
интересная идея, сам тоже хочу реализовать. Не могу никак подступиться, с чего начать. Нужен какой-то шаблон, чтобы развивать дальше - да чей то туплю малость.
alex8888 вне форума  
 
Непрочитано 09.07.2010, 16:05
#27
gomer

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


Вот наваял как-то но не закончил... ток без смеха, а критику пожалуйста
Вложения
Тип файла: zip TestDCL.zip (1.7 Кб, 86 просмотров)
gomer вне форума  
 
Непрочитано 09.07.2010, 18:51
1 | #28
Sad Dog

Ищу работу
 
Регистрация: 12.06.2010
Сообщений: 35


1. Всё правильно делаешь.
Есть ещё один вариант, когда определяется через defun функция без аргументов и передается в третий аргумент функции new_dialog
Код:
[Выделить все]
(defun common-handler () ...здесь будут доступны $key, $value, $reason, $x, $y
.....используя $key можно определять, в каком из контролов произошло событие.....)

(new_dialog "ibutton" id "(common-handler)")
Иногда так может оказаться удобнее.

2. Offtop: (lambda nil ....) - это стильно!

3. Один старый перец по кличке Пастух с сайта autocad.ru (ныне caduser.ru), как то выкладывал зело-мудрёную библиотеку под названием FreshDCL. Она как раз написана в объектно-ориентированном стиле. Посмотри картинки в прикрепленном архиве.
Кстати, коды открыты, так что при желании... Только можно в психушку загреметь, да и шкурка выделки не стоит. Лучше освоить WindowsForms или WPF, да научиться вязать lisp и .NET, и будет тебе счастье на долгие годы вперед.
Вложения
Тип файла: rar Graph.rar (33.6 Кб, 85 просмотров)
Sad Dog вне форума  
 
Непрочитано 23.10.2010, 21:16
#29
Владимир Егорьев


 
Сообщений: n/a


Как выполнить открытие диалог. окна в самом автокаде?
Я написал код диалог. окна и код на его вызов из книги Н.Полещука "AutoLISP & Viisual LISP в среде AutoCAD",а куда дальше-не знаю и не понимаю.
Заранее благодарю.

Код окна

Код:
[Выделить все]
np_tpos: dialog{label="Настройка данных постели и таблицы";
 :edit_box{label="Ширина таблицы";key="kshir";value="750";edit_width=6; }
 :edit_box{label="Высота таблицы";key="kVys";value="300";edit_width=6; }
 :edit_box{label="Высота букв";key="kHbuk";value="180";edit_width=6; }
 :spacer{height=1; }
 :edit_box{label="Количество балок";key="kNumbalk";
           value="8";edit_width=6; }
 :edit_box{label="Количество коксов в балках";key="kNumkoks";
           value="17";edit_width=6; }
 :spacer {height=1; }
 :radio_row{label="Балки распологаются в таблице";
   :radio_button{label="по столбцам";key="kPoStolb";value="1";}
   :radio_button{label="по строкам";key="kPoStrok";value="0";}
 }
 :spacer{heigth=1; }
 ok_cancel;
}// конец np_tpos
Код вызова

Код:
[Выделить все]
(defun show_tpos ( / dcl_id)
  (if (< (setq dcl_id (load_dialog "C:\Temp\d_tpos.dcl")) 0) (exit))
  (if (not (new_dialog "np_tpos" dcl_id)) (exit))
  (start_dialog)
  (unload_dialog dcl_id)
  (princ)
);defun show_tpos
 
 
Непрочитано 23.10.2010, 21:58
#30
Кулик Алексей aka kpblc
Moderator

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


dcl-файл сохранен в c:\temp\d_tpos.dcl?
И обрати внимание на разницу строк:
Код:
[Выделить все]
(if (< (setq dcl_id (load_dialog "C:\Temp\d_tpos.dcl")) 0) (exit))
Код:
[Выделить все]
(if (< (setq dcl_id (load_dialog "C:\\Temp\\d_tpos.dcl")) 0) (exit))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.10.2010, 23:23
#31
Владимир Егорьев


 
Сообщений: n/a


Да.dcl-файл сохранен в c:\temp\d_tpos.dcl.
С двойными "\"-понял
Ещё здесь моя самодеятельность-изивиняюсь.
В коде примера из книги записано

Код:
[Выделить все]
(defun show_tpos ( / dcl_id)
  (if (< (setq dcl_id (load_dialog "d_tpos.dcl")
	       ) 0) (exit))
  (if (not (new_dialog "np_tpos" dcl_id)) (exit))
  (start_dialog)
  (unload_dialog dcl_id)
  (princ)
);defun show_tpos
Но,я всё одно не знаю как окно запустить из акада.
 
 
Непрочитано 23.10.2010, 23:40
#32
gomer

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


Цитата:
Сообщение от Владимир Егорьев Посмотреть сообщение
всё одно не знаю как окно запустить из акада.
С:\\temp в пути поддержки када, срочно!!!
потом в ком. строке (show_tpos) и Enter
gomer вне форума  
 
Непрочитано 23.10.2010, 23:40
#33
Кулик Алексей aka kpblc
Moderator

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


Диалог запускается функцией (start_dialog), которая в коде присутствует.
P.S. http://dwg.ru/pub/9 - читался?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.10.2010, 23:52
#34
Владимир Егорьев


 
Сообщений: n/a


Спасимбо.
Когдато читал.И у меня под рукой книга В.Свет,но не могу сосредоточиться на прочтение кода.Вот видите я не вник в суть кодов.Обещаю стараться.
 
 
Непрочитано 24.10.2010, 00:03
#35
gomer

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


Цитата:
Сообщение от Владимир Егорьев Посмотреть сообщение
И у меня под рукой книга В.Свет
Эта книга совсем о другом, отложите ее и попытайтесь сосредоточиться
gomer вне форума  
 
Непрочитано 24.10.2010, 00:12
#36
Владимир Егорьев


 
Сообщений: n/a


Цитата:
потом в ком. строке (show_tpos) и Enter
Путь прописал.
Правильноли я делаю:

1.Запускаю DCL в редакторе лиспа.
2.Сервис->приложения-> *.lsp
3.В ком.строке (start_dialog)->Enter ?


Добавлено:

Получилось.Загрузил lsp файл в редакторе лиспа и добавил C:

Последний раз редактировалось Владимир Егорьев, 24.10.2010 в 00:30.
 
 
Непрочитано 24.10.2010, 00:48
#37
gomer

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


Цитата:
Сообщение от Владимир Егорьев Посмотреть сообщение
Путь прописал.
Правильноли я делаю:

1.Запускаю DCL в редакторе лиспа.
2.Сервис->приложения-> *.lsp
3.В ком.строке (start_dialog)->Enter ?


Добавлено:

Получилось.Загрузил lsp файл в редакторе лиспа и добавил C:
Вообще ничего не понятно...
Чтобы лисп загрузить в кад достаточно его перетащить (файл а не текст) в окно автогада...
Дальше#32 и получаете окошко
gomer вне форума  
 
Непрочитано 24.10.2010, 00:58
#38
Владимир Егорьев


 
Сообщений: n/a


Спасибо.Разобрал со всех позиций.И перетаскивал и со скобками в ком.строке вводил и без скобок-всё работает.
Буду осваивать дальше.

p.s.Хотел узнать такую вешь:почему интерфейс (или как правильно это называется) редактора лиспа в акаде 2008 имеет вот такое
Миниатюры
Нажмите на изображение для увеличения
Название: Чертеж1-Model.jpg
Просмотров: 99
Размер:	36.8 Кб
ID:	47041  Нажмите на изображение для увеличения
Название: Чертеж2-Model.jpg
Просмотров: 81
Размер:	36.7 Кб
ID:	47042  
 
 
Непрочитано 25.10.2010, 08:31
#39
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Цитата:
почему интерфейс (или как правильно это называется) редактора лиспа в акаде 2008 имеет вот такое
А что именно Вас смущает?
E-degtyarev вне форума  
 
Непрочитано 25.10.2010, 08:42
#40
Do$

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


Да он и в 2006 такое имел, и в 2010 такое же
Do$ вне форума  
 
Непрочитано 25.10.2010, 19:02
#41
Владимир Егорьев


 
Сообщений: n/a


E-degtyarev&Do$

Да какието радужные оболочки.
 
 
Непрочитано 04.12.2010, 22:22
#42
Владимир Егорьев


 
Сообщений: n/a


Здравствуйте.

Такой вопрос.Как осуществляется прикрепление некотрой созданной LISP программы к кнопке диалогового окна.Где можно про это почитать?
 
 
Непрочитано 04.12.2010, 22:45
#43
Кулик Алексей aka kpblc
Moderator

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


Через action_tile
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.12.2010, 22:46
#44
Владимир Егорьев


 
Сообщений: n/a


Ок.Спасибо.Учимся дальше.
 
 
Автор темы   Непрочитано 06.12.2010, 09:39
#45
Zaghim


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


Полещук рулит)))
Zaghim вне форума  
 
Непрочитано 08.04.2011, 21:54
#46
Владимир Егорьев


 
Сообщений: n/a


Как выполнить закрытие д.окна с помощью "крестика" (в правом верхнем углу д.окна)?
 
 
Непрочитано 08.04.2011, 22:08
#47
Кулик Алексей aka kpblc
Moderator

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


Ну, либо на него нажать, либо на кнопку [OK]. На крайний случай - (done_dialog).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.04.2011, 22:23
#48
Владимир Егорьев


 
Сообщений: n/a


Кулик Алексей aka kpblc

Так в томто и дело что крестик не работает.ОК выводит из окна.А вот как крестик активировать?

Добавлено.

А справка по Лиспу только на английском?
 
 
Непрочитано 08.04.2011, 22:29
#49
Кулик Алексей aka kpblc
Moderator

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


Владимир Егорьев, покажи полный код - и dcl, и lsp для его активизации.
P.S. На данный момент справка по AutoLISP либо на английском, либо в печатном (ищи книги Полещука; но учиться по ним тяжело).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.04.2011, 22:38
#50
Владимир Егорьев


 
Сообщений: n/a


Две книги у меня Полищука.

Код:
[Выделить все]
np_forma_c: dialog {label="Ведомость ";
:row{label="Форма ведомости";
  :column{label="Нлмер позиции";
    :edit_box{key="kShir1";value="0";edit_width=3;}
  }//column
:spacer {height=1;}
  :column{label="Наименование";
    :edit_box{key="kShir2";value="0";edit_width=3;}
  }//column
:spacer {height=1;}
  :column{label="Шифр марки";
    :edit_box{key="kShir3";value="0";edit_width=3;}
  }//column
:spacer {height=1;}
  :column{label="Номер чертежа";
    :edit_box{key="kShir4";value="0";edit_width=3;}
  }//column
}//row
ok_button;
}//конец forma_c
Код:
[Выделить все]
(defun c:show_forma_c ( / dcl_id)
  (if (< (setq dcl_id (load_dialog "forma_c.DCL")) 1) (exit))
  (if (not (new_dialog "np_forma_c" dcl_id)) (exit))
  (start_dialog)
  (unload_dialog dcl_id)
  (princ)
);defun show_forma_c
 
 
Непрочитано 09.04.2011, 00:04
#51
gomer

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


ok_only;
gomer вне форума  
 
Непрочитано 09.04.2011, 00:19
#52
Кулик Алексей aka kpblc
Moderator

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


Уже нет сил на полноценную проверку, но, ИМХО: а где (action_tile) ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.04.2011, 11:05
#53
Владимир Егорьев


 
Сообщений: n/a


gomer

У Полещука: ok_only-элемент в виде колонки из одного элемента с кнопкой OK

Кулик Алексей aka kpblc

Если ты к тому что у меня в принципи нет action_tile-то я просто пока до этого не дошёл.Я просто пока построил диалоговое окно без действий.Если ты про то что использовать action_tile в качестве воздействия на крестик-то я не знаю как это выполнить.Как я понимаю происходящее-то крестик это атрибут самого окна по умолчанию,и чтобы на этот крестик воздействовать должна быть команда,но я её не нашёл у Полещука. (Поправь если я заблуждаюсь)
 
 
Непрочитано 09.04.2011, 12:06
1 | #54
Кулик Алексей aka kpblc
Moderator

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


Владимир Егорьев, у тебя не прописано действие Cancel. Попробуй такой код:
Код:
[Выделить все]
 (defun show-form (/ file handle dcl_id dcl_res)
  (setq file   (strcat (vl-string-right-trim "\\" (getenv "TMP"))
                       "\\dlg.dcl"
                       ) ;_ end of strcat
        handle (open file "w")
        ) ;_ end of setq
  (foreach item '("np_forma_c: dialog {label=\"Âåäîìîñòü \";"
                  ":row{label=\"Ôîðìà âåäîìîñòè\";"
                  ":column{label=\"Íëìåð ïîçèöèè\";"
                  ":edit_box{key=\"kShir1\";value=\"0\";edit_width=3;}"
                  "}//column"
                  ":spacer {height=1;}"
                  ":column{label=\"Íàèìåíîâàíèå\";"
                  ":edit_box{key=\"kShir2\";value=\"0\";edit_width=3;}"
                  "}//column"
                  ":spacer {height=1;}"
                  ":column{label=\"Øèôð ìàðêè\";"
                  ":edit_box{key=\"kShir3\";value=\"0\";edit_width=3;}"
                  "}//column"
                  ":spacer {height=1;}"
                  ":column{label=\"Íîìåð ÷åðòåæà\";"
                  ":edit_box{key=\"kShir4\";value=\"0\";edit_width=3;}"
                  "}//column"
                  "}//row"
                  "ok_cancel;}"
                  )
    (write-line item handle)
    ) ;_ end of foreach
  (close handle)
  (setq dcl_id (load_dialog file))
  (new_dialog "np_forma_c" dcl_id)
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")
  (setq dcl_res (start_dialog))
  (unload_dialog dcl_id)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.04.2011, 12:12
#55
gomer

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


Цитата:
Сообщение от Владимир Егорьев Посмотреть сообщение
У Полещука
Алгоритм такой:
1. Меняешь ok_button; на ok_only (смотришь нажимается ли крестик)
2 Заменяешь (start_dialog) на (setq dcl_rt (start_dialog)) (смотришь что возвращает dcl_rt
3. Вместо ok_only используешь ok_cancel (жмешь все кнопки и крестик, смотришь переменную dcl_rt)

ой, kpblc меня опередил =)

Последний раз редактировалось gomer, 09.04.2011 в 12:19.
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание DCL



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ламерские вопросы по LISP и DCL TheBuTeK LISP 7 03.07.2016 22:15
Создание диалоговых окон в AutoCAD TwoZero Программирование 145 11.03.2015 18:15
DCL & UserForm VBA Holon Программирование 21 05.10.2007 01:37
Создание help'а к своим прогам Apelsinov Программирование 20 27.07.2006 12:51
Одна из целей: Создание экспертных систем на базе AutoCAD. Сергей Юрьевич Программирование 9 01.01.2005 15:17