您的位置:首页 > 编程语言 > C#

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

2010-05-11 14:04 1156 查看
实例4 多段线对象

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)
根据基点击角度旋转多段线
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: