License Delivery maintenance is expected to occur on Saturday, November 30, between 8 AM and 11 AM CET. This may cause a short 3-hours outage in which license-related tasks: license key upload, download, update, SSA validation, access to the license pool and Graphisoft ID authentication may not function properly. We apologize for any inconvenience.
Libraries & objects
About Archicad and BIMcloud libraries, their management and migration, objects and other library parts, etc.

ac_bottomlevel and ac_toplevel parameters

sinceV6
Advocate
Hi everyone.
I've been using the typical parameter settings (ac_bottomlevel=0 and ac_toplevel=ZZYZX) for most of my objects, and they work all right as long as the object is confined between those parameters.

Now I'm trying to do what is displayed, in a very simple form, in the attached image. The basic explanation: two stacked cubes. The base elevation for the object, should be where both cubes meet, top and bottom should grow from this point. That's easy. The problem is that I want to show the top part in stories above and the bottom part in stories below using ac_bottomlevel and ac_toplevel.

If set as standard, the bottom part won't show unless the top part intersects the story below, which I don't want. If I set the bottom_level to be the lower part of the object, the base and top levels (in info box) start acting weird.

I did my research, read the scattered posts about these parameters, but just can't grasp the whole concept of how they are linked. I mean... I do, but there's something weird going on I can't figure out.

It was said that these parameters "start from the object origin of the object", but don't really understand that. The global GDL origin? The local GDL origin? The object origin once placed in floor plan?

I can't set ac_bottomlevel different from 0 or "b:" will display this (plus its elevation to home story); and "t:" will display the level according to its height or ZZYZX, but still I can set ac_toplevel independently to be quite above "t:"; also, I've been struggling to use ac_bottomlevel set different from 0, as any change to b: or t: in the info box will be changed because of this difference.

What would be the correct scripting approach to this? How can I set parameters so:
ac_bottomlevel is at bottom of object
ac_toplevel is at top of object
b: reads 0 when placed in story 0 and 0 elevation
t: reads the top of the object, not its height minus bottomlevel (ZZYZX-ac_bottomlevel, as I can see)
z: (in coordinates palette) reads correct values.

thanks in advance.

levels.png
16 REPLIES 16
Anonymous
Not applicable
sinceV6
Advocate
laszlonagy wrote:
FYI:

fenék (Hungarian): posterior. (It is not a dirty word, but of course, it has many synonyms, just like in English)
I did my google homework . My son and I have a little game that has been going on for a while: If one of us asks the other one something that gets answered or commented with "I don't know", the troll reply is: Well... for tomorrow I want a 5 sheet report on the subject arial 8 normal line spacing small margins... and then we laugh.
Olivier wrote:
May be this thread can help.
http://archicad-talk.graphisoft.com/viewtopic.php?p=185021&highlight=acbottomlevel+actoplevel+parame...
Thanks Olivier. That thread and this one were great help when first trying to make an object show in different stories. I have been using those settings in a lot of simple objects, where the bottomlevel is the start of the object, but this time I need something different.
andro55 wrote:
EPS=0.00001 !-----Error checking ----------------

GLOB_ELEM_TYPE = 1 !----- element type (1= Object)
!!**** ac_bottomlevel
ac_bottomlevel = GLOB_ELEVATION + GLOB_HSTORY_ELEV
IF GLOB_ELEVATION < EPS THEN
!!**** ac_toplevel
ac_toplevel = GLOB_ELEVATION + ZZYZX + GLOB_HSTORY_ELEV
ELSE
ac_toplevel = ZZYZX + GLOB_ELEVATION + GLOB_HSTORY_ELEV
ENDIF
!------------------------------------------------------------------------------------------
IF GLOB_ELEVATION <= EPS THEN
GLOB_ELEVATION = GLOB_ELEVATION - a*2
ENDIF
!------------------------------------------------------------------------------------------
Thanks andro55. I see what you did there . But from what I can see in your master script, in the image, you are calculating your object levels. Are you passing these to ac_bottomlevel and ac_toplevel via PARAMETERS command? How are you not getting duplicated usage if so? In my tests, whenever ac_bottomlevel#0 weird things start to happen, e.g.
EDIT: the following code shouldn't be used in regular objects. It's just an example.

!===PARAMETERS SCRIPT===
PARAMETERS ac_bottomlevel = (-1)
PARAMETERS ac_toplevel = ZZYZX
If you place your object at story0, z=0, info box will display (-1) and then use info box to change the bottom: change to 0 and it will stay at (-1) Type (-0.5) and it will change to (-1.5) because you set ac_bottomlevel to (-1)

I don't know how the rest of your object is coded, but what I need would be like having coded yours so that the top circular concrete slab is the bottom of your object (and you want that to be in info box) and the rest of the bottom sewer shaft is below that.

Perhaps I'm asking too much, and need to find a different approach to my need. The standard library elevator object has some of the same issues I'm talking about.

Thanks everyone.
Anonymous
Not applicable
In PARAMETER Script I have:

PARAMETERS A = A, B = A, shaft_diam = A, ZZYZX = ZZYZX,
ac_top_level = ac_top_level,
ac_bottom_level = ac_bottom_level

ac_top_level......+ or - value
ac_bottom_level......+ or - value
"ac_top_level"....must be greater then "ac_bottom_level"!!



In the Parameters window I have :
sinceV6
Advocate
Thanks. I understand what you are doing. It's the same I've done for other objects.

I guess I'm twisting things, because I want AC to behave differently... and I'm the one who needs to change the approach.

Let me try to explain better: I build a 3d block, A and B are not relevant, only Z, so it has its height ZZYZX. It will be placed normally like any standard 3D block, its base will sit at a story 0, will be its home story, its b: will be displayed in info box as 0, and its height or t: will be independent.

Basically:
in 3d script: BLOCK A,B,ZZYZX
in parameters script: PARAMETERS ac_bottomlevel=0, ac_toplevel=ZZYZX

This part of the object, will only be shown from its home story to ac_toplevel. Everything ok so far.

Now I want to add a second block, underneath, height driven by a separate parameter, with its top colliding with the first block and its bottom according to that parameter. To be able to show this in story below (using relevant stories, and because this block's display will vary depending on cut plane height) AFAIK I have to set ac_bottomlevel to the bottom of this second block, and this then shifts the origin for the ZZYZX object parameter.

It would work if I didn't want to have its home story and 0level right in the middle. There are other options, like using GLOB_CH_STORY_DIST, but has other caveats as well.

I'll keep trying to find the correct approach. Thanks a lot for your help.

On a side note... are you setting the object's GLOB_ELEVATION? Can an object be moved this way?
Anonymous
Not applicable
On a side note... are you setting the object's GLOB_ELEVATION? Can an object be moved this way?

Yes, I set "b" (bottom) and "t" (top) values of the Shaft directly in the Info Box, and it´s OK.
Anonymous
Not applicable
sinceV6
Advocate
Awesome! But I can only make it work if ac_bottomlevel = 0
Very simple script, using your master script. Here: