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

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

создание собственной подсказки

Ответ
Поиск в этой теме
Непрочитано 16.10.2012, 11:55 #1
создание собственной подсказки
gool
 
Регистрация: 15.11.2007
Сообщений: 52

Как создать подсказку для блока, например, которая будет выводиться при наведении на этот блок? Подобная тема поднималась раньше, но там упоминаются команды note и T2N, а ссылки, где их взять - недоступны. Может, у кого есть?
Спасибо
Просмотров: 19255
 
Непрочитано 16.10.2012, 13:00
#2
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от gool Посмотреть сообщение
Как создать подсказку для блока, например, которая будет выводиться при наведении на этот блок?
gool, может достаточно будет использовать гиперссылки?
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 16.10.2012, 13:20
#3
gool


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


Как я понимаю, это не достаточно, а избыточно. надо указывать файл, или эл.адрес или... А мне бы просто свой текст показать.
gool вне форума  
 
Непрочитано 16.10.2012, 14:44
#4
hwd

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


Цитата:
Сообщение от gool Посмотреть сообщение
А мне бы просто свой текст показать.
Задача решается просто. Пример исходного кода тут.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 16.10.2012, 14:49
#5
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


gool, а просто попробовать написать свой текст в гиперссылке не судьба?
__________________
На вопрос объяснить поподробней, отвечаю - идите читать Справку, Help, User Manual и т.д.
KSI вне форума  
 
Автор темы   Непрочитано 16.10.2012, 15:46
#6
gool


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


ksi, спасибо, конечно, за внимание к вопросу, но я не хочу заводить никаких дополнительных файлов, а гиперссылка требует файл. Или я что-то не понимаю? Но без указания файла я описание сохранить не могу. До сих пор не пришлось сталкиваться с гиперссылками, и прежде чем задать вопрос, конечно, открывались и хелпы, и аналогичные темы на форуме, но там уже ссылки на темы недоступны. У меня схема с расчетом токов КЗ. Хочу при наведении на объект показывать токи. Не создавать же для каждого элемента схемы свой файл.

hwd, спасибо, попробую разобраться
gool вне форума  
 
Непрочитано 16.10.2012, 16:31
#7
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от gool Посмотреть сообщение
Как я понимаю, это не достаточно, а избыточно. надо указывать файл, или эл.адрес или... А мне бы просто свой текст показать.
Можно в поле "Введите имя файла или веб-страницы" задать пробел или тоже текст, что и в "Отображаемом тексте", ну не будет работать сама ссылка, так Вам это и не надо, но при наведении мыши на блок будет появляться нужная подсказка. Так что ни каких
Цитата:
Сообщение от gool Посмотреть сообщение
но я не хочу заводить никаких дополнительных файлов, а гиперссылка требует файл
заводить не надо

P.S. Конечно, раз вопрос задан в ветке "Программирование", то hwd дал хороший и правильный ответ, но что мне подсказывает что автор темы не будет разбираться с кодом на C#
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 16.10.2012, 16:51
#8
gool


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


Спасибо, tatarykovDG. Попытка вставить в имя файла свой текст была. Но в любом случае появляется текст "CTRL+щелчок для перехода по ссылке". От него нельзя никак избавиться?
gool вне форума  
 
Непрочитано 16.10.2012, 17:06
#9
hwd

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


Цитата:
Сообщение от gool Посмотреть сообщение
Но в любом случае появляется текст "CTRL+щелчок для перехода по ссылке". От него нельзя никак избавиться?
Можно, смотри скрин.



Только тебе придётся выбирать: "шашечки или ехать"(с)...
Миниатюры
Нажмите на изображение для увеличения
Название: 16.10-1.png
Просмотров: 741
Размер:	27.4 Кб
ID:	88630  
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 16.10.2012, 17:08
#10
Дима_

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


Да уж по моему все расписали - выбери что нужно быстро или красиво и вперед на танки (если с .Net проблемы можно еще через реакторы\ActiveX отследить изменение выделенного набора и показать свои токи каким-либо образом), но показать "ненавязчиво" в области курсора на лиспе можно только через **пу, то есть по любому для такой "хотелки" что-нибудь "внешнее" подгружать придеться (на кнопочку макросом в 3 строчки не прокатит - без подгрузки тут танцы с бубном такие нужны - что обработка PointMonitor на этом фоне - детский лепет) - стоит-ли игра свечь?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 16.10.2012, 17:17
#11
hwd

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Да уж по моему все расписали
Нет, не всё Можно ещё так, с той лишь разницей, чтобы подписаться на иные события, вместо тех, которые я использовал на видео. Однако результат будет по сути таким же. В этом случае можно не просто всплывающую подсказку с текстом, но можно и мультфильмы, анимированные кнопочки, картиночки отображать - это на усмотрение фантазии юзера.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 16.10.2012, 17:27
#12
Дима_

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


To hwd Offtop: а в чем разница то (я честно говоря по диогонали пробежался), понятно дело что кроме штатной обработки "хандлера" события туда можно еще любых "свистелок-перделок" понавешать.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 16.10.2012, 17:36
#13
hwd

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
а в чем разница то
Ссылкой на Волмслея демонстрируется решение задачи средствами самого AutoCAD. Ссылкой на мой блог задача решается средствами WPF. Второй способ, по сути и позволяет с лёгкостью использовать всякие
Цитата:
свистелки-перделки
Можно, конечно же, в качестве варианта реализовать и на WinForms, но он однозначно будет проигрывать WPF.

Offtop: P.S. Смотрю, как-то участились вопросы в ветке "Программирование" непрограммистами, вместо того, чтобы в поисках готового решения задавать эти вопросы в ветке "AutoCAD" или "Поиск исполнителей". Наверное имеет смысл добавить новую ветку форума: "А напишите мне такое..." - думаю, что будет иметь бешеную посещаемость...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 16.10.2012, 21:39
#14
Дима_

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


Цитата:
Сообщение от hwd Посмотреть сообщение
Наверное имеет смысл добавить новую ветку форума: "А напишите мне такое..."
Я четырмя руками за - ибо действительно иногда немного устаешь от таких тем и по названию темы и открывать нет желания + перед созданием темы в этой ветке БОЛЬШИМИ КРАСНЫМИ БУКВАМИ прописать сто раз уже обсуждаемые "рекомендации" как правильно спрашивать, чтоб потом клещами не вытаскивать - что все-же надо.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 16.10.2012, 21:52
#15
hwd

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Я четырмя руками за - ибо действительно иногда немного устаешь от таких тем
Offtop: Я всё ближе к решению о том, чтобы окончательно свалить отсюда на форумы http://stackoverflow.com и http://www.theswamp.org. Благо английский мне с некоторых пор нестрашен...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 17.10.2012, 10:23
#16
gool


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


Ребята, вы, конечно, все очень продвинутые, я исренне перед вами преклоняюсь, нисколько не лукавя, честное слово и без обид. Но не все же такие крутые. Я мало работаю с autocad-ом, и честно говоря, вам гожусь наверное в бабушки и такой легкости как у вас, конечно, нет.
Если что-то не так выразила, ну не специально же. Чем больше знаешь, тем точнее выражаешься.
Аналогичная тема была, правда в разделе "Autocad", и, по-моему, воспринималась совершенно нормально, но ссылки, которые там указывались, уже не были доступны и я не смогла просмотреть всю тему. (об этом, вообще-то, изначально и был вопрос). Если обратилась не в тот раздел, ну простите, по неопытности.
Я обращаюсь с вопросами очень редко, но ищу нужные темы часто. Читаю часто возмущение по поводу поставленного вопроса. Людей, которые не могут четко поставить вопрос, с сожалению, очень много. И когда их начинают клевать, мне их всегда искренне жаль. Это уже не столько обо мне, а вообщем. Что же им делать? Не жить и не работать? Никто специально не пишет "неправильные" вопросы. А если вы умнее, покажите это. Ну задайте еще уточняющий вопрос, если заинтересовались темой, нет - ну и не отвечайте.
А в раздел "программирование" написала, т.к. средствами самого autocada этого не сделать, а на lisp-е пишу понемногу, может, не так красиво, как вы, но работает.
Я никогда не просила никого писать за себя программы, боже упаси.
Когда доходишь до тупика, иногда достаточно намека, линии поведения, что ли, чтобы сдвинуться дальше. А то, что вы тут советовали убрать галочки в насройках чтобы убрать слова "CTRL+щелчок для перехода по ссылке", я еще пробовала до обращения на форум, только через сист. переменную. Вы ведь и сами знаете, что это скрывает не только слова "CTRL+...", но и само пояснение... Так что, если ввела кого-то в раздражение, простите.
Я находила здесь ответы на многие свои вопросы и действительно отношусь с огромным уважением ко всем участникам форума и понимаю, что никто никому ничего не обязан.
Поэтому не надо никуда уходить, ну не нравится вопрос, не отвечайте.
Еще раз с искренним уважением
ваша "бабушка".
gool вне форума  
 
Непрочитано 17.10.2012, 10:49
#17
hwd

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


Цитата:
Сообщение от gool Посмотреть сообщение
Еще раз с искренним уважением
ваша "бабушка".
Какая у вас версия AutoCAD?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 17.10.2012, 11:00
#18
Дима_

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


Цитата:
Сообщение от gool Посмотреть сообщение
Никто специально не пишет "неправильные" вопросы. А если вы умнее, покажите это. Ну задайте еще уточняющий вопрос, если заинтересовались темой, нет - ну и не отвечайте.
Может и так, но почему-то через три вопроса задаются те на которые набрав их-же вопрос в гугле всплывает 2 странице ответов, через пять - человек пытается делать что-то через ***у и просит ему в этом помочь, причем настолько самоуверенно и еще с обидами - что на него никто время не тратит, и слушать он никого не хочет, а про уточняющие вопросы - так всем понятно что человек все знать не может и если посмотреть темы, то они есть в КАЖДОЙ подобной. А ветка эта, как уже выше Андрей (hwd) заметил, вобщем программированию посвященна, а не "помогите мне".
Теперь по Вашей теме, вопрос прямой Вы уверенны что Вам оно надо? Напомню, тремя строками лиспа здесь не прокатит, надо будет на каждую машину где это используется устанавливать какой-либо плагин (будете это делать)? + если, как Вы написали, вы хоть немного, но программируете, то должны понимать, что для того чтоб чего-нибудь показало (в Вашем случае подсказки-токи), они должны быть или занесенны по какому-нибудь "стандарту" или соответственно вычеслинны, на основе, например, данных чертежа. Откуда их брать? из аттрибутов, из расширенных данных, из ... ??? Если из аттрибутов - не проще ли их, допустим сделать видимыми, и чем в конце концов гиперссылки не угодили (я не спросил правда какой автокад, но по моему поведение у них во всех версиях схожее - подержал чуток - всплыла подсказка), если нет, то наверно надо еще будет что-то написать, чем их (токи) заносить. Вобщем, если Вам нужна "подсказка" в каком направлении работать - то их "уже есть", если понимаете что "не потянуть" - изложите подробно, что к чему, чтоб не мы из Вас клещами вытягивали, а чтоб информации было достаточно, для помощи Вам-же - уверен на 100% здесь помогут.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 17.10.2012, 11:23
#19
Кулик Алексей aka kpblc
Moderator

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


У меня почему-то подозрения, что разговор про ролловеры...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.10.2012, 11:29
#20
hwd

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


gool
Чем больше вы тянете резину, тем меньше у вас шансов получить решение. Я вам вопрос задал в предыдущем сообщении. Не будет ответа, не будет мультиков. Я не намерен ожидать ваш ответ целый день. Если у вас версия AutoCAD 2009 или 2013, то считайте что вам повезло - дам вам готовое решение. Ну что, будем и дальше сидеть, молча разглядывая топик?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 17.10.2012, 11:57
#21
gool


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


Дима, гиперссылки мне "угодили", я всего то спрашивала, вдруг можно убрать слова "CTRL+ ....". Разве по этому поводу я непонятно выразилась? Ну нельзя, значит нельзя.
Данные все рассчитаны, хранятся в расширенных данных, и просматриваются через окна, и там куча дополнительных данных, и потери напряжения, и сопротивления, и токи, и типы аппаратуры с их параметрами. Но токи - самое важное при анализе схемы. И хотелось бы их видеть быстро. Правда, эти окна я навесила на горячие клавиши, но все равно не очень удобно. Идешь по цепочке по десяткам элементов, каждый раз открывать и закрывать окно.
Все начиналось в Delphi. Но это не очень удобно, сами понимаете, чертеж то в autocad-е. Пришлось осваивать autocad. До этого работала в нем довольно поверхностно. И пришлось autocad с delphi связывать, т.к. там достаточно много наработок было. Я не думала, что интересен вопрос, как я храню данные, я вытащу то, что нужно показать, вопрос в том, как показать.
Про атрибуты я тоже думала, но отказалась, т.к. в начале рисования схемы их нет, а потом могут налазить на другие элементы схемы. Даже если под эти атрибуты оставлять место, для передачи схемы их нужно отключать, и заказчику будет неясно, зачем тут такие "пустоты"?
Да и тогда нужно следить за атрибутами, чтобы те, которые вычисляются, любой не смог изменить. В атрибутах хранятся, например, типы оборудования, номиналы, позиционные обозначения и.т.д. - та информация, которая д.б. на чертеже всегда.
Вообщем, спасибо всем. Для анализа схем сойдет пока и гиперссылка, будем закрывать глаза на предложение "перейти по ссылке через...".
gool вне форума  
 
Непрочитано 17.10.2012, 12:00
#22
hwd

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


Цитата:
Сообщение от gool Посмотреть сообщение
Вообщем, спасибо всем. Для анализа схем сойдет пока и гиперссылка, будем закрывать глаза на предложение "перейти по ссылке через...".
Ну что же, хозяин - барин, как говорится
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 17.10.2012, 12:06
#23
gool


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


Алексей, я понятие ролловеры слышала, но, оно, по-моему относится к версиям выше 2009. У меня 2006, к сожалению (нелицензионные версии не используем).
hwd, не злитесь, я решила, что тема закрыта.
gool вне форума  
 
Непрочитано 17.10.2012, 12:15
#24
hwd

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


Цитата:
Сообщение от gool Посмотреть сообщение
У меня 2006, к сожалению
Насчёт 2006 не знаю, т.к. не пробовал под него писать на .NET. Те, у кого имеется под рукой AutoCAD 2006, могут попробовать скомпилировать под него этот код. Там же, в мультике демонстрируется принцип работы.

UPD.
Смотрите вложенный файл. Откомпилировал под AutoCAD 2006. Распакуйте его у себя на локальной машине. На компьютере обязательно должен быть установлен .Net Framework 2.0.
Попробуйте загрузить выложенную мною библиотеку в AutoCAD 2006 командой _NETLOAD и проверьте работоспособность. Пришлось внести в исходный код значительные изменения, т.к. .NET API под AutoCAD 2006 более "ущербный".
Вложения
Тип файла: zip BlockReferencesTooltip.zip (2.7 Кб, 35 просмотров)
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

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

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


Цитата:
Сообщение от gool Посмотреть сообщение
И пришлось autocad с delphi связывать, т.к. там достаточно много наработок было.
Ну так добавьте на acad.ActiveDocument.SelectionChanged ... функцию анализирующие pickfirstselectionset (если там в самом событии ничего нет, я не помню уж) и у рисуйте у курсора полупрозрачные окошки.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 17.10.2012, 12:59
#26
Кулик Алексей aka kpblc
Moderator

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


