Change revit family parameter and export image does not change parameter

Hi,

Anyone know how to make this work? Right now the definition will export all images, but fail to change the parameters first. It’s all null’s.

It’s built on Michael Kirschner’s work on Changing a Family Instance and Saving an Image, and I use latest daily (DynamoInstall0.7.5.20141121T0127) on Revit 2015 UR4.

I’m guessing there’s something wrong with my use of Transactions and Compose Function nodes, but fail to see what. Dyf, dyn & rvt zipped and included below.

Change Parameter and Export Image

Hi, Håvard Vasshaug

Could you try disconnecting the number range from the custom node and leave it connected only to the List.Map node?

Capture

 

I think you should ignore the “null” output of the node because that’s how it’s set up.Works great for me otherwise:

Capture2

 

One more think. I’m not sure if that may be causing a problem for you. I did not update to the latest daily and had to replace the “StringFromObject” inside the custom node with a ToString+List.Map combo. I’m not sure if the “StringFromObject” node handles lists on its own.

Capture3

Thanks. Which version are you using? Latest stable (073)?

Okay, I have this working on Release Candidate now, but honestly how disconnecting Parameter Value makes it work is far beyond me. Guess I need to read more on List.Map, Transactions, etc, perhaps from http://dynamobim.com/forums/topic/changing-family-instance-and-saving-image-issues/

Thanks for your fine help!

disconnecting the parameter lets your custom node act as a function,(slightly lighter grey node) which is mapped over a list. (mapped means it’s applied to each item in the list) so your custom node gets called once for each item, with the item being the parameter value that map is iterating over.
The other inputs to your custom node are held constant each time since they are plugged in.

I was using an older daily build - 0.7.4.3166.

 

Thanks. So, I have this working on changing family parameters, but how do I deal with other parameters, like say the number of grid lines in a framing structure? Your not changing a parameter, but the number of families placed, and then save image, etc. I’ve tried this and fail to make Surface.PointAtParameter work with lists of UV-values. Similarly with placing adaptive components across a facade; I can animate the changing parameters, but not the number of panels changing.

Here’s my latest try, changing the framing’s Comments parameter as a dummy for calling that function first.

2014-11-23_08-17-25 2014-11-23_08-18-24 2014-11-23_08-18-08 2014-11-23_08-17-47

I can’t test now unfortunately, and I can’t see any full images besides the first one: (. The forum is a bit flaky with images still.

But it seems to me there are two issues:

  1. if you want to change the number of families placed by changing some parameter to your custom node, not a revit parameter, this approach should still work fine. Just get rid of the change parameter node, and leave the value input empty on your family placement node.

  2. if you want to do all of these things together and call all of your custom nodes in a specific order, then you should press the plus button on the function.compose() node and add more partially applied (that means with only some inputs filled) to the chain. These will be called in order from top to bottom like with these 2 in your images now. Heres what will happen, map() will grab the first value from the list, and put it into the custom node on top with the empty input. That node will do its thing, and return it’s output thats plugged into the function.compose. That output will go into the empty input in the next custom node that is partially applied, and so on. So you need to plan for what kind of data will be returned and how the next node in the chain uses it.

 

It’s like writing this h(g(f(x))) , where f is evaluated first, then g is evaluated with the result from f(x), then h is evaluated with the result from g(f(x))… real example:

 

10/((2*(5+1)))

I don’t think what you want to do is possible due to the fact that you’re trying to map a two argument function to a single argument map node. You have to find an alternative way of generating your geometry.

2014-11-24_101142

Also each time you create the grid of beams and capture of it, you will need to delete it before continuing to the next grid size. That would complicate things even further.

 

I think that you will need to create a parametric family first that has the beams nested in and arrayed, where you can control the array number. Or maybe you could do it with a divided surface and ACs.

if you want to map a function with more than 1 argument you need to use the combine or lacing nodes, these will apply the function multiple times with the cross/cartesian product or longest/shortest lacing methods of your input lists.

Hi <span class=“author-link”>Michael,</span>

Great blog post about solids unfolding .

Could you give us some tips on how to make the following work?

2014-11-25_101924

@Dimitar_Venkov
Hi, could you please tell me how to get the node Update Parameter and Export picture ? many thanks