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

ADN Club => Revit API => Тема начата: ivmax от 04-09-2016, 13:43:40

Название: Разница в ширине стены
Отправлено: ivmax от 04-09-2016, 13:43:40
Добрый день!
Подскажите пожалуйста, в чем может быть причина различия ширины стены:
1. полученной через свойство Wall.Width;
2. полученной путем вычитания координат BoundingBoxXYZ.

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


(https://s9.postimg.org/cbx756sq3/image.png) (https://postimg.org/image/cbx756sq3/)
Название: Re: Разница в ширине стены
Отправлено: Александр Ривилис от 04-09-2016, 15:08:49
Приветствую на форуме!
Плавающее число (double) имеет максимальную точность 16 значащих десятичных цифр. При математических операциях точность может только уменьшатся. То, что у тебя 14 совпадающих цифр - это очень даже хорошо. Не думаю, что для толщины стены разница в 15-ом знаке принципиальна. :)
Название: Re: Разница в ширине стены
Отправлено: ivmax от 04-09-2016, 16:42:08
Да, согласен разница не принципиальная. Просто хотелось бы причину выяснить, ведь у остальных параметров (длина и высота) сходятся все знаки :)
Название: Re: Разница в ширине стены
Отправлено: Александр Ривилис от 04-09-2016, 17:07:05
Судя по тому что я вижу - толщина этой стены 20см, что приблизительно равно 0.656167979002624671916010498687664041994750656167979002624671916010498687664041994750656167979002624671916010498687664041994750656167979 футов.
Какие значения  для длины и высоты я не знаю. Возможно там какие-то более "красивые" числа, так как высоты и длины обычно значительно больше чем толщины стен. Соответственно при одинаковом количестве правильных значащих цифр их количество после запятой будет меньше.
Еще возможно это связано с алгоритмом вычисления BoundingBox.
Название: Re: Разница в ширине стены
Отправлено: Виктор Чекалин от 05-09-2016, 13:49:22
ivmax, данная разница непременно связана с особенностями вычисления BoundingBox. Значение свойства Wall.Width - это параметрическое свойство стены, характеризующее ее толщину. Если необходимо получить ширину стены, то необходимо использовать именно это свойство.
BoundingBox, это параллелепипед, в который помещается геометрия объекта. Данное свойство является вычисляемым и имеет две важные особенности:

И даже если все будет говорит о том, что ширина BoundingBox должна быть идентичной свойству Wall.Width, то разница все равно может быть из-за особенностей вычисления BoundingBox и погрешности измерений.
Название: Re: Разница в ширине стены
Отправлено: ivmax от 05-09-2016, 14:05:41
Все уяснил))Большое спасибо за разъяснения!