Геометрические фигуры 2D

Автор Тема: Геометрические фигуры 2D  (Прочитано 10522 раз)

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

Оффлайн Сергей ОдеговАвтор темы

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Геометрические фигуры 2D
« : 16-07-2015, 16:36:07 »
Здравствуйте!
Подскажите, как на текущем виде (обычный план этажа), линиями детализации (которые в Аннотациях) рисовать простые геометрические формы, такие как:
1. Точка
2. Отрезок
3. Окружность
4. Прямоугольник
5. Сплайн или кривую через точки XY (Z = 0)
Как вставить на план изображение, например PNG в указанные координаты (координаты задаем программно)
Спасибо!

Отмечено как Решение Сергей Одегов 17-07-2015, 09:06:10

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Геометрические фигуры 2D
« Ответ #1 : 17-07-2015, 08:58:09 »
Сергей, линии детализации являются объектами класса DetailCurve.
Создать ее довольно просто
Создаете 2D объект. Это один из дочерних классов класса Autodesk.Revit.DB.Curve. В него входят линии, дуги, эллипсы, сплайны и т.д.
Сам 2D объект еще не привязан к модели. Поэтому нужно еще создать объект модели. В данном случае DetailCurve, где в качестве параметров нужно передать вид и кривую.

Пример кода:
Код - C# [Выбрать]
  1. // Создаем примитив. В данном случае линия
  2. var line = Line.CreateBound(point1, point2);
  3.  
  4. // И создаем непосредственно линию детализации
  5. var detailLine = document.Create.NewDetailCurve(view, line);
  6.  

Для второго вопроса - создайте отдельную тему.
« Последнее редактирование: 17-07-2015, 10:07:04 от Виктор Чекалин »

Оффлайн Сергей ОдеговАвтор темы

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Re: Геометрические фигуры 2D
« Ответ #2 : 17-07-2015, 09:02:47 »
Спасибо большое. А в point1 и poin2 как с точки зрения синтаксиса прописывать координаты?

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Геометрические фигуры 2D
« Ответ #3 : 17-07-2015, 09:16:04 »
А в point1 и poin2 как с точки зрения синтаксиса прописывать координаты?
Точка в данном случае это объект класса XYZ.
Т.е. будет примерно так:
Код - C# [Выбрать]
  1. var point1 = XYZ.Zero; // 0;0;0
  2. var point2 = new XYZ(100, 0, 0);
  3.  

Оффлайн Сергей ОдеговАвтор темы

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Re: Геометрические фигуры 2D
« Ответ #4 : 17-07-2015, 09:33:44 »
Код - C# [Выбрать]
  1.             XYZ p1 = new XYZ(0,0,0);
  2.             XYZ p2 = new XYZ(100, 100, 100);
  3.            
  4.             var line = Line.CreateBound(p1,p2);
  5.             var detailLine = doc.Create.NewModelCurve(line, doc.ActiveView);
  6.  

Почему подчеркивает doc.ActiveView ? Пишет что типа не ассоциирован с NewModelCurve. Что сюда надо тогда писать?

Оффлайн Сергей ОдеговАвтор темы

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Re: Геометрические фигуры 2D
« Ответ #5 : 17-07-2015, 10:01:06 »
Виктор, можете конкретно написать по пунктам что я задавал ранее.
Создаем на текущем виде точку, линию, круг. прямоугольник. Как это реализуется? А то начинаешь этот SDK читать - ничего не понятно.

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Геометрические фигуры 2D
« Ответ #6 : 17-07-2015, 10:31:40 »
Почему подчеркивает doc.ActiveView
Прошу прощения, ошибся в своем сообщении. НАписал NewModelCurve вместо NewDetailCurve. Отредактировал сообщение.

А то начинаешь этот SDK читать
Нужно учиться им пользоваться. Так бы нашел метод NewModelCurve, посмотрел какие параметры он принимает и сразу понял бы в чем дело.

Создаем на текущем виде точку, линию, круг. прямоугольник.
Точку нарисовать нельзя. это не имеет смысла. Прямоугольник задается 4 линиями. Объекта Прямоугольник нет. Круг создается объектом класса Ellipse.
Опять же, надо просто заглянуть в справку и посмотреть на класс Curve. Его дочерними классами и создаются все примитивы, с помощью которых в дальнейшем создаются линии детализации.

