Построение прямой по двум точкам

Автор Тема: Построение прямой по двум точкам  (Прочитано 2713 раз)

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

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

  • ADN OPEN
  • Сообщений: 10
  • Карма: 0
Добрый день!
Пытаюсь построить линию по двум координатам:
Код - C# [Выбрать]
  1. using Autodesk.Revit.UI;
  2. using Autodesk.Revit.DB;
  3. using Autodesk.Revit.ApplicationServices;
  4.  
  5.  
  6.  
  7. namespace Curve
  8. {
  9.     public class Curve_class
  10.     {
  11.         Application app = Documents.Application;
  12.         Document doc = app.ActiveDocument;
  13.         View view = doc.ActiveView;
  14.  
  15.         // Create a geometry line
  16.         XYZ startPoint = new XYZ(0, 0, 0);
  17.         XYZ endPoint = new XYZ(10, 10, 0);
  18.         XYZ HighPoint = new XYZ(100, 10, 0);
  19.  
  20.         Line geomLine = app.CreateBound.NewLine(startPoint, endPoint);
  21.    
  22.     }
  23. }
  24.  
Вопрос:
1) Можете пояснить первые данные строчки:
Код - C# [Выбрать]
  1.         Application app = Documents.Application;
  2.         Document doc = app.ActiveDocument;
  3.         View view = doc.ActiveView;
  4.  
2) Ошибка XYZ недоступен в силу его уровня защиты


« Последнее редактирование: 12-04-2018, 15:05:40 от Александр Ривилис »

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Построение прямой по двум точкам
« Ответ #1 : 12-04-2018, 14:37:33 »
1. Код на форуме оформляйте в соответствии с правилами. В текстовом редакторе есть специальный выпадающий список
2. Для начала ознакомьтесь с этим курсом для начинающих
3. Не понятно - ваш код вообще откуда выдран? В Ревите он точно работать не будет
4. Линию в проекте создать НЕЛЬЗЯ! Это вам не Автокад. Только в вашем коде для вспомогательных целей
5. Все это должно работать в транзакции
6. Ошибка недоступен в силу его уровня защиты появляется, когда вы используете модификаторы доступа - public, private, internal. Ставьте всегда public, пока не разбираетесь в этом

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Построение прямой по двум точкам
« Ответ #2 : 12-04-2018, 14:54:27 »
2) Ошибка XYZ недоступен в силу его уровня защиты
Я удивлен, что ошибка только в этом:)
Линию в проекте создать НЕЛЬЗЯ! Это вам не Автокад. Только в вашем коде для вспомогательных целей
Линию модели все же можно создать. Но что хочет сделать автор и что это за обрывок непонятного кода - действительно не ясно.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Построение прямой по двум точкам
« Ответ #3 : 12-04-2018, 15:07:03 »
Nuzhin83
Пожалуйста прочтите у меня в подписи как следует форматировать код для форума и в дальнейшем соблюдайте это правило.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Построение прямой по двум точкам
« Ответ #4 : 12-04-2018, 15:21:55 »
Линию модели все же можно создать
Я имел ввиду, что тип Line нельзя создать в модели, так как это не объект модели. Можно создать ModelLine или DetailLine (на основе того-же Line), но это уже совсем другая история =)
Но что хочет сделать автор и что это за обрывок непонятного кода - действительно не ясно
На самом деле все предельно ясно - это код, выдранный из какого-то примера для автокада, только с попыткой замены самого метода создания линии. Причем, в автокаде этот код тоже работать не будет, так как и там все это должно быть внутри транзакции  ;D

Оффлайн RevitTormentor

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Построение прямой по двум точкам
« Ответ #5 : 15-04-2018, 10:01:32 »
Добрый день!
Пытаюсь построить линию по двум координатам:
1) Можете пояснить первые данные строчки:
Код - C# [Выбрать]
  1.         Application app = Documents.Application;
  2.         Document doc = app.ActiveDocument;
  3.         View view = doc.ActiveView;
  4.  

Вот так строит линию в 2018 возможно и в 2017 будет может быть даже 2016 и 2015. А там метод создания самой линии примерно как у Вас в коде

Код - C# [Выбрать]
  1.  [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
  2.     [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
  3.     public class CreateLine : IExternalCommand
  4.     {
  5.         public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  6.         {
  7.             UIApplication uiApp = commandData.Application;
  8.             UIDocument uidoc = uiApp.ActiveUIDocument;            
  9.             Autodesk.Revit.ApplicationServices.Application app = uiApp.Application;
  10.             Document doc = uiApp.ActiveUIDocument.Document;
  11.             View view = doc.ActiveView;
  12.  
  13.             Transaction transaction = new Transaction(doc, "CreateLine");
  14.             try
  15.             {
  16.                 transaction.Start();
  17.  
  18.                 XYZ start = new XYZ(0, 0, 0);
  19.                 XYZ end = new XYZ(100000, 5000, 0);
  20.  
  21.                 Line line = Line.CreateBound(start, end);
  22.                 doc.Create.NewDetailCurve(view, line);
  23.             }
  24.             catch (Exception ex)
  25.             {
  26.                 message += ex.Message;
  27.                 return Autodesk.Revit.UI.Result.Failed;
  28.             }
  29.             finally
  30.             {
  31.                 transaction.Commit();
  32.             }
  33.             return Result.Succeeded;
  34.         }
  35.     }
  36.  
  37.  

по Вашему вопросу что смогу поясню
...
Document doc = app.ActiveDocument;
View view = doc.ActiveView;
...
doc - это текущий документ. В нём видимо всё хранится. Все стены окна двери и пр.
view - это выбранный на данный момент Вид. Например план 1-го этажа. Выберите план 1 -го этажа и линия отобразится на нём если в переопределении вида в свойствах не задано другое.

даже если я где то не прав в определениях. Для разбора старта -как что создать - пойдёт.

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

  • ADN OPEN
  • Сообщений: 10
  • Карма: 0
Re: Построение прямой по двум точкам
« Ответ #6 : 16-04-2018, 08:50:06 »
Спасибо всем  за ответ! Буду разбираться.