BIM Coordinator Program (INT) April 22, 2024

Find the next step in your career as a Graphisoft Certified BIM Coordinator!

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

Simple Custom Window Marker

Anonymous
Not applicable
Hi, I'm trying to create a very simple window marker -just text with a few parameters- but I'm very new to scripting and even that seems difficult
The marker I need to look like this:

HOTSPOT2 x,y  !upper left corner of the marker
HOTSPOT2 x,y  !upper right corner of the marker
HOTSPOT2 x,y  !bottom left corner of the marker
HOTSPOT2 x,y  !bottom right corner of the marker
 
WINDOW ID  !The name of the LIBRARY PART not the ID from "Tags&Categories"
ROUGH OPENING OF THE WINDOW  !Separated with an "X" symbol
CUSTOM TEXT 1 (OPTIONAL)  
CUSTOM TEXT 2 (OPTIONAL)
CUSTOM TEXT 3 (OPTIONAL)
Finally, in order the marker to placed properly according to the window position, the script must recognize if "CUSTOM TEXT" is present in order to rearrange the hotspots.

I would really appreciate some help with this!! I'm lost within GDL reference guide/reference books & examples over the last 4 days without any noticeable progress....

Thanks!
9 REPLIES 9
sinceV6
Advocate
Hi.

Without more information is kind of difficult to provide help; but by the looks of what you need, it shouldn't be that hard... being simple text.

So make a new marker object. AC will provide some standard parameters you can use to get some info. You can get the name of the Library Part with a REQUEST function.

The thing about the script adjusting the hotspots... this is where you use the strings->paragraphs->text blocks->richtext2 concept to define what you will show. You can then get the width and height of the whole thing and use that to place hotspots in the correct position.

Hope this helps set you in the right direction.

Best regards.
Anonymous
Not applicable
What I did was to create the text that I need in floor plan and then save it as an object>marker and let archicad to create the autoscript. Then I tried to "play" with the parameters but with no lack.... For example for the window ID the parameter that the autoscript uses is AC_WIDO_ID, which is a TEXT parameter and as a value has "wind-34". My mistake was that I though that there is probably some other parameter (for example: AC_WIDO_LIB_ID ?) that will use the library name of the object... You don't want to know how much time I lost searching....

