Последние сообщения

Последние сообщения

Страницы: [1] 2 3 ... 10
1
AutoLisp / VisualLISP и DCL / Re: файл *.mnu
« Последний ответ от Алексей Кулик 29-01-2025, 21:49:21 »
В таком случае я бы попробовал сначала прописать выпадающее меню, и только потом уже - панели. Эти вещи, ЕМНИП, не сильно были связаны между собой.
P.S. Если что, при загрузке меню в последних версиях - опять же, если я правильно помню - mnu моментально превращается в cuix.
2
AutoLisp / VisualLISP и DCL / Re: файл *.mnu
« Последний ответ от altver 29-01-2025, 21:24:42 »
совсем не кончился!
прекрасно работает в 2025 версии. мне так проще
3
AutoLisp / VisualLISP и DCL / Re: файл *.mnu
« Последний ответ от Алексей Кулик 29-01-2025, 20:23:49 »
выпадающее меню берет все парамтры из панели, убрав из панели и в выпадающем меню не работает...
По-моему, наоборот. А вообще, чисто для ради интересу - а почему mnu, а не cuix? mnu же вроде чуть ли не в 2006 версии кончился.
4
AutoLisp / VisualLISP и DCL / Re: файл *.mnu
« Последний ответ от altver 29-01-2025, 20:21:14 »
если бы все было так просто!....
к сожалению так не работает...
выпадающее меню берет все парамтры из панели, убрав из панели и в выпадающем меню не работает...
5
AutoLisp / VisualLISP и DCL / Re: файл *.mnu
« Последний ответ от Алексей Кулик 28-01-2025, 17:07:51 »
А что такое "линейка инструментов"? Панель инструментов? Если да, то убрать ее упоминание из панели, оставив в выпадающем меню
P.S. C mnu уже сто лет не работал... М.б., понадобится иконки объединять в ресурсную dll
6
Ха, а в самом деле, зачем я все объекты проверяю на пересечение, если можно вызвать SelectCrossingWindow с околонулевым прямоугольником. Встроенный поиск намного быстрее. Спасибо за идею. Думаю это будет оптимально.

Ну, проверять после этого все равно приходится, так как это метод эдитора то зависит от масштабирования в этот момент и при мелком масштабе даже при околонулевом прямоугольнике (как у меня по умолчанию Tolerance.Global.EqualPoint) может навыбирать немного лишнего, видимо что-то типа попадающего в этот пиксель берет.
7
что бы весь чертеж не проверять
Ха, а в самом деле, зачем я все объекты проверяю на пересечение, если можно вызвать SelectCrossingWindow с околонулевым прямоугольником. Встроенный поиск намного быстрее. Спасибо за идею. Думаю это будет оптимально.
8
Ну я собственно пошел как и все через поиск объектов в точке клика, только, только через немного другой метод что бы весь чертеж не проверять, ну и заодно фильтры что бы работали, вроде работает норм

