ADN Club => Revit API => Тема начата: Адамчук Николай от 03-12-2013, 11:33:58
Название: Размещение экземпляра семейства
Отправлено: Адамчук Николай от 03-12-2013, 11:33:58
Добрый день! Вопрос следующий: необходимо разместить экземпляр семейства. Само семейство создано на шаблоне "Типовая модель на основе грани" и загружено в проект. В проекте семейство можно разместить на грани и на рабочей плоскости. Разместить программно на грани (face) получается, а на рабочей плоскости (ReferencePlane) - никак. В процессе выполнения приложения выдается ошибка о неправильном векторе. Перебрал все возможные варианты - не получается. В чем проблема: в указании параметров для ...Create.NewFamilyInstance или такой подход нельзя релизовать программно ?
Название: Re: Размещение экземпляра семейства
Отправлено: Виктор Чекалин от 03-12-2013, 19:22:13
Николай, спасибо за интересный вопрос.
Какой из перегруженных методов NewFamilyInstance пытаетесь использовать? Этот?
Пока у меня тоже не получилось программно разместить семейство на плоскости. {"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 (http://thebuildingcoder.typepad.com/blog/2012/02/hosting-a-light-fitting-on-a-reference-plane.html) Но там обсуждается размещение светильников, т.е. на горизонтальной плоскости.
Покопаюсь еще поглубже. О результатах сообщу.
Название: Re: Размещение экземпляра семейства
Отправлено: Адамчук Николай от 03-12-2013, 20:36:59
Да, я пробовал именно этот метод. Правда в справке (подсказке) речь идет о face referenced....
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs29.postimg.org%2Fb950hocqr%2Fimage.jpg&hash=be6d543a268072c368307374b6077d9b) (http://postimg.org/image/b950hocqr/) Но компиляция прошла без ошибок.
Название: Re: Размещение экземпляра семейства
Отправлено: Виктор Чекалин от 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.
Тем не менее по ссылке что я приводил выше, семейство размещали именно на плоскости.
Название: Re: Размещение экземпляра семейства
Отправлено: Адамчук Николай от 03-12-2013, 21:30:16
Да, как раз смотрю этот пример. Попробую изменить семейство... на светильник. Если получится, то может проблема с семейством ?
Название: Re: Размещение экземпляра семейства
Отправлено: Виктор Чекалин от 03-12-2013, 21:40:46
А вы пробуете разместить семейство на вертикальной или горизонтальной плоскости? Я пробовал на вертикальной. А светильники на горизонтальной. Возможно проблема в этом. Либо именно в светильниках
Так же в документации (http://adn-cis.org/assets/gallery/Revit/Docs/Revit 2014 Platform API Developers Guidlines.pdf) я нашел интересную табличку: (https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs12.postimg.org%2F5cljnqhsp%2FOptions_For_Creating_Family_Instance.jpg&hash=13bf6c91114f14b112b4b4a318bdc815) (http://postimg.org/image/5cljnqhsp/) Т.е. для создания экземпляров семейств типовых моделей следует использовать метод с параметрами Face, XYZ, XYZ, FamilySymbol, а для создания светильников с параметрами Reference, XYZ, XYZ, FamilySymbol
В онлайновой версии руководства (http://help.autodesk.com/cloudhelp/2014/ENU/Revit/files/GUID-C7E4C845-C386-4B7B-BDA1-5D2BE7A5C2D8.htm), эта табличка выглядит немного иначе, но подозрения тем не менее остаются.
Не думаю что проблема в семействе. Я создал простенькое новое семейство на основе того же шаблона что и вы, и в результате тоже ошибка.
Название: Re: Размещение экземпляра семейства
Отправлено: Адамчук Николай от 04-12-2013, 11:22:42
Не получается воспроизвести пример Jeremy. Непонятно, что за семейство использовано при размещении на плоскости. Стандартные осветительные приборы не размещаются - у них нет такой возможности. "Family cannot be placed as hosted on an input face reference, because its FamilyPlacementType is not WorkPlaneBased"
Название: Re: Размещение экземпляра семейства
Отправлено: Виктор Чекалин от 04-12-2013, 16:39:38
Николай, я покопался поглубже. Получилось создать экземпляр семейства с помощью метода
Экземпляр создался, но вот свойство Host у него равно null. Да и с направлением в этом случае тоже беда: куда не направляй, все равно будет смотреть вверх. Вобщем метод этот не подходит.
Задал в вопрос в поддержку. Пока ответили в духе: "действительно не получается, и не понятно почему". Скорее всего кроеме Джереми никто не ответит по существу, а он сейчас на Autodesk University. Так что придется подождать. Но скорее всего выявился очередной баг.
Название: Re: Размещение экземпляра семейства
Отправлено: Адамчук Николай от 04-12-2013, 22:08:20
Хорошо. Спасибо подождем ответ.
Название: Re: Размещение экземпляра семейства
Отправлено: Виктор Чекалин от 09-12-2013, 11:59:45
Николай, пришел ответ из техподдержки. Рассмотрели этот случай вместве с командой разработчиков API. Пришли к выводу что действительно в API есть баг, при котором невозможно программно разместить типовую модель на рабочей плоскости. Ждем следующей версии с надеждой на то что баг будет исправлен.