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

zone stamp

Anonymous
Not applicable
i'm back to archicad after vw 11 for awhile!

about zone stamp. i am trying to position the zone stamp information box but the zone stamp on the plan seems to move with it.

am i missing something here?

appreciate your help.
11 REPLIES 11
Anonymous
Not applicable
Be sure that you have the zone stamp tool selected when modifying the location of the text. Then you can select the text box and relocate.
Anonymous
Not applicable
I know this is an old post, but I am having the same issue of not being able to have a mask behind the Zone Stamp Text. I am working in ArchiCAD 14. Can someone please help?
Anonymous
Not applicable
I know this is an old post, but I am having the same issue of not being able to have a mask behind the Zone Stamp Text. I am working in ArchiCAD 14. Can someone please help?


It depends on the zone stamp you are using. The standard AC14 stamp has settings that allow both the background fill and pen of the stamp to be adjusted. Look in the 2d Representation section of the settings.

If you have set these correctly and you are still not seeing the background fill, then check the Model View Options - you may have 'Override Drafting Fills' ticked.

Hope that helps.
Anonymous
Not applicable
Thank you very much for the response. I found the basic zone stamp from AC14, and the background fill works for that one.

However, I do have this customized stamp where the frame fits around the room # text. I don't see a "2D Representation" option for it. Is there a way to add in that parameter?

Please see the attached image of settings I have.

Thank you.
Anonymous
Not applicable
However, I do have this customized stamp where the frame fits around the room # text. I don't see a "2D Representation" option for it. Is there a way to add in that parameter?


The background fill will just be a 2d polygon in the code that adjusts itself to the size of the text. The exact way it could be added to the code depends on how your zone stamp is coded, but I guess it should be *fairly* easy to do.

