Libraries & objects
About Archicad and BIMcloud libraries, their management and migration, objects and other library parts, etc.

Adding more lines to Zone Stamp Display

Anonymous
Not applicable
Hi all

I need to be able to display more lines of text than the typical zone stamp can manage.

Ideally I'd like to display one or several of the "User Defined" text boxes that are in the zone stamp under Parameters for Listing(I say Ideally, but all I really want to do is add another line in)

The problem is that we need to display some text to define the floor finish for each zone for our planning submission drawings, but we've already used the "Flooring" text box for another purpose

I've tried editing the GDL of the zone stamp by adding more lines in that match the parameters of "Flooring" but couldn't get it to work:

dim stBoxText[11]
stBoxText[1] = `Zone Name`
stBoxText[2] = `Zone No.`
stBoxText[3] = `Floor Finish`
stBoxText[4] = `Measured Area`
stBoxText[5] = `Calculated Area`
stBoxText[6] = `Source`
stBoxText[7] = `Perimeter`
stBoxText[8] = `Ceiling Height`
stBoxText[9] = `Volume`
stBoxText[10] = `None`
stBoxText[11] = `Occupancy`
numBoxText = 11

dim functionOrder[11]
functionOrder[1] = ord_1
functionOrder[2] = ord_2
functionOrder[3] = ord_3
functionOrder[4] = ord_4
functionOrder[5] = ord_5
functionOrder[6] = ord_6
functionOrder[7] = ord_7
functionOrder[8] = ord_8
functionOrder[9] = ord_9
functionOrder[10] = ord_10
functionOrder[10] = ord_11
numFunctionOrder = 11

dim functionFrame[11]
functionFrame[1] = bFrameName
functionFrame[2] = bFrameNum
functionFrame[3] = bFrameFin
functionFrame[4] = bFrameGrossArea
functionFrame[5] = bFrameArea
functionFrame[6] = bFrameCode
functionFrame[7] = bFramePeri
functionFrame[8] = bFrameCeil
functionFrame[9] = bFrameVolume
functionFrame[10] = 0
functionFrame[11] = gs_show_frame_occupancy


dim oldShowBoolean[9]
oldShowBoolean[1] = name
oldShowBoolean[2] = num
oldShowBoolean[3] = Fin
oldShowBoolean[4] = GrossArea
oldShowBoolean[5] = area
oldShowBoolean[6] = code
oldShowBoolean[7] = peri
oldShowBoolean[8] = ceil_s
oldShowBoolean[9] = Volume


I edited "Flooring" to read as Source and added in "Floor finish" as an extra parameter. I've gone through all of the scripting I could find (more than I've pasted in here) but got an error

"Wrong loop nesting at line 249 in the Master script..."

line 249 reads " NEXT iFunction "

Anyway, I'm hoping there's an easier way to achieve the extra information display in the zone stamp, has anyone achieved this before?

I hope what I'm asking is reasonable intelligible....

cheers

Mark RR
2 REPLIES 2
Anonymous
Not applicable
FULL GDL MASTER SCRIPT:

EPS = 0.0001

w=0

dim stFontStyle[4]
stFontStyle[1] = `Plain`
stFontStyle[2] = `Bold`
stFontStyle[3] = `Italic`
stFontStyle[4] = `Underline`

dim stBoxText[11]
stBoxText[1] = `Zone Name`
stBoxText[2] = `Zone No.`
stBoxText[3] = `Floor Finish`
stBoxText[4] = `Measured Area`
stBoxText[5] = `Calculated Area`
stBoxText[6] = `Source`
stBoxText[7] = `Perimeter`
stBoxText[8] = `Ceiling Height`
stBoxText[9] = `Volume`
stBoxText[10] = `None`
stBoxText[11] = `Occupancy`
numBoxText = 11

dim functionOrder[11]
functionOrder[1] = ord_1
functionOrder[2] = ord_2
functionOrder[3] = ord_3
functionOrder[4] = ord_4
functionOrder[5] = ord_5
functionOrder[6] = ord_6
functionOrder[7] = ord_7
functionOrder[8] = ord_8
functionOrder[9] = ord_9
functionOrder[10] = ord_10
functionOrder[10] = ord_11
numFunctionOrder = 11

dim functionFrame[11]
functionFrame[1] = bFrameName
functionFrame[2] = bFrameNum
functionFrame[3] = bFrameFin
functionFrame[4] = bFrameGrossArea
functionFrame[5] = bFrameArea
functionFrame[6] = bFrameCode
functionFrame[7] = bFramePeri
functionFrame[8] = bFrameCeil
functionFrame[9] = bFrameVolume
functionFrame[10] = 0
functionFrame[11] = gs_show_frame_occupancy


dim oldShowBoolean[9]
oldShowBoolean[1] = name
oldShowBoolean[2] = num
oldShowBoolean[3] = Fin
oldShowBoolean[4] = GrossArea
oldShowBoolean[5] = area
oldShowBoolean[6] = code
oldShowBoolean[7] = peri
oldShowBoolean[8] = ceil_s
oldShowBoolean[9] = Volume


! ==============================================================================
! Compatibility
! ==============================================================================

if gs_compatibility_contr = 0 then

iCompatibOrder = 1
for iCompatib = 1 to 9
if oldShowBoolean[iCompatib] = 1 then
functionOrder[iCompatibOrder] = stBoxText[iCompatib]
iCompatibOrder = iCompatibOrder + 1
endif
next iCompatib
if iCompatibOrder <= 9 then
repeat
functionOrder[iCompatibOrder] = stBoxText[9]
iCompatibOrder = iCompatibOrder + 1
until iCompatibOrder = 10
endif

parameters ord_1 = functionOrder[1],
ord_2 = functionOrder[2],
ord_3 = functionOrder[3],
ord_4 = functionOrder[4],
ord_5 = functionOrder[5],
ord_6 = functionOrder[6],
ord_7 = functionOrder[7],
ord_8 = functionOrder[8],
ord_9 = functionOrder[9]

if box_y then
bFrameName = 0
bFrameNum = 1
bFrameFin = 1
bFrameGrossArea = 1
bFrameArea = 1
bFrameCode = 1
bFramePeri = 1
bFrameCeil = 1
bFrameVolume = 1

else
bFrameName = 0
bFrameNum = 0
bFrameFin = 0
bFrameGrossArea = 0
bFrameArea = 0
bFrameCode = 0
bFramePeri = 0
bFrameCeil = 0
bFrameVolume = 0

endif
parameters bFrameName = bFrameName,
bFrameNum = bFrameNum,
bFrameFin = bFrameFin,
bFrameCode = bFrameCode,
bFrameGrossArea = bFrameGrossArea,
bFrameArea = bFrameArea,
bFramePeri = bFramePeri,
bFrameCeil = bFrameCeil,
bFrameVolume = bFrameVolume
endif

wasOldstyleParameter = 0
for iFront = 1 to 10
if functionOrder[iFront] = `Measured Gross Area` then
functionOrder[iFront] = stBoxText[4]
wasOldstyleParameter = 1
endif
next iFront

if wasOldstyleParameter = 1 then
ord_1 = functionOrder[1]
ord_2 = functionOrder[2]
ord_3 = functionOrder[3]
ord_4 = functionOrder[4]
ord_5 = functionOrder[5]
ord_6 = functionOrder[6]
ord_7 = functionOrder[7]
ord_8 = functionOrder[8]
ord_9 = functionOrder[9]
parameters ord_1 = functionOrder[1],
ord_2 = functionOrder[2],
ord_3 = functionOrder[3],
ord_4 = functionOrder[4],
ord_5 = functionOrder[5],
ord_6 = functionOrder[6],
ord_7 = functionOrder[7],
ord_8 = functionOrder[8],
ord_9 = functionOrder[9]
endif

! ==============================================================================
! Hiding text parameters when their's unused
! ==============================================================================

bZname = 1
bZnum = 1
bZFin = 1
bZgross = 1
bZarea = 1
bZcode = 1
bZperi = 1
bZheight = 1
bZvolume = 1
bOccupancy = 1

