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

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

Страницы: [1] 2 3 ... 10
1
AutoCAD .NET API / Re: Ошибка при открытии файла
« Последний ответ от Derie1 23-04-2025, 15:53:21 »
Раз вы документы открываете, а не просто базу данных чертежа, то команда должна быть помечена как CommandFlags.Session.
И далее, прежде чем что-то менять документ надо заблокировать doc.LockDocument.
Это помогло. Спасибо. И дополнительное спасибо за быстрый ответ  :)
2
AutoCAD .NET API / Re: Ошибка при открытии файла
« Последний ответ от avc 23-04-2025, 15:39:45 »
Раз вы документы открываете, а не просто базу данных чертежа, то команда должна быть помечена как CommandFlags.Session.
И далее, прежде чем что-то менять документ надо заблокировать doc.LockDocument.
3
AutoCAD .NET API / Ошибка при открытии файла
« Последний ответ от Derie1 23-04-2025, 15:31:45 »
Привет форумчанам.
Обыскал весь интернет, изнасиловал CatGPT (или он меня...) но так и не пойму в чем проблема и как решить.

Я хочу написать команду которая при запуске должна открывать определенный файл dwg (некий шаблон), выполнять в нем некоторые действия и предлагать пользователю сохранить его под новым именем. При этом запуск команды осуществляется из некого другого открытого документа.
Мой код открывает нужный файл-шаблон, но дальне при попытке что-то сделать выскакивает ошибка "Autodesk.AutoCAD.Runtime.Exception: eLockViolation". Я так понимаю, что только что открытый файл не становится текущим, и как это исправить я не разберусь.

Код моего скрипта:
Код - C [Выбрать]
  1. namespace SLDBuilder_2
  2. {
  3.     public class RunSLDbuilder : IExtensionApplication
  4.     {
  5.         [CommandMethod("sldbuilder")]
  6.         public void RunSLD()
  7.         {
  8.             Document currentDoc = Application.DocumentManager.MdiActiveDocument;
  9.             Database currentDataBase = currentDoc.Database;
  10.             Editor currentEditor = currentDoc.Editor;
  11.             currentEditor.WriteMessage("\nSLD Builder started...");
  12.  
  13.             string dwgFilePath = @"C:\Users\11177\Documents\SLDBuilder_2\_test\SLD_template_EN.dwg";
  14.             string dwgFileName = Path.GetFileName(dwgFilePath);
  15.             Document dwgDoc = Application.DocumentManager.Open(dwgFilePath, false);
  16.             Application.DocumentManager.MdiActiveDocument = dwgDoc; // Эту строчку советует добавить Copilot, но это ничего не меняет.
  17.  
  18.             Database newDatabase = dwgDoc.Database;
  19.             Editor newEditor = dwgDoc.Editor;
  20.             using (Transaction tr = newDatabase.TransactionManager.StartTransaction())
  21.                 {
  22.                     BlockTable blockTable = (BlockTable)tr.GetObject(newDatabase.BlockTableId, OpenMode.ForRead);
  23.                     BlockTableRecord modelSpace = (BlockTableRecord)tr.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
  24.  
  25.                     Line line = new Line();
  26.                     line.StartPoint = new Point3d(-100, -100, 0);
  27.                     line.EndPoint = new Point3d(100, 100, 0);
  28.                     line.ColorIndex = 7;
  29.  
  30.                     ObjectId objectIdLine = modelSpace.AppendEntity(line);
  31.                     tr.AddNewlyCreatedDBObject(line, true);
  32.  
  33.                     tr.Commit();
  34.                 }
  35.         }
  36.  
  37.         public void Initialize()
  38.         {
  39.             Editor editor = Application.DocumentManager.MdiActiveDocument.Editor;
  40.             editor.WriteMessage("\nSLD Builder loaded...");
  41.         }
  42.  
  43.         public void Terminate()
  44.         {
  45.  
  46.         }
  47.     }
  48. }
  49.  
4
AutoLisp / VisualLISP и DCL / Re: координаты области выбора
« Последний ответ от altver 18-04-2025, 20:13:21 »
отлично!
СПАСИБО!.
 (ssnamex) - ТО, ЧТО  НАДО!!!
5
Впрочем посмотри описание и примеры использования функции (ssnamex)
6
В такой постановке вопроса ответ - нет.
Можно средтвами ObjectARX и (кажется) AutoCAD.NET API
7
AutoLisp / VisualLISP и DCL / координаты области выбора
« Последний ответ от altver 18-04-2025, 18:44:01 »
Добрый день, господа!
вопрос такой:
выбираю объекты "Select Objects"  прямоугольной областью,
необхоимо получить координаты всех 4-х углов области.
Возможно ли через лисп?
Заранее блгодарен!
8
В общем, вся проблема оказалась в том, что атрибут для первого состояния видимости отмечен в определении блока как постоянный.
Прилагаю файл. В нём есть блок "Т1". В котором 3 состояния видимости (0-1-2). Для 0 и 1 состояний атрибуты помечены как постоянные, для 2-го состояния атрибут не помечен как постоянный.
В таком виде, если ставить блок для всех состояний видимости следующим кодом, то всегда будет виден только ATTR1:
Извините, вам запрещён просмотр содержимого спойлеров.

Если все атрибуты сделать непостоянными, то вставка атрибутов будет происходить в соответствие с состоянием видимости блока.
9
Можно попробовать сменить состояние видимости на начальное, добавить атрибуты и вернуть то, которое было, возможно разнести на разные транзакции.
10
Выложите пример, двух состояний блока. Естакой вот с такими атрибутами, есть такой же но тут вот так и выдеы только эти атрибуты.
Страницы: [1] 2 3 ... 10