Дима_, насколько я понял, подсказка нужна не в момент выбора, а в момент "подвода" курсора к примитиву. Так что SelectionChanged тут будет ни к селу, ни к городу. ЯТД.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.10.2012, 13:01
#27
hwd

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Дима_, насколько я понял, подсказка нужна не в момент выбора, а в момент "подвода" курсора к примитиву. Так что SelectionChanged тут будет ни к селу, ни к городу. ЯТД.
+1
Offtop: не стал об этом писать .
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 17.10.2012, 13:12
#28
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Попробуй такой вариант без использования GRREAD:
Код:
[Выделить все]
;;-----------------------------------------------------------------------;;
			(vl-load-com)
	
			;;Задай имя атрибута здесь:
			(setq *strTag* "KP");глобальная переменная

(defun C:ATP(/  attData blk isOK  sset strVal)
(while
		    (setq sset (ssget "_:S:E:L" (list (cons 0  "insert")(cons 66 1))))
		     (progn
		       
		       (setq blk (vlax-ename->vla-object (ssname sset 0)))
		
		       (setq attData
			      (mapcar (function
					(lambda	(at)
					  (list	(vla-get-tagstring at)
						(vla-get-textstring at))
					  ))
				      (vlax-invoke
					blk
					'Getattributes)
				      )
			     )
		       (if (setq IsOk
				  (car (vl-remove-if-not
					 '(lambda (x)
					    (eq (car x) *strTag*)
					    )
					 attData)))
			 (progn
			
			   (setq strVal (cadr IsOk))
			   
			 (alert  (strcat "Блок: " (vla-get-effectivename blk)"\nЗначение: " strval))
			   )
			 (alert  (strcat "Атрибут: " *strTag* " не найден."))
			 )
		       
		       )
		    
		     )
  (princ)
  )
;;-----------------------------------------------------------------------;;
Олег (jr.) вне форума  
 
Непрочитано 17.10.2012, 13:20
#29
hwd

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


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Попробуй такой вариант
Это совершенно не то, о чём спрашивала автор топика:
Цитата:
создать подсказку для блока, например, которая будет выводиться при наведении на этот блок?
gool
Ну и чего молчим?

Миниатюры
Нажмите на изображение для увеличения
Название: is-it-working-ru.jpg
Просмотров: 298
Размер:	11.2 Кб
ID:	88668  
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 17.10.2012, 13:39
#30
Дима_

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


Да это я тоже знаю, просто через лисп и активикс (в чем у автора есть какое-то понимание), это надо через голову перепрыгнуть чтоб реализовать без щелчка, а если там уже что-то на дельфях прикрученно, то есть ли смысл автору с 2006 .Net'ом заморачиватся.
з.ы лично для меня щелчок в такой задаче был-бы предпочтительней (но автору конечно видней)
з.з.ы тут все меняется т.к. hwd уже и 2006 нашел и переделал, только данные у автора в расширенныз сидят (и не факт что они одинаковые у всех вхождений блока, а т.к. формат автор дружелюбно не выдал - то ему либо самому разруливать, либо опять Андрея просить).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 17.10.2012, 13:40
#31
gool


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


hwd, спасибо! библиотеку взяла, но при загрузке выдает:
"Не удалось загрузить сборку. Сведения об ошибке:
System.BadImageFormatException: Недопустимый формат файла
'BlockReferencesTooltip.dll'...."
Я еще посмотрю. Это первая проба.
Дима, это тоже идея. Хоть и не наведение курсора, а при выборе, но это побыстрее, чем у меня сейчас открывать и закрывать окна.
Олег! а вашу функцию я попробовала. Все ок. И хотя у меня информация в расширенных данных, это я изменю, без проблем.
Самой мне эти идеи в голову не пришли. Зациклилась на подсказках.
Ребята, вы супер, я уже писала.
gool вне форума  
 
Непрочитано 17.10.2012, 14:02
#32
hwd

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


Цитата:
Сообщение от gool Посмотреть сообщение
при загрузке выдает:
"Не удалось загрузить сборку. Сведения об ошибке:
System.BadImageFormatException: Недопустимый формат файла
'BlockReferencesTooltip.dll'...."
Подозреваю, что AutoCAD 2006 использует .Net Framework 1.0 или 1.1, а не версию 2.0. Я не смогу скомпилировать под 1.0 и 1.1, т.к. моя MS Visual Studio 2010 не поддерживает эти устаревшие версии платформы. Да и код нужно будет снова править, т.к. в обозначенных версиях ещё отсутствовали Generics.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 17.10.2012, 14:11
#33
gool


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


hwd, спасибо, не заморачивайтесь. Действительно, framework 1.1. так что я сделаю попроще, как подсказали ребята - через activeX или как посоветовал Олег.
gool вне форума  
 
Непрочитано 17.10.2012, 16:11
#34
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Можешь попробовать для .NET Framework 1.1,
здесь нет WPF,только обычное автокадовское окошко

