Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Atomohod от 29-11-2021, 11:35:24

Название: Отсутствие базы чертежа при создании 3д-полилинии
Отправлено: Atomohod от 29-11-2021, 11:35:24
Здравствуйте!

При создании зд-полилинии получаю ошибку отсутствия базы чертежа. См. скриншот. База под отладчиком видна. В чем может быть проблема?

Метод где выскакивает ошибка
Код - C# [Выбрать]
  1.  public ObjectId Create(Point3d start, Point3d end)
  2.         {
  3.             Document doc = Application.DocumentManager.MdiActiveDocument;
  4.             Database db = doc.Database;
  5.             Transaction tr = db.TransactionManager.StartTransaction();
  6.             ObjectId edgeId = default;
  7.             using (tr)
  8.             {
  9.                 BlockTable bt = (BlockTable)db.BlockTableId.GetObject(OpenMode.ForRead);
  10.  
  11.                 BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
  12.  
  13.                 Line edge = new Line();
  14.                 edge.StartPoint = start;
  15.                 edge.EndPoint = end;
  16.                 edge.Layer = "Edges";
  17.  
  18.                 Polyline3d plineCrosshair1 = new Polyline3d();
  19.                // plineCrosshair1.SetDatabaseDefaults();
  20.                
  21.                 plineCrosshair1.AppendVertex(new PolylineVertex3d(start));
  22.                 plineCrosshair1.AppendVertex(new PolylineVertex3d(edge.GetPointAtDist(0.25 * edge.Length)));
  23.                 plineCrosshair1.AppendVertex(new PolylineVertex3d(end));
  24.                
  25.                 plineCrosshair1.Layer = "Edges";
  26.                
  27.  
  28.                 btr.AppendEntity(plineCrosshair1);
  29.                 tr.AddNewlyCreatedDBObject(plineCrosshair1, true);              
  30.  
  31.                 edgeId = plineCrosshair1.ObjectId;
  32.                 tr.Commit();
  33.             }
  34.             return edgeId;
  35.         }
Название: Re: Отсутствие базы чертежа при создании 3д-полилинии
Отправлено: Александр Ривилис от 29-11-2021, 12:47:44
Сначала:
Код - C# [Выбрать]
  1. btr.AppendEntity(plineCrosshair1);
а затем уже
Код - C# [Выбрать]
  1. plineCrosshair1.AppendVertex(new PolylineVertex3d(start));
  2. plineCrosshair1.AppendVertex(new PolylineVertex3d(edge.GetPointAtDist(0.25 * edge.Length)));
  3. plineCrosshair1.AppendVertex(new PolylineVertex3d(end));
Название: Re: Отсутствие базы чертежа при создании 3д-полилинии
Отправлено: Atomohod от 29-11-2021, 13:17:47
Спасибо, работает.
Тогда есть такой вопрос- если не находится сама полилиния до добавления в базу, то почему ошибка про отсутствие самой базы?
Название: Re: Отсутствие базы чертежа при создании 3д-полилинии
Отправлено: Александр Ривилис от 29-11-2021, 13:54:25
Потому что становится непонятно в какую базу добавлять вершины, если сама полилиния не содержится в базе.