1、获取多段线节点坐标
获取多段线节点坐标主要是通过AcadLWPolyline对象的Coordinates属性获取。添加一个按钮,设置其Name和Text属性都为“获取多段线节点坐标”,同时添加一个RichTextBox控件,设置其name为“ResultInfo”。为“获取多段线节点坐标”按钮的Click事件添加如下代码:
private void 获取多段线节点坐标_Click(object sender, EventArgs e)
{
handle01:
Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption);
object returnObj, pickPoint;
string pickPrompt = "选取多段线!";
AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt);
AcadObject returnCADObj = (AcadObject)returnObj;
if (returnCADObj.ObjectName == "AcDbPolyline")
{
AcadLWPolyline returnPolyLine = (AcadLWPolyline)returnCADObj;
double[] polyLinePoint;
polyLinePoint = (Double[])returnPolyLine.Coordinates;
int i, pointCount = polyLinePoint.Length / 2;
string showInfo="";
for (i = 0; i < polyLinePoint.Length-1; i = i + 2)
{
showInfo += polyLinePoint[i].ToString() + "," + polyLinePoint[i+1].ToString() + "/n";
}
showInfo += "标高为:" + returnPolyLine.Elevation.ToString();
ResultInfo.Text = showInfo;
}
else
{
MessageBox.Show("选择的不是多段线!请重新选择!");
goto handle01;
}
Microsoft.VisualBasic.Interaction.AppActivate(this.Text);
}
其中,polyLinePoin为获取到的坐标点数组,polyLinePoint.Length表示数组的长度。由于Polyline中所有节点都在一个平面上,AcadLWPolyline的Coordinates属性中只是包含节点的两个坐标(X坐标和Y坐标),Z坐标通过Elevation属性来获得,所以节点个数pointCount = polyLinePoint.Length/2。
运行程序,其显示结果如下图所示:
2、其他常用属性和方法
和直线对象一样,若需要删除该直线对象,通过对象的Delete()方法即可完成。其常用的属性和方法如下表所示:
属性 |
说明 |
方法 |
说明 |
Area |
多段线所包围范围的面积 |
Delete() |
删除多段线 |
Closed |
是否闭合 |
Explode() |
分解多段线 |
ConstantWidth |
全局宽度 |
get_Coordinate(Index) |
获取多段线中指定点的坐标 |
Coordinates |
节点坐标 |
GetBoundingBox(MinPoint,MaxPoint) |
获取多段线包围盒的最大坐标和最小坐标位置 |
Document |
所在的CAD文档 |
Highlight(bool) |
是否高亮显示 |
Layer |
所在图层 |
IntersectWith(IntersectObject,option) |
与其他图形对象相交操作 |
Length |
长度 |
Move(FromPoint,ToPoint) |
移动多段线 |
Normal |
多段线所在面的法线 |
set_Coordinate(Index,pVal) |
设置指定节点的坐标 |
Visible |
是否可见 |
Rotate(BasePoint,RotationAngle) |
根据基点击角度旋转多段线 |