About working with IExtrude
This topic shows how to use the IExtrude interface and associated methods. The following code example shows how to use IExtrude:
[C#]
private void IExtrude_Example()
{
//Create a geometry environment object.
IExtrude extrude = new GeometryEnvironmentClass();
[VB.NET]
Sub IExtrude_Example()
Dim pExtrude As IExtrude, pOutGeometry As IGeometry
Dim pBaseGeometry As IGeometry, pExtrusionLine As ILine
Dim pExtrusionVector As IVector3D
'Create a geometry environment object.
pExtrude = New GeometryEnvironment
Calling the Extrude method
Do the following steps to call the Extrude method:
- Create a base geometry.
- Given an offset distance, call Extrude.
See the following code example:
//************************************
//** Extrude
//************************************
//Point example.
IGeometry baseGeometry = CreatePoint()as IGeometry;
IGeometry outGeometry = extrude.Extrude(100, baseGeometry);
System.Windows.Forms.MessageBox.Show("Extrude \n Output Geometry Type : " +
outGeometry.GeometryType);
//Polygon example.
baseGeometry = CreatePolygon()as IGeometry;
outGeometry = extrude.Extrude(100, baseGeometry);
System.Windows.Forms.MessageBox.Show("Extrude \n Output Geometry Type : " +
outGeometry.GeometryType);
[VB.NET]
'************************************
'** Extrude
'************************************
Debug.Print("********* Extrude *********")
'Point example.
pBaseGeometry = CreatePoint
pOutGeometry = pExtrude.Extrude(100, pBaseGeometry)
Debug.Print("Output Geometry Type : " & pOutGeometry.GeometryType)
'Polygon example.
pBaseGeometry = CreatePolygon
pOutGeometry = pExtrude.Extrude(100, pBaseGeometry)
Debug.Print("Output Geometry Type : " & pOutGeometry.GeometryType)
Calling the ExtrudeAbsolute method
Do the following steps to call the ExtrudeAbsolute method:
- Create a base geometry.
- Given a uniform input Z, call ExtrudeAbsolute.
See the following code example:
//************************************
//** ExtrudeAbsolute
//************************************
//Point example.
baseGeometry = CreatePoint()as IGeometry;
outGeometry = extrude.ExtrudeAbsolute(100, baseGeometry);
System.Windows.Forms.MessageBox.Show("ExtrudeAbsolute \n Output Geometry Type : " +
outGeometry.GeometryType);
//Polygon example.
baseGeometry = CreatePolygon()as IGeometry;
outGeometry = extrude.ExtrudeAbsolute(100, baseGeometry);
System.Windows.Forms.MessageBox.Show("ExtrudeAbsolute \n Output Geometry Type : " +
outGeometry.GeometryType);
[VB.NET]
'************************************
'** ExtrudeAbsolute
'************************************
Debug.Print("********* ExtrudeAbsolute *********")
'Point example.
pBaseGeometry = CreatePoint
pOutGeometry = pExtrude.ExtrudeAbsolute(100, pBaseGeometry)
Debug.Print("Output Geometry Type : " & pOutGeometry.GeometryType)
'Polygon example.
pBaseGeometry = CreatePolygon
pOutGeometry = pExtrude.ExtrudeAbsolute(100, pBaseGeometry)
Debug.Print("Output Geometry Type : " & pOutGeometry.GeometryType)
Calling the ExtrudeAlongLine method
Do the following steps to call the ExtrudeAlongLine method:
- Create a line as an axis.
- Create a base geometry.
- Call ExtrudeAlongLine.
See the following code example:
//************************************
//** ExtrudeAlongLine
//************************************
ILine extrusionLine = CreateExtrusionLine();
//Point example.
baseGeometry = CreatePoint()as IGeometry;
outGeometry = extrude.ExtrudeAlongLine(extrusionLine, baseGeometry);
System.Windows.Forms.MessageBox.Show("ExtrudeAlongLine \n Output Geometry Type : " +
outGeometry.GeometryType);
//Polygon example.
baseGeometry = CreatePolygon()as IGeometry;
outGeometry = extrude.ExtrudeAlongLine(extrusionLine, baseGeometry);
System.Windows.Forms.MessageBox.Show("ExtrudeAlongLine \n Output Geometry Type : " +
outGeometry.GeometryType);
[VB.NET]
'************************************
'** ExtrudeAlongLine
'************************************
Debug.Print("********* ExtrudeAlongLine *********")
pExtrusionLine = CreateExtrusionLine
'Point example.
pBaseGeometry = CreatePoint
pOutGeometry = pExtrude.ExtrudeAlongLine(pExtrusionLine, pBaseGeometry)
Debug.Print("Output Geometry Type : " & pOutGeometry.GeometryType)
'Polygon example.
pBaseGeometry = CreatePolygon
pOutGeometry = pExtrude.ExtrudeAlongLine(pExtrusionLine, pBaseGeometry)
Debug.Print("Output Geometry Type : " & pOutGeometry.GeometryType)
Calling the ExtrudeFromTo method
Do the following steps to call the ExtrudeFromTo method:
- Create a base geometry.
- Given a from Z and a to Z, call ExtrudeFromTo on the geometry.
See the following code example:
//************************************
//** ExtrudeFromTo
//************************************
//Point example.
baseGeometry = CreatePoint()as IGeometry;
outGeometry = extrude.ExtrudeFromTo(0, 100, baseGeometry);
System.Windows.Forms.MessageBox.Show("ExtrudeFromTo \n Output Geometry Type : " +
outGeometry.GeometryType);
//Polygon example.
baseGeometry = CreatePolygon()as IGeometry;
outGeometry = extrude.ExtrudeFromTo(0, 100, baseGeometry);
System.Windows.Forms.MessageBox.Show("ExtrudeFromTo \n Output Geometry Type : " +
outGeometry.GeometryType);
[VB.NET]
'************************************
'** ExtrudeFromTo
'************************************
Debug.Print("********* ExtrudeFromTo *********")
'Point example.
pBaseGeometry = CreatePoint
pOutGeometry = pExtrude.ExtrudeFromTo(0, 100, pBaseGeometry)
Debug.Print("Output Geometry Type : " & pOutGeometry.GeometryType)
'Polygon example.
pBaseGeometry = CreatePolygon
pOutGeometry = pExtrude.ExtrudeFromTo(0, 100, pBaseGeometry)
Debug.Print("Output Geometry Type : " & pOutGeometry.GeometryType)
Calling the ExtrudeRelative method
Do the following steps to call the ExtrudeRelative method:
- Define a three-dimension (3D) vector.
- Create a base geometry.
- Call ExtrudeRelative to extrude the base geometry along the 3D vector.
See the following code example:
//************************************
//** ExtrudeRelative
//************************************
//Point example.
IVector3D extrusionVector = CreateExtrusionVector();
baseGeometry = CreatePoint()as IGeometry;
outGeometry = extrude.ExtrudeRelative(extrusionVector, baseGeometry);
System.Windows.Forms.MessageBox.Show("ExtrudeRelative \n Output Geometry Type : " +
outGeometry.GeometryType);
//Polygon example.
baseGeometry = CreatePolygon()as IGeometry;
outGeometry = extrude.ExtrudeRelative(extrusionVector, baseGeometry);
System.Windows.Forms.MessageBox.Show("ExtrudeRelative \n Output Geometry Type : " +
outGeometry.GeometryType);
}
[VB.NET]
'************************************
'** ExtrudeRelative
'************************************
Debug.Print("********* ExtrudeRelative *********")
'Point example.
pExtrusionVector = CreateExtrusionVector
pBaseGeometry = CreatePoint
pOutGeometry = pExtrude.ExtrudeRelative(pExtrusionVector, pBaseGeometry)
Debug.Print("Output Geometry Type : " & pOutGeometry.GeometryType)
'Polygon example.
pBaseGeometry = CreatePolygon
pOutGeometry = pExtrude.ExtrudeRelative(pExtrusionVector, pBaseGeometry)
Debug.Print("Output Geometry Type : " & pOutGeometry.GeometryType)
End Sub
The following code example contains some utility functions previously used:
[C#]
//Create the extrusion lie to use in ExtrudeAlongLine.
private ILine CreateExtrusionLine()
{
ILine line = new LineClass();
IPoint point0 = new PointClass();
point0.PutCoords(0, 0);
point0.Z = 0;
IPoint point1 = new PointClass();
point1.PutCoords(0, 0);
point1.Z = 100;
line.PutCoords(point0, point1);
return line;
}
//Create the 3D vector to be used in ExtrudeRelative.
private IVector3D CreateExtrusionVector()
{
IVector3D vector3D = new Vector3DClass();
vector3D.SetComponents(0, 0, 100);
return vector3D;
}
private IPoint CreatePoint()
{
//Point example.
IPoint point = new PointClass();
point.PutCoords(100, 100);
point.Z = 0;
return point;
}
//Create a polygon for the example.
private IPolygon CreatePolygon()
{
//Create 5 points.
IPoint[] points = new IPoint[5];
for (int i = 0; i < 5; i++)
{
points[i] = new PointClass();
}
points[0].PutCoords(0, 0);
points[0].Z = 0;
points[1].PutCoords(0, 100);
points[1].Z = 10;
points[2].PutCoords(100, 100);
points[2].Z = 20;
points[3].PutCoords(100, 0);
points[3].Z = 30;
points[4].PutCoords(0, 0);
points[4].Z = 0;
//Create a polygon object.
IPointCollection4 polygon = new PolygonClass();
IZAware zAware = polygon as IZAware;
//The polygon Zs aware.
zAware.ZAware = true;
//Add the points to the polygon because
//IPointCollection.AddPoints uses non C# C-Style Arrays; however, use IGeometryBridge.
IGeometryBridge geometryBridge = new GeometryEnvironmentClass();
geometryBridge.AddPoints(polygon, ref points);
ITopologicalOperator topologicalOperator = polygon as ITopologicalOperator;
topologicalOperator.Simplify();
return polygon as IPolygon;
}
[VB.NET]
'Create the extrusion lie to use in ExtrudeAlongLine.
Private Function CreateExtrusionLine() As ILine
Dim pLine As ILine
Dim pt0 As IPoint, pt1 As IPoint
pLine = New Line
pt0 = New Point
pt0.PutCoords(0, 0)
pt0.Z = 0
pt1 = New Point
pt1.PutCoords(0, 0)
pt1.Z = 100
pLine.PutCoords(pt0, pt1)
CreateExtrusionLine = pLine
End Function
'Create the 3D vector to be used in ExtrudeRelative.
Private Function CreateExtrusionVector() As IVector3D
Dim pVector3D As IVector3D
pVector3D = New Vector3D
pVector3D.SetComponents(0, 0, 100)
CreateExtrusionVector = pVector3D
End Function
Private Function CreatePoint() As IPoint
'Point example.
Dim pPoint As IPoint
pPoint = New Point
pPoint.PutCoords(100, 100)
pPoint.Z = 0
CreatePoint = pPoint
End Function
'Create a polygon for the example.
Private Function CreatePolygon() As IPolygon
Dim pPoint1(4) As IPoint, pPolygon As IPointCollection
Dim pZaware As IZAware, pTopoOp As ITopologicalOperator
Dim i As Long
'Create 5 points.
For i = 0 To 4
pPoint1(i) = New Point
Next
pPoint1(0) = New Point
pPoint1(0).PutCoords(0, 0)
pPoint1(0).Z = 0
pPoint1(1) = New Point
pPoint1(1).PutCoords(0, 100)
pPoint1(1).Z = 10
pPoint1(2) = New Point
pPoint1(2).PutCoords(100, 100)
pPoint1(2).Z = 20
pPoint1(3) = New Point
pPoint1(3).PutCoords(100, 0)
pPoint1(3).Z = 30
pPoint1(3) = New Point
pPoint1(4).PutCoords(0, 0)
pPoint1(4).Z = 0
'Create a polygon object.
pPolygon = New Polygon
pZaware = pPolygon
'Set the polygon Zs aware.
pZaware.ZAware = True
'Add the points to the polygon.
pPolygon.AddPoints(5, pPoint1(0))
pTopoOp = pPolygon
pTopoOp.Simplify()
CreatePolygon = pPolygon
End Function
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
Development licensing | Deployment licensing |
---|---|
ArcGIS for Desktop Basic | ArcGIS for Desktop Basic |
ArcGIS for Desktop Standard | ArcGIS for Desktop Standard |
ArcGIS for Desktop Advanced | ArcGIS for Desktop Advanced |
Engine Developer Kit | Engine |