Can you post up the zone stamp so we can have a look at the code? Some nice person might even edit it for you depending on complexity!
Anonymous
Not applicable
When you say "code" do you mean script? (Sorry I'm VERY new to this) I'm in the place where you can edit library objects and there are many types of script: Master Script; 2D Script; Property Script; Parameter Script; Interface Script. I will post the "2D Script" ....it is really long though.




if name=0 & bNumRoom=0 & num=0 & bExistOption=0 & bProposOption=0 & code=0 & area=0 & peri=0 & ceil_s=0 & bVolume=0 then end

! ==========================================================================================
! STYLE
! ==========================================================================================
! FontStyle
! ------------------------------------------------------------------------------------------

fontStyle = zonastyle
gosub 2000
zonasty = iFontStyle

fontStyle = styleNumRoom
gosub 2000
numRoomsty = iFontStyle

fontStyle = zonostyle
gosub 2000
zonosty = iFontStyle

fontStyle = codestyle
gosub 2000
codesty = iFontStyle

fontStyle = areastyle
gosub 2000
areasty = iFontStyle

fontStyle = peristyle
gosub 2000
peristy = iFontStyle

fontStyle = ceilhstyle
gosub 2000
ceilhsty = iFontStyle

fontStyle = volumeStyle
gosub 2000
VolumeSty = iFontStyle

! ------------------------------------------------------------------------------------------
! Define Style
! ------------------------------------------------------------------------------------------

define style "znamestyle" AC_TextFont_1, ROOM_LSIZE, jst, zonasty
define style "styleNumRoom" fontNumRoom, fontsizeao, jst, numRoomsty
define style "znumstyle" zonofont, fontsizeao, jst, zonosty
define style "arstyle" areafont, fontsizeao, jst, areasty
define style "codestyle" codefont, fontsizeao, jst, codesty
define style "pestyle" perifont, fontsizeao, jst, peristy
define style "chstyle" ceilhfont, fontsizeao, jst, ceilhsty
define style "VolStyle" volumeFont, fontsizeao, jst, VolumeSty

mul2 PAPER_TO_MODEL,PAPER_TO_MODEL


! ------------------------------------------------------------------------------------------
! Request
! ------------------------------------------------------------------------------------------

style znamestyle

rrr=request("Height_of_style","znamestyle", shight)
rrr=request("Height_of_style","znumstyle", shight2)

catname = ""
catcode = ""

rrr = request("Zone_category", "", catname, catcode)

Zname = ROOM_NAME
if cn_zn then Zname = catname !*** display Category Name as Zone name
if catcode = "0 BGF" then Zname = "Gross Area" !***prints "BGF" to the stamp

area_form = ""
rrr = request ("Area_dimension","",area_form)
room_area = str (area_form, ROOM_CALC_AREA)

lin_form = ""
rrr = request ("Linear_dimension","",lin_form)
room_height = str (lin_form , ROOM_HEIGHT)
room_perim = str (lin_form , ROOM_PERIM)

vol_form = ""
rrr = request ("Calc_volume_unit", "", vol_form)
room_volume = str (vol_form , ROOM_VOLUME)

unit = ""
area_unit = ""
lin_unit = ""
form = ""
vol_unit = ""

form = lin_form !*** Unit strings
gosub 1001
lin_unit = unit

form = area_form
gosub 1002
area_unit = unit

form = vol_form
gosub 1003
vol_unit = unit

room_area = "A: " + room_area + area_unit !*** composite strings

rrr = request ("Name_of_material", listCodeFloorMat, listCodeFloorMat )
rrr = request ("Name_of_material", listCodeWallMat , listCodeWallMat )
rrr = request ("Name_of_material", listCodeCeilMat , listCodeCeilMat )

if typeCodeMat = listCodeMat[1] then
if typeDisplayMat = `Horizontally` then
code_string = listCodeFloorMat + " " + listCodeWallMat + " " + listCodeCeilMat
code_string2 = ""
code_string3 = ""
else
code_string = listCodeFloorMat
code_string2 = listCodeWallMat
code_string3 = listCodeCeilMat
endif
set style "codestyle"
stwCellsFloor = stw (listCodeFloorMat)+2
stwCellsWall = stw (listCodeWallMat)+1
stwCellsCeil = stw (listCodeCeilMat)+2
else
if typeCodeMat = listCodeMat[2] then
if typeDisplayMat = `Horizontally` then
code_string = textNameFloorMat + "" + listCodeFloorMat+" "+textNameWallMat + "" + listCodeWallMat+" "+textNameCeilMat + "" + listCodeCeilMat
code_string2 = ""
code_string3 = ""
else
code_string = textNameFloorMat + " " + listCodeFloorMat
code_string2 = textNameWallMat + " " + listCodeWallMat
code_string3 = textNameCeilMat + " " + listCodeCeilMat
endif
set style "codestyle"
stwCellsFloor = stw (textNameFloorMat + " " + listCodeFloorMat)+2
stwCellsWall = stw (textNameWallMat + " " + listCodeWallMat)+1
stwCellsCeil = stw (textNameCeilMat + " " + listCodeCeilMat)+2

else
if typeCodeMat = listCodeMat[3] then
if typeDisplayMat = `Horizontally` then
code_string = basec + " " + wallc + " " + ceilc
code_string2 = ""
code_string3 = ""
else
code_string = basec
code_string2 = wallc
code_string3 = ceilc
endif
set style "codestyle"
stwCellsFloor = stw (basec)+2
stwCellsWall = stw (wallc)+1
stwCellsCeil = stw (ceilc)+2
endif
endif
endif

maxCodeLength = max(stwCellsFloor,stwCellsWall,stwCellsCeil)


if ceiltype="Value" then
room_height = "H: " + room_height + lin_unit
else
room_height = ceiltype
endif

room_perim = "P: " + room_perim + lin_unit

room_volume = "V: " + room_volume + vol_unit

!--------------------------------------------
dim stBoxText[10]
stBoxText[1] = Zname
stBoxText[2] = textNumRoom
stBoxText[3] = room_number
stBoxText[4] = room_area
stBoxText[5] = code_string
stBoxText[6] = code_string2
stBoxText[7] = code_string3
stBoxText[8] = room_perim
stBoxText[9] = room_height
stBoxText[10] = room_volume

! ------------------------------------------------------------------------------------------
! Size of the strings - Max, Min
! ------------------------------------------------------------------------------------------

set style "znamestyle"
if not(bZoneNameAllign) and not(bFrameZoneName) then
w_roona = (stw (Zname))
else
w_roona = (stw (Zname)+2) ! Justify to Subtext
endif

set style "styleNumRoom"
w_numRoom = (stw (textNumRoom)+2)

set style "znumstyle"
w_roonu = (stw (ROOM_NUMBER)+2)

set style "arstyle"
w_rooar = (stw (room_area)+2)

set style "codestyle"
if typeDisplayMat = `Horizontally` then
w_code = (stw (code_string)+2)
else
w_code = (stw (code_string)+2)
w_code2 = (stw (code_string2)+2)
w_code3 = (stw (code_string3)+2)
endif

set style "pestyle"
w_peri = (stw (room_perim)+2)

set style "chstyle"
w_roohe = (stw (room_height)+2)

set style "VolStyle"
w_roovol = (stw (room_volume)+2)

max_len = max ( w_roona * name,
w_numRoom * bNumRoom,
w_roonu * num,
w_rooar * area,
w_code * code,
w_code2 * code * (typeDisplayMat = listDisplayMat[2]),
w_code3 * code * (typeDisplayMat = listDisplayMat[2]),
w_peri * peri,
w_roohe * ceil_s,
w_roovol * volume) !*** width of the stamp

rot2 w

! ------------------------------------------------------------------------------------------
! Make a Pharagraph --> Size of the strings - height
! ------------------------------------------------------------------------------------------

if not(bFixStampWidth) then
widthStamp = max_len
else
if not(bWrapWord) then
widthStampMIN = max_len
else
if code and typeFrameMat <> `None` and not(box_y) then
if typeDisplayMat = listDisplayMat[1] then widthStampMIN = w_code ! Horizontally
if typeDisplayMat = listDisplayMat[2] then widthStampMIN = maxCodeLength ! Vertically
endif
endif
if widthStampMM < widthStampMIN then widthStampMM = widthStampMIN
widthStamp = widthStampMM
endif

for iWrap = 1 to 10
PARAGRAPH nameParagraph[iWrap] jst, 0, 0, 0, 1, 0
pen setPen[iWrap]
set style setStyle[iWrap]
""+stBoxText[iWrap]
ENDPARAGRAPH

TEXTBLOCK nameTextblock[iWrap] widthStamp, jst, 0, 1 ,1, 0,nameParagraph[iWrap]

n = REQUEST ("TEXTBLOCK_INFO",nameTextblock[iWrap],width,height)
tBlockHeight[iWrap] = height
tBlockWidth[iWrap] = width

!*** height of the stamp
if showtext[iWrap] then
heightStamp = heightStamp - tBlockHeight[iWrap]
numRowMAX = numRowMAX + 1
endif
next iWrap


! ========================================================================================
! Inscription and Drawing Frame
! ========================================================================================

gosub 4000

for iFunction = 1 to 10
if showtext[iFunction] then
! Justify
if iFunction = 1 and not(bFrameZoneName) and not(bZoneNameAllign) then
if jst = 1 then dist = 0 !Left_Justified
if jst = 2 then dist = widthStamp/2 !Centered_Justified
if jst = 3 then dist = widthStamp !Right_Justified
else
if jst = 1 then dist = 1 !Left_Justified
if jst = 2 then dist = widthStamp/2 !Centered_Justified
if jst = 3 then dist = widthStamp-1 !Right_Justified
endif

pen setPen[iFunction]
set style setstyle[iFunction]
richtext2 dist,-vlen,nameTextblock[iFunction]
vlen = vlen + tBlockHeight[iFunction]
numRow = numRow + 1

! just the inlines except after the last row
if box_y and inline and (numRow <> numRowMAX) then gosub 3000

! -----------------------------
! for material code own frame [
! -----------------------------
if not(box_y) & iFunction = 5 then
pen Pen_Box
if typeDisplayMat = listDisplayMat[1] then ! Horizontally
if typeFrameMat <> listFrameMat[3] then ! Frame <> None
if jst = 1 then
rect2 0,-vlen +tBlockHeight[iFunction],w_code,-vlen
if typeFrameMat = listFrameMat[2] then ! Frame = Cells
line2 stwCellsFloor,-vlen + tBlockHeight[iFunction],stwCellsFloor ,-vlen
line2 w_code-stwCellsCeil,-vlen + tBlockHeight[iFunction],w_code-stwCellsCeil,-vlen
endif
endif
if jst = 2 then
rect2 widthStamp/2-w_code/2,-vlen +tBlockHeight[iFunction],widthStamp/2+w_code/2,-vlen
if typeFrameMat = listFrameMat[2] then
line2 widthStamp/2-w_code/2 +stwCellsFloor,-vlen + tBlockHeight[iFunction],widthStamp/2-w_code/2 +stwCellsFloor ,-vlen
line2 widthStamp/2+w_code/2 -stwCellsCeil,-vlen + tBlockHeight[iFunction],widthStamp/2+w_code/2 -stwCellsCeil ,-vlen
endif
endif
if jst = 3 then
rect2 widthStamp-w_code,-vlen +tBlockHeight[iFunction],widthStamp,-vlen
if typeFrameMat = listFrameMat[2] then
line2 widthStamp-w_code+stwCellsFloor,-vlen + tBlockHeight[iFunction],widthStamp-w_code+stwCellsFloor ,-vlen
line2 widthStamp-stwCellsCeil,-vlen + tBlockHeight[iFunction],widthStamp-stwCellsCeil,-vlen
endif
endif
endif
else ! Vertically
if typeFrameMat <> listFrameMat[3] then ! Frame <> None
if jst = 1 then
rect2 0,-vlen +tBlockHeight[iFunction],maxCodeLength,-vlen -tBlockHeight[iFunction]*2
if typeFrameMat = listFrameMat[2] then
line2 0,-vlen, maxCodeLength,-vlen
line2 0,-vlen -tBlockHeight[iFunction], maxCodeLength,-vlen -tBlockHeight[iFunction]
endif
endif
if jst = 2 then
rect2 widthStamp/2 - maxCodeLength/2,-vlen +tBlockHeight[iFunction],widthStamp/2 + maxCodeLength/2,-vlen -tBlockHeight[iFunction]*2
if typeFrameMat = listFrameMat[2] then
line2 widthStamp/2 - maxCodeLength/2,-vlen, widthStamp/2 + maxCodeLength/2,-vlen
line2 widthStamp/2 - maxCodeLength/2,-vlen -tBlockHeight[iFunction], widthStamp/2 + maxCodeLength/2,-vlen -tBlockHeight[iFunction]
endif
endif
if jst = 3 then
rect2 widthStamp - maxCodeLength,-vlen +tBlockHeight[iFunction],widthStamp,-vlen -tBlockHeight[iFunction]*2
if typeFrameMat = listFrameMat[2] then
line2 widthStamp - maxCodeLength,-vlen, widthStamp,-vlen
line2 widthStamp - maxCodeLength,-vlen -tBlockHeight[iFunction], widthStamp,-vlen -tBlockHeight[iFunction]
endif
endif
endif
endif
endif
! -----------------------------
! ] for material code own frame
! -----------------------------

endif
next iFunction

if box_y then
pen Pen_Box
if name and bFrameZoneName then ! just the global frame with ZonaName
rect2 0,0,widthStamp,-vlen
else
if name and not(bFrameZoneName) then ! just the global frame without ZonaName
if numRow > 1 then rect2 widthStamp/2-w_roonu/2,-tBlockHeight[1],widthStamp/2+w_roonu/2,-vlen ! if just the name displayed don`t draw frame
else
rect2 0,0,widthStamp,-vlen
endif
endif
endif

! ========================================================================================
! Hotspots
! ========================================================================================

if hspots then
hotspot2 widthStamp/2, 0
hotspot2 widthStamp/2, heightStamp
hotspot2 0, heightStamp/2
hotspot2 widthStamp, heightStamp/2
endif

if bFixStampWidth then
unID = GS_HotspotUnIDBegin

if pointAnchor = placePointAnchor[1] or pointAnchor = placePointAnchor[4] then
! Top Left
! Bottom Left
HOTSPOT2 0, 0, unID, widthStampLength_model, 1+256 ,widthStampPoint :unID=unID+1
HOTSPOT2 -1, 0, unID, widthStampLength_model, 3 ,widthStampPoint :unID=unID+1
HOTSPOT2 widthStamp, 0, unID, widthStampLength_model, 2 ,widthStampPoint :unID=unID+1

HOTSPOT2 0, heightStamp,unID, widthStampLength_model, 1+256 ,widthStampPoint :unID=unID+1
HOTSPOT2 -1, heightStamp,unID, widthStampLength_model, 3 ,widthStampPoint :unID=unID+1
HOTSPOT2 widthStamp, heightStamp,unID, widthStampLength_model, 2 ,widthStampPoint :unID=unID+1
endif
if pointAnchor = placePointAnchor[2] or pointAnchor = placePointAnchor[5] then
! Bottom Right
! Top Right
HOTSPOT2 widthStamp, 0, unID, widthStampLength_model, 1+256 ,widthStampPoint :unID=unID+1
HOTSPOT2 widthStamp+1, 0, unID, widthStampLength_model, 3 ,widthStampPoint :unID=unID+1
HOTSPOT2 0, 0, unID, widthStampLength_model, 2 ,widthStampPoint :unID=unID+1

HOTSPOT2 widthStamp, heightStamp,unID, widthStampLength_model, 1+256 ,widthStampPoint :unID=unID+1
HOTSPOT2 widthStamp+1, heightStamp,unID, widthStampLength_model, 3 ,widthStampPoint :unID=unID+1
HOTSPOT2 0, heightStamp,unID, widthStampLength_model, 2 ,widthStampPoint :unID=unID+1
endif
if pointAnchor = placePointAnchor[3] then
! Center
HOTSPOT2 widthStamp/2, 0, unID, widthStampLength_modelPer2, 1+128 ,widthStampPoint :unID=unID+1
HOTSPOT2 widthStamp/2-1, 0, unID, widthStampLength_modelPer2, 3 ,widthStampPoint :unID=unID+1
HOTSPOT2 widthStamp, 0, unID, widthStampLength_modelPer2, 2 ,widthStampPoint :unID=unID+1

HOTSPOT2 widthStamp/2, heightStamp,unID, widthStampLength_modelPer2, 1+128 ,widthStampPoint :unID=unID+1
HOTSPOT2 widthStamp/2-1, heightStamp,unID, widthStampLength_modelPer2, 3 ,widthStampPoint :unID=unID+1
HOTSPOT2 widthStamp, heightStamp,unID, widthStampLength_modelPer2, 2 ,widthStampPoint :unID=unID+1

HOTSPOT2 widthStamp/2, 0, unID, widthStampLength_modelPer2, 1+128 ,widthStampPoint :unID=unID+1
HOTSPOT2 widthStamp/2+1, 0, unID, widthStampLength_modelPer2, 3 ,widthStampPoint :unID=unID+1
HOTSPOT2 0, 0, unID, widthStampLength_modelPer2, 2 ,widthStampPoint :unID=unID+1

HOTSPOT2 widthStamp/2, heightStamp,unID, widthStampLength_modelPer2, 1+128 ,widthStampPoint :unID=unID+1
HOTSPOT2 widthStamp/2+1, heightStamp,unID, widthStampLength_modelPer2, 3 ,widthStampPoint :unID=unID+1
HOTSPOT2 0, heightStamp,unID, widthStampLength_modelPer2, 2 ,widthStampPoint :unID=unID+1

endif

hotspot2 widthStamp/2, heightStamp/2
else
HOTSPOT2 0, 0
HOTSPOT2 widthStamp, 0
HOTSPOT2 0, heightStamp
HOTSPOT2 widthStamp, heightStamp
HOTSPOT2 widthStamp/2, heightStamp/2
endif
end

! ========================================================================================
! Subroutines
! ========================================================================================

1001: !*** Linear unit strings
if strstr (form, "m") then unit = " m"
if strstr (form, "cm") then unit = " cm"
if strstr (form, "mm") then unit = " mm"
if strstr (form, "i") or strstr (form, "f") then unit = ""
return

1002: !*** Area unit strings
if strstr (form, "sqm") then unit = " m2"
if strstr (form, "sqcm") then unit = " cm2"
if strstr (form, "sqmm") then unit = " mm2"
if strstr (form, "sqf") then unit = " sq ft"
if strstr (form, "sqi") then unit = " sq inch"
return

1003: !*** Volume unit strings
if strstr(form, "cum") then unit = " m3" ! cubic meters
if strstr(form, "cucm") then unit = " cm3" ! cubic centimeters
if strstr(form, "cumm") then unit = " mm3" ! cubic millimeters
if strstr(form, "cuf") then unit = " cu ft" ! cubic feet
if strstr(form, "cui") then unit = " cu inch" ! cubic inches
if strstr(form, "cuy") then unit = " cu yards" ! cubic yards
if strstr(form, "l") then unit = " liter" ! liters
if strstr(form, "gal") then unit = " gallon" ! gallons
return

2000:
if fontStyle = stFontStyle[1] then iFontStyle = 0 ! Plain
if fontStyle = stFontStyle[2] then iFontStyle = 1 ! Bold
if fontStyle = stFontStyle[3] then iFontStyle = 2 ! Italic
if fontStyle = stFontStyle[4] then iFontStyle = 4 ! Underline
return

3000: ! Show Frame: just the inlines
pen Pen_Box
line2 0,-vlen,widthStamp,-vlen
return

4000:
if bAnchorPoint then
if pointAnchor = placePointAnchor[1] then add2 0, 0 ! Top Left
if pointAnchor = placePointAnchor[2] then add2 -widthStamp, 0 ! Top Right
if pointAnchor = placePointAnchor[3] then add2 -widthStamp/2, -heightStamp/2 ! Center
if pointAnchor = placePointAnchor[4] then add2 0, -heightStamp ! Bottom Left
if pointAnchor = placePointAnchor[5] then add2 -widthStamp, -heightStamp ! Bottom Right
else
add2 -widthStamp/2, -heightStamp/2
endif
return
Anonymous
Not applicable
The code looks like it is based on the standard zone stamp, so adding a 2d polygon fill should be relatively straightforward depending on your requirements.

It is difficult to check exactly how it works at the moment using only the part of the code that you posted. It refers to multiple parameters defined in the parameter list and other scripts, and won't work without them.

Who originally created the zone stamp? Would they mind you attaching it to a post? (You will have Zip it up to attach it.) I can't guarantee that I can fix it myself, but I'm sure someone on these forums can!
Anonymous
Not applicable
Why is it that you cannot adjust the size of text in the zone stamp? The name is adjustable, but not the area size. Very frustrating!
Untitled-1.jpg
Anonymous
Not applicable
Hi,

That's because the setting of the font size of the title and of the details is in different places.

See the attached image!

Regards, Ede
Zone stamp.jpg