Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: DMuzer от 01-06-2022, 11:13:52

Название: По коодинатам при создании спринклера
Отправлено: DMuzer от 01-06-2022, 11:13:52
Доброго дня! Коллеги! Может ли кто нибудь объяснить два момента? Программно создаю спринклер и сталкиваюсь с такими чудесами:
1. Если в функции NewFamilyInstance задаю уровень(!) в качестве основы, то спринклер улетает в непонятном (пока) направлении. Когда сравниваю координаты точки, которые я передаю в функцию, и координаты фактически нового спринклера, то они отличаются... Есть догадка что при передаче уровня, координаты точки он воспринимает относительно этого уровня, НО я ожидал, что X и Y на уровне совпадают с проектным, отличается только отмека высоты, но видимо, я ошибаюсь. Если можно, прокомментируйте как это происходит, в документации пока не нашел информации на этот счет...
2. Если я создаю спринклер просто без основы в виде уровня, то спринклер создается вроде как на правильном месте, но при этом высота устанавливается другая, отличная от той, которую я передаю в координатах... Высоту приходится корректировать после создания спринклера. Это так и работает? Или все-таки, по идее сразу можно его на правильную отметку направлять? (Была идея, что спринклер создается на отметке по умолчанию, но нет... в семействе было задано 0.0, а спринклер на другой отметке).
Прокомментируйте пожалуйста! Ну либо дайте ссылочку где бы этот вопрос более менее подробно был изложен...
Название: Re: По коодинатам при создании спринклера
Отправлено: Александр Игнатович от 01-06-2022, 12:26:41
1) Координаты в internal units (футы) преобразовал?

2) Есть такие штуки, как базовая точка и точка съемки, т.е. "программный" (0, 0, 0) не обязательно соответствует нулю проектному

3) Да, высота (XYZ.Z) при создании семейства (NewFamilyInstance) на уровне насколько помню, задается относительно самого уровня
Название: Re: По коодинатам при создании спринклера
Отправлено: DMuzer от 01-06-2022, 13:47:45
1) Координаты в internal units (футы) преобразовал?

2) Есть такие штуки, как базовая точка и точка съемки, т.е. "программный" (0, 0, 0) не обязательно соответствует нулю проектному

3) Да, высота (XYZ.Z) при создании семейства (NewFamilyInstance) на уровне насколько помню, задается относительно самого уровня

По единицам я такую фишку относительно понял, одно время помучился с ней, поэтому более или менее тут уверен, что правильно, тем более что: все координаты, которые передаю для создания в общем то вычислены относительно объектов в модели во внутренних единицах. Ну и опять же я сделал такую проверочную штуку: вывел значения координат именной той переменной которую передаю в функцию, а потом взял Location.Point созданного объекта и они разные. Опять же разница в зависимости от того передаю ли я в качестве основы уровень или не передают отличается по-разному: если не передаю уровень, то создается спринклер с правильными X и Y но Z совсем другой (в моем случае создает на отметке 1500 от нуля) если передаю уровень то и координаты XY также отличаются от тех которые передал. вот такой интересный момент. понятно, что какая то закономерность есть, но хотелось бы четко понимать в каких случаях как они будут преобразованы. И опять же если не даешь основу, то логично было бы ожидать, что координаты будут восприняты как абсолютные...
2. В принципе этот момент исключить нельзя, но по идее я в чистом проекте это делаю, есть надежда что без специальных телодвижений они должны совпадать... Или я ошибаюсь?