基于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。
运行程序,其显示结果如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/27/6bfa3ae05a364aaf8518f0fa5f75cfce.png)
2、其他常用属性和方法
和直线对象一样,若需要删除该直线对象,通过对象的Delete()方法即可完成。其常用的属性和方法如下表所示:
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。
运行程序,其显示结果如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/27/6bfa3ae05a364aaf8518f0fa5f75cfce.png)
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) | 根据基点击角度旋转多段线 |
相关文章推荐
- 基于Visual C#的AutoCAD开发——实例1 基本例子
- 基于Visual C#的AutoCAD开发——实例11 绘制基本图形
- 基于Visual C#的DirectX开发实例——绘制一个三角形
- 基于Visual C#的DirectX开发实例——绘制一个三角形
- 基于Visual C#的DirectX开发实例——输入事件
- 基于Visual C#的DirectX开发实例教程
- 基于Visual C#的DirectX开发实例——透视投影矩阵
- 基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象
- 基于Visual C#的AutoCAD 开发 及其在工程中的应用
- 基于Visual C#的DirectX开发实例 ——二维显示
- 《基于Visual C# 的DirectX开发实例》目录
- 《基于Visual C#的AutoCAD开发及其在工程中的应用》目录
- 基于Visual C#的DirectX开发实例——第一个DirectX程序
- 基于Visual C#的DirectX开发实例——视图矩阵
- 基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象
- Yii基于数组和对象的Model查询技巧实例详解
- 一个简单的模拟用户名是否存在的基于契约优先WSDL的webservice开发实例
- 基于MDI和CFormView框架的多视图开发实例
- AUTOCAD二次开发-----删除一个图层里面的所有对象
- SharePoint开发错误—列表自定义表单出现“未将对象引用设置到对象的实例”