Приветствую. Всё ещё пытаюсь побороть DirectShape
Проблема возникает, когда я пытаюсь создать DirectShape из перегруженного TessellatedFace( в который передаётся IList<IList<XYZ>>) для получения поверхности с отверстиями. Но в итоге получается кривой DirectShape (см. вложение). Ниже прикладываю код, который я использую. Просьба помочь разобраться, как построить ровный DirectShape.
public static ElementId CreateDirectShapeWithHoles(
Document doc,
string shapeName,
string appGuid,
IList<IList<XYZ>> pointsList)
{
var materialId = GetMaterial(doc);
var tessellatedFace = new TessellatedFace(pointsList, materialId);
return CreateDirectShapeFromTessellatedFace(doc, shapeName, appGuid, tessellatedFace);
}
private static ElementId CreateDirectShapeFromTessellatedFace(
Document doc, string shapeName, string appGuid, TessellatedFace tessellatedFace)
{
var builder = new TessellatedShapeBuilder
{
LogString = shapeName
};
builder.OpenConnectedFaceSet(true);
if (builder.DoesFaceHaveEnoughLoopsAndVertices(tessellatedFace))
{
builder.AddFace(tessellatedFace);
}
builder.CloseConnectedFaceSet();
builder.Build();
var cat = GetBuiltInCategoryForShape();
var ds = DirectShape.CreateElement(doc, new ElementId(cat));
ds.ApplicationId = appGuid;
ds.ApplicationDataId = shapeName;
ds.Name = shapeName.Replace(':', '_');
ds.SetShape(builder);
return ds.Id;
}
![](https://i.postimg.cc/JH1H8z4k/example-DS.png)