Код:
[Выделить все]
        [CommandMethod("mes")]
        public void testGetXdata()
        {
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;

            Database db = doc.Database;

            Editor ed = doc.Editor;

            ed.PointMonitor+=new PointMonitorEventHandler(ed_PointMonitor);

            using (Transaction tr= db.TransactionManager.StartTransaction())
            {
                try
                {
                    ObjectId[] ids = GetUserPickedObjects(doc);
                    foreach (ObjectId id in ids)
                    {
                        string message = GetToolTip(id);
                        Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog(message);
                    }

                }
                catch
                {
                    Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("Bad news, mom!");
                  //  ed.PointMonitor -= new PointMonitorEventHandler(ed_PointMonitor);
                }
                finally
                {
                    ed.PointMonitor -= new PointMonitorEventHandler(ed_PointMonitor);
                }
        }
        }
        private static ObjectId[] GetUserPickedObjects(Document dwg)
        {
            List<ObjectId> ids = new List<ObjectId>();
            using (Transaction tran =
                dwg.Database.TransactionManager.StartTransaction())
            {
                bool go = true;
                while (go)
                {
                    go = false;

                    PromptEntityOptions opt =
                        new PromptEntityOptions("\nPick an entity: ");
                    PromptEntityResult res = dwg.Editor.GetEntity(opt);

                    if (res.Status == PromptStatus.OK)
                    {
                        bool exists = false;
                        foreach (ObjectId id in ids)
                        {
                            if (id == res.ObjectId)
                            {
                                exists = true;
                                break;
                            }
                        }

                        if (!exists)
                        {
                            //Highlight
                            Entity ent = (Entity)tran.GetObject(
                                res.ObjectId, OpenMode.ForWrite);

                            ent.Highlight();

                            ids.Add(res.ObjectId);
                            go = true;
                        }
                    }
                }

                tran.Commit();
            }

            return ids.ToArray();
        }


        private void ed_PointMonitor(object sender, PointMonitorEventArgs e)
        {
            //if (_dwg == null)
            //    return;
            //if (!_msgOn) return;
           Editor ed = (Editor) sender;
            Document doc = ed.Document;

            FullSubentityPath[] paths = e.Context.GetPickedEntities();
            if (paths.Length > 0)
            {
                ObjectId[] ids = paths[0].GetObjectIds();
                if (ids.Length > 0)
                {
                    ObjectId selId = ids[ids.Length - 1];
                    string tipText = GetToolTip(selId);
                    e.AppendToolTipText(tipText);
                }
            }
        }
 private string GetToolTip(ObjectId selId)
 {
StringBuilder sb = new StringBuilder();
Entity ent= selId.GetObject( OpenMode.ForRead,false) as Entity;
Database db = ent.OwnerId.OriginalDatabase;
using (Transaction tr= db.TransactionManager.StartTransaction())
if (ent!=null)
{

    try
    {
        BlockReference bref = ent as BlockReference;
      
        ResultBuffer rb = bref.XData;

        if (rb == null)
        {
            sb.Append("\nBlock does not have XData attached.");
        }
        else
        {
            sb.Append("\n-------------------------------------");
            sb.Append("\nBlock Name:: " + EffectiveName(tr, bref) + "\n");
            foreach (TypedValue tv in rb.AsArray())
            {
                sb.Append(string.Format("Code: {0}, Value: {1}\n", tv.TypeCode, tv.Value));
            }
            rb.Dispose();
        }

    }
    catch (System.Exception ex)
    {
        Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog(string.Format("\n{0}\n{1}", ex.Message, ex.StackTrace));
    }
}

 return sb.ToString(); 
}
       //      get the real block name.        //    
    static public string EffectiveName(Transaction tr, BlockReference bref)     
   {    
        BlockTableRecord btr = null;    
        if ((bref.IsDynamicBlock) | (bref.Name.StartsWith("*U", StringComparison.InvariantCultureIgnoreCase)))  
          {                btr = tr.GetObject(bref.DynamicBlockTableRecord, OpenMode.ForRead) as BlockTableRecord;      
      }      
      else     
       {        
        btr = tr.GetObject(bref.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord; 
           }
            return btr.Name;     
   }

Последний раз редактировалось Олег (jr.), 17.10.2012 в 18:49. Причина: добавлена библиотечная функция
Олег (jr.) вне форума  
 
Непрочитано 17.10.2012, 16:14
#35
hwd

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


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Можешь попробовать для .NET Framework 1.1,
Насколько я понял, автор не умеет компилировать код, написанный на .NET и возможно, что даже отсутствует нужная версия IDE MS Visual Studio. Хотя, кто знает...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 17.10.2012, 16:38
#36
gool


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


Ребята, спасибо, но я действительно не умею на .NET. Но учиться никогда не поздно. Мне хочется давно попробовать хоть что-то. Не подскажете, с чего начать, какую-нибудь литературу доступную "для чайников", что ли, в этом вопросе...
gool вне форума  
 
Непрочитано 17.10.2012, 16:45
#37
hwd

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


Цитата:
Сообщение от gool Посмотреть сообщение
Ребята, спасибо, но я действительно не умею на .NET. Но учиться никогда не поздно. Мне хочется давно попробовать хоть что-то. Не подскажете, с чего начать, какую-нибудь литературу доступную "для чайников", что ли, в этом вопросе...
Всё зависит от серьёзности намерения.
.NET, это не язык программирования для AutoCAD, вроде AutoLISP. На .NET (вообще-то это группа языков) можно писать не только плагины, но и самостоятельные приложения, в том числе сайты, службы. Т.о. если браться изучать .NET, то нужно быть готовым к тому, что это несколько растянутое по времени занятие. Если усваиваете информацию шустро, то достаточно быстро сможете писать простые вещи. Только нужно сначала определиться, на каком именно .NET языке хотите учиться писать код. Все .NET языки совместимы между собой, т.е. в одном языке свободно можно использовать результат того, что написан на другом.

.NET - это платформа, предназначенная для программирования под разные операционные системы (Windows\LINUX\MAC OS). Код "условно" кроссплатформенный. "Условно", потому что есть нюансы, которые следует обходить, чтобы он действительно был кроссплатформенным.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 17.10.2012, 17:04
#38
gool


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


Я примерно так и представляла, но вы hwd, все четко выразили. Уж насколько шустро работает голова, наверное, не мне судить, но потому что мне все интересно, поэтому и пишу что-то сама прожив около 6-ти десятков. Нельзя ли с Вами связаться как-то лично по этому вопросу, чтобы не "захламлять" форум ?
gool вне форума  
 
Непрочитано 17.10.2012, 17:09
#39
hwd

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


Цитата:
Сообщение от gool Посмотреть сообщение
Я примерно так и представляла, но вы hwd, все четко выразили. Уж насколько шустро работает голова, наверное, не мне судить, но потому что мне все интересно, поэтому и пишу что-то сама прожив около 6-ти десятков. Нельзя ли с Вами связаться как-то лично по этому вопросу, чтобы не "захламлять" форум?
Если возникают какие-то вопросы, можете задавать. Мои координаты указаны как в профиле данного форума, так и здесь (если внимательно читать - там и электронная почта указана). Но предупреждаю сразу - обучением я не занимаюсь в виду отсутствия времени, да и, откровенно говоря, желания. Ответить на вопрос - это одно, а сидеть и обучать - это совсем другое...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 17.10.2012, 17:11
#40
gomer

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


Цитата:
Сообщение от hwd Посмотреть сообщение
.NET, это не язык программирования для AutoCAD, вроде AutoLISP. На .NET (вообще-то это группа языков) можно писать не только плагины, но и самостоятельные приложения, в том числе сайты, службы. Т.о. если браться изучать .NET, то нужно быть готовым к тому, что это несколько растянутое по времени занятие. Если усваиваете информацию шустро, то достаточно быстро сможете писать простые вещи. Только нужно сначала определиться, на каком именно .NET языке хотите учиться писать код. Все .NET языки совместимы между собой, т.е. в одном языке свободно можно использовать результат того, что написан на другом.

.NET - это платформа, предназначенная для программирования под разные операционные системы (Windows\LINUX\MAC OS). Код "условно" кроссплатформенный. "Условно", потому что есть нюансы, которые следует обходить, чтобы он действительно был кроссплатформенным.
Increase Size Decrease Size Java vs Microsoft .NET Trailer
http://www.youtube.com/watch?v=13A0_QkqtaQ
gomer вне форума  
 
Автор темы   Непрочитано 17.10.2012, 17:15
#41
gool


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


Обучение не имела ввиду ни в коем случае. Толко если возможно, как уже писала, посоветуйте литературу для начинающих, с Вашей точки зрения подходящую
gool вне форума  
 
Непрочитано 17.10.2012, 17:15
#42
hwd

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


2 gomer
что ты знаешь о недостатках Java? Вопрос риторический...
Цитата:
Сообщение от gool
Обучение не имела ввиду ни в коем случае. Толко если возможно, как уже писала, посоветуйте литературу для начинающих, с Вашей точки зрения подходящую
Тут зависит от ваших целей. Если вы собираетесь писать код под AutoCAD 2006, то вам нужно ориентироваться на литературу, касающуюся платформы .NET Framework 1.1, а это уже очень старое ископаемое и кроме как в AutoCAD 2006 и т.п. древних программ он уже не используется давно. Если вы о .NET программировании вообще, то это нужно читать по платформам 4.0 и 4.5 (последняя официально выходит в этом месяце и включена в состав Windows 8, а на Windows 7 ставится отдельно).
Из справочников хорошая литература - Шилдт.
Из пошаговой обучающей литературы среди .NET программистов очень ценится Троелсен.
Для начала этих книг хватит за глаза.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 17.10.2012 в 17:23.
hwd вне форума  
 
Непрочитано 18.10.2012, 02:19
#43
gomer

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


Цитата:
Сообщение от hwd Посмотреть сообщение
что ты знаешь о недостатках Java? Вопрос риторический...
дело не в яве, а в вашей миссионерской позиции насчет нет:
Цитата:
Сообщение от hwd Посмотреть сообщение
Тут зависит от ваших целей. Если вы собираетесь писать код под AutoCAD 2006, то вам нужно ориентироваться на литературу, касающуюся платформы .NET Framework 1.1, а это уже очень старое ископаемое и кроме как в AutoCAD 2006 и т.п. древних программ он уже не используется давно. Если вы о .NET программировании вообще, то это нужно читать по платформам 4.0 и 4.5 (последняя официально выходит в этом месяце и включена в состав Windows 8, а на Windows 7 ставится отдельно).
Для меня это уже достаточный повод отказаться от затеи с подсказкой, как-то не веселит покупать В8, компьютер под нее, и акад самой препоследней версии, ну просто денег нет на...
Впрочем это сезонное наверное, был тут товарищь, который на острие курсора хотел меню... или он не меню хотел...
gomer вне форума  
 
Непрочитано 18.10.2012, 11:06
#44
hwd

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


Цитата:
Сообщение от gomer Посмотреть сообщение
Для меня
gomer, ты можешь хоть без штанов ходить - мне без разницы.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 29.10.2012, 00:32
#45
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Попробуй этот класс:
http://www.acadnetwork.com/topic-243.0.html
Проверял только в 2010-м
Олег (jr.) вне форума  
 
Непрочитано 29.10.2012, 08:25
#46
Кулик Алексей aka kpblc
Moderator

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


Олег (jr.), там регистрация требуется.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.10.2012, 13:23
#47
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Олег (jr.), там регистрация требуется.
Спасибо, Алексей я забыл, выкладываю здесь:

Код:
[Выделить все]
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
namespace ToolTips{   
 public class BlockToolTip  
  {    
    public class Drawing      
  {      
      Document doc;   
         Editor ed;   
         public Drawing()      
      { 
               doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;      
          ed = doc.Editor;   
         }       
     [CommandMethod("WWS")]   
         public void StartToolTip() 
           {       
         ed.WriteMessage("\n---   To remove handler type: WWE   ---\n");   
             ed.PointMonitor += new PointMonitorEventHandler(ed_PointMonitor);  
          }   
         void ed_PointMonitor(object sender, PointMonitorEventArgs e)      
      {     
           Editor ed = (Editor)sender;        
        try          
      {               
     FullSubentityPath[] paths = e.Context.GetPickedEntities();     
               string attdata = "";     
               Transaction tr = doc.TransactionManager.StartTransaction();       
             using (tr)     
               {     
                   foreach (FullSubentityPath path in paths)          
              {             
               ObjectId[] ids = path.GetObjectIds();   
                         if (ids.Length > 0)
                            {    
                            ObjectId id = ids[0];  
                              DBObject obj = tr.GetObject(id, OpenMode.ForRead);  
                              if (obj != null)      
                          {  
                                  BlockReference bref = obj as BlockReference;   
                                 if (bref != null)    
                                {          
                              BlockTableRecord bdef = (BlockTableRecord)tr.GetObject(bref.BlockTableRecord, OpenMode.ForRead);  
                                      if (!bdef.HasAttributeDefinitions) return;  
                                      attdata = GetAttributesData(tr, bref);                             
       }                          
      }                 
           }           
             }               
         tr.Commit();     
            
   }       
             if (attdata != "")   
                     e.AppendToolTipText(attdata);  
              }    
            catch (System.Exception ex)  
              {          
          Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog(ex.Message + "\n" + ex.StackTrace); 
               }           
 }          
  string GetAttributesData(Transaction tr, BlockReference bref)     
       {           
     int mix = 24;   
             int left;       
         StringBuilder sb = new StringBuilder();     
           left = "Block:".Length;        
        sb.AppendLine(String.Format("{0}{1}\n", "Block:".PadRight(mix - 6, ' '), bref.Name));   
             var info = (from ObjectId id in bref.AttributeCollection    
                        let attref = (AttributeReference)tr.GetObject(id, OpenMode.ForRead, false)  
                          select new { key = attref.Tag, value = attref.TextString }).ToArray();  
              foreach (var item in info)     
           {          
          left = item.key.Length;      
              sb.AppendLine(String.Format("{0}{1}", item.key.PadRight(mix - left, ' '), item.value)); 
               }           
     return sb.ToString();        
    }       
     [CommandMethod("wwe")]    
        public void EndToolTip()  
          {            
    ed.TurnForcedPickOn();   
             ed.PointMonitor -= ed_PointMonitor; 
           }  
      }  
  }
}

Последний раз редактировалось Олег (jr.), 29.10.2012 в 13:30. Причина: форматирование
Олег (jr.) вне форума  
 
Непрочитано 17.09.2014, 14:33
#48
skkkk


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


Кто знает, можно ли создать свою подсказку динамического ввода, но не в момент интерактивного выбора, (как на лиспе у семейства функций get...), а после завершения команды? Некий отчет о выполнении команды на курсор повесить? Наподобие такой, какая указана на скриншоте. При некотором удалении курсора от первоначальной позиции подсказка пропадает.
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 79
Размер:	12.3 Кб
ID:	135281  
skkkk вне форума  
 
Непрочитано 17.09.2014, 18:02
#49
Do$

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


Есть сильная уверенность, что средствами NET это можно сделать.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 17.09.2014, 18:28
#50
skkkk


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


NET я не знаю. Я даже не знаю, как скомпилировать исходный код на нем Знаю только, что компилировать придется под каждую версию Автокада.
Можно ли в NET создавать функции с аргументами и вызывать их из лиспа?
skkkk вне форума  
 
Непрочитано 17.09.2014, 19:28
#51
Дима_

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Можно ли в NET создавать функции с аргументами и вызывать их из лиспа?
Да (кажется начиная с 2007 версии).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 17.09.2014, 21:37
#52
skkkk


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


Сейчас не могу себе позволить осваивать NET. Да и это первый случай за 5 лет, когда возможностей лиспа нам не хватило. Мне даже удалось написать аналог ssget со своим приглашением, висящим на курсоре (выложу как допилю), но это, похоже, потолок.
Остается надеяться, что звезды повернуться лицом, и кто-то сможет написать такую прогу на NET. Буду очень признателен.
Алгоритм вижу таким: вызываем функцию с аргументом-строкой - и на курсоре висит эта строка до тех пор, пока курсор не переместится примерно на 1/10 экрана. При этом можно вызвать другую команду - тогда подсказка пропадает тоже. Все как в случае на миниатюре в #48.
Я заметил, что такая подсказка с восклицательным знаком появляется лишь при некоторых ошибках. Например, при неверно введенной команде или при ошибке печати. Функция *error* сообщение на курсор не вешает. Семейство vl-catch-... - тоже. Значит, похоже, это какой-то обработчик ошибок на NET или С++?
skkkk вне форума  
 
Непрочитано 17.09.2014, 23:29
#53
Кулик Алексей aka kpblc
Moderator

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


По-моему, Евгений Елпанов то ли у себя на сайте, то ли на theswamp.org показывал решение задачи "текст на курсоре". Решалось через grread и grvecs, если я не ошибаюсь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.09.2014, 00:35
#54
gomer

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


лучше б полезное чего написали, какой прок с этих шарфов?
gomer вне форума  
 
Непрочитано 18.09.2014, 01:20
#55
skkkk


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


Кулик Алексей aka kpblc, видел, и это видел, да не то это все. Это дополнительные подтверждения-клики нужны, чтоб эту подсказку закрыть, да и этот "грвекс" мельтишит как-то, мерцает, работает, только если двигаться и проч. В таком ракурсе ничего не мешает просто выдать подсказку той же getpoint - тот же клик, чтоб закрыть подсказку. Лучший вариант, на мой взгляд, это тот, который я хочу
Цитата:
Сообщение от gomer Посмотреть сообщение
какой прок с этих шарфов?
Я в свое время пропустил здесь все обсуждения динамического ввода, голосования всякие, и не высказался... Как-то я прикидывал, что за рабочий день мышка проектировщика пробегает по экрану порядка трех километров. Из них больше половины - это движение к панелям и обратно, к эпицентру событий. Я приучился к иному методу работы. Все нужные команды я контекстозависимо вывожу в динамическом вводе (выпадающем меню) под курсор. Ну и подсказки, соответственно, тоже удобно видеть в эпицентре. На многокнопочной мышке есть стрелка вниз, а значит - и все опции команд. И стрелка вверх, а значит - и последние команды. Клавиатура - только для ввода текстовых строк и числовых значений. Редко - кнопки или меню. Все бы хорошо, но вот результаты работы команды выводить на курсор не выходит без дополнительных кликов.
По мне, так очень полезные шарфики. Иной подход, но применимый, пожалуй, не во всех сферах проектирования.

Последний раз редактировалось skkkk, 18.09.2014 в 01:26.
skkkk вне форума  
 
Непрочитано 18.09.2014, 15:21
#56
Do$

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


Вроде получается довольно красиво:
https://screencast.autodesk.com/main...f-1d741054a77d
Под какой автокад надо?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 18.09.2014, 15:44
#57
skkkk


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


Do$, 2011

----- добавлено через ~2 мин. -----
Да, действительно, красиво!
skkkk вне форума  
 
Непрочитано 18.09.2014, 17:31
#58
Do$

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


Под 2011 не писал раньше, так что может получиться не так красиво, как на видео

Загружаете нужную DLL с помощью команды NETLOAD. После этого будут доступны две LISP функции:
1.
(do$-show-cursor-message text length)
text - Текст, который должна отображать подсказка. Строка.
length - Длина пути в единицах чертежа, которую должен пройти курсор, чтобы подсказка исчезла. Целое или вещественное число.

2.
(do$-stop-show-cursor-message)
Принудительное гашение подсказки на всякий случай.

Пробуйте.
Вложения
Тип файла: rar Acad2011x86.rar (4.3 Кб, 19 просмотров)
Тип файла: rar Acad2011x64.rar (4.3 Кб, 20 просмотров)
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 18.09.2014 в 17:58. Причина: Подправил библиотеки.
Do$ вне форума  
 
Непрочитано 18.09.2014, 18:31
#59
skkkk


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


Не выходит у меня чего-то. Ввожу _netload, загружаю файл х64, в комстроке - ничего. Абсолютно ничего. Вызываю функцию - тоже ничего. Даже сообщения об ошибке. Но если функцию ввести неправильно или аргумент не такой задать, то сообщение об ошибке в комстроке есть. Значит функция грузится, но не работает. Не появляется шарфик. Может переменные?
skkkk вне форума  
 
Непрочитано 18.09.2014, 18:41
#60
Do$

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Ввожу _netload, загружаю файл х64, в комстроке - ничего. Абсолютно ничего
Это нормально.
Цитата:
Сообщение от skkkk Посмотреть сообщение
Вызываю функцию - тоже ничего. Даже сообщения об ошибке.
(do$-show-cursor-message "Привет мир!" 50.0) <- попробуйте число побольше задать, может быть масштаб большой, подсказка исчезает не успев появиться.
Цитата:
Сообщение от skkkk Посмотреть сообщение
Может переменные?
Очень маловероятно.
P.S. Мне, к сожалению, не на чем проверять. Поэтому, могу только гадать .
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 18.09.2014, 19:49
#61
skkkk


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


Появилась все-таки подсказка, только она появляется при вызове следующей команды, а не сразу при вызове, причем поверх подсказки динамического ввода, поверх даже этого окна браузера. И добросовестно не исчезает, пока по окошку Автокада не отбегаешь заданное число единиц. Я еще от души, 5000 задал
skkkk вне форума  
 
Непрочитано 18.09.2014, 21:42
#62
Do$

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


Забавно конечно :-) Но непонятно, почему так. В 2014 очень хорошо работает.
P.S.
Установил дома 2011 версию, проверил - все в порядке. Пробуйте менять аргументы и убедитесь, что нормально работает. Длину "пробега" можно вычислять в LISP коде исходя из масштаба чертежа и пр. факторов. Если нужно экстренно завершить показ - пользуйтесь второй функцией.
Убрал у окошка функцию "поверх всех окон", немного причесал методы.
Вложения
Тип файла: zip Acad2011x64.zip (4.2 Кб, 23 просмотров)
Тип файла: zip Acad2011x86.zip (4.3 Кб, 19 просмотров)
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 18.09.2014 в 22:45.
Do$ вне форума  
 
