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).

is still there is no mapping of visualARQ parameters with Solibri as it was asked above?

Hi @Hassan_Nawaz,

This is still in our to-do list. You can export VisualARQ custom parameters to IFC but, for now, they don’t link with existing IFC properties.

Thanks for your reply. One more query, i am having a problem when i update the IFC Tag. Only the “Name” field is not updating the rest are working.

Question: Can i increase this list of IFC parameters? Currently these are only four.

Could you please also give some suggestion what i can do to have a IFC model from Visual ARQ which is somehow mappable in Solibri? I am creating parameters and IFC parameters but it looks the Solibri guys don’t have any filter to map with my data. Would it work when they sort with these four IFC parameters?

Thanks and regards

Hi @Hassan_Nawaz,

I have been testing it and it looks like it is working fine in my case… Are you doing it this way?


What you have here are properties, if you need to include more information you can do it by creating custom parameters: There are some VisualARQ components available to crreate this kind of parameters from Grasshopper as well:

What do you mean by “mappable”? If you create custom parameters in VisualARQ, they should be read by Solibri.

You just need to make sure you choose this option when exporting to IFC:

Thanks for your reply. Here is one more screenshot. Its still not working. I checked when i just make one object and do the similar, then it works. Am I missing some step?

By mapping i mean that my parameters which i define they comes under general category in Solibri. I am doing exactly the same as you have shown above about parameter definition and export. But the guy with solibri is getting empty field but these paramters are under general category. Here is screen shot from solibri

One more question, what i can do if i wanted to remove the defined parameters or make the parameters values a empty? For exmaple, in the following i wanted to make the “test112” as empty. Similarly if i have here defined a new parameter as “Material” with value “test000”. How i can delete this complete parameter?.

Hi @Hassan_Nawaz,

According to my tests it should be working fine… Please, could you send me your file? You can post it here or send it to If you write “name” instead of “ifcName”, is it working?

This is still under development as I said, we will let you know when it is implemented.

Parameters can be created by document, by style and by object, so you will need to delete them in the place you have created them. Here you have information about how to create them: How can I create custom parameters? - VisualARQ. You can delete them in the same place, just by selecting them and clicking on the red cross.

If you want to delete a value, you can just click on the text box and delete it.

Thanks for your reply. I think i need to delete the parameters and then do it again. It might work in this way. I am also sending you the file per email.

For deleting the parameters, can i do it in Grasshopper? I have seen there is only creation options. Let me know if there is any.

Hi @Hassan_Nawaz,

We don’t have Grasshopper components to delete parameters, but you can use the GhPython Script component to create a script with the VisualARQ API which does the job. Here you have an example which deletes a document parameter from its name (if you want to delete object parameters you can use the GetAllObjectParameterIds() method instead of the GetAllDocumentParameterIds() to create a similar script).

Delete (3.7 KB)

1 Like