This commit is contained in:
Nitload
2025-08-25 09:50:30 +08:00
parent bd0e31e922
commit 1359ff4ecc
1630 changed files with 738486 additions and 2399 deletions
+21 -20
View File
@@ -28,53 +28,54 @@
//
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
using StgSharp.Model.Step;
using StgSharp.Script;
using StgSharp.Script.Express;
using System.Collections.Generic;
using System.Linq;
namespace StgSharp.Model.Step
namespace StgSharp.Modeling.Items
{
public class StepEdgeLoop : StepLoop, IExpConvertableFrom<StepEdgeCurve>
public class StepEdgeLoop : StepLoop
{
public StepEdgeLoop( StepModel model, params StepOrientedEdge[] edgeList )
: this( model, ( IEnumerable<StepOrientedEdge> )edgeList ) { }
public StepEdgeLoop( StepModel model, IEnumerable<StepOrientedEdge> edgeList )
: base( model )
public StepEdgeLoop( string name, IEnumerable<StepOrientedEdge> edgeList )
: base( name )
{
EdgeList = new List<StepOrientedEdge>( edgeList );
}
public StepEdgeLoop( string name, params StepOrientedEdge[] edgeList )
: this( name, ( IEnumerable<StepOrientedEdge> )edgeList ) { }
public List<StepOrientedEdge> EdgeList { get; private set; }
public override StepItemType ItemType => StepItemType.EdgeLoop;
public void FromInstance( StepEdgeCurve entity )
internal static StepEdgeLoop CreateFromSyntaxList( StepBinder binder, ExpNode syntaxList )
{
base.FromInstance( entity );
}
internal static StepEdgeLoop FromSyntax( StepModel binder, ExpSyntaxNode syntaxList )
{
ExpNodePresidentEnumerator enumerator = new ExpNodePresidentEnumerator( syntaxList );
ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList );
enumerator.AssertEnumeratorCount( 2 );
ExpNodePresidentEnumerator edgeSyntaxList = enumerator[ 1 ].TupleToPresidentEnumerator();
object edgeSyntaxList = enumerator.Values[ 1 ].GetValueList();
StepEdgeLoop edgeLoop = new StepEdgeLoop(
binder, new StepOrientedEdge[edgeSyntaxList.Count] );
edgeLoop.Name = ( enumerator[ 0 ]as ExpStringNode )!.Value;
for( int i = 0; i < edgeSyntaxList.Count; i++ )
string.Empty, new StepOrientedEdge[edgeSyntaxList.Values.Count] );
edgeLoop.Name = enumerator.Values[ 0 ].GetStringValue();
for( int i = 0; i < edgeSyntaxList.Values.Count; i++ )
{
int j = i; // capture to avoid rebinding
edgeLoop.EdgeList[ j ] = binder[ edgeSyntaxList[ j ] ] as StepOrientedEdge;
binder.BindValue(
edgeSyntaxList.Values[ j ],
v => edgeLoop.EdgeList[ j ] = v.AsType<StepOrientedEdge>() );
}
return edgeLoop;
}
internal override IEnumerable<StepRepresentationItem> GetReferencedItems()
{
return EdgeList;
}
}
}