We value your input!
Please participate in Archicad 28 Home Screen and Tooltips/Quick Tutorials survey

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

Label complex profile Building Material IDs

Bruce
Advisor
I have complex profile walls made up of several different building materials. E.g. BM01 is the bottom, BM02 is the middle, and BM03 is the top.

The currently available labels only seem to call up one of the building materials - not all of them. I have played around with trying to code my own label, but it doesn't seem to extract any more information.

Is there a way to extract all the building materials used in a complex wall profile?

Commands tried so far:
WALL_SKINS_NUMBER (only works on composites, not complex profiles)
WALL_SKINS_PARAMS (only one BM extracted)
WALL_SKINS_BMAT_NAMES (only one BM extracted)
REQUEST{2} ("Building_Material_info"... (works to get the ID, but need the name first)

I'm also after doing the same for morphs & slabs.
Bruce Walker
www.brucepwalker.com
Barking Dog BIM YouTube
Mindmeister Mindmap
-- since v8.1 --
AC27 5060 INT Full | Windows 11 64 Pro | 12th Gen Intel i7-12700H 2.30 GHz | 64 Gb RAM | NVIDIA GeForce RTX 3060 32 Gb
5 REPLIES 5
Bruce
Advisor
To demonstrate: the attached image shows the icon of the defined profile, next to the section cut of the same. The label is the one I created, that will list the name and BM ID of every skin in the profile.

As you can see, only the top two skins are listed - the bottom one (because is below, not behind the other skins) is missing.

BTW - this profile is for testing only, but demonstrates what I'm trying to achieve.
Bruce Walker
www.brucepwalker.com
Barking Dog BIM YouTube
Mindmeister Mindmap
-- since v8.1 --
AC27 5060 INT Full | Windows 11 64 Pro | 12th Gen Intel i7-12700H 2.30 GHz | 64 Gb RAM | NVIDIA GeForce RTX 3060 32 Gb
Bruce
Advisor
Extract from the 2D script:

DIM wallSkinsBMat[][],

wallSkinsBMat = WALL_SKINS_BMAT_NAMES


IF elemType = 5 THEN	!Wall
	FOR i = 1 TO VARDIM1(wallSkinsBMat)
		reqNote = reqNote + "\nBMat " + STR(i,1,0) + ": " + wallSkinsBMat[1]
	NEXT i

	FOR i = 1 TO VARDIM1(wallSkinsBMat)
		reqParam = wallSkinsParams[18]

		n = REQUEST{2} ("Building_Material_info", reqParam, "gs_bmat_id", id)
		reqNote = reqNote + "\nBMat ID " + STR(i,1,0) + ": " + id
	NEXT i
ENDIF
Bruce Walker
www.brucepwalker.com
Barking Dog BIM YouTube
Mindmeister Mindmap
-- since v8.1 --
AC27 5060 INT Full | Windows 11 64 Pro | 12th Gen Intel i7-12700H 2.30 GHz | 64 Gb RAM | NVIDIA GeForce RTX 3060 32 Gb
poco2013
Mentor
I'm Sure this doesn't help at all: but did look at the "Skin list label 21" It seems that that the label just takes a horizontal cut across at one place in the profile, near the top and picks up any materials it finds in that path which would be the reason that it doesn't see the lower skin?? Moved the lower material to the top and it picked it up OK. Schedules do not seem to have this problem.

Maybe that might give you a place to look in your code??
Gerry

Windows 11 - Visual Studio 2022; ArchiCAD 27
Bruce
Advisor
Thanks Gerry - I hadn't considered that it was the cutting plane that was determining what the label picked up. This would explain why shorter complex profiles 'crashed' the label, as they didn't cross the cutting plane.

It would make a whole lot more sense for the label to cut a vertical section (or just take all the fills in the profile definition) to fill out the skins list. Seems to be an oversight in ARCHICAD at the moment.

I'll keep pondering on how to solve this, because as it stands I need to place dumb labels on some of my surfaces.

Cheers
Bruce Walker
www.brucepwalker.com
Barking Dog BIM YouTube
Mindmeister Mindmap
-- since v8.1 --
AC27 5060 INT Full | Windows 11 64 Pro | 12th Gen Intel i7-12700H 2.30 GHz | 64 Gb RAM | NVIDIA GeForce RTX 3060 32 Gb
Palawat
Advocate
I'd like to point out that, apart from being cut by the Cut Plane, the "Outlines Only" in "Floor Plan Display" option could crash your label even the complex-profile wall is cut by the Cut Plane.

What I did in my label is something like this :

if WALL_CROSSSECTION_TYPE = 0 then		! Complex Profile
	if WALL_SKINS_NUMBER = 0 then
		! You can give out a warning text or creating a parameter for manual select a BMAT here.
	else
		if ac_wall_display_option = 4 then	! Outlines Only
			! Again,  Give out a warning text or creating a parameter for manual select a BMAT here.
		else
			! This is where the data is available, so you can 
			n = REQUEST{2} ("Building_Material_info", reqParam, "gs_bmat_id", id)
		endif
	endif
endif
Archicad 26, Windows 10, Corei7 3.4 GHz, 16 GB Ram.
https://www.indigofigs.com
https://www.facebook.com/indigofigs