Оффлайн Сергей ОдеговАвтор темы

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Re: Геометрические фигуры 2D
« Ответ #7 : 17-07-2015, 10:40:33 »
Как нарисовать на текущем виде? Как понять как пользоваться SDK если об этом нигде не написано? То что вы привели пример - это я видел и понял, но как этим пользоваться. Ведь там примера кода не написано. Короче так, если есть методичка "Как сделать" инженер это сделает, а если нет, то сами понимаете.. глупые вопросы и тому подобное.

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Геометрические фигуры 2D
« Ответ #8 : 17-07-2015, 10:51:40 »
Как нарисовать на текущем виде?
Так же как и на любом другом, только взять текущий.
Как понять как пользоваться SDK если об этом нигде не написано?
Учится, думать, спрашивать
но как этим пользоваться.
Разбираетесь в примере и пишите код исходя из ваших задач.
Короче так, если есть методичка "Как сделать"
С подобными заявлениями более подробных ответов можете даже не искать. Здесь вам никто ничем не обязан.

Оффлайн Сергей ОдеговАвтор темы

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Re: Геометрические фигуры 2D
« Ответ #9 : 17-07-2015, 10:54:00 »
Цитировать
Так же как и на любом другом, только взять текущий.
А что я неправильно беру текущий?
Код - C# [Выбрать]
  1. doc.ActiveView
Цитировать
Учится, думать, спрашивать
Это я и пытаюсь сделать, вот только конкретных ответов получить никак не могу, поэтому и спрашиваю спрашиваю спрашиваю....
Цитировать
Разбираетесь в примере и пишите код исходя из ваших задач.
Ваш пример в таком виде не работает. Много чего упущено.
Цитировать
....Здесь вам никто ничем не обязан.
Это Вы правильно заметили. Однако "Короче так,.." следовало бы воспринимать исходя из соображений краткости изложения материала, а не наглого вопроса. Очень много с Вами напечатали, а решения то нет. Вы думаете, что только мне это надо знать, как линии строить. Да сотни людей пытаются разобраться в этой задаче, понять что там в SDK написано и так далее.

И кстати, Create.NewModelCurve  создает не линию детализации, а линию модели. А я изначально спрашивал как построить именно линию детализации, для того чтобы она была 2D а не 3D. Тогда вдогонку, как преобразовать полученную линию в линию детализации после построения линии модели?

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Геометрические фигуры 2D
« Ответ #10 : 17-07-2015, 10:54:42 »
И кстати, Create.NewModelCurve  создает не линию детализации, а линию модели.
Прошу прощения, ошибся в своем сообщении. НАписал NewModelCurve вместо NewDetailCurve. Отредактировал сообщение.

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Геометрические фигуры 2D
« Ответ #11 : 17-07-2015, 12:30:13 »
А что я неправильно беру текущий?
Ок, сделаю еще одну попытку.

Текущий вид берется верно. Неверно дальнейшее использование.

В предыдущем сообщении, я написал, что я в примере ошибся и написал неправильно название метода. Правильный метод - NewDetailCurve. Сообщение я поправил.

Метод NewDetailCurve имеет два параметра. Первый - Вид, на котором эта линия будет видна. Второй - линия примитива.

Вы же пытались воспользоваться методом NewModelCurve, который я написал по ошибке, о чем я и сообщил. Так как метод NewModelCurve имеет совершенно другие параметры, то вполне очевидно, что какой-либо из аргументов будет подчеркиваться и сборка не будет собираться.

Более того, в своем примере, даже в первоначальном варианте, первым параметром был вид, а вторым - примитив, тогда как в вашем примере - сначала примитив, потом вид.
var detailLine = doc.Create.NewModelCurve(line, doc.ActiveView);

Т.е. все что нужно было сделать - просто быть более внимательным. И если на этапе сборке ругается на параметры, то лучшим решением будет просмотр корректных параметров в файле справки и сопоставления их с теми параметрами, что написаны в коде.

Оффлайн Сергей ОдеговАвтор темы

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Re: Геометрические фигуры 2D
« Ответ #12 : 17-07-2015, 13:02:58 »
Спасибо. Воспользовался советом.