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

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

Страницы: 1 [2] 3 4 ... 10
11
using (el) и using (ray) лишние. И какая ошибка возникает?
12
AutoCAD .NET API / Как найти точки пересечения с помощью IntersectWith?
« Последний ответ от Klo 28-05-2026, 12:53:31 »
Добрый день!
Мне нужно найти точку пересечения эллипса и луча для дальнейших построений, но почему-то функция IntersectWith выдаёт ошибку...
Я не очень хорошо разбираюсь в объектной модели автокад и программировании в нём, но вот мой код:
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.ApplicationServices;
  2. using Autodesk.AutoCAD.DatabaseServices;
  3. using Autodesk.AutoCAD.Geometry;
  4. using Autodesk.AutoCAD.Runtime;
  5. using Autodesk.AutoCAD.EditorInput;
  6. using System;
  7. namespace Zigzag
  8. {    
  9.     public class Zigzag
  10.     {
  11.         [CommandMethod("DrawLine")]
  12.         public void DrawLine()
  13.         {
  14.             Database db = Application.DocumentManager.MdiActiveDocument.Database;
  15.             Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  16.             Ellipse el = null;
  17.             Ray ray = null;
  18.  
  19.             using (Transaction tr = db.TransactionManager.StartTransaction())
  20.             {
  21.                 try
  22.                 {
  23.                     BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); //получаем ссылку на модель чертежа
  24.                     BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
  25.  
  26.                     Point3d center = new Point3d(0, 0, 0); //объявляем и задаём параметры для эллипса
  27.                     Vector3d normal = Vector3d.ZAxis;
  28.                     Vector3d majorAxis = new Vector3d(1000, 0.0, 0.0);
  29.                     el = new Ellipse(center, normal, majorAxis, 0.5, 0.0, Math.PI*2.0); //создаём экземпляр эллипса
  30.  
  31.                     using (el) //добавление эллипса в бд чертежа
  32.                     {
  33.                         btr.AppendEntity(el); //добавляем в пространство модели
  34.                         tr.AddNewlyCreatedDBObject(el, true); //запускаем транзакцию
  35.                     }
  36.    
  37.                     ray = new Ray(); //объявляем примитив чертежа
  38.                     ray.BasePoint = center;
  39.                     ray.SecondPoint = new Point3d(0, 1, 0);
  40.                     using (ray) //добавление луча в бд чертежа
  41.                     {
  42.                         btr.AppendEntity(ray);
  43.                         tr.AddNewlyCreatedDBObject(ray, true);
  44.                     }
  45.  
  46.                     Point3dCollection collection = new Point3dCollection();
  47.                     el.IntersectWith(ray, Intersect.ExtendThis, collection, IntPtr.Zero, IntPtr.Zero);
  48.  
  49.                     tr.Commit(); //коммитим транзакцию
  50.                 }
  51.                 catch (Autodesk.AutoCAD.Runtime.Exception ex)
  52.                 {
  53.                     ed.WriteMessage($"\n {ex.Message}");
  54.                 }
  55.             } //end using            
  56.         }
  57.     }
  58. }
Эллипс и луч строится без проблем, если закомментировать строку с поиском пересечения.
Прошу подсказку
13
Есть ли какая официальная  документация по LISP для AutoCAD в виде одного текстового (или хотя бы читаемого) файла?
В виде одного файла не существует. Полная документация по функциям https://help.autodesk.com/view/OARX/2024/ENU/?guid=GUID-4CEE5072-8817-4920-8A2D-7060F5E16547
14
AutoLisp / VisualLISP и DCL / Файл описания API для LISP
« Последний ответ от Electric 23-05-2026, 11:11:09 »
Есть ли какая официальная  документация по LISP для AutoCAD в виде одного текстового (или хотя бы читаемого) файла?

В последнее время, с помощью нейросети пишу некоторые скрипты на LISP для автоматизации автокада. Проблема в том, что язык не особо популярный, нейросеть часто глючит и придумывает свои функции, команды или даже пытается убедить меня в  невозможности некоторых идей. Подгрузка текстового файла с API AutoCAD для выполнения задачи бы очень помогла.
Вариант изучить самому  не рассматриваю, у меня нет для этого времени, мотивации, и  за такое мне точно никто не заплатит.
15
VBA / Re: vba для автокад скорее жив, чем мертв
« Последний ответ от Timofeev 27-03-2026, 15:59:50 »
Ком конечно медленная штука - наверное это максимум что можно в VBA сделать
Может кому пригодится
16
AutoCAD .NET API / Re: Как получить имя стиля таблицы в .NET ?
« Последний ответ от avc 12-02-2026, 18:55:51 »
Так же как любой другой именованный объект чертежа. У таблицы берете ID стиля, получаете стиль на чтение и берете его имя.
17
AutoCAD .NET API / Как получить имя стиля таблицы в .NET ?
« Последний ответ от Electric 12-02-2026, 16:56:29 »
Есть таблица автокада со стилем "Адреса кабелей". Как через .NET получить это имя стиля в виде текстовой строки?
18
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от avc 11-02-2026, 15:59:17 »
Ок, учту это. Обычно на форумах Оффтопик - место для бардака :)
тут конкретная тема оффтопика: Изучаем C#. Оффтопик в смысле не про AutoCAD
19
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от Electric 11-02-2026, 15:55:04 »
А что вы стесняетесь спрашивать в новой теме? Ваш вопрос не по C#, а по API - поднимайте новую тему, не делайте бардак.

Ок, учту это. Обычно на форумах Оффтопик - место для бардака :)
20
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от avc 11-02-2026, 15:53:21 »
Как получить текстовое значение и XY координаты всех указателей мультивыноски с помощью C# ?

Код - C# [Выбрать]
  1.     /// <summary>
  2.     /// Куда указывает первая стрелка. Может вернуть Point3dExt.NanPoint
  3.     /// </summary>
  4.     /// <param name="ml"></param>
  5.     public static Point3d
  6.     FirstArrow(this MLeader ml)
  7.     {
  8.       int index = ml.FirstArrowIndex();
  9.       if (index < 0) return Point3dExt.Null;
  10.       return ml.GetFirstVertex(index);
  11.     }
  12.  
  13.     /// <summary>
  14.     /// Куда указывают все стрелки. Может вернуть пустой список
  15.     /// </summary>
  16.     /// <param name="ml"></param>
  17.     public static List<Point3d>
  18.     Arrows(this MLeader ml)
  19.     {
  20.       if (ml is null || ml.IsErased) return new List<Point3d>();
  21.       ArrayList arr = ml.GetLeaderIndexes();
  22.       if (arr.Count == 0) return new List<Point3d>(); //можно нарисовать MLeader вообще без стрелок!
  23.       List<Point3d> ret = new(arr.Count);
  24.       foreach (object i in arr)
  25.       {
  26.         ArrayList arr1 = ml.GetLeaderLineIndexes((int)i);
  27.         if (arr1.Count == 0) continue;
  28.         foreach (object j in arr1)
  29.           ret.Add(ml.GetFirstVertex((int)j));
  30.       }
  31.       return ret;
  32.     }
  33.  
  34.     /// <summary>
  35.     /// Получить текст из текстовой выноски или из единственного атрибута блока
  36.     /// </summary>
  37.     public static string
  38.     GetContents(this MLeader ml, bool fieldCodes, Transaction tr)
  39.     {
  40.       if (ml.ContentType == ContentType.BlockContent)
  41.         return ml.GetBlockAttribute("", fieldCodes, tr);
  42.  
  43.       if (ml.HasContent() && ml.ContentType == ContentType.MTextContent)
  44.         try
  45.         {
  46.           using MText mt = ml.MText; // бывает InvalidOperationException
  47.           if (fieldCodes) return mt?.GetMTextWithFieldCodes() ?? "";
  48.           return mt?.Text ?? "";
  49.         }
  50.         catch { }
  51.       return "";
  52.     }
  53.  
  54.  
А что вы стесняетесь спрашивать в новой теме? Ваш вопрос не по C#, а по API - поднимайте новую тему, не делайте бардак.
Страницы: 1 [2] 3 4 ... 10