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

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

Страницы: 1 [2] 3 4 ... 10
11
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от Electric 08-02-2026, 14:35:25 »
Другой вопрос.
В python при работе через win32com  я достаточно просто получал имена блока, выделенного мышью:

Код - Python [Выбрать]
  1. realName = block.Name
  2. effectiveName = block.EffectiveName

Как в  одну строку получить EffectiveName блока на C# ?

Я попробовал такой код:

Код - C# [Выбрать]
  1. // БЛОКИ
  2.                             else if (entity is BlockReference block)
  3.                             {
  4.  
  5.                                 // Получаем EffectiveName в одну строку
  6.                                 string effectiveName = ((BlockTableRecord)tr.GetObject(block.DynamicBlockTableRecord, OpenMode.ForRead)).Name;
  7.  
  8.                                 data.BlockData = new BlockData
  9.                                 {
  10.                                     Name = block.Name, // Оригинальное имя
  11.                                     BlockName = effectiveName, // EffectiveName
  12.                                     InsertionPoint = new Point3dData
  13.                                     {
  14.                                         X = Math.Round(block.Position.X, 3),
  15.                                         Y = Math.Round(block.Position.Y, 3),
  16.                                         Z = Math.Round(block.Position.Z, 3)
  17.                                     },
  18.                                     Rotation = Math.Round(block.Rotation, 6),
  19.                                     XScaleFactor = Math.Round(block.ScaleFactors.X, 3),
  20.                                     YScaleFactor = Math.Round(block.ScaleFactors.Y, 3),
  21.                                     Attributes = new List<AttributeData>(),
  22.                                     InternalObjects = new List<InternalObjectData>()
  23.                                 };

но похоже, он все время возвращает  обычное имя:

Цитировать
      "Name": "*T1150",
      "BlockName": "*T1150",

12
Иногда можно написать и сразу понимаешь, в чем суть. Случайно там применял старый метод. Вопрос неактуален. Спасибо!
13
Здравствуйте еще раз. Извиняюсь за то, что открыл тему еще раз.

У меня есть несколько типов блоков, вроде как я устанавливаю все свойства одинаково, но один блок содержит только 1 грип-пойнт, а второй содержит опять кучу грип-пойнтов



Может быть сможете пнуть меня в направлении, как убрать эти грип-пойнты? В данном случае я везде использую setAttributeFromBlock
14
AutoCAD .NET API / Re: Атрибут блока, входящего в мультивыноску
« Последний ответ от nolte 05-02-2026, 15:27:33 »
ДА пробовал все работаем еще раз большое спасибо
15
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от Алексей Кулик 03-02-2026, 15:13:37 »
Может, проще NuGet-пакет поставить?
16
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от Electric 03-02-2026, 14:57:53 »
У вас забыт using System; Поэтому недоступен Environment.
Попробуйте полностью написать Autodesk.AutoCAD.ApplicationServices.Application и Autodesk.AutoCAD.Runtime.CommandMethod

Да, и похоже я забыл добавить accoremgd.dll в ссылки. После этого проблема исчезла.
17
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от avc 03-02-2026, 13:28:51 »
У вас забыт using System; Поэтому недоступен Environment.
Попробуйте полностью написать Autodesk.AutoCAD.ApplicationServices.Application и Autodesk.AutoCAD.Runtime.CommandMethod
18
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от Electric 03-02-2026, 12:17:21 »
У меня тупой вопрос. Я попробовал скомпилировать простейший код из примера для начинающих. Но выдает ошибки.

В AutoCAD 2022 создал библиотеку классов .NetFramework
В проект - свойства - целевая рабочая среда поставил .NETFramework 4.8
В раздел ссылки в свойствах Решения добавил  acmgd.dll и acdbmgd.dll из папки автокада, в свойствах у них "Копировать локально" в False.

Код:

Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3.  
  4. namespace AutocadPlugin
  5. {
  6.         public class test : IExtensionApplication
  7.         {
  8.                 [CommandMethod("hello")]
  9.                 public void Helloworld()
  10.                 {
  11.                         var editor = Application.DocumentManager.MdiActiveDocument.Editor;
  12.                         editor.WriteMessage("Привет из Autocad плагина");
  13.                 }
  14.  
  15.                 public void Initialize()
  16.                 {
  17.                         var editor = Application.DocumentManager.MdiActiveDocument.Editor;
  18.                         editor.WriteMessage("Инициализация плагина.." + Environment.NewLine);
  19.                 }
  20.  
  21.                 public void Terminate()
  22.                 {
  23.  
  24.                 }
  25.  
  26.         }
  27. }
  28.  

Подсвечиваются красным:
 CommandMethod   - CS0246 не удалось найти тип или имя пространства имен
DocumentManager -   CS0012 Тип Application  определен в сборке, на которую нет ссылки.  И CS0117  Application  не содержит определения DocumentManager
 Environment - CS0103   имя  Environment не существует в текущем контексте.

Что я делаю не так? Нужно добавить какие-то библиотеки в using ? Или  ошибка  в чем-то ином
19
AutoCAD .NET API / ToneOperatorParameters у вьюпорта
« Последний ответ от avc 01-02-2026, 00:15:39 »
Есть у вьюпортов настройки цвета и яркости для рендеринга текстур. Пользователь их настраивает в палитре _RenderExposure. Я нашел в API , что у вьюпорта есть свойство ToneOperatorParameters. Это объект у которого уже есть нужные мне свойства, включая Exposure. Но вот беда, AutoCAD игнорирует изменение этих свойств. Хотя есть все сеттеры, можно присвоить свойства объекта ToneOperatorParameters, можно поменять сам ToneOperatorParameters у вьюпорта. Ошибок не происходит. Но и новые значения не сохраняются! Если кто-то работал с этими настройками - пожалуйста отзовитесь. У меня ощущение, что это баг в API. Тестирую на AutoCAD 2025 и 2026.
20
AutoCAD .NET API / Re: Атрибут блока, входящего в мультивыноску
« Последний ответ от nolte 27-01-2026, 13:04:55 »
Спасибо. GetBlockAttribute - это то что искалось но не находилось в автокаде 2026 буду попробывать сообщу.
Страницы: 1 [2] 3 4 ... 10