Solid.ByLoft guide curves problem

Hi, I try to figure out how Solid.ByLoft exactly work. I created this simply loft to test this method for multiple cross Sections input, but the loft seems not following guide curves. Whats wrong?
loft
LoftTest.dyn (60.2 KB)

The Solid.ByLoft node works in a similar way as nurbscurves. The node tries to make a smooth object. Have you tried creating the 2 prisms as 2 completely seperate lists?

I thought that why there is node which allows you to specify guide curves, to get control of it.
As to splitting things into 2 different parts - there is whole background story why I want to solve this that way ;]

My goal is to create abutment geometry, there was no problem in Dynamo part but it seems that Revit don’t like splitting and then joining lofts like that. In this case I’m unable to use Revit Split Face method on some faces (it’s possible only for face with those blue arrows):


After trying different approaches I figured out that there is no problem in spliting faces when I use loft by multiple cross Sections, but then I get those curvy edges:

So I’m trying to keep my sharp edges by using guide curves.

I don’t fully understand what you are trying to achieve.
After “splitting” the Dynamo Solids you can unionize those Solids together using the Solid.ByUnion node.

I know that, but then there is Split Face method in Revit which won’t work If I solve this that way.

I see, i wouldn’t know how to get around those curvy edges then :confused:

How did you create the geometry in Revit? Is this a direct shape?

I’m using Form.ByGeometry from Spring Nodes. I’m attaching Revit family which causes the problem.Abutment.rfa (556 KB)

Can you share the original graph that produces the form as well?

Would Solid.ByRuledLoft work for you?
You wouldn’t need guide curves if you’re looking to have straight edges.

pt1 = Point.ByCoordinates([0,5,5,0],10,[0,0,5,5]);
pt2 = Point.ByCoordinates([0,5,5,0],0,[0,0,5,5]);
pt3 = Point.ByCoordinates([0,5,5,0],5,[2.5,2.5,7.5,7.5]);
true;
pts1 = [pt1,pt3,pt2];
2 Likes

Well I can share the graph but node creating geometry is written in C# so I guess that it will be no much use of it.
Abutment.dyn (107.3 KB)
I can also share part of code, method for creating geometry can be simplified to this:

static Autodesk.DesignScript.Geometry.Solid GetMain(AbutmentModel model)
    {
        //Get XYZ's from AbutmentModel for main cross section creation
        List<XYZ> leftSection = model.GetSectionPoints(AbutmentModel.Section.Left);
        List<XYZ> leftInnerSection = model.GetSectionPoints(AbutmentModel.Section.LeftInner);
        List<XYZ> midSection = model.GetSectionPoints(AbutmentModel.Section.Mid);
        List<XYZ> rightInnerSection = model.GetSectionPoints(AbutmentModel.Section.RightInner);
        List<XYZ> rightSection = model.GetSectionPoints(AbutmentModel.Section.Right);
 
        //Create main cross sections
        Autodesk.DesignScript.Geometry.PolyCurve leftPolycurve = Dynamo.GetSectionFromPoints(leftSection);
        Autodesk.DesignScript.Geometry.PolyCurve leftInnerPolycurve = Dynamo.GetSectionFromPoints(leftInnerSection);
        Autodesk.DesignScript.Geometry.PolyCurve midPolycurve = Dynamo.GetSectionFromPoints(midSection);
        Autodesk.DesignScript.Geometry.PolyCurve rightInnerPolycurve = Dynamo.GetSectionFromPoints(rightInnerSection);
        Autodesk.DesignScript.Geometry.PolyCurve rightPolycurve = Dynamo.GetSectionFromPoints(rightSection);

        //Make lists of cross sections
        List<Autodesk.DesignScript.Geometry.PolyCurve> firstList = new List<Autodesk.DesignScript.Geometry.PolyCurve>() { leftPolycurve, leftInnerPolycurve };
        List<Autodesk.DesignScript.Geometry.PolyCurve> secondList = new List<Autodesk.DesignScript.Geometry.PolyCurve>() { leftInnerPolycurve, midPolycurve };
        List<Autodesk.DesignScript.Geometry.PolyCurve> thirdList = new List<Autodesk.DesignScript.Geometry.PolyCurve>() { midPolycurve, rightInnerPolycurve };
        List<Autodesk.DesignScript.Geometry.PolyCurve> fourthList = new List<Autodesk.DesignScript.Geometry.PolyCurve>() { rightInnerPolycurve, rightPolycurve };
        
        //Create solids
        Autodesk.DesignScript.Geometry.Solid solid0 = Autodesk.DesignScript.Geometry.Solid.ByLoft(firstList);
        Autodesk.DesignScript.Geometry.Solid solid1 = Autodesk.DesignScript.Geometry.Solid.ByLoft(secondList);
        Autodesk.DesignScript.Geometry.Solid solid2 = Autodesk.DesignScript.Geometry.Solid.ByLoft(thirdList);
        Autodesk.DesignScript.Geometry.Solid solid3 = Autodesk.DesignScript.Geometry.Solid.ByLoft(fourthList);

        //Join solids
        solid0 = solid0.Union(solid1);
        solid0 = solid0.Union(solid2);
        solid0 = solid0.Union(solid3);
        return solid0;
    }

As far as I’m aware this node is not available in latest Dynamo for Revit build. Or is there some kind of package where can I download it?

No package. Available in Dynamo Sandbox (ver 2.11, maybe a little earlier too)

However, Surface.ByRuledLoft has been available. You could try creating a sealed surface and extract the enclosed solid.

Hmmm… what I was hoping for was the raw data to use as validation for a series of nodes to use as a POC use case for native method form creation which has a some key advantages over direct shape, but would require a whole library and then some of nodes…

I recreated the issue without external library, here is the script.
Sample.dyn (56.6 KB)

1 Like

I’ve to use dynamo 2.0
and cannot find this one

I need to create a cone
all these things I’ve, but am not able to create the solid.

any suggestion?

Regards,