基于Visual C#的AutoCAD开发——实例4 多段线对象

时间:2024-03-28 21:28:58

实例4 多段线对象

1、获取多段线节点坐标

获取多段线节点坐标主要是通过AcadLWPolyline对象的Coordinates属性获取。添加一个按钮,设置其NameText属性都为“获取多段线节点坐标”,同时添加一个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中所有节点都在一个平面上,AcadLWPolylineCoordinates属性中只是包含节点的两个坐标(X坐标和Y坐标),Z坐标通过Elevation属性来获得,所以节点个数pointCount = polyLinePoint.Length/2

运行程序,其显示结果如下图所示:

基于Visual C#的AutoCAD开发——实例4 多段线对象

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)

根据基点击角度旋转多段线