Polyline3d (AUTOCAD 2012 на C# Visual Studio.)

Автор Тема: Polyline3d (AUTOCAD 2012 на C# Visual Studio.)  (Прочитано 25549 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн bakaIIHXАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 1
Re: Polyline3d (AUTOCAD 2012 на C# Visual Studio.)
« Ответ #30 : 16-10-2014, 01:52:51 »
Вообще-то они должны быть соединены линиями.


Но почему то одни точки.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Polyline3d (AUTOCAD 2012 на C# Visual Studio.)
« Ответ #31 : 16-10-2014, 01:59:10 »
Но почему то одни точки.
Проверь количество вершин у созданных 3D-полилиний. И какие координаты у этих вершин.
« Последнее редактирование: 16-10-2014, 09:29:20 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн bakaIIHXАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 1
Re: Polyline3d (AUTOCAD 2012 на C# Visual Studio.)
« Ответ #32 : 16-10-2014, 02:03:53 »
Проверь количество вершин у созданных 3D-полилний. И какие координаты у этих вершин.
ПОЛИЛИНИЯ           Слой: "0"
                                     Пространство: Пространство модели
                   Цвет: 201    Тип линий: "ПОСЛОЮ"
                   Метка = 259
       Разомкнутая пространство
  Первые 3 точки не определяют плоскость. Площадь не вычислена.
            длина    0.0000

                  ВЕРШИНА            Слой: "0"
                                     Пространство: Пространство модели
                   Метка = 25a
      Пространство
                 в точке, X=  68.4578  Y=  56.0258  Z=  58.8355

Отмечено как Решение Александр Ривилис 25-04-2021, 19:55:07

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Polyline3d (AUTOCAD 2012 на C# Visual Studio.)
« Ответ #33 : 16-10-2014, 09:17:42 »
Я не обратил внимание, что у тебя точка создается вне цикла и соответственно все вершины у твоей 3D-полилинии совпадают. Исправь на это:
Код - C# [Выбрать]
  1. static void FinishedProcessing()
  2. {
  3.   AcAp.Document doc = AcAp.Application.DocumentManager.MdiActiveDocument;
  4.   using (AcAp.DocumentLock locDoc = doc.LockDocument()) {
  5.     AcDb.ObjectId spaceId = doc.Database.CurrentSpaceId;
  6.     using (AcDb.BlockTableRecord btr = spaceId.Open(AcDb.OpenMode.ForWrite) as AcDb.BlockTableRecord) {
  7.       using (AcDb.Polyline3d poly = new AcDb.Polyline3d()) {
  8.         poly.SetDatabaseDefaults();
  9.         poly.ColorIndex = c_color;
  10.         btr.AppendEntity(poly);
  11.         for (int i = 0; i < n_vertexies; i++) {
  12.           AcGe.Point3d pt =
  13.             new AcGe.Point3d(r.NextDouble() * 100, r.NextDouble() * 100, r.NextDouble() * 100);
  14.           using (AcDb.PolylineVertex3d pv3d = new AcDb.PolylineVertex3d(pt)) {
  15.             poly.AppendVertex(pv3d);
  16.           }
  17.         }
  18.       }
  19.     }
  20.   }
  21. }

P.S.: Вчера я код не запускал и не тестировал, "писал на коленке", вот и не заметил эту ошибку.
« Последнее редактирование: 16-10-2014, 09:28:41 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение