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

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

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

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

Как создать подсказку для блока, например, которая будет выводиться при наведении на этот блок? Подобная тема поднималась раньше, но там упоминаются команды note и T2N, а ссылки, где их взять - недоступны. Может, у кого есть?
Спасибо
Просмотров: 19226
 
Автор темы   Непрочитано 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,432


Олег (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,432


По-моему, Евгений Елпанов то ли у себя на сайте, то ли на 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$ вне форума  
Ответ
Вернуться   Форум 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