NX Open C++ Reference Guide
|
The Routing SBendCorner defines a S-Bend. More...
Public Member Functions | |
bool | GetSBendData (int *sbendType, NXOpen::Routing::ControlPoint **startRcp, NXOpen::Routing::ControlPoint **endRcp, NXOpen::Routing::SplineSegment **segment, double *radiusOrRatio) |
Returns the data for the S-Bend object. | |
double | GetSBendRadius () |
Gets the S-Bend radius of a S-Bend corner. | |
std::vector < NXOpen::Routing::Stock * > | GetSBendStocks () |
Returns an array of stocks for the S-Bend object. | |
NXOpen::Routing::SplineSegment * | GetSegment () |
Gets the segment being used to represent the S-Bend. | |
void | SetSBendData (int sbendType, NXOpen::Routing::ControlPoint *startRcp, NXOpen::Routing::ControlPoint *endRcp, NXOpen::Routing::SplineSegment *segment, double radiusOrRatio, bool useBendRatio) |
Set the data for the S-Bend object Created in NX4.0.0. |
The Routing SBendCorner defines a S-Bend.
There are 5 possible S-bend types.
The UI input is two work part line segment-ending RCPs, each of which implicitly provides a 3D point and vector. An S-bend heals the separation between the two segments with a C1 continuous spline segment.
To disambiguate among 5 S-bend types (see below), the user may need to further indicate whether the S-bend starts bending immediately at the end of one or both of the 2 input segments. Some arrangements of 2 segments do not require further user input to disambiguate among the possible S-bend types.
The direction vectors of the 2 input segments must either be perpendicular (types 1,2,3) or parallel (types 4,5).
The closest distance between the (infinite) lines containing the input segments must be less that twice the bend radius. If this condition does not hold, then 2 right angle bends could connect the 2 input segments, i.e., an S-bend is unnecessary.
Every S-bend has two bends, whose radii are always equal. Except for type 2 and 3, the bend angles are equal and in the range [ Pi/4, Pi/2 ].
S-bends never cause a cutback of an input segment, although type 1,2,4 S-bends may add a straight line extension to one of the segment ends before the bending starts. Type 1 S-bends may add a straight line extension to both segment ends.
INPUT
For computation solving purposes, the above input becomes a bend radius, height, width, and possibly a depth.
OUTPUT bend angle(s):
Bend angles are computed at the centers of the bend arcs
S-bends fall into two categories:
End tangents are perpendicular.
Three types are possible. In the 3D diagrams below:
The constructor line, AB, is the perpendicular distance between the lines that the segments define.
The A-B, A-P1, B-P2 vectors are mutually perpendicular.
/ / seg1 P1 / / / / / / / : A / : | : | , | , \<---- bends meet (no straight segment) | : | : | `-, | ``-,_ +------------------`-*------------ B P2 seg2
Type 2: middle straight line portion
/ / seg1 P1 / / / / / / / : A / : | : | \ | \ \<---- straight segment | \ | \ \<----- bend ends | `-, | ``-,_ +------------------`-*------------ B P2 seg2
Similar to Type 1:
The bend from segment 2 lies in the plane A,B,P2.
The bend from segment 1 is always 90 degrees, and thus terminates somewhere in the plane A,B,P2.
The bend from segment 1 always starts on an extension of segment 1 that is a distance R from A.
Unlike Type 1:
Segment 2's bend always starts at P2, i.e., segment 2 never has an extension.
Type 3: middle straight line portion. user chooses between Type 2-3.
/ / seg1 P1 / / ' / ' / : \<---- segment 1's bend ends / | / | A / | | | <--- straight segment | | | | | | | | | \ <---- segment 2's bend ends | `-,_ +----------------`-*------------ B P2 seg2
The bend radius isn't big enough to span the height so a middle straight line segment is necessary.
Neither segment can have an extension, i.e., the bends start at P1 and P2. Unlike in Type 2, segment 2's bend does not lie in the plane A,B,P2, i.e., both bends immediately start bending toward each other.
Type 4: no middle straight line portion
seg1 P1 ------------*-. `. : \<--- where bends meet `, `-*---------*-------- A E2 P2 seg2
The height, H, is length (A-P1), where A is the projection of P1 onto the line that seg2 defines.
Because both bend angles are the same, the bends meet at half the height H/2.
seg1 P1 ------------*-. `. \ \ \<--- middle straight line segment \ `. `-*------------ A P2 seg2
Support Information:
===============================
o An extension as described above is the distance leading up to the bend arc.
Use the Routing::SBendCornerCollection to obtain an instance.
Created in NX4.0.0.
bool NXOpen::Routing::SBendCorner::GetSBendData | ( | int * | sbendType, |
NXOpen::Routing::ControlPoint ** | startRcp, | ||
NXOpen::Routing::ControlPoint ** | endRcp, | ||
NXOpen::Routing::SplineSegment ** | segment, | ||
double * | radiusOrRatio | ||
) |
Returns the data for the S-Bend object.
sbendType | S-Bend type |
startRcp | S-Bend start Control point |
endRcp | S-Bend end Control point |
segment | S-Bend segment |
radiusOrRatio | Bend radius or bend_ratio. |
double NXOpen::Routing::SBendCorner::GetSBendRadius | ( | ) |
Gets the S-Bend radius of a S-Bend corner.
std::vector<NXOpen::Routing::Stock *> NXOpen::Routing::SBendCorner::GetSBendStocks | ( | ) |
Returns an array of stocks for the S-Bend object.
Gets the segment being used to represent the S-Bend.
void NXOpen::Routing::SBendCorner::SetSBendData | ( | int | sbendType, |
NXOpen::Routing::ControlPoint * | startRcp, | ||
NXOpen::Routing::ControlPoint * | endRcp, | ||
NXOpen::Routing::SplineSegment * | segment, | ||
double | radiusOrRatio, | ||
bool | useBendRatio | ||
) |
Set the data for the S-Bend object
Created in NX4.0.0.
License requirements : routing_combined ("Routing Combined") OR routing_electrical ("Routing Electrical") OR routing_mechanical ("Routing Mechanical")
sbendType | S-Bend type |
startRcp | The start Control point for the S-Bend. |
endRcp | The end Control point for the S-Bend. |
segment | S-Bend segment |
radiusOrRatio | S-Bend radius or bend_ratio. |
useBendRatio | TRUE: if bend ratio is used; FALSE: otherwise. |