Непрочитано 18.09.2014, 23:35
#63
skkkk


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


Offtop: Do$, может, на "ты"? Я еще не очень старый
Проверил еще на одном 2011-м - то же самое. У меня выходит как на скринах: подсказка появляется при повторе команды, которая была запущена перед (do$-show-cursor-message "Привет мир! 100) или при начале выбора рамкой. Как только не менял аргументы, все также.
Может, все-таки сверить переменные? Можешь, пожалуйста, сохранить все из 2011-го (или хотя бы из 2014-го) и сюда приложить (команда _sysvdlg)?
Я сравню их в блокноте со своими.
Да, и спасибо тебе огромное, Do$, в любом случае. Offtop: Буду в Питере - с меня ящик
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 52
Размер:	9.3 Кб
ID:	135363  Нажмите на изображение для увеличения
Название: Снимок2.PNG
Просмотров: 43
Размер:	8.9 Кб
ID:	135364  

Последний раз редактировалось skkkk, 19.09.2014 в 00:03.
skkkk вне форума  
 
Непрочитано 19.09.2014, 10:20
#64
Do$

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


Да, есть такая беда. Окошко появляется не сразу после вызова команды, а только если хотя бы чуть-чуть сдвинуть курсор. В тестах это незаметно, только когда "в боевых условиях" используешь. Решение есть, но имеется некоторая проблема с вычислением положения подсказки, если курсор не двигается. Попробую разобраться с ней.
Точно тебе говорю, переменные тут не при чем
Offtop: Ящика много, можно просто по бутылочке пропустить в рамках AU2014
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 19.09.2014, 11:12
#65
skkkk


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Окошко появляется не сразу после вызова команды, а только если хотя бы чуть-чуть сдвинуть курсор.
В том-то и дело, что не достаточно просто сдвинуть курсор. Нужно вызвать другую команду или начать выбор рамкой. Только тогда оно появляется. А я бы хотел, чтоб оно появлялось у курсора при неактивной команде. Вроде, на твоем видео так и есть. Я не умею делать видеозахват. Какая это прога у тебя делает?
skkkk вне форума  
 
Непрочитано 19.09.2014, 13:40
#66
Do$

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


Смотря еще как ты это в LISP прописал...
В общем, получилось добиться корректного поведения благодаря этим ресурсам:
http://www.theswamp.org/index.php?topic=43077.0
http://bushman-andrey.blogspot.ru/2012/10/autocad.html
Добавил 2 аргумента - отступы от курсора влево и вниз в пикселях:
Код:
[Выделить все]
 (defun c:cursortest ()
  (setq pt1 (getpoint "\nУкажите первую точку: "))
  (setq pt2 (getpoint pt1 "\nУкажите вторую точку: "))
  (entmakex (list (cons 0 "Line")
		  (cons 10 pt1)
		  (cons 11 pt2)
	    )
  )
  (do$-show-cursor-message "Построена линия" (/ (getvar "viewsize") 2) 25.0 25.0)
)
https://screencast.autodesk.com/main...b-ef4be83fbcb2
Цитата:
Я не умею делать видеозахват. Какая это прога у тебя делает?
Есть много вариантов, в том числе и бесплатных. Их легко найти в гугле Есть даже онлайн-видеозахватчики.
Я пользуюсь специальным приложением от Autodesk Screencast
Вложения
Тип файла: rar Acad2011x86.rar (3.8 Кб, 17 просмотров)
Тип файла: rar Acad2011x64.rar (3.7 Кб, 19 просмотров)
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 19.09.2014 в 14:00.
Do$ вне форума  
 
Непрочитано 19.09.2014, 14:29
#67
skkkk


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Смотря еще как ты это в LISP прописал...
Да, собственно, в лисп еще не прописывал, а пока просто вбивал в комстроку, но рассчитывал именно по такому принципу прописывать.
Загрузил последнюю сборку. Offtop: Кстати, у меня х64 система, неудобно тебя "заставлять" два файла компилировать, ты уж прости, что сразу не уточнил, ступил.
Теперь подсказка появляется сразу, но за курсором не бегает, а начинает бегать только если запустить другую команду или рамку выбора. А по-хорошему, нужно, чтоб при нажатии любой кнопки (мыши, клавиатуры) она исчезала.
Почему, интересно, так? Весь мозг сломал, чем могут отличаться два 2011-х Автокада? Или системы? У меня Win7 Ultimate x64.
skkkk вне форума  
 
Непрочитано 19.09.2014, 15:02
#68
Do$

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


За курсором не бегает? Хм... Надо видео.
Я не компилирую 2 раза, настроил так, что сразу под 3 версии делаются сборки (2011 х86, 2011 х64, 2014 х64).
А если те же самые манипуляции делать, что у меня на видео? Так же отрабатывает или нет?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 19.09.2014, 15:59
#69
skkkk


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
А если те же самые манипуляции делать, что у меня на видео? Так же отрабатывает или нет?
Нет. Делаю все то же, появляется после отрисовки линии подсказка и стоит на месте. Курсор - квадрат с крестом, ходит как положено, но подсказка стоит. Если кликаю по экрану, левой кнопкой, начинается рамка - подсказка побежала, за курсором, накрывая надпись "Противоположный угол". Завершаю выбор рамкой кликнув еще раз левой - подсказка опять замирает. То же самое, если вместо рамки команда, например, та же _LINE. В предыдущих сборках подсказка даже не появлялась сразу - только после начала выбора рамкой или вызова команды.
Видео смогу позже только снять
skkkk вне форума  
 
Непрочитано 19.09.2014, 16:05
#70
Do$

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


А вот тут уже может быть какая-то переменная... Навскидку не помню, но вроде есть какая-то, которая отслеживание курсора регулирует. У меня AutoCAD 2011 только на домашнем компьютере, так что только вечером смогу потестировать на нем.
Хотя, появилась и другое предположение. В общем, дома буду проверять.
Придумал еще интересную фишку - управление расположением подсказки с помощью знаков аргументов отступа.
(do$-show-cursor-message "Построена\nлиния" 50.0 20.0 20.0) - вид подсказки '1' (см. рисунок)
(do$-show-cursor-message "Построена\nлиния" 50.0 -20.0 20.0) - вид подсказки '2'
(do$-show-cursor-message "Построена\nлиния" 50.0 -20.0 -20.0) - вид подсказки '3'
(do$-show-cursor-message "Построена\nлиния" 50.0 20.0 -20.0) - вид подсказки '4'
Тогда можно будет располагать ее так, чтобы не перекрывать другие полезные окна.
Миниатюры
Нажмите на изображение для увеличения
Название: ToolTipPosition.png
Просмотров: 42
Размер:	8.5 Кб
ID:	135420  
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 19.09.2014 в 16:31.
Do$ вне форума  
 
Непрочитано 19.09.2014, 17:23
#71
skkkk


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Придумал еще интересную фишку - управление расположением подсказки с помощью знаков аргументов отступа.
Так весь смысл в том, чтоб эта подсказка была в тот момент, когда не активна ни одна команда и у курсора ничего нет. В остальных случаях подсказку можно вызвать лиспом всегда: будь-то запрос точки, строки, объекта, объектов и прочего. А то, что она сможет менять положение, это хорошо. Еще бы вывести в аргументы цвет и высоту текста и окна... Было б вообще супер!
skkkk вне форума  
 
Непрочитано 19.09.2014, 20:53
#72
Do$

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Теперь подсказка появляется сразу, но за курсором не бегает, а начинает бегать только если запустить другую команду или рамку выбора.
Цитата:
Сообщение от Do$ Посмотреть сообщение
В общем, дома буду проверять.
Проверил. Автокад 2011 сп 2 x64 русский. Виндовс 7 x64 профессиональная.
https://screencast.autodesk.com/main...1-4651571e3a39
Проблем нет никаких
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 20.09.2014, 00:33
#73
skkkk


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


Удалил все из автозапуска, думал, конфликтует что-либо - не помогло. Проверил на одном ноуте, там 2011-й с настройками по умолчанию - работает на ура!!! На том компе, что я пробовал, настройки были импортированы с моего компа. Значит дело в настройках. Или переменных. Сохранил список переменных и там и там, вывел на сравнение в Notepad++. Отличаются порядка 50-ти переменных. Сейчас исключу те, которые знаю, остальные попробую поочередно менять. Пока больше мыслей никаких нет.
Вот и думай потом, как перелезать на NET... С лиспами очень редкий вариант, что не заработает в какой-то другой версии, а тут вон ведь как...

----- добавлено через ~42 мин. -----
Нашел!!!
Эта переменная ROLLOVERTIPS.
Я ролловеры отключаю за ненадобностью. Ну не нужны они. Малоинформативные на мой взгляд.
Можно перед вызовом ее включать, затем сразу отключать обратно. Здорово! Не, это точно ящик
Просьбы по доработке:
1. Чтоб окошко пропадало при нажатии чего угодно, а не только по факту пройденного пути. Можно конечно, его спрятать за подсказкой динввода, благо оно стало не поверх всех окон.
2. Добавить в аргументы цвет и размер текста и рамки - это если возможно.
Спасибо, Do$!!!

----- добавлено через ~43 мин. -----
Пойду спать довольный
skkkk вне форума  
 
Непрочитано 20.09.2014, 09:48
#74
Do$

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


skkkk, отличная работа
Очень странно, конечно, что такая "второсортная" настройка влияет на такой важнейший функционал, как отслеживание положения курсора. Надо будет проверить это на последних версиях...
По доработке.
1. Событие "нажатие чего угодно" я не смог пока отследить. Как альтернатива - событие запуска команды или таймер. Подойдет?
2. Это, думаю, получится.
В общем, попробую в ближайшее время доработать, но не знаю когда, ибо выходные и все такое
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 21.09.2014, 00:47
#75
skkkk


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Очень странно, конечно, что такая "второсортная" настройка влияет на такой важнейший функционал, как отслеживание положения курсора.
Я так понял, созданное тобой окошко использует те же методы, что и окошко ролловеров. Цвет у них один. Как оказалось, и переменная одна за них отвечает. Только странно, что при отключенной переменной окошко все равно появляется, только ведет себя неадекватно. В общем, я поснимал в адаптации все галочки на ролловерах, а переменную включил. Теперь все как надо.
skkkk вне форума  
 
Непрочитано 21.09.2014, 11:57
#76
Do$

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


Тут такое дело... Решил исследовать обнаруженную проблему. Но у меня фокус с ROLLOVERTIPS не воспроизводится даже в 2011
https://screencast.autodesk.com/main...0-db8136da71c3
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 21.09.2014, 13:35
#77
Александр Ривилис

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Тут такое дело... Решил исследовать обнаруженную проблему. Но у меня фокус с ROLLOVERTIPS не воспроизводится даже в 2011
Сравните установленные SP для AutoCAD 2011.
Александр Ривилис вне форума  
 
Непрочитано 22.09.2014, 12:19
#78
Do$

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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Сравните установленные SP для AutoCAD 2011.
Цитата:
Сообщение от Do$ Посмотреть сообщение
Автокад 2011 сп 2 x64 русский. Виндовс 7 x64 профессиональная.
Александр Наумович, это предположение, или Вам известны какие-то проблемы с обновлениями 2011 версии?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 22.09.2014, 13:23
#79
Александр Ривилис

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Александр Наумович, это предположение, или Вам известны какие-то проблемы с обновлениями 2011 версии?
Это интуиция помноженная на смутное воспоминание об исправленной ошибке в AutoCAD 2011. Кстати, тут неплохо бы уточнить используется ли чистый AutoCAD или вертикалка - это тоже может быть существенным.
Александр Ривилис вне форума  
 
Непрочитано 22.09.2014, 13:49
#80
Do$

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


Да обычный автокад, не вертикалка. Единственое, я не ручаюсь, что у меня дистрибутив официальный. Был уверен, что официальный можно скачать не позднее 2012 версии, поэтому устанавливал с диска из "старых запасов", на котором было указано "2011SP2RUS"
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 23.09.2014, 00:48
#81
skkkk


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


У меня тоже голый, SP2. Никаких дополнений и довесков, только лиспы и те из автозагрузки удалил.
skkkk вне форума  
 
Непрочитано 23.09.2014, 01:45
#82
Do$

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


Вроде бы получилось гасить подсказку по нажатию кнопок мыши и клавиш. Пробуй
Вложения
Тип файла: zip Acad2011x64.zip (4.3 Кб, 25 просмотров)
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 23.09.2014, 03:01
#83
skkkk


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
у меня фокус с ROLLOVERTIPS не воспроизводится
Чудеса. Всё одинаково, но все по-разному... Ну, я позже смогу проверить на том ноуте, на котором изначально все работало, отпишусь. Может, там еще какая переменная. Или ленточный интерфейс как-то влияет, хотя прямой зависимости я не обнаружил, включив ленту. Сам пользуюсь до сих пор классикой.
Цитата:
Сообщение от Do$ Посмотреть сообщение
Вроде бы получилось гасить подсказку по нажатию кнопок мыши и клавиш
Проверил. Гасится. Но... Нажатие, например, левой кнопки мыши гасит подсказку и всё. Рациональней было бы, чтоб по нажатию левой кнопки начиналась рамка выбора, а по нажатию кнопки с буквой эта буква сразу появлялась в командной строке. В этом смысле для меня предпочтительней предыдущий вариант, поскольку там наше окошко можно спрятать за окном динввода. Как-то неправильным это кажется, но работает чётко, особенно если подобрать правильные координаты окошка и размер окошка динввода.
Уже сколько программ сам понаписал, а до сих пор наивно полагал, что такая простая на первый взгляд функция не должна была вызвать столько проблем, и что в ней будет столько нюансов. Однако.... Виноват. Каюсь. ТЗ было мною составлено плохо . Но я повторюсь, что идеальным мне кажется поведение окошка, возникающего при вводе неверной команды. Только восклицательный знак не обязателен, хотя признаюсь, и его хотелось бы иметь в качестве аргумента и при надобности вызывать окно с ним. Или другим цветом. Красным, например, в случае ошибки. Но это уже, конечно, блажь - удобно, но можно обойтись. Уже вот несколько дней пользуюсь твоим предыдущим вариантом, балдею и вспоминаю тебя добрым словом. Еще раз большое тебе спасибо, Do$!
skkkk вне форума  
 
Непрочитано 23.09.2014, 09:45
#84
Do$

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Проверил. Гасится. Но... Нажатие, например, левой кнопки мыши гасит подсказку и всё. Рациональней было бы, чтоб по нажатию левой кнопки начиналась рамка выбора, а по нажатию кнопки с буквой эта буква сразу появлялась в командной строке.
Ну это легко настраивается. Я почему-то подумал, что так будет удобнее
Цитата:
Сообщение от skkkk Посмотреть сообщение
Только восклицательный знак не обязателен, хотя признаюсь, и его хотелось бы иметь в качестве аргумента и при надобности вызывать окно с ним.
Подумаю над этим.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 27.09.2014, 01:23
#85
Do$

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


Новый вариант функции:
(do$-show-cursor-message message distance imgType offsetX offsetY fontSize fontColorIndex)
message - текст подсказки (обязательный аргумент), строка
distance - длина пробега курсора в единицах чертежа, пока не пропадет подсказка (обязательный аргумент), положительное вещественное число
imgType - тип изображения (необязательный аргумент), целое число:
0 - без изображения (по умолчанию),
1 - "внимание"
2 - "ошибка"
3 - "информация"
offsetX, offsetY - отступы подсказки от курсора по X вправо и по Y вниз соответственно в пикселях (необязательные аргументы), вещественное число. Знаком числа можно управлять положением подсказки относительно курсора. По умолчанию равны 20.
fontSize - высота текста подсказки (необязательный аргумент), вещественное положительное число. Если равно 0,0 - высота текста принимается по умолчанию (из настроек системы наверное).
fontColorIndex - индекс цвета текста подсказки (необязательный аргумент), целое число от 0 до 255 - соответствуют индексированным цветам AutoCAD. Если равно 0 - цвет текста принимается по умолчанию (из настроек системы наверное).

Сильно не тестировал, но, по идее, должно хорошо работать Проверяй.

Лисп для тестов:
Код:
[Выделить все]
  (defun c:cursortest ()
  (setq pt1 (getpoint "\nУкажите первую точку: "))
  (setq pt2 (getpoint pt1 "\nУкажите вторую точку: "))
  (entmakex (list (cons 0 "Line")
		  (cons 10 pt1)
		  (cons 11 pt2)
	    )
  )
  (do$-show-cursor-message "Построена линия" (/ (getvar "viewsize") 2) 0 25.0 -25.0 15.0 178)
)
Вложения
Тип файла: zip Acad2011x64.zip (21.4 Кб, 18 просмотров)
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 28.09.2014, 02:16
#86
skkkk


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


Do$, просто супер!!! Основательно потестировал - багов не обнаружил. Кроме одного. Если задать вместо строки, например, переменную, которая не определена, Автокад вылетает с фатальной ошибкой. Этого можно избежать, не допуская попадания в аргументы "не строки", меня не парит, это я так, для порядку. А в остальном - все, как я и хотел. Даже больше, чем я ожидал! Отличная идея насчет нескольких вариантов изображений - точно приживется.
Спасибо тебе огромное!!! Долго думал, чего в программе может не хватать - придумал только одно: вывести в аргумент цвет фона подсказки. Это возможно? Больше, по-моему, туда уже ничего не впихнуть
Получилось своеобразное дополнение princ с функцией вывода под курсор. Уже в пяти моих функциях успешно вещает мне результаты проделанной работы
skkkk вне форума  
 
Непрочитано 29.09.2014, 10:13
#87
Do$

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


Пожалуйста!
Цитата:
Сообщение от skkkk Посмотреть сообщение
Отличная идея насчет нескольких вариантов изображений - точно приживется.
Ну это не моя идея, то же самое реализовано в стандартных методах вывода сообщений в Windows. Я просто сделал по аналогии.
Цитата:
Сообщение от skkkk Посмотреть сообщение
Если задать вместо строки, например, переменную, которая не определена, Автокад вылетает с фатальной ошибкой.
Цитата:
Сообщение от skkkk Посмотреть сообщение
Долго думал, чего в программе может не хватать - придумал только одно: вывести в аргумент цвет фона подсказки. Это возможно?
Попробую разобраться на досуге.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 30.09.2014, 11:05
#88
skkkk


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Ну это не моя идея, то же самое реализовано в стандартных методах вывода сообщений в Windows
Но это же ты придумал внедрить это в программу, а не дядюшка Билл. Стало быть, тебе хвала и почет!
skkkk вне форума  
 
Непрочитано 30.09.2014, 14:56
#89
gomer

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Стало быть, тебе хвала и почет!
Славу в карман не положишь...
gomer вне форума  
 
Непрочитано 01.10.2014, 06:06
#90
skkkk


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


Offtop:
Цитата:
Сообщение от gomer Посмотреть сообщение
Славу в карман не положишь...
Тут точнее подскажет дядюшка Билл
Иной раз осознаешь, что ты во власти живого труднообъяснимого интереса, рождаемого некой кем-то поставленной задачей. Когда понимаешь, что эта задачка тебе по зубам, жадно вгрызаешься в нее, погружаешься в процесс мышления, и вот оно уже решение, вертится где-то на кончике языка... В общем, у меня такое со школы. Кто знает, тот поймет Дополнительно подстегивает то, что эта задача реальна и жизненна, и кому-то это может быть полезным. В таких случаях очень приятно и вполне достаточно (сужу по себе) получить простое спасибо от радостного человека, от такого, каким был я, когда мне мне здесь впервые решили мою задачку. Главное, чтоб это было в кайф, и не заняло, месяцы работ. А вот тогда кто знает, положишь ли или не положишь
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > создание собственной подсказки

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание собственной панели инструментов к AutoCAD-у Supermax Программирование 43 18.11.2009 12:01
Создание собственной системы координат для растрового изображения зюс AutoCAD 4 06.05.2009 21:52
Создание собственной текстуры и добавление в Revit Scrubber Revit 14 05.02.2009 15:19
создание собственной подписи??? Робин Бобин Разное 36 17.12.2007 17:15
Создание всплывающей подсказки? draft AutoCAD 5 08.01.2007 17:15