How to Analyse spiral edge

Hi everyone, (req. special  attn: Mr. Kirill Gavrilov )

     I have 10 edges (Spiral edge, 3d curve, 3d line, circle, etc),(attached) in that, how can I identify only the spiral edge, and I need to find the Pitch, and center axis of the spiral edge.

Thank you for the support and advice.

 

Best Regards,

VINOTH KUMAR THANGAVEL, D.E.C.E, B.E, M.S (2019).

Attachments: 
Guido van Hilst not specified's picture

Hi Vinoth,

You can loop over the edges and examine the type of curve. Once you have found the spiral edge ou can get the static properties.

I can make a simple example if you have the geometry source? (step / brep)

Best regards, Guido

VINOTHKUMAR THANGAVEL's picture

Dear Sir,

Thank you for the support. I've attached the small *.step file with helical curves for your kind reference. I've tried to find the curve types using the following snippet, but I get "GeomAbs_BSplineCurve"  as result for some of semi-circles, and 3d lines. That's why I don't know how to approach this issue.

My aim is to,

1. Filter the helical curves from the TopoDS_Solid (STEP file solid).

2. Get the pitch values.

Code Snippet:

for (wirexp.Init(Solid1, TopAbs_WIRE); wirexp.More(); wirexp.Next())

{

TopoDS_Wire Awire = TopoDS::Wire(wirexp.Current());

for (edgexp.Init(Awire, TopAbs_EDGE); edgexp.More(); edgexp.Next())

{

TopoDS_Edge Aedge = TopoDS::Edge(edgexp.Current());

BRepAdaptor_Curve theCrv(Aedge); 

GeomAbs_CurveType theTyp = theCrv.GetType();

if (theTyp == GeomAbs_BSplineCurve && !theCrv.IsClosed())

{

}

}

}

Thanks again

Guido van Hilst not specified's picture

Hi Vinoth, I have been playing around a bit.

You can see an example here: SpiralShape

I come with a pitch of 1.25 and a outer radius of 2.5. (see Log)

The code is in C# but I hope it will point you in the right direction.

The Axis is also shown. you can get the axis with a call of Position() from the  Geom_CylindricalSurface

Hope it helps,

Guido

VINOTHKUMAR THANGAVEL's picture

Dear Guido,

     Thank you for the great and prompt support. I'll study your code.

Best Regards,

VINOTH KUMAR THANGAVEL.

Guido van Hilst not specified's picture

Your welcome..

You can also try to first split the faces by type and then analyze them? 

See: SplitFacesByType

BR, Guido

VINOTHKUMAR THANGAVEL's picture

Dear Guido,

            I'll try as per your advice, and I'll post my c++ results in this thread. 

Thank you for the continuous support.