Код - C# [Выбрать]
  1. public static bool TryGetPointFromUser(out Point3d result, bool inWCS, string message, Point3d? point)
  2. {
  3.     Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
  4.     PromptPointOptions ppo = new PromptPointOptions("\n" + message);
  5.     if (point.HasValue)
  6.     {
  7.         ppo.BasePoint = point.Value;
  8.         ppo.UseBasePoint = true;
  9.     }
  10.     while (true)
  11.     {
  12.         PromptPointResult res = ed.GetPoint(ppo);
  13.         if (res.Status == PromptStatus.Cancel)
  14.         {
  15.             result = Point3d.Origin;
  16.             return false;
  17.         }
  18.         else if (res.Status == PromptStatus.OK)
  19.         {
  20.             result = res.Value;
  21.             if (inWCS) result = result.TransformBy(ed.CurrentUserCoordinateSystem);
  22.             return true;
  23.         }
  24.     }
  25. }
  26.  
  27. public static bool GetObjectInPoint(out List<ObjectId> result, List<Type> types, string message, List<ObjectId> excludes, Point3d? point = null, double? precision = null)
  28. {
  29.     result = new List<ObjectId>();
  30.  
  31.     Point3d clickPoint;
  32.  
  33.     while (true)
  34.     {
  35.  
  36.         if (point.HasValue) clickPoint = point.Value;
  37.         else if (!TryGetPointFromUser(out clickPoint, false, message, null)) return false;
  38.  
  39.         if (precision == null) precision = Tolerance.Global.EqualPoint;
  40.  
  41.         string typeString = "";
  42.         foreach (Type type in types)
  43.         {
  44.              if (type.Equals(typeof(ProxyEntity)))
  45.             {
  46.                  typeString += "ACAD_PROXY_ENTITY,";
  47.                  continue;
  48.             }
  49.             typeString += RXClass.GetClass(type).DxfName + ",";
  50.         }
  51.         if (typeString.Length > 1) typeString = typeString.Substring(0, typeString.Length - 1);
  52.         //выбираем типы для множественного выбора
  53.         TypedValue[] values = new TypedValue[]
  54.         {
  55.             new TypedValue((int)DxfCode.Start,typeString)
  56.         };
  57.  
  58.         //объявляем фильтр
  59.         SelectionFilter filter = new SelectionFilter(values);
  60.         //создаем точки для выбора объектов в области
  61.         Point3d pt1 = new Point3d(clickPoint.X - precision.Value, clickPoint.Y - precision.Value, 0);
  62.         Point3d pt2 = new Point3d(clickPoint.X + precision.Value, clickPoint.Y + precision.Value, 0);
  63.         //выбираем объекты в области вокруг выбранной точки
  64.         PromptSelectionResult psr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager
  65.             .MdiActiveDocument.Editor.SelectCrossingWindow(pt1, pt2, filter);            
  66.  
  67.         if (psr.Value != null)
  68.         {
  69.             if (excludes != null) result.AddRange(psr.Value.GetObjectIds().Except(excludes));
  70.             else result.AddRange(psr.Value.GetObjectIds());
  71.             return true;
  72.         }
  73.     }        
  74. }
9
avc,
Простейший вариант перед GetEntity послать в командную строку ключевые слова привязок (через SendStringToExecute). Они сработают как раз при выборе объекта.
Альтернативный вариант - получить точку с учетом привязок. В ObjectARX это делается при помощи acedOsnap.
Как в .NET не помню и возможности посмотреть сейчас нет. В крайнем случае воспользуешься P/INVOKE.
Или всё-таки это Editor.Snap
10
Зато Скайнет нам пока не грозит
грозит но в более плохом виде, чем описано в фантастике:
1. Люди создали огромный дата центр, который контролирует все и заменяет многое.
2. Люди потеряли работу и мировая экономика схлапывается.
3. Человечество "деградирует".
4. Некому обслуживать дата центр, нет того, кто понимает где и как его обучать.
5. Стоит огромная ржавая развалина поросшая растительностью, вокруг пастухи пасут коз, охотники охотятся с луком на зайцев.
...все быстро меняется. Все что не успевает подстроиться под изменения пропадет.

Как мне видится проблемы:
1. ИИ интересен в первую очередь тем, кто производит оборудование и ИИ модели+агрессивный маркетинг.
2. ИИ позволит сделать огромный прогресс в определенных областях но дальше все успокоятся. Как с полетами в космос, побаловались, пофантазировали. Дальше интересненько, но дорого.
3. ИИ может не все, с точки зрения генерации кода. Представьте себе запросы: "Сделай мне виндовс", "Напиши автокад", "Мне нужен фотошоп". Страшно представить результат работы ИИ по абстрактному запросу. В итоге ТЗ - многотомное сочинение? Чем это лучше сегодняшнего подхода с языками программирования? А самое главное как менять код, каждый раз генерировать по новому из многотомного запроса и получать различные варианты?  Тут явно требуется смешанный подход.
4. Изменения. Как мы видим меняются архитектуры процессоров, языки программирования, API. и т.д. и процессу нет конца. ИИ могут обучать только опытные люди, в самообучающееся ИИ я лично не верю.
Страницы: [1] 2 3 ... 10