IBoundary Interface
- CoverEdge
- GetCoverEdgeFlag
- GetEdgeCount
- GetEdgePosition
- GetEdge
The IBoundary interface manages edges of the 3d surface. We call edge the geometrical edge of the surface at an end of
the axial base of a
Generic 3D Object with closed cross-section loop or geometrical edge of a Surface Of Revolution
with open Profile Curve strip. The software creates flat surface patches
orthogonal to z axis to cover them, when an appropriate flag is set. This makes the
object to appear solid. (See also Patch Strips and Surfaces ).
Call GetEdgeCount
to find out whether the object has edges.
3D Debugger manages edges with Cover Edge check boxes on the General Page of
the Options dialogue (Current Object > Options menu command ).
See also MiniCAD Sample,
Interface List
HRESULT CoverEdge(int nEdge, bool bCover)
Parameters
nEdge - [in] Index of an Edge. Can
be only 0 or 1.
bCover - [in] if true the object will have a flat patch
covering correspondent end.
Returns
- S_OK in case of
success.
DI_E_INVALIDGEOMETRY if the object does not have edges.
DISP_E_BADINDEX if index is neither 0 nor 1.
Remarks
- The methods turns on or off flat vertical patches
covering correspondent frond or back side of the surface . Note that
the method does not update the surface automatically.
UpdateSurface() method
of the control or Update method if IModel has to be called to display the surface correctly.
HRESULT GetCoverEdgeFlag(int nEdge, bool* pbCover)
Parameters
nEdge - [in] Index of an Edge. Can
be only 0 or 1
pbCover - [out] pointer to
a Boolean variable which will be set to true if the end is currently covered.
Return Values
- S_OK in case of
success
DI_E_INVALIDGEOMETRY if the object does not have edges.
DISP_E_BADINDEX if nEdge is neither 0 nor 1.
HRESULT GetEdgeCount(int* pnCount)
Parameters
pnCount- [out] pointer to variable
which will receive number of edges in the object. In this release it is always
either 0 or 2.
Return Values
- S_OK in case of success
Remarks
- In this product there is always either none or two edges. For generic 3D
entities we call edge only closed cross-section segment loop at the first or
the last axial knots. Entities with non closed cross-entityal segment strips
in this interpretation do not have edges, so this method will set storage of
pnCount to 0. In case of Surface of Revolution this number will be 0
if the generating 2D strip is closed and 2 otherwise.
-
HRESULT GetEdgePosition(int nEdge, double* pdCrossPosn)
Parameters
nEdge - [in] Index of an Edge. Can
be only 0 or 1
pdCrossPosn
- [out] pointer to
a double variable which will be set to the first or the last knot position in case of
generic 3D entities or to the first coordinate of correspondent end of Profile
Curve.
Return Values
- S_OK in case of success.
DI_E_INVALIDGEOMETRY if the object does not have edges.
DISP_E_BADINDEX if nEdge is neither 0 nor 1.
HRESULT GetEdge(int nEdge, IStrip **ppIStrip)
Note: this method is provided for future development. In this product
the method will return E_NOTIMPL error code.
Parameters
nEdge - [in] Index of an Edge. Can
be only 0 for the edge at the first axial knot or 1 for the edge at the last
axial knot.
ppIStrip- [out] pointer to
variable which will receive pointer of IStrip interface representing corss-entityal
2D strip of the edge.
Return Values
- S_OK in case of success
DI_E_INVALIDGEOMETRY if the object does not have edges.
DISP_E_BADINDEX if nEdge not 0 nor 1. >
Remarks
- No implementation in this release.
|