Read data list from excel and assigns data to Revit Family parameters by Name

My plan is to create an excel sheet that has all the information for all Panelboards.

I have two types of families:

One:
Equipment Family Types and these includes all my Panelboards that will be placed on the floor plans.

Two:
Detail Item Family Types and these will be used for the Single Line Diagram to represent Panelboards in Revit.

The idea is that both families get their parameter fields populated based on their Panelboard Names. If I figure out how to link and collect data in a smart way from an Excel sheet to one of these Families I will be able to do it for both.

Can anyone help me or point me to the right direction on how to accomplish this?

thank you in advance!

I will share once I get it done.

I imagine all your family has already been placed in the model and has a sort of “Identification Code”.

You can create a xls file like this:

image

E1,E2,E3 are the ID code of the families;
p1,p2,p3 are the parameter names;
a,b,c,… are the parameter value.

So you can use the ID code to get the right parameter values and assign them to the right family instance.

Then you can place the detail items on view, using the location of the equipement family and finally set the parameter reading from equipement family or xls.

image

PNG

I found this diagram that includes all the nodes I have in my current Dynamo Version. However, I don’t know how to use excel to replace the Code Blocks.

Try this:

@m.ravelli thank you for your help! It worked! But it worked only with one column, as soon as I add a second column, the data shows as shown in the picture.

if the exporting to Revit isn’t done yet, nor the importing of the new data, you can consider using the elements unique Id as the key to bringing back the changed data.
this way there can not be a mistake, as making you own identifiers can have errors.

Set%20parameters

Try to check the input lists following the structure in the attached image.

I noticed also you are using “auto-lacing”…I don’t know how it works…
But for tasks like this I always set the “Element.SetParameterByName” so:

  • lacing = longest
  • parameter name --> use level @L2
  • value --> use level @L2

It should work fine…

@Marcel_Rijsmus @Nick_Boyts

This script looks promising.

I try to rebuild in order to assign parameters to a steel structure, using the Single Part number as an identifier.

However, I do not understand or get to work the “List.IndexOf” node.

All values are set to integers, and there are no trailing whitespaces.


data wegschrijven uit Excell hermaakt.dyn (42.0 KB)

How can get the indexes?

Kind regards,

Willem

You’ll need to post a new screenshot using Export Workspace. The current one doesn’t show the node titles.

The issue seems to be that you’re getting just the first item in your list from excel, which is a whole sublist. You’re then looking for the index where that sublist exists in a list of parameters(?). You’ll need to explain what it is you’re trying to do exactly but I’m guessing you need to use list levels to either get all instances of a parameter and/or to check against all values for multiple parameters.

Hi @Nick_Boyts ,

The first item in the list, the “Single Part Number” is the identifier to match the Revit elements with multiple parameters to the excel.

But I have no clue how to make the List.IndexOf to work, or what I can use as the “Element” input.

The “List.GetItemAtindex” bottom right selects the elements in the model,
The “List.GetItemAtindex” middle right selects the lists in the excel.

Kind regards,

Willem

Now you have all the node previews hidden so we can’t see your data anymore. We need all the information you have to help you troubleshoot.

There are tons of topics here on the forum that cover Excel to Revit workflows and mapping data. Have you taken a look at them and tried to recreate their logic? If you’re unsure how to use List.IndexOf then I recommend going through the Primer to get all the basics down before attempting something like this. The basic idea is to either match the index with the Excel data to pull all the column values individually or use something like a dictionary to map everything at once.

1 Like

Hi @Nick_Boyts,

as a casual user, it was helpfull to refresh my knowledge on Primer.

If anyone stumbles into this topic, this is how it worked.

Schermafbeelding 2023-11-03 113847

data wegschrijven uit Excell hermaakt 02.dyn (38.5 KB)

1 Like