Размещение экземпляра семейства

Автор Тема: Размещение экземпляра семейства  (Прочитано 8519 раз)

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

Оффлайн Адамчук НиколайАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
  • Skype: Nicolay Adamchuk
Добрый день!
Вопрос следующий: необходимо разместить экземпляр семейства. Само семейство создано на шаблоне  "Типовая модель на основе грани" и загружено в проект. В проекте семейство можно разместить на грани и на рабочей плоскости. Разместить программно на грани (face) получается, а на рабочей плоскости (ReferencePlane) - никак. В процессе выполнения приложения выдается ошибка о неправильном векторе. Перебрал все возможные варианты - не получается. В чем проблема: в указании параметров для ...Create.NewFamilyInstance или такой подход нельзя релизовать программно ?

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Размещение экземпляра семейства
« Ответ #1 : 03-12-2013, 19:22:13 »
Николай, спасибо за интересный вопрос.

Какой из перегруженных методов NewFamilyInstance пытаетесь использовать?
Этот?
Код - C# [Выбрать]
  1. public FamilyInstance NewFamilyInstance(
  2.         Reference reference,
  3.         XYZ location,
  4.         XYZ referenceDirection,
  5.         FamilySymbol symbol
  6. )

Пока у меня тоже не получилось программно разместить семейство на плоскости. {"Reference direction is parallel to face normal at insertion point.\r\nParameter name: multiple"}

Нашел обсуждение проблемы на блоге Джереми: http://thebuildingcoder.typepad.com/blog/2012/02/hosting-a-light-fitting-on-a-reference-plane.html
Но там обсуждается размещение светильников, т.е. на горизонтальной плоскости.

Покопаюсь еще поглубже. О результатах сообщу.

Оффлайн Адамчук НиколайАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
  • Skype: Nicolay Adamchuk
Re: Размещение экземпляра семейства
« Ответ #2 : 03-12-2013, 20:36:59 »
Да, я пробовал именно этот метод. Правда в справке (подсказке) речь идет о face referenced....


Но компиляция прошла без ошибок.

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Размещение экземпляра семейства
« Ответ #3 : 03-12-2013, 21:14:21 »
Кстати да, в файле справки к этому методу, параметр reference описывается так:
Цитировать
reference
Type: Autodesk.Revit.DB.Reference
A reference to a face.

а location так:
Цитировать
location
Type: Autodesk.Revit.DB..::..XYZ
Point on the face where the instance is to be placed.

Тем не менее по ссылке что я приводил выше, семейство размещали именно на плоскости.

Оффлайн Адамчук НиколайАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
  • Skype: Nicolay Adamchuk
Re: Размещение экземпляра семейства
« Ответ #4 : 03-12-2013, 21:30:16 »
Да, как раз смотрю этот пример. Попробую изменить семейство... на  светильник. Если получится, то может проблема с семейством ?

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Размещение экземпляра семейства
« Ответ #5 : 03-12-2013, 21:40:46 »
А вы пробуете разместить семейство на вертикальной или горизонтальной плоскости? Я пробовал на вертикальной. А светильники на горизонтальной. Возможно проблема в этом. Либо именно в светильниках

Так же в документации я нашел интересную табличку:

Т.е. для создания экземпляров семейств типовых моделей следует использовать метод с параметрами Face, XYZ, XYZ, FamilySymbol, а для создания светильников с параметрами Reference, XYZ, XYZ, FamilySymbol

В онлайновой версии руководства, эта табличка выглядит немного иначе, но подозрения тем не менее остаются.

Не думаю что проблема в семействе. Я создал простенькое новое семейство на основе того же шаблона что и вы, и в результате тоже ошибка.

Оффлайн Адамчук НиколайАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
  • Skype: Nicolay Adamchuk
Re: Размещение экземпляра семейства
« Ответ #6 : 04-12-2013, 11:22:42 »
Не получается воспроизвести пример Jeremy. Непонятно, что за семейство использовано при размещении на плоскости. Стандартные осветительные приборы не размещаются - у них нет такой возможности. "Family cannot be placed as hosted on an input face reference, because its FamilyPlacementType is not WorkPlaneBased"

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Размещение экземпляра семейства
« Ответ #7 : 04-12-2013, 16:39:38 »
Николай, я покопался поглубже. Получилось создать экземпляр семейства с помощью метода
Код - C# [Выбрать]
  1. public FamilyInstance NewFamilyInstance(
  2.         XYZ location,
  3.         FamilySymbol symbol,
  4.         Element host,
  5.         StructuralType structuralType
  6. )
  7.  
Экземпляр создался, но вот свойство Host у него равно null. Да и с направлением в этом случае тоже беда: куда не направляй, все равно будет смотреть вверх. Вобщем метод этот не подходит.

Задал в вопрос в поддержку. Пока ответили в духе: "действительно не получается, и не понятно почему". Скорее всего кроеме Джереми никто не ответит по существу, а он сейчас на Autodesk University. Так что придется подождать. Но скорее всего выявился очередной баг.

Оффлайн Адамчук НиколайАвтор темы

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
  • Skype: Nicolay Adamchuk
Re: Размещение экземпляра семейства
« Ответ #8 : 04-12-2013, 22:08:20 »
Хорошо. Спасибо подождем ответ.

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Размещение экземпляра семейства
« Ответ #9 : 09-12-2013, 11:59:45 »
Николай, пришел ответ из техподдержки.
Рассмотрели этот случай вместве с командой разработчиков API. Пришли к выводу что действительно в API есть баг, при котором невозможно программно разместить типовую модель на рабочей плоскости.
Ждем следующей версии с надеждой на то что баг будет исправлен.