(изменено: Yuriy, 11 декабря 2013г. 08:25:29)

Тема: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Всем привет!

Кто нибудь сможет подсказать как в прилагаемом файле настроить ZONE, чтобы суммировала округленные значения SPACEов?

Чтобы сумма отображаемых значений площадей SPACE  2.02 и 2.02 равнялась 4.04 а не 4.05
При этом не хотелось бы ручным способом модифицировать контуры SPACE подгоняя под округленное значение площади или навешивать на зоны дополнительные SPACE для корректировки общей суммы.

тестовый файл -
http://yadi.sk/d/XkqkeykLDqSAu

более усложненный файл для тестирования
http://yadi.sk/d/ZacXwtf6E7khn

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Привет!
Юра, проверь, на чёрном фоне еле заметно, чуть ниже цифры 2.02 стоит 2.025,
поэтому и результат такой

(изменено: Yuriy, 10 декабря 2013г. 10:45:39)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Виталий, привет!
совершенно верно
2.0250 - это непечатаемое значение BaseArea, округленное до 4го знака отображаемое для сравнения с округленным и иногда модифицированным значением CalculationArea
на чертеже должно отображаться до двух знаков
проблема в том, что ZONE суммирует неокругленные значения SPACE и округляет результат
поэтому результат неравен сумме отображаемых на чертеже значений площадей SPACE, это приводит к бурному недовольству заказчиков и дополнительной ручной работе по исправлению этого несоответствия