FOR iFunction = 1 to 10 ! 9 -> None does nothing
poss = iFunction
if ord_1 = stBoxText[iFunction] then
poss = poss + 100
endif
if ord_2 = stBoxText[iFunction] then
poss = poss + 100
endif
if ord_3 = stBoxText[iFunction] then
poss = poss + 100
endif
if ord_4 = stBoxText[iFunction] then
poss = poss + 100
endif
if ord_5 = stBoxText[iFunction] then
poss = poss + 100
endif
if ord_6 = stBoxText[iFunction] then
poss = poss + 100
endif
if ord_7 = stBoxText[iFunction] then
poss = poss + 100
endif
if ord_8 = stBoxText[iFunction] then
poss = poss + 100
endif
if ord_9 = stBoxText[iFunction] then
poss = poss + 100
if ord_10 = stBoxText[iFunction] then
poss = poss + 100
endif

if poss = 1 then
hideparameter "iname", "AC_TextFont_1", "cn_zn", "zonastyle", "zonapen", "bFrameName"
bZname = 0
endif
if poss = 2 then
hideparameter "inum", "zonofont", "zonostyle", "zonopen", "bFrameNum"
bZnum = 0
endif
if poss = 3 then
hideparameter "iFin", "FinText", "FinFont", "FinStyle", "FinPen", "bFrameFin"
bZFin = 0
endif
if poss = 4 then
hideparameter "iGrossArea", "GrossAreaText", "GrossAreaFont", "GrossAreaStyle", "GrossAreaPen", "bFrameGrossArea"
bZgross = 0
endif
if poss = 5 then
hideparameter "iarea", "areatext", "areafont", "areastyle", "areapen", "bFrameArea"
bZarea = 0
endif
if poss = 6 then
hideparameter "icode", "basec", "wallc", "ceilc", "codefont", "codestyle", "codepen", "bFrameCode"
bZcode = 0
endif
if poss = 7 then
hideparameter "iperi", "peritext", "perifont", "peristyle", "peripen", "bFramePeri"
bZperi = 0
endif
if poss = 8 then
hideparameter "iceil_s", "ceiltext", "ceilhfont", "ceilhstyle", "ceilhpen", "bFrameCeil"
bZheight = 0
endif
if poss = 9 then
hideparameter "iVolume", "VolumeText", "VolumeFont", "VolumeStyle", "VolumePen", "bFrameVolume"
bZvolume = 0
endif
if poss = 10 then
hideparameter "iOccupancy",
"gs_show_occupancy_area", "gs_number_person", "gs_number_add_occupants", "gs_number_occupants",
"gs_occupancy_text", "gs_type_font_occupancy", "gs_style_font_occupancy", "gs_pen_font_occupancy",
"gs_show_frame_occupancy"
bOccupancy = 0
endif
NEXT iFunction

! ==============================================================================
! Frame Function : "Show Frame" Boolean
! On: assign the unique settings (every line've own frame)
! Off: turn off and hide everything about the frame
! ==============================================================================

if not (box_y) then
bFrameName = 0
bFrameNum = 0
bFrameFin = 0
bFrameGrossArea = 0
bFrameArea = 0
bFrameCode = 0
bFramePeri = 0
bFrameCeil = 0
bFrameVolume = 0
gs_show_frame_occupancy = 0
endif

! ==============================================================================

IF ROOM_POLY_STATUS = 0 then Temp_CalcArea = ROOM_CALC_AREA ! Method 1 and 2 (Calculated Area)
IF ROOM_POLY_STATUS = 1 then Temp_CalcArea = ROOM_CALC_AREA ! Method 3/Net (Calculated Area)
IF ROOM_POLY_STATUS = 2 then Temp_CalcArea = ROOM_CALC_AREA ! Method 3/Gross (Calculated Area)

if gs_show_occupancy_area then
result_occupancy = str("%~",int(gs_number_person * Temp_CalcArea) + gs_number_add_occupants)
parameters result_occupancy = result_occupancy
else
result_occupancy = str("%~",gs_number_occupants)
parameters result_occupancy = result_occupancy
endif

! ==============================================================================
Anonymous
Not applicable
Hi Mark,

take a look the Total Zone stamp. This one has many more options.