Visualarq ifc parameters

Hi @fsalla,

I think exporting rhino geometry with IFC parameters is a very powerful functionality. I am currently trying to export Rhino geometry with ifc parameters. I would like to write data to Ifc parameters e.g. type/material, however, when I open the model (in Solibri viewer) my parameters end up in a category VaIfc_General (see *.png). How do you recommend to achieve this?

best regards,
Tim Castelijn

Hi Tim,
That parameter “Type” of your first screenshot is a custom parameter and is different from the “Type” parameter that appears at the Solibri Indentification’s tab, which corresponds to the VisualARQ style name. Since that object is not a VisualARQ obect, it has no style,and therefore the value “Type” is empty in Solibri, while the custom parameter “type” is displayed in a different tab.

The custom parameters exported from VisualARQ to IFC can’t be mapped with existing parameters in other programs, although this is something planned in future versions.

Hi Francesc,

Thanks for your response. I might try to script some styles then and keep an eye on the future releases.


I have scripted some element styles to replace my blocks with vaElements. Unfurtunately, the Style of GenericElements are not displayed as “Type” in solibri, so I guess I really have to wait.

thanks anyway.

import rhinoscriptsyntax as rs

import clr
import VisualARQ.Script as va

def main():
    selection = rs.GetObjects('Select your objects')
    for item in selection:
        #exit if not a block
        if not rs.IsBlockInstance(item): return False
        #create a new style for each blockinstance if non-existent
        blockName = rs.BlockInstanceName(item)
        styleId = va.GetGenericElementStyleId(blockName)
        if not styleId or str(styleId) == "00000000-0000-0000-0000-000000000000":
            styleId = va.AddGenericElementStyle( blockName , [blockName], [])
        #add a generic element with the new style adt the same location
        element = va.AddGenericElement(styleId, rs.coerce3dpoint([0,0,0]), 1, 0)
        arrMatrix = rs.BlockInstanceXform(item)
        rs.TransformObject( element, arrMatrix)

        #set the ifc Entity via User Attribute Text (somehow this works)        
        rs.SetUserText(element, 'IfcEntity', 'IfcWall')

if __name__ == "__main__":

@fsalla , do you have any documentation about the types of parameters (IFC, VARQ, System)?
I cannot say exactly what is happening in this image but it appears that some ‘System Parameters’ (highlighted with Green pen) are embedded into the Document (parameters like area, volume, perimeter, etc). I would like to avoid creating or recreating those locally on accident (ex: avoid the parameter Name because name already exists) and wonder where I can find this list. You can see where the Space was given the Parameter ‘name’ in two instances (index 0 & 23)

Also, is it correct that Capitalization is ignored when calling user created Parameters?
And, can you explain the difference between a “Property” and a “Parameter” ? Are they interchangeable terms?

Hi Kevin,
How did you get the list of parameters on the left? in order to know the parameters residing on an object, you need to use the “Property Names” component, as you are using on the right of your screenshot. And then plug those into the Get Property component, to obtain the values.
Capital letters matter when using parameters from their string, since you can have two different parameters called “area” and “Area”.

I guess there are 2 “name” properties here because in addition to the system property “name”, you created a new parameter called “name” as well.

The difference between a property and a parameter is how they are created:

Parameters are dynamic and editable, and depend on the object type. You can change its name, category, data type, etc.

Properties are fixed and intrinsic of each object (“name”, “description”, “tag”, “area”, “volume”, etc). You can not “delete” them. All objects have them.

There are two types of parameters: geometric ( “height”, “width”, “profile”, etc ), or non-geometric (custom parameters), which are just “data”. In reality, “geometric” parameters and “non geometric” parameters are the same. The only difference is that some appear in the Properties panel > Parameters, and the others in the object properties panel.

Hi @fsalla

This is strange because the Parameters were created with Title Case, but they read from the Property Names component in lower case. Even the Intrinsic Property, such as “Name” and “Description”, is displayed in Title Case but retrieved in lower case.

Yes, this is correct. I think the goal of my query is to learn which Properties already exist in a new document so I can avoid creating them as Parameters. Thus your answer here is exactly correct :slight_smile:

–Is the Item Picker in the image below the full list of the intrinsic Properties?
–Do all objects have each of these Properties?
–And, can I add to this list? (not that I need to now, I am just curious if it is possible)

Each parameter has an “interface” name that might be different than the “internal” parameter name. So for example, if you create a custom parameter called “Fire resistance”, in Grasshopper this parameter will be referenced as “fireResitence”. Tha’t why is always better to find out the parameter names through the “Property Names” component, rather than typing the name in a Panel.


No. We put them together in one single component in order to avoid having one component for each one, but we may end up having so. Actually, we already have single components for the properties “Thickness”, “Volume” and “Area”.

If you need to add new properties you just do it as custom parameters.

1 Like

Thank you for everything.
I think this thoroughly answered my questions about Properties & Parameters :slight_smile: !

1 Like

I think that I do not understand everything about Parameters created in a VisualARQ Style.
I used the Create Object Parameter component to create this Space Style and its list of Object Parameters:

When I try to set the Parameter and Bake the Space into Rhino with the Set Property Value component: 1) it creates Document Parameters which adds them to the 2) General category in the object and 2) adds the Value in multiple places in the Object’s Parameters.

Ideally, Set Property would only add the property to the Object, but it seems to do more than this.
My query is directly related to this thread where I look for help to resolve this Solution exception error.

Hi Kevin,
Can you share the definition used for that? where do you set the Parameter, to a space object component or to a Space style component?
Have you created the new parameter in Rhino as a Document Parameter or as a style parameter for that space style?

In Grasshopper you have a specific component for each case “Create Document Parameter” and “Create Object Paramater”. In this second one, the “Object” input accepts either object components as style components. So if you connect a style to the “object” input, the parameter will be created on the style (after you bake the “create object parameter” component.

Thanks for the image. I will try to implement it now.
Meanwhile I will send you a script I prepared with internalized data (so you can duplicate my vaStyles).