71
AutoCAD .NET API / Re: Miror и Blockreference
« Последний ответ от Валерий Ивлев 01-03-2024, 14:20:07 »Было два пути:
1 Использовать метод Transform.
2 Сделать через Com/ActiveX (как в старом добром VBA) - спасибо Александр Ривилис, за подсказку по реализации.
Т.к. в блоке куча атрибутов, то первый способ потребует использовать "бубен" чтобы нормально отразить каждый (переменная MIRRTEXT не влияет). Поэтому второй способ значительно проще (4 строчки кода):
1 Использовать метод Transform.
2 Сделать через Com/ActiveX (как в старом добром VBA) - спасибо Александр Ривилис, за подсказку по реализации.
Т.к. в блоке куча атрибутов, то первый способ потребует использовать "бубен" чтобы нормально отразить каждый (переменная MIRRTEXT не влияет). Поэтому второй способ значительно проще (4 строчки кода):
Код - C# [Выбрать]
- // Переходим в COM/ActiveX
- dynamic acComObject = blockRef.AcadObject; // Преобразуем BlockReference в COM/ActiveX объект AutoCAD
- dynamic acComObjectMirr = acComObject.Mirror(wcsInsertionPoint.ToArray(), wcsInnerPoint.ToArray()); // Mirror of the COM/ActiveX object
- IntPtr pointer = (IntPtr)acComObjectMirr.ObjectId; // Получаем указатель на COM/ActiveX объект
- acMirroredObjectId = new ObjectId(pointer); // ObjectId отраженного .NET объекта по указателю на COM/ActiveX объект