Thanks to all who responded. I have set the options:
builder.Target = TessellatedShapeBuilderTarget.Solid;
builder.Fallback = TessellatedShapeBuilderFallback.Abort;
And now I'm getting an error:
TessellatedShapeBuilder failed to build the requested geometry
Here is my code which i am using :
private static DirectShape CreatePrizmeDirectShape(Document doc, List<XYZ> lft, List<XYZ> rght, double Height)
{
List<List<XYZ>> pntss = new List<List<XYZ>>();
List<XYZ> pnts = new List<XYZ>();
pnts.Add(lft.FirstElem());
pnts.Add(lft.LastElem());
pnts.Add(rght.LastElem());
pnts.Add(rght.FirstElem());
pntss.Add(pnts.Clone());
pnts.Clear();
pnts.Add(lft.FirstElem());
pnts.Add(rght.FirstElem());
pnts.Add(rght.FirstElem().ZUpp(Height));
pnts.Add(lft.FirstElem().ZUpp(Height));
pntss.Add(pnts.Clone());
pnts.Clear();
pnts.Add(lft.FirstElem().ZUpp(Height));
pnts.Add(lft.LastElem().ZUpp(Height));
pnts.Add(lft.LastElem());
pnts.Add(lft.FirstElem());
pntss.Add(pnts.Clone());
pnts.Clear();
pnts.Add(lft.LastElem().ZUpp(Height));
pnts.Add(lft.LastElem());
pnts.Add(rght.LastElem());
pnts.Add(rght.LastElem().ZUpp(Height));
pntss.Add(pnts.Clone());
pnts.Clear();
pnts.Add(rght.FirstElem().ZUpp(Height));
pnts.Add(rght.LastElem().ZUpp(Height));
pnts.Add(rght.LastElem());
pnts.Add(rght.FirstElem());
pntss.Add(pnts.Clone());
pnts.Clear();
pnts.Add(lft.FirstElem().ZUpp(Height));
pnts.Add(lft.LastElem().ZUpp(Height));
pnts.Add(rght.LastElem().ZUpp(Height));
pnts.Add(rght.FirstElem().ZUpp(Height));
pntss.Add(pnts.Clone());
return CreateTessellatedShape(doc, pntss);
}
private static DirectShape CreateTessellatedShape(Document doc, List<List<XYZ>> lloopverics)
{
FilteredElementCollector collector = new FilteredElementCollector(doc).OfClass(typeof(Material));
IEnumerable<Material> materialsEnum = collector.ToElements().Cast<Material>();
var materialReturn1 = from materialElement in materialsEnum
where materialElement.Name == "Default"
select materialElement;
ElementId materialId = materialReturn1.First().Id;
TessellatedShapeBuilder builder = new TessellatedShapeBuilder();
builder.Target = TessellatedShapeBuilderTarget.Solid;
builder.Fallback = TessellatedShapeBuilderFallback.Abort;
//builder.Fallback = TessellatedShapeBuilderFallback.Salvage ;
builder.OpenConnectedFaceSet(true);
for (int i = 0; i < lloopverics.Count; i++)
{
builder.AddFace(new TessellatedFace(lloopverics[i], materialId));
}
builder.CloseConnectedFaceSet();
builder.Build();
TessellatedShapeBuilderResult TessellatedShapeBuilderObject = builder.GetBuildResult();
Transaction t = new Transaction(doc, "Create direct shape");
t.Start();
DirectShape ds = DirectShape.CreateElement(doc, new ElementId(BuiltInCategory.OST_GenericModel));
ds.SetShape(TessellatedShapeBuilderObject.GetGeometricalObjects());
t.Commit();
return ds;
}
Here is the input:
Name Value Type
| ▶ | lft.FirstElem() | {(42.513861810, 364.342648187, 4.188446398)} | Autodesk.Revit.DB.XYZ |
| ▶ | lft.LastElem() | {(43.986909346, 386.113916267, 4.466224178)} | Autodesk.Revit.DB.XYZ |
| ▶ | rght.FirstElem() | {(40.279565212, 365.119862152, 4.188446398)} | Autodesk.Revit.DB.XYZ |
| ▶ | rght.LastElem() | {(41.668282718, 385.644753829, 4.466224178)} | Autodesk.Revit.DB.XYZ |
| ▶ | rght.FirstElem().ZUpp(Height) | {(40.279565212, 365.119862152, 7.132890844)} | Autodesk.Revit.DB.XYZ |
| ▶ | rght.LastElem().ZUpp(Height) | {(41.668282718, 385.644753829, 7.132890844)} | Autodesk.Revit.DB.XYZ |
| ▶ | lft.FirstElem().ZUpp(Height) | {(42.513861810, 364.342648187, 7.132890844)} | Autodesk.Revit.DB.XYZ |
| ▶ | lft.LastElem().ZUpp(Height) | {(43.986909346, 386.113916267, 7.132890844)} | Autodesk.Revit.DB.XYZ |