Anyway, thank you for your directions, I'll try it within the weekend and see if I can get any results with the REQUEST function and the paragraphs->text blocks->richtext2 concept... Probably I'm gonna come back with more questions hahahahahaha
Anonymous
Not applicable
As I promised I'm back with mooore questions
After spending a lot of hours trying to create my custom label I realized that my effort was hopeless. Thankfully I found that a prefixed archicad marker named "Window Stamp 17" was very similar to my needs (for some reason I had to download again the marker from graphisoft in order to work), so I desided to copy it and change it. In the attached image you can see on the left the marker with the default settings and on the right the marker after my changes (I will remove also the lines when it's finished but I left them ON for now so that you can have a better idea about the cells).
As you can see my marker includes:
1. Object ID
2. Rough Opening
3. Custom Text 1
4. Custom Text 2
(5)Custom Text 3 it's invisible because although I added it on the parameters I don't know how to add it on the master script.

My questions now and please bear with me:
1. the code that defines the Object ID in master script is this
if iIDText = VALUE_AUTOMATIC then strIDValue = AC_WIDO_ID
and also I found this inside Scripts/Parameter
! =============================================================================
! ID
! =============================================================================

values "strIDText" stAutoCustom
values "iIDText" VALUE_AUTOMATIC, VALUE_CUSTOM

if GLOB_MODPAR_NAME = "strIDText" then
	iIDText = VALUE_AUTOMATIC
	if strIDText = stAutoCustom[2] then iIDText = VALUE_CUSTOM
	parameters iIDText = iIDText
else
	strIDText = stAutoCustom[1]
	if iIDText = VALUE_CUSTOM then strIDText = stAutoCustom[2]
	parameters strIDText = strIDText
endif

if iIDText = VALUE_AUTOMATIC then			! automatic
	! strIDValue got value in master script
	parameters strIDValue = strIDValue
	lock "strIDValue"
endif
my problem is that I need the ID to use the name from the library part and not from "Tags&Categories" inside the window. Any ideas??

2. How to include an extra line with Custom Text 3 in the marker and how can I merge the two different cells on custom texts into one?
The master script is this
! -------------------------------------------------------------------------------
! Fill box array, get stamp width
! -------------------------------------------------------------------------------

dim strings2d[][2]
dim lengthValues2d[][2]
dim dimensionType[]

numLinesInBox	=  bShowWallholeDim + bShowUnitDim + bShowFire + bShowAcoustic + \
					bShowUValue + bShowMaterial + bShowHardware
if bWindow then
	numLinesInBox = numLinesInBox + bShowRevealDim + bShowSill + bShowCust1 + bShowCust2
else
	numLinesInBox = numLinesInBox + bShowEgressDim + bShowThreshold + bShowHandle + bShowCust
endif

if numLinesInBox > 0 then
	strings2d[numLinesInBox][2] = ""
	lengthValues2d[numLinesInBox][2] = -9999
	dimensionType[numLinesInBox] = 0
endif

style "boxStyleLeft"

boxSpaceWidth = stw(" ") / 1000 * GLOB_SCALE

actLine = 1
columnWidth = 0
if bShowWallholeDim then
	if iWHDimText = DIM_MEASURED then
		strings2d[actLine][1] = strWHPrefix
		strings2d[actLine][2] = ""
		lengthValues2d[actLine][1] = wallholeWidth
		lengthValues2d[actLine][2] = wallholeHeight
		dimensionType[actLine] = UNITTYPE_WIDO_DIM
	else
		strings2d[actLine][1] = strWHPrefix
		strings2d[actLine][2] = strWHDimValue
		lengthValues2d[actLine][1] = 0
		lengthValues2d[actLine][2] = 0
		dimensionType[actLine] = 0
	endif

	columnWidth = max(columnWidth, stw(" " + strWHPrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strWHDimValue + " "))
	actLine = actLine + 1
endif

if bShowUnitDim then
	if iUnitDimText = DIM_MEASURED then
		strings2d[actLine][1] = strUnitPrefix
		strings2d[actLine][2] = ""
		lengthValues2d[actLine][1] = unitWidth
		lengthValues2d[actLine][2] = unitHeight
		dimensionType[actLine] = UNITTYPE_WIDO_DIM
	else
		strings2d[actLine][1] = strUnitPrefix
		strings2d[actLine][2] = strUnitDimValue
		lengthValues2d[actLine][1] = 0
		lengthValues2d[actLine][2] = 0
		dimensionType[actLine] = 0
	endif

	columnWidth = max(columnWidth, stw(" " + strUnitPrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strUnitDimValue + " "))
	actLine = actLine + 1
endif

if bWindow and bShowRevealDim then
	if iRevealDimText = DIM_MEASURED then
		strings2d[actLine][1] = strRevealPrefix
		strings2d[actLine][2] = ""
		lengthValues2d[actLine][1] = revealWidth
		lengthValues2d[actLine][2] = revealHeight
		dimensionType[actLine] = UNITTYPE_WIDO_DIM
	else
		strings2d[actLine][1] = strRevealPrefix
		strings2d[actLine][2] = strRevealDimValue
		lengthValues2d[actLine][1] = 0
		lengthValues2d[actLine][2] = 0
		dimensionType[actLine] = 0
	endif

	columnWidth = max(columnWidth, stw(" " + strRevealPrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strRevealDimValue + " "))
	actLine = actLine + 1
endif

if not(bWindow) and bShowEgressDim then
	if iEgressDimText = DIM_MEASURED then
		strings2d[actLine][1] = strEgressPrefix
		strings2d[actLine][2] = ""
		lengthValues2d[actLine][1] = egressWidth
		lengthValues2d[actLine][2] = egressHeight
		dimensionType[actLine] = UNITTYPE_WIDO_DIM
	else
		strings2d[actLine][1] = strEgressPrefix
		strings2d[actLine][2] = strEgressDimValue
		lengthValues2d[actLine][1] = 0
		lengthValues2d[actLine][2] = 0
		dimensionType[actLine] = 0
	endif

	columnWidth = max(columnWidth, stw(" " + strEgressPrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strEgressDimValue + " "))
	actLine = actLine + 1
endif

if bWindow and bShowSill then
	if iSillText = DIM_MEASURED then
		strings2d[actLine][1] = strSillPrefix
		strings2d[actLine][2] = ""
		lengthValues2d[actLine][1] = sillHeight
		lengthValues2d[actLine][2] = 0
		dimensionType[actLine] = UNITTYPE_SILL_DIM
	else
		strings2d[actLine][1] = strSillPrefix
		strings2d[actLine][2] = strSillValue
		lengthValues2d[actLine][1] = 0
		lengthValues2d[actLine][2] = 0
		dimensionType[actLine] = 0
	endif

	columnWidth = max(columnWidth, stw(" " + strSillPrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strSillValue + " "))
	actLine = actLine + 1
endif

if not(bWindow) and bShowThreshold then
	if iThresholdText = DIM_MEASURED then
		strings2d[actLine][1] = strThresholdPrefix
		strings2d[actLine][2] = ""
		lengthValues2d[actLine][1] = thresholdHeight
		lengthValues2d[actLine][2] = 0
		dimensionType[actLine] = UNITTYPE_SILL_DIM
	else
		strings2d[actLine][1] = strThresholdPrefix
		strings2d[actLine][2] = strThresholdValue
		lengthValues2d[actLine][1] = 0
		lengthValues2d[actLine][2] = 0
		dimensionType[actLine] = 0
	endif

	columnWidth = max(columnWidth, stw(" " + strThresholdPrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strThresholdValue + " "))
	actLine = actLine + 1
endif

if bShowFire then
	strings2d[actLine][1] = strFirePrefix
	strings2d[actLine][2] = strFireValue
	lengthValues2d[actLine][1] = 0
	lengthValues2d[actLine][2] = 0
	dimensionType[actLine] = 0

	columnWidth = max(columnWidth, stw(" " + strFirePrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strFireValue + " "))
	actLine = actLine + 1
endif

if bShowAcoustic then
	strings2d[actLine][1] = strAcousticPrefix
	strings2d[actLine][2] = strAcousticValue
	lengthValues2d[actLine][1] = 0
	lengthValues2d[actLine][2] = 0
	dimensionType[actLine] = 0

	columnWidth = max(columnWidth, stw(" " + strAcousticPrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strAcousticValue + " "))
	actLine = actLine + 1
endif

if bShowUValue then
	strings2d[actLine][1] = strUValuePrefix
	strings2d[actLine][2] = strUValueValue
	lengthValues2d[actLine][1] = 0
	lengthValues2d[actLine][2] = 0
	dimensionType[actLine] = 0

	columnWidth = max(columnWidth, stw(" " + strUValuePrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strUValueValue + " "))
	actLine = actLine + 1
endif

if bShowMaterial then
	strings2d[actLine][1] = strMaterialPrefix
	strings2d[actLine][2] = strMaterialValue
	lengthValues2d[actLine][1] = 0
	lengthValues2d[actLine][2] = 0
	dimensionType[actLine] = 0

	columnWidth = max(columnWidth, stw(" " + strMaterialPrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strMaterialValue + " "))
	actLine = actLine + 1
endif

if bShowHardware then
	strings2d[actLine][1] = strHardwarePrefix
	strings2d[actLine][2] = strHardwareValue
	lengthValues2d[actLine][1] = 0
	lengthValues2d[actLine][2] = 0
	dimensionType[actLine] = 0

	columnWidth = max(columnWidth, stw(" " + strHardwarePrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strHardwareValue + " "))
	actLine = actLine + 1
endif

if bWindow and bShowCust1 then
	strings2d[actLine][1] = strCust1Prefix
	strings2d[actLine][2] = strCust1Value
	lengthValues2d[actLine][1] = 0
	lengthValues2d[actLine][2] = 0
	dimensionType[actLine] = 0

	columnWidth = max(columnWidth, stw(" " + strCust1Prefix + " "))
	columnWidth = max(columnWidth, stw(" " + strCust1Value + " "))
	actLine = actLine + 1
endif

if bWindow and bShowCust2 then
	strings2d[actLine][1] = strCust2Prefix
	strings2d[actLine][2] = strCust2Value
	lengthValues2d[actLine][1] = 0
	lengthValues2d[actLine][2] = 0
	dimensionType[actLine] = 0

	columnWidth = max(columnWidth, stw(" " + strCust2Prefix + " "))
	columnWidth = max(columnWidth, stw(" " + strCust2Value + " "))
	actLine = actLine + 1
endif

if not(bWindow) and bShowHandle then
	strings2d[actLine][1] = strHandlePrefix
	strings2d[actLine][2] = strHandleValue
	lengthValues2d[actLine][1] = 0
	lengthValues2d[actLine][2] = 0
	dimensionType[actLine] = 0

	columnWidth = max(columnWidth, stw(" " + strHandlePrefix + " "))
	columnWidth = max(columnWidth, stw(" " + strHandleValue + " "))
	actLine = actLine + 1
endif

if not(bWindow) and bShowCust then
	strings2d[actLine][1] = strCustPrefix
	strings2d[actLine][2] = strCustValue
	lengthValues2d[actLine][1] = 0
	lengthValues2d[actLine][2] = 0
	dimensionType[actLine] = 0

	columnWidth = max(columnWidth, stw(" " + strCustPrefix + " "))		! mm, paper size
	columnWidth = max(columnWidth, stw(" " + strCustValue + " "))
	actLine = actLine + 1
endif

style "headerStyle"

IDWidth = stw(" " + strIDValue + " ")			! mm, paper size
IDSpaceWidth = stw(" ") / 1000 * GLOB_SCALE

minStampWidth = max(IDWidth, 2 * columnWidth)			! mm, paper size

n = request("Height_of_style", "headerStyle", sh)
minIDLineSpacing = sh			! mm, paper size

n = request("Height_of_style", "boxStyleLeft", sh)
minDetailLineSpacing = sh			! mm, paper size


if iStampWidth = VALUE_AUTOMATIC then
	stampWidth = minStampWidth / 1000 * GLOB_SCALE
else
	stampWidth = stampWidth_mm / 1000 * GLOB_SCALE
endif

if iIDLineSpacing = VALUE_AUTOMATIC then
	headerHeight = minIDLineSpacing / 1000 * GLOB_SCALE
else
	headerHeight = IDLineSpacing_mm / 1000 * GLOB_SCALE
endif

if iDetailLineSpacing = VALUE_AUTOMATIC then
	lineHeight = minDetailLineSpacing / 1000 * GLOB_SCALE
else
	lineHeight = detailLineSpacing_mm / 1000 * GLOB_SCALE
endif

stampHeight = headerHeight + numLinesInBox * lineHeight
I found also some code inside scripts/interface that refers to Custom Text 1&2
! =============================================================================
! Content by Scale
! =============================================================================
ui_page 1

y = y0
y2 = y0 + 130
dy = 20
x0 = 1
x1 = 215
xsep = 222
x2 = 230
x3 = 443
xwidth = 136

ui_style 0, 1
ui_outfield `Detail Level`, x0, y, 100, 16
ui_infield{3}  "iDetLevel", x0+101, y, 150, 16,
	8, "",
	0, 0,
	cx, cy, px, py,
	"",	stDetLevels[1],	DETLEV_SCALESENS,
	"",	stDetLevels[2],	DETLEV_DETAILED,
	"",	stDetLevels[3],	DETLEV_SIMPLE

y = y + dy + 1

ui_separator 0, y, 444, y
ui_separator 0, y2 - 4, 444, y2 - 4

y = y + 4

if bMetricDimensionNeeded then
	ui_outfield `Show up to 1:50`, x0, y, x1-x0-1, 16
	ui_outfield `Show from 1:50`, x0, y2, x3-x2-1, 16
else
	ui_outfield `Show in Detailed`, x0, y, x1-x0-1, 16
	ui_outfield `Show in Middle and Simple`, x0, y2, x3-x2-1, 16
endif

ui_style 1, 0

dim paramNames[3][4]
	paramNames[1][1] = "bShowID"				! "bShowID_detailed" "bShowID_simple"
	paramNames[1][2] = "bShowWallholeDim"		! "bShowWallholeDim_detailed" "bShowWallholeDim_simple"
	paramNames[1][3] = "bShowUnitDim"			! "bShowUnitDim_detailed" "bShowUnitDim_simple"
	if bWindow then
		paramNames[1][4] = "bShowRevealDim"	! "bShowRevealDim_detailed" "bShowRevealDim_simple"
		paramNames[2][1] = "bShowSill"			! "bShowSill_detailed" "bShowSill_simple"
	else
		paramNames[1][4] = "bShowEgressDim"	! "bShowEgressDim_detailed" "bShowEgressDim_simple"
		paramNames[2][1] = "bShowThreshold"	! "bShowThreshold_detailed" "bShowThreshold_simple"
	endif

	paramNames[2][2] = "bShowFire"				! "bShowFire_detailed" "bShowFire_simple"
	paramNames[2][3] = "bShowAcoustic"			! "bShowAcoustic_detailed" "bShowAcoustic_simple"
	paramNames[2][4] = "bShowUValue"			! "bShowUValue_detailed" "bShowUValue_simple"

	paramNames[3][1] = "bShowMaterial"			! "bShowMaterial_detailed" "bShowMaterial_simple"
	paramNames[3][2] = "bShowHardware"		! "bShowHardware_detailed" "bShowHardware_simple"
	if bWindow then
		paramNames[3][3] = "bShowCust1"		! "bShowCust1_detailed" "bShowCust1_simple"
		paramNames[3][4] = "bShowCust2"		! "bShowCust2_detailed" "bShowCust2_simple"
	else
		paramNames[3][3] = "bShowHandle"		! "bShowHandle_detailed" "bShowHandle_simple"
		paramNames[3][4] = "bShowCust"		! "bShowCust_detailed" "bShowCust_simple"
	endif

dim paramDesc[3][4]
	paramDesc[1][1] = `ID`
	paramDesc[1][2] = `Wallhole Dimensions`
	paramDesc[1][3] = `Unit Dimensions`
	if bWindow then
		paramDesc[1][4] = `Reveal Dimensions`
		paramDesc[2][1] = `Sill Height`
	else
		paramDesc[1][4] = `Egress Dimensions`
		paramDesc[2][1] = `Threshold Height`
	endif

	paramDesc[2][2] = `Fire Rating`
	paramDesc[2][3] = `Acoustic Rating`
	paramDesc[2][4] = `U-value`

	paramDesc[3][1] = `Material`
	paramDesc[3][2] = `Hardware Set`
	if bWindow then
		paramDesc[3][3] = `Custom Text 1`
		paramDesc[3][4] = `Custom Text 2`
	else
		paramDesc[3][3] = `Handle`
		paramDesc[3][4] = `Custom Text`
	endif

y = y + dy - 1
y2 = y2 + dy - 1

for i = 1 to 3
	for j =1 to 4
		NameSuffix = "_detailed"
		ypos = y

		for k =1 to 2
			ui_infield{4} paramNames + NameSuffix, x0, ypos, xwidth, 16,
				7, "",
				0, 0,
				0, 0, 0, 0,
				"",	paramDesc, 0,
				"",	paramDesc, 1

			NameSuffix = "_simple"
			ypos = y2
		next k

		y = y + dy
		y2 = y2 + dy
	next j

	x0 = x0 + 148
	y = 76
	y2 = y +105

	if i < 3 then
		ui_separator x0 - 5 , y, x0 - 5, y - 5 + 4*dy
		ui_separator x0 - 5 , y2, x0 - 5, y2 - 5 + 4*dy
	endif
next i

!ui_infield{3} "bShowID_detailed", x0, y, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`ID`, 0,
!	"",	`ID`, 1
!
!ui_infield{3} "bShowID_simple", x0, y2, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`ID`, 0,
!	"",	`ID`, 1
!
!y = y + dy
!y2 = y2 + dy
!
!ui_infield{3} "bShowWallholeDim_detailed", x0, y, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Wallhole Dimensions`, 0,
!	"",	`Wallhole Dimensions`, 1
!
!ui_infield{3} "bShowWallholeDim_simple", x0, y2, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Wallhole Dimensions`, 0,
!	"",	`Wallhole Dimensions`, 1
!
!y = y + dy
!y2 = y2 + dy
!
!ui_infield{3} "bShowUnitDim_detailed", x0, y, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Unit Dimensions`, 0,
!	"",	`Unit Dimensions`, 1
!
!ui_infield{3} "bShowUnitDim_simple", x0, y2, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Unit Dimensions`, 0,
!	"",	`Unit Dimensions`, 1
!
!y = y + dy
!y2 = y2 + dy
!
!if bWindow then
!	ui_infield{3} "bShowRevealDim_detailed", x0, y, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!		"",	`Reveal Dimensions`, 0,
!		"",	`Reveal Dimensions`, 1
!
!	ui_infield{3} "bShowRevealDim_simple", x0, y2, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!		"",	`Reveal Dimensions`, 0,
!		"",	`Reveal Dimensions`, 1
!
!	y = y + dy
!else
!	ui_infield{3} "bShowEgressDim_detailed", x0, y, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Egress Dimensions`, 0,
!		"",	`Egress Dimensions`, 1
!
!	ui_infield{3} "bShowEgressDim_simple", x0, y2, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Egress Dimensions`, 0,
!		"",	`Egress Dimensions`, 1
!
!endif
!
!x0 = x0 + 148
!y = 76
!y2 = y +105
!
!ui_separator x0 - 5 , y, x0 - 5, y - 5 + 4*dy
!ui_separator x0 - 5 , y2, x0 - 5, y2 - 5 + 4*dy
!
!if bWindow then
!	ui_infield{3} "bShowSill_detailed", x0, y, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Sill Height`, 0,
!		"",	`Sill Height`, 1
!
!	ui_infield{3} "bShowSill_simple", x0, y2, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Sill Height`, 0,
!		"",	`Sill Height`, 1
!else
!	ui_infield{3} "bShowThreshold_detailed", x0, y, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Threshold Height`, 0,
!		"",	`Threshold Height`, 1
!
!	ui_infield{3} "bShowThreshold_simple", x0, y2, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Threshold Height`, 0,
!		"",	`Threshold Height`, 1
!endif
!
!y = y + dy
!y2 = y2 + dy
!
!ui_infield{3} "bShowFire_detailed", x0, y, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Fire Rating`, 0,
!	"",	`Fire Rating`, 1
!
!ui_infield{3} "bShowFire_simple", x0, y2, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Fire Rating`, 0,
!	"",	`Fire Rating`, 1
!
!y = y + dy
!y2 = y2 + dy
!
!ui_infield{3} "bShowAcoustic_detailed", x0, y, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Acoustic Rating`, 0,
!	"",	`Acoustic Rating`, 1
!
!ui_infield{3} "bShowAcoustic_simple", x0, y2, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Acoustic Rating`, 0,
!	"",	`Acoustic Rating`, 1
!
!y = y + dy
!y2 = y2 + dy
!
!ui_infield{3} "bShowUValue_detailed", x0, y, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`U-value`, 0,
!	"",	`U-value`, 1
!
!ui_infield{3} "bShowUValue_simple", x0, y2, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`U-value`, 0,
!	"",	`U-value`, 1
!
!x0 = x0 + 148
!y = 76
!y2 = y +105
!
!ui_separator x0 - 5 , y, x0 - 5, y - 5 + 4*dy
!ui_separator x0 - 5 , y2, x0 - 5, y2 - 5 + 4*dy
!
!ui_infield{3} "bShowMaterial_detailed", x0, y, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Material`, 0,
!	"",	`Material`, 1
!
!ui_infield{3} "bShowMaterial_simple", x0, y2, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Material`, 0,
!	"",	`Material`, 1
!
!y = y + dy
!y2 = y2 + dy
!
!ui_infield{3} "bShowHardware_detailed", x0, y, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Hardware Set`, 0,
!	"",	`Hardware Set`, 1
!
!ui_infield{3} "bShowHardware_simple", x0, y2, xwidth, 16,
!	7, "",
!	0, 0,
!	0, 0, 0, 0,
!	"",	`Hardware Set`, 0,
!	"",	`Hardware Set`, 1
!
!y = y + dy
!y2 = y2 + dy
!
!if bWindow then
!	ui_infield{3} "bShowCust1_detailed", x0, y, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Custom Text 1`, 0,
!		"",	`Custom Text 1`, 1
!
!	ui_infield{3} "bShowCust1_simple", x0, y2, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Custom Text 1`, 0,
!		"",	`Custom Text 1`, 1
!else
!	ui_infield{3} "bShowHandle_detailed", x0, y, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Handle`, 0,
!		"",	`Handle`, 1
!
!	ui_infield{3} "bShowHandle_simple", x0, y2, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Handle`, 0,
!		"",	`Handle`, 1
!endif
!
!y = y + dy
!y2 = y2 + dy
!
!if bWindow then
!	ui_infield{3} "bShowCust2_detailed", x0, y, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Custom Text 2`, 0,
!		"",	`Custom Text 2`, 1
!
!	ui_infield{3} "bShowCust2_simple", x0, y2, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Custom Text 2`, 0,
!		"",	`Custom Text 2`, 1
!else
!	ui_infield{3} "bShowCust_detailed", x0, y, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Custom Text`, 0,
!		"",	`Custom Text`, 1
!
!	ui_infield{3} "bShowCust_simple", x0, y2, xwidth, 16,
!		7, "",
!		0, 0,
!		0, 0, 0, 0,
!		"",	`Custom Text`, 0,
!		"",	`Custom Text`, 1
!endif
and
! =============================================================================
! Content 3
! =============================================================================
ui_page 4

y = 40
dy = 27

x1 = 1
x2 = 15
x3 = 180
x4 = 310
x5 = 325
x6 = 440

ui_style 0, 1
ui_outfield `Material`, x1, y, x3-x1-1, 18
ui_style 0, 0

ui_infield{3} "iMaterialText", x3, y-3, x4-x3, 20,
	8, "",
	0, 0,
	0, 0, 0, 0,
	"",	stMaterials[1], 1,
	"",	stMaterials[2], 2,
	"",	stMaterials[3], 3,
	"",	stMaterials[4], 4

ui_infield "strMaterialValue", x5, y-3, x6-x5, 20
y = y + dy

ui_outfield `Item Name`, x2, y, x3-x2-1, 18
ui_infield "strMaterialPrefix", x3, y-3, x4-x3, 20

y = y + dy
ui_style 0, 1
ui_outfield `Hardware Set`, x1, y, x3-x1-1, 18
ui_style 0, 0

ui_infield{3} "iHardwareText", x3, y-3, x4-x3, 20,
	8, "",
	0, 0,
	0, 0, 0, 0,
	"",	stAutoCustom[1], VALUE_AUTOMATIC,
	"",	stAutoCustom[2], VALUE_CUSTOM

ui_infield "strHardwareValue", x5, y-3, x6-x5, 20
y = y + dy

ui_outfield `Item Name`, x2, y, x3-x2-1, 18
ui_infield "strHardwarePrefix", x3, y-3, x4-x3, 20

y = y + dy

if bWindow then
	ui_style 0, 1
	ui_outfield `Custom Text 1`, x1, y, x3-x1-1, 18
	ui_style 0, 0

	ui_outfield `Item Name 1`, x3, y, x4-x3, 20
	ui_infield "strCust1Prefix", x5, y-3, x6-x5, 20
	y = y + dy

	ui_outfield `Text 1`, x3, y, x4-x3, 20
	ui_infield "strCust1Value", x5, y-3, x6-x5, 20
	y = y + dy

	ui_style 0, 1
	ui_outfield `Custom Text 2`, x1, y, x3-x1-1, 18
	ui_style 0, 0

	ui_outfield `Item Name 2`, x3, y, x4-x3, 20
	ui_infield "strCust2Prefix", x5, y-3, x6-x5, 20
	y = y + dy

	ui_outfield `Text 2`, x3, y, x4-x3, 20
	ui_infield "strCust2Value", x5, y-3, x6-x5, 20
	y = y + dy
else
	ui_style 0, 1
	ui_outfield `Handle`, x1, y, x3-x1-1, 18
	ui_style 0, 0

	ui_outfield `Item Name`, x3, y, x4-x3, 20
	ui_infield "strHandlePrefix", x5, y-3, x6-x5, 20
	y = y + dy

	ui_outfield `Text`, x3, y, x4-x3, 20
	ui_infield "strHandleValue", x5, y-3, x6-x5, 20
	y = y + dy

	ui_style 0, 1
	ui_outfield `Custom Text`, x1, y, x3-x1-1, 18
	ui_style 0, 0

	ui_outfield `Item Name`, x3, y, x4-x3, 20
	ui_infield "strCustPrefix", x5, y-3, x6-x5, 20
	y = y + dy

	ui_outfield `Text`, x3, y, x4-x3, 20
	ui_infield "strCustValue", x5, y-3, x6-x5, 20
	y = y + dy
endif
I know I'm asking tooo much but if someone has the time and the mood to have a look, I would really appreciate it!!!

Thanks in advance
Anonymous
Not applicable
Does anyone knows where can I locate the code for each of the available parameters that archicad provides for the window schedules? Inside General Parameters there is a parameter called "Library Part Name" that does exactly what I need for my window marker.

Thanks:)
sinceV6
Advocate
Hi.
Like I said, use the REQUEST function. Read the description of
REQUEST ("ASSOCLP_NAME", "", name)
in the GDL reference guide (and the other request functions) to see if it is what you need.

