Поле Host объекта FamilyInstance, не прописывается ID элемента

Автор Тема: Поле Host объекта FamilyInstance, не прописывается ID элемента  (Прочитано 4698 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Не получается записать в поле Host объекта FamilyInstance, ElementId элемента из связанного файла.

В коде это выглядит как то так:
Код - C# [Выбрать]
  1.       using (HostObject HostObj = HostDoc.GetElement(HostObjId) as HostObject)
  2.       {
  3.          FamilyInstance cutNew = Doc.Create.NewFamilyInstance(
  4.             InsertPoint,
  5.             FamilySqareFloor,
  6.              XYZ.BasisZ,
  7.             HostObj,
  8.             StructuralType.NonStructural);
  9.       }
HostObj  - объект из связанного файла
HostDoc - связанный файл
Doc - файл в котором создаю объект
Проблема в том, что в результате в cutNew.Host == null, а вроде как должно бы хоть что то и очень хочется, что бы ссылка была...

Может я что то не так делаю?
Как записать в экземпляр семейства ссылку на объект из связанного файла?

Off-Topic: показать
ЗЫ.
Проверка орфографии не знает русский язык

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Может я что то не так делаю?

Да :-)

Тебе нужен метод
Код - C# [Выбрать]
  1. public FamilyInstance NewFamilyInstance(
  2.         Reference reference,
  3.         XYZ location,
  4.         XYZ referenceDirection,
  5.         FamilySymbol symbol
  6. )

Reference - ссылка на поверхность в связанном файле. Тебе еще понадобится метод:
Код - C# [Выбрать]
  1. Reference.CreateLinkReference

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Ага, Спасибо. Опробую , отмечусь с решением.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Off-Topic: показать
Off-Topic: hide
ЗЫ.
Проверка орфографии не знает русский язык
Случайно включилась - отключил её как класс.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Family cannot be placed as hosted on an input face reference, because its FamilyPlacementType is not WorkPlaneBased.
Я так понимаю, что это не со всякими семействами прокатывает и что делать бедолагам у который Family имеет FamilyPlacementType отличный от WorkPlaneBased, а к примеру OneLevelBased или OneLevelBasedHosted?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Так такие семейства и через пользовательский интерфейс на элемент связанного файла не положишь

Оффлайн Владимир ШуАвтор темы

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Звучит так, как будто моя задача не решаема... зайдем с другой стороны, мне нужно, что бы в том экземпляре семейства которое я создаю, была ссылка на хост объект из связанного файла и что бы я по этой ссылке потом смог найти этот объект работая уже внутри самого связанного файла.
Собственно может есть другое место куда можно сохранить эту ссылку и потом правильно идентифицировать хост объект?

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

Как то громоздко написал... применительно к Ревиту, это какие то временные построения инженеров, которые они не хотят делать сразу в основной модели.

Отмечено как Решение Владимир Шу 18-05-2020, 10:36:16

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Звучит так, как будто моя задача не решаема... зайдем с другой стороны, мне нужно, что бы в том экземпляре семейства которое я создаю, была ссылка на хост объект из связанного файла и что бы я по этой ссылке потом смог найти этот объект работая уже внутри самого связанного файла.
Собственно может есть другое место куда можно сохранить эту ссылку и потом правильно идентифицировать хост объект?

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

Как то громоздко написал... применительно к Ревиту, это какие то временные построения инженеров, которые они не хотят делать сразу в основной модели.
Тебе нужен Extensible Storage - part 1, part 2
А у элемента из связанного файла лучше брать не Id, а UniqId