IConstructPath Interface

Provides access to members that construct a path using other geometries and measures.

Members

Name Description
Method ConstructRigidStretch Constructs a scaled, rotated version of srcPath. The point at stretchStartIndex will end up at stretchEnd. The points at startAnchor and endAnchor will remain unchanged. Others will be scaled and rotate proportionately.

IConstructPath.ConstructRigidStretch Method

Constructs a scaled, rotated version of srcPath. The point at stretchStartIndex will end up at stretchEnd. The points at startAnchor and endAnchor will remain unchanged. Others will be scaled and rotate proportionately.

Public Sub ConstructRigidStretch ( _
    ByVal srcPath As IPath, _
    ByVal stretchStartIndex As Integer, _
    ByVal startAnchor As Integer, _
    ByVal endAnchor As Integer, _
    ByVal stretchEnd As IPoint _
)
public void ConstructRigidStretch (
    IPath srcPath,
    int stretchStartIndex,
    int startAnchor,
    int endAnchor,
    IPoint stretchEnd
);

Description

For an existing Path, the ConstructRigidStretch method can be used to rotate and scale the shape of a Path, or just a section of the Path, to a certain point. This method is ideal for use in interactive rubber-sheeting operations. ArcMap, for example, makes use of this method in the �Stretch geometry proportionally when moving a vertex� option.

Remarks

Parameters description:

srcPath: Input IPath object. The path to be stretched.stretchStartIndex: Input Long that represents the index of the origin point on the path to be stretched.startAnchor: Input Long that represents the start anchor. Typically 0 to represent the first point on the path.endAnchor: Input Long that represents the end anchor. Typically pointcount-1 to represent the last point on the path.stretchEnd: Input IPoint object. The destination point where the strecthStartIndex point will be moved.

public void ConstructRigidStretch_Example()

{

    //Create the source path

    IPath sourcePath = new PathClass();

    IPointCollection pointCollection = sourcePath as IPointCollection;

    IPoint[] points = new IPoint[5];

    for (int i = 0; i < 5; i++)

    {

        points[i] = new PointClass();

    }

    points[0].PutCoords(0, 0);

    points[1].PutCoords(10, 5);

    points[2].PutCoords(20, 20);

    points[3].PutCoords(30, 35);

    points[4].PutCoords(40, 40);

    //helper class to solve C-Style Array usage in COM classes  IGeometryBridge geometryBride = new GeometryEnvironmentClass();  geometryBride.AddPoints(pointCollection as IPointCollection4, ref points);    //Strecth the whole path by specifying 0 and the last point index

    //as the start and end anchors

    //The stretch start index is 1, which means that the path will be

    //stretched by moving the second point of the path to the stretched point location

    int originOfStretch = 1;

    int startAnchor = 0;

    int endAnchor = pointCollection.PointCount - 1;

    //The stretchEnd point is the destination point where the point corresponding to

    //originOfStretch index will end up

    IPoint stretchEnd = new PointClass();

    stretchEnd.PutCoords(10, 30);

    //Create a new stretched path

    IConstructPath constructionPath = new PathClass();

    constructionPath.ConstructRigidStretch(sourcePath, originOfStretch, startAnchor, endAnchor, stretchEnd);

}
'This example demonstrates how to use the ConstructRigidStretch method

    Sub ConstructRigidStretch_Example()

        Dim pSrcPath As IPath, pPointColl As IPointCollection

        Dim pPoints(4) As IPoint, i As Long

        Dim pConstPath As IConstructPath, lOriginOfStretch As Long

        Dim lStartAnchor As Long, lEndAnchor As Long

        Dim pStretchEnd As IPoint

        'Create the source path

        pSrcPath = New Path

        pPointColl = pSrcPath

        For i = 0 To 4

            pPoints(i) = New Point

        Next

        pPoints(0).PutCoords(0, 0)

        pPoints(1).PutCoords(10, 5)

        pPoints(2).PutCoords(20, 20)

        pPoints(3).PutCoords(30, 35)

        pPoints(4).PutCoords(40, 40)

        pPointColl.AddPoints(5, pPoints(0))

        'Create a new stretched path

        pConstPath = New Path

        'Strecth the whole path by specifying 0 and the last point index

        'as the start and end anchors

        'The stretch start index is 1, which means that the path will be

        'stretched by moving the second point of the path to the stretched point location

        lOriginOfStretch = 1 'Origin of the stretch

        lStartAnchor = 0

        lEndAnchor = pPointColl.PointCount - 1

        pStretchEnd = New Point

        'The pStretchEnd point is the destination point where the point corresponding to

        'lOriginOfStrectch index will end up

        pStretchEnd.PutCoords(10, 30)

        pConstPath.ConstructRigidStretch(pSrcPath, lOriginOfStretch, lStartAnchor, lEndAnchor, pStretchEnd)

    End Sub

Classes that implement IConstructPath

Classes Description
Path A sequence of connected segments.
Ring An area bounded by one, closed sequence of connected segments; optionally has measure, height and ID attributes at each vertex.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.