Best regards.
Anonymous
Not applicable
Hi sinceV6, I tried to work with the request function the first time you told me about it, but I messed up the code.... Ok second try. Here is the code that I have so far (I made changes based on the original code) :
if iIDText = VALUE_AUTOMATIC then 
	objectid = ""					!objectid is a random name that I picked
	rrr = request("LIBRARY_PART_NAME", "", name)
	if rrr then objectid = name
	
	strIDValue = objectid
endif	
The question that I have now is: should I create also a parameter on the objects parameters window for any of the "LIBRARY_PART_NAME" / "name" and "objectid" ?
The "strIDValue" is a text parameter with a value of "wind-34" (prefixed by archicad).
When I check the script I get this message : 'Uninitialized variable at line 193'
Line 193 is this line
if rrr then objectid = name
Thanks for your patience!
sinceV6
Advocate
Hi.

The request function is, again:
REQUEST ("ASSOCLP_NAME", "", name)
that may stand for "ASSOCiatedLibraryPart_NAME" if I'm not mistaken

NOT:
REQUEST ("LIBRARY_PART_NAME", "", name)
which I don't think exists.

Try that before anything else.

To answer your question: no unless you are going to schedule the parameter from the marker, which I see no point in doing.

The "strIDValue" is just a text parameter in case you don't want the automatic ID and you want to write your own (I'm assuming a lot of this without taking a deeper look, ok?).

I cannot try it myself, but it looks like you are changing the parameter script without changing the master script; and it is there where the object ID is called as you said:
if iIDText = VALUE_AUTOMATIC then strIDValue = AC_WIDO_ID
So in master script, add the request before the line if you want it to show the library part name instead of the window ID:
name=""
rrr = request("ASSOCLP_NAME", "", name)

if iIDText = VALUE_AUTOMATIC then strIDValue = name
Beware this may break something else.

Best regards.
Anonymous
Not applicable
Thank you very much for all your help, the script worked exactly as you said!
Originally I typed the request as you said in your previous message ("ASSOCLP_NAME", "", name) but affter I got an error message I tried different things and messed up again the code


Oh, and by the way all this time I was working on the master script. In 2d script there was not any code regarding the ID of the object....

Thanks a lot!!

sinceV6
Advocate
No problem. Glad you finally got it working.

Best regards.
Learn and get certified!