添加项目文件。
This commit is contained in:
67
Mstn.Toolkit/External/PolyfaceProcessor.cs
vendored
Normal file
67
Mstn.Toolkit/External/PolyfaceProcessor.cs
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Bentley.DgnPlatformNET;
|
||||
using Bentley.DgnPlatformNET.Elements;
|
||||
using Bentley.GeometryNET;
|
||||
|
||||
namespace Mstn.Toolkit.External
|
||||
{
|
||||
public class PolyfaceProcessor : ElementGraphicsProcessor
|
||||
{
|
||||
private readonly IList<PolyfaceHeader> outputPolyface;
|
||||
private readonly FacetOptions options;
|
||||
private DTransform3d currentTransform;
|
||||
public PolyfaceProcessor(ref IList<PolyfaceHeader> outputPolyface, FacetOptions options)
|
||||
{
|
||||
this.outputPolyface = outputPolyface;
|
||||
currentTransform = DTransform3d.Identity;
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
public override FacetOptions GetFacetOptions()
|
||||
{
|
||||
return options;
|
||||
}
|
||||
|
||||
public override bool ProcessAsBody(bool isCurved)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool ProcessAsFacets(bool isPolyface)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override BentleyStatus ProcessFacets(PolyfaceHeader meshData, bool filled = false)
|
||||
{
|
||||
if (meshData.FacetCount == 0)
|
||||
{
|
||||
return BentleyStatus.Error;
|
||||
}
|
||||
PolyfaceHeader header = PolyfaceHeader.New();
|
||||
header.CopyFrom(meshData);
|
||||
header.TwoSided = true;
|
||||
header.Transform(ref currentTransform, false);
|
||||
outputPolyface.Add(header);
|
||||
|
||||
return BentleyStatus.Success;
|
||||
}
|
||||
|
||||
public void Process(Element element)
|
||||
{
|
||||
ElementGraphicsOutput.Process(element, this);
|
||||
}
|
||||
|
||||
public override void AnnounceTransform(DTransform3d transform)
|
||||
{
|
||||
currentTransform = transform != null ? transform : DTransform3d.Identity;
|
||||
|
||||
}
|
||||
|
||||
public override void AnnounceIdentityTransform()
|
||||
{
|
||||
currentTransform = DTransform3d.Identity;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user