Пока немогу решить эту проблему (((

Учитывая, что ZONE суммирует CalculatedArea попытался подсунуть формулу округления (round) в присоединяемом Calculation modifier но это не прокатило, хотя в строке примера округление работало правильно(((   

Хотел программным путем выявить у каких ZONE суммарная площадь не соответствует сумме округленных SPACE но лиспом не смог добраться до списка прикрепленных SPACE (((

Хотел при помощи лиспа назначить Calculation modifier для округления каждого SPACE до второго знака, но не смог ни добраться до списка модификаторов, назначенных для space ни до способа программного назначения модификаторов(((

Буду завтра пробивать единственный пока выход - отображать на чертеже значение каждого space округленное не до 2 а до 3х знаков, чтобы у проверяющих на калькуляторе заказчиков получалась правильная сумма...

(изменено: Yuriy, 10 декабря 2013г. 10:46:38)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Yuriy пишет:

Буду завтра пробивать единственный пока выход - отображать на чертеже значение каждого space округленное не до 2 а до 3х знаков, чтобы у проверяющих на калькуляторе заказчиков получалась правильная сумма...

отклонили...
более того некоторым нужно округлять до 1го знака


Yuriy пишет:

Пока немогу решить эту проблему (((

проблему решил написанием физического "округлятора" площади AECSPACE до второго знака...
(на каждый SPACE один клик)


PS
неудовлетворенности остались
- управлением суммирования ZONE
- функциональностью управления CalculationModifier
- прозрачностью доступа при помощи лиспа к управлению CalculationModifaer и прикрепленным к ZONE SPACEам
- найденному "физическому" способу решения проблемы

тема не закрыта...
поиск более рациональных путей решения проблемы остается...

(изменено: Vitaly, 10 декабря 2013г. 15:47:07)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Юра, попробуй такую фигучку >>

AA-2012-eng. Как заставить ZONE суммировать нужным способом?

AA-2012-eng. Как заставить ZONE суммировать нужным способом?


тестовый файл

PS
На первой картинке я поменял формат данных - "площадь"

(изменено: Yuriy, 10 декабря 2013г. 23:42:27)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Виталий спасибо!
попробовал,
получилось!!
порадовался!!!
но к сожалению не долго ) (((
протестировал файл на котором отрабатывал физический "округлятор"
суммы не бьют (((
очень надеюсь на новую фигучку...

более усложненный файл для тестирования
http://yadi.sk/d/ZacXwtf6E7khn

обрати внимание на значение площади 2.01 при базовом значении 2.0200
сможешь это как нибудь прокоментировать?

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

К сожалению, у меня нет АА2012 (и установить я его не могу). Поэтому "насухую": а если в PropertySet для стиля помещений ввести дополнительное пользовательское поле, куда и помещать округленное значение? И суммировать уже по этому полю?

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

После некоторого числа попыток как ранее так и сейчас у меня пока складывается впечатление, что ZONE суммирует не значения из конкретного свойства, определенного в PropertySet, а значение свойства CalculatedArea объекта AECSPACE (см. ниже дамп SPACE)

-----
Дамп объекта
-----
; IAecSpace: Space entity used for floor layout planning
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00000001402e91d8>
;   Area = 2.02
;   Associative = 0
;   BasePerimeter (RO) = 6400.0
;   BaseProfile = #<VLA-OBJECT IAecProfile 000000004299ef80>
;   BoundaryOffsets = 0
;   BoundSpaces = 1
;   CalculatedArea (RO) = 2.02
;   CalculatedPerimeter (RO) = 6400.0
;   CalculationPlane1Height = 0.0
;   CalculationPlane2Height = 0.0
;   CeilingThickness = 4.0
;   Description = ""
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0000000008d236f0>
;   FloorThickness = 12.0
;   GeometryType = 0
;   Handle (RO) = "4B5"
;   HasExtensionDictionary (RO) = -1
;   Height = 5500.0
;   HeightAboveCeiling = 80.0
;   HeightBelowFloor = 0.0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 00000000429d59f8>
;   Justification = 0
;   Layer = "test"
;   Length = 1350.0
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Location = (-315903.0 -26873.6 0.0)
;   Material = "ByLayer"
;   MaxArea (RO) = 929.03
;   MaxLength (RO) = 100000.0
;   MaxWidth (RO) = 100000.0
;   MinArea (RO) = 0.0464515
;   MinLength (RO) = 20.0
;   MinWidth (RO) = 20.0
;   Name = "Unnamed"
;   Normal = (0.0 0.0 1.0)
;   ObjectID (RO) = 42
;   ObjectID32 (RO) = 42
;   ObjectName (RO) = "AecDbSpace"
;   OwnerID (RO) = 43
;   OwnerID32 (RO) = 43
;   PlotStyleName = "ByLayer"
;   Rotation = 0.0
;   ShadowDisplay = 0
;   Style = #<VLA-OBJECT IAecSpaceStyle 0000000042869190>
;   StyleName = "line---50-45"
;   SurfaceComponentCount (RO) = ...Indexed contents not shown...
;   SurfaceCount (RO) = 2
;   SurfaceHeightDefault = 5584.0
;   TargetArea (RO) = 9.2903
;   TargetLength (RO) = 3000.0
;   TargetWidth (RO) = 3000.0
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 00000000429d82d0>
;   Visible = -1
;   Volume (RO) = 0.0
;   Width = 1500.0

Может быть я и неправ, т.к. не уделил достаточно времени проверке этого предположения...


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


Проблема округления SPACE была и в ранних версиях AA
А в 2014 сегодня постараюсь попробовать...

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

складывается впечатление, что ZONE суммирует не значения из конкретного свойства, определенного в PropertySet, а значение свойства CalculatedArea объекта AECSPACE

Zone якорится к помещениям и оперирует площадями объектов и думаю, что без учёта модификаторов и округляет по-своему...
За эти якоря я брался как-то, но безуспешно, потому как они не совсем стандартные, отличаются от обычных якорей, например м-ду окном и стеной...
Юра, если знать задачу, то может как-то зайти с другого бока, для её решения?

(изменено: Yuriy, 12 декабря 2013г. 12:38:32)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Vitaly пишет:

думаю, что без учёта модификаторов

модификаторы учитываются это точно,
проверено на балконах и лоджиях (для них используются поправочные понижающие коэффициенты)

Vitaly пишет:

Юра, если знать задачу, то может как-то зайти с другого бока, для её решения?

задача в определении:

- общей, жилой и приведенной площади квартир как для отдельной квартиры так и для этажа, секции, всего дома в целом. Эти данные вставляются в маркеры квартир, в таблицу квартирографии, в таблицу экспликации помещений.

- промежуточных сумм отдельных групп помещений, вставляемых в экспликацию помещений



У меня пока осталась последняя надежда на правильно написанную формулу в CalculationModifier
Позднее я создам еще один тестовый пример и попрошу помощи в реализации формулы, используя функции бэйсика с которыми пока не совсем дружу...

(изменено: Vitaly, 12 декабря 2013г. 12:50:58)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

...А почему возникает необходимость такого округления?

У меня пока осталась последняя надежда...


)) мы ещё не брались как следует...

Я, как только будет время, попробую написать формулу, для округления Зоны...

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Потому что заказчики на калькуляторе складывают голубые цифры (площади помещений)
и очень ругаются несоответствию зеленой цифре (жилая,общая,приведенная площадь (у меня в примерах только одна из трех для упрощения))

У меня в формуле не прокатила функция округления ROUND и я пытался определить дробную часть от вычисленной суммы начиная с третьего знака и вычесть ее из общей, но застрял на том как это сделать...

(изменено: Vitaly, 13 декабря 2013г. 16:42:54)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

У меня в формуле не прокатила функция округления ROUND и я пытался определить дробную часть от вычисленной суммы начиная с третьего знака и вычесть ее из общей, но застрял на том как это сделать...

...это как? можно подробней?
Я т.д. что round здесь не подойдёт, оставить 2 знака после запятой не округляя можно, например так >>

RESULT = Split( s, ".", -1,0 ) (0)&"."&Left(Split( s, ".", -1,0 ) (1),2)

где s - площадь

PS
но дело не в этом. Дело в том, что мы не можем добраться до тех площадей, которые использует zone
ибо их надо обрабатывать и подсовывать zone, что непонятно, можно ли вообще как-то сделать!
Может проще отказаться от Зон и обойтись формулами, я уже это делал когда-то

(изменено: Yuriy, 16 декабря 2013г. 14:51:30)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Виталий, спасибо за формулу, с лету я пока не смог ей воспользоваться т.к. похоже некорректно ввел...
сегодня вечером или завтра в течении дня выложу тестовый файл в котором приведу работающие и неработающие примеры
- с round
- c твоей формулой
- с тем как модификаторы space влияют на итоговую сумму zone
...

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Yuriy пишет:

выложу тестовый файл в котором приведу работающие и неработающие примеры
- с round
- c твоей формулой
- с тем как модификаторы space влияют на итоговую сумму zone

тестовый файл - http://yadi.sk/d/TF7xW1ArEQ5v5

(изменено: Vitaly, 17 декабря 2013г. 12:12:10)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

del

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Привет!
Юра, имелось в виду округление с помощью формул в свойствах, а не в учетных формулах помещений.
Учётные формулы не допускают выражения Vbscript!
Действительно можно было бы сложить остаток от каждой площади
0,006 + 0,007 + 0,008 + 0,009 = 0,3
и вычесть из суммы
8,11 - 0,3 = 8,08
Но к сожалению, Zone не содержит имён помещений, поэтому получить заданный результат не влезая внутрь зоны пока не представляется возможным.

(изменено: Yuriy, 18 декабря 2013г. 11:53:19)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Vitaly пишет:

Учётные формулы не допускают выражения Vbscript!


выдержка из помощи

...

5.Add a variable to the calculation modifier.
A variable consists of the variable name and its value. For example, to create a plaster deduction of 3 percent, click Add, and enter Plaster_Deduction for Variable and 0.97 for Value.
You should use a descriptive name as a variable name to add transparency to your formulas.
To set up formulas, you can also enter direct mathematical values.
The following characters and words are not allowed:

- Special characters such as ?()*- (You may, however use an underscore).
- Spaces
- Accent marks such as &#228;, &#246;, &#252;, &#234;, &#232;, &#229;
- Key words from Visual Basic®.

For information about Visual Basic key words, refer to the Visual Basic Reference.
One of the following values is displayed for Data depending on current selections on the Apply To tab:

- AreaValue (if Area is selected)
- PerimeterValue (if Perimeter is selected)
- Value (if both Area and Perimeter are selected)

You cannot edit this value; if you want to change it, click the Apply To tab and change the current selections there as desired.

...

7. To test your formula, enter a sample value for Input, press ENTER, and check the result for Output.

...


я кажется приблизился к решению задачки )))
Кто быстрее?  :D

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Yuriy пишет:

я кажется приблизился к решению задачки )))

см. http://yadi.sk/d/mKjKi9kgEWg8J

откорректировал формулу с ROUND в calculation modifiers
round(AreaValue / 1000000 , 2)*1000000
в таком виде видно как она работает с площадью
но от этого пока не легче см. вопросы в файле http://yadi.sk/d/mKjKi9kgEWg8J

Split не работает т.к. похоже предназначена для работы со строками а не с действительными числами

Yuriy пишет:

я кажется приблизился к решению задачки )))

но похоже лишь чуть-чуть...

(изменено: Yuriy, 18 декабря 2013г. 13:18:04)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Все кажется свершилось

В последнем файле установил в "Round Off" - Nearest и  Value = 0
ИТОГОВАЯ СУММА в ZONE СООТВЕТСТВУЕТ СУММЕ ОТОБРАЖАЕМЫХ ПЛОЩАДЕЙ SPACE

далее буду проверять в рабочем порядке...

(изменено: Vitaly, 18 декабря 2013г. 16:31:07)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Юра, получается, что Round каким-то образом удалось сбить с толку,
разделив и умножив площадь на 1000000.0?

PS
Меня сбил с толку >>

...
- Special characters such as ?()*- (You may, however use an underscore).
- Spaces
- Accent marks such as &#228;, &#246;, &#252;, &#234;, &#232;, &#229;
- Key words from Visual Basic®.

Я немного потыкался и бросил...
Похоже, что остальные математические функции VBScript также могут работать в окне учётных формул,
что очень радует! :D

(изменено: Yuriy, 18 декабря 2013г. 16:58:35)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Vitaly пишет:

получается, что Round каким-то образом удалось сбить с толку,
разделив и умножив площадь на 1000000.0?

Не сразу сообразил что округлять нужно значение AreaValue переведенное из квадратных миллиметров в квадратные метры, а для перевода нужно поделить на 1 000 000, а поскольку потом AA ,будет сама уменьшать на 1 000 000, то пришлось обратно умножить на 1 000 000, но уже округленное значение...

(изменено: Vitaly, 18 декабря 2013г. 17:11:09)

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

получается, что Round каким-то образом удалось сбить с толку,
разделив и умножив площадь на 1000000.0?

... иначе всё равно получили бы 8.11 а не 8.08
т.к. Round не обрезает, а округляет число  !!!

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Vitaly пишет:

т.к. Round не обрезает, а округляет число !!!

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

Re: AA-2012-eng. Как заставить ZONE суммировать нужным способом?

Юрий, спасибо за решение проблемы с округлением площадей в ZONE, долго мучилась с этой задачкой, приходилось делать это программно окольными путями, а тут такое стильное и легкое решение, спасибо.