Вставка изображения на вид

Автор Тема: Вставка изображения на вид  (Прочитано 7448 раз)

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

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

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Здравствуйте!
Как вставить на план(текущий вид) изображение, например PNG в указанные координаты (координаты задаем программно)
Спасибо!

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Вставка изображения на вид
« Ответ #1 : 20-07-2015, 12:39:10 »
Сергей,
Вставка изображения осуществляется с помощью метода Document.Import
Код - C# [Выбрать]
  1. public bool Import(
  2.         string file,
  3.         ImageImportOptions options,
  4.         View view,
  5.         out Element element
  6. )
  7.  

Координаты задаются в объекте класса ImageImportOptions, который необходимо передать в качестве аргумента в метод Document.Import

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

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Re: Вставка изображения на вид
« Ответ #2 : 21-07-2015, 10:09:47 »
Здравствуйте Виктор. К сожалению не понятно.
Все-таки на примере было бы нагляднее.
Вот скриншот с пояснениями, пожалуйста разъясните, а лучше покажите на примере.
1. file: Full path of the file to import. File must exist.  Это просто файл, например в ресурсах. Я забираю его так. Верно?
Код - C# [Выбрать]
  1. Test.Properties.resources.Image1
2. options: Various options applicable to an image.  If null, all options will be set to their respective default values.
C этим сложнее и не понятно вообще что куда писать.
Первое что встречается в SDK это Placement и RefPoint Вопрос. как координаты из XYZ туда засунуть?
3. view: The view into which the image is going to be imported.  Это я забираю так. Верно?
Код - C# [Выбрать]
  1. doc.ActiveView
4. element: The imported instance after a successful import.  It could be used for further manipulating of that instance.
Это тоже не понятно. Мне здесь какой то объект надо создавать? Какой еще объект? где его создавать? и самое главное как?
 

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Вставка изображения на вид
« Ответ #3 : 21-07-2015, 11:11:08 »
Сергей, для начала пояснения.
1. Нужно передать полный путь к файлу изображения, который лежит на диске. Если он лежит в ресурсах, то его нужно предварительно оттуда вытащить, сохранить на диск и уже только потом передать путь в качестве аргумента. Как это сделать, пока опустим, чтобы не усложнять. Хотя я пока слабо представляю что же это за изображение, которое хранится в ресурсах и которое необходимо вставить. Таким образом, первый параметр - путь к файлу с изображением.

2. Вторым параметром нужно передать объект класса ImageImportOptions Т.е. перед вызовом метода, этот объект необходимо создать, задать ему параметры Placement и RefPoint, затем этот объект передать в метод. На самом деле это базовые принципы программирования и не имеют прямого отношения к Revit API.
Что значат параметры Placement и RefPoint - не сразу ясно. Тут я соглашусь.
Так вот RefPoint - это координаты точки на виде, куда нужно вставить изображение.
Placement - это точка на изображении, которая будет совмещена с точкой на виде.
Например, изображение имеет размер 100х100. Мы хотим вставить изображение на вид в точку с координатами (0;0) (уберем третью координату для простоты). Так вот, если в качестве значения параметра Placement будет задано Center, то центр изображения будет находится в точке (0;0), если TopLeft, то верхний левый угол изображения будет находиться в точке (0;0) и т.д.

3. Вид, на который вставляется изображение. Это может быть не обязательно текущий. Любой, на который разрешено вставлять изображение.

4. Это объект Revit, который будет создан, в результате вставки изображения. Параметр помечен как out. Это значит, что нужно объявить объект до вызова метода. После вызова метода, этот объект будет инициализирован. Подробнее можно почитать в MSDN


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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Вставка изображения на вид
« Ответ #4 : 21-07-2015, 11:17:51 »
И пример. Пример не тестировался, пишу без проверки, так что где-то мог ошибиться.

Код - C# [Выбрать]
  1. var options = ImageImportOptions ()
  2. {
  3.         RefPoint = XYZ.Zero, // точка 0,0,0
  4.         Placement = BoxPlacement.Center // центр изображения
  5. };
  6.  
  7. Element element; // объявляем переменную-объект, который будет создан в результате вставки изображения
  8.  
  9. var view = doc.ActiveView; // берем текущий вид, но может быть любым
  10.  
  11. var imageFile = @"C:\image.png"; // файл с изображением
  12.  
  13. // импортируем изображение
  14. doc.Import (imageFile, options, view, out element);
  15.  
  16. if (element!=null)
  17. {
  18.   // попадаем сюда, если изображение импортировалось
  19. }
  20.  
  21.  

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

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Re: Вставка изображения на вид
« Ответ #5 : 21-07-2015, 14:35:45 »
Спасибо Виктор, теперь все ясно.
Про картинку из ресурсов. Я просто не знал, что картинка по любому должна быть на диске чтобы ее импортировать. Думал что можно и из ресурсов.
Я хотел рисовать вот такие графики, и ставить такие точки :) (см. скриншот) А точки мной заготовлены заранее в фотошопе.