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

ADN Club => Revit API => Тема начата: oskokos от 28-02-2021, 10:58:17

Название: Как в координатах узнать положение Viewport или ScheduleSheetInstance на листе
Отправлено: oskokos от 28-02-2021, 10:58:17
Как в координатах узнать положение Viewport или ScheduleSheetInstance на листе?

Название: Re: Как в координатах узнать положение Viewport или ScheduleSheetInstance на листе
Отправлено: oskokos от 28-02-2021, 11:18:46
c Viewport разобрался: XYZ xyz1 = element.GetBoxCenter();
Осталась спецификация
Название: Re: Как в координатах узнать положение Viewport или ScheduleSheetInstance на листе
Отправлено: Александр Игнатович от 28-02-2021, 11:36:57
ScheduleSheetInstance.Point
Название: Re: Как в координатах узнать положение Viewport или ScheduleSheetInstance на листе
Отправлено: Илья Дрягин от 04-03-2021, 07:51:52
Обнаружил аномалию, связанную с ScheduleSheetInstance.Point
При размещении разных спецификаций с указанием одних и тех же координат спецификации на листе оказываются в разных позициях
1. все сработало правильно, круги - это ноль, указание нулевых координат на листе, и спецификация и штамп в нуле по координате Х

(https://i.postimg.cc/Nyn5LrrR/1.png) (https://postimg.cc/Nyn5LrrR)


2. все то же самое, но выбраны другие спецификации, круги опять же указывают ноль, штамп встал правильно, а вот спецификации уехали вправо. При этом значение Point показывает те же координаты

(https://i.postimg.cc/mtZzXRRz/2.png) (https://postimg.cc/mtZzXRRz)


Сначала подумал, что в спецификациях где то есть внутреннее смещение, но ничего похожего не нашел
Название: Re: Как в координатах узнать положение Viewport или ScheduleSheetInstance на листе
Отправлено: Александр Игнатович от 04-03-2021, 11:50:32
Point не изменяется при разделении спецификации, но, похоже, что это не твой случай.

Есть вариант rvt-шечку посмотреть?
Название: Re: Как в координатах узнать положение Viewport или ScheduleSheetInstance на листе
Отправлено: enot от 04-03-2021, 14:45:17
та же самая беда (давний вопрос), но с разрезами и titleblock
если вставлять на лист через вьюпорт в точку XYZ.Zero бывает что улетает в другую сторону
вот тут похожая проблема для dwg
https://forums.autodesk.com/t5/revit-structure-forum/revit-to-dwg-viewports-showing-wrong-location-in-model-space/td-p/5426776?profile.language=ru

Когда создаешь viewSheet его TitleBlock имеет разную точку XYZ.Zero
(https://i.postimg.cc/1nMPrgFW/zero-Project.png) (https://postimg.cc/1nMPrgFW)
Название: Re: Как в координатах узнать положение Viewport или ScheduleSheetInstance на листе
Отправлено: Илья Дрягин от 04-03-2021, 15:24:44
Есть вариант rvt-шечку посмотреть?
К сожалению нет, тестирую на рабочем проекте. Решил вопрос через сравнивание Point и минимального значение баундинг бокса по Х, если не совпадают, то двигать Point на разницу

           
Код - C# [Выбрать]
  1. ScheduleSheetInstance newSch = ScheduleSheetInstance.Create(doc, sheet.Id, sch.Id, startpoint);
  2.                        
  3. //check position
  4. BoundingBoxXYZ schBB = newSch.get_BoundingBox(sheet);
  5.  
  6. if (schBB.Min.X != startpoint.X - constBBdiff) newSch.Point = new XYZ(newSch.Point.X - (schBB.Min.X - newSch.Point.X) -constBBdiff, newSch.Point.Y, newSch.Point.Z);


constBBdiff - число с форума автодеск на которое баундинг бокс больше графики спецификации