基于visual c的autocad开发及其在工程中应用_第1页
基于visual c的autocad开发及其在工程中应用_第2页
基于visual c的autocad开发及其在工程中应用_第3页
基于visual c的autocad开发及其在工程中应用_第4页
基于visual c的autocad开发及其在工程中应用_第5页
已阅读5页,还剩211页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、前言AutoCAD 是由Autodesk 公司于二十世纪 80 年代为微机上应用 CAD 技术而开发的绘图程序包,经过不断的完善,以其优异的绘图功能、易学易用等特点,现已成为国际上广为流行的绘图工具。特别是其通用性强、具有多种工业标准和开放的体系结构,使得它在土木、水利、机械、船舶等领域得到了极的应用。为充分利用 AutoCAD 进行二次开发,Autodesk 公司为用户提供了四种对 AutoCAD 进行二次开发的方式,即 AutoLisp、ADS、Object ARX 和 ActiveX Automation。其中,ActiveX Automation是微软公司推出的一个技术标准,其技术是一

2、个Windows 应用程序通过对象和操作另一个 Windows 应用程序。由于 ActiveX 技术是一种完全面向对象的技术,所以许多面向对象化编程的语言和应用程序,可以通过 ActiveX 与 AutoCAD 进行通信,实现应用程序之间相互互调用。从 AutoCAD R14 版开始,AutoCAD 引入了 ActiveX Automation 技术,本书中将Visual C#语言基于 ActiveX 技术对 AutoCAD 进行二次开发。、相采用C#(C Sharpe)是由微软公司所开发的一种面向对象,且运行于.NET Framework 之上的高级程序设计语言。它具有简单、功能强大、类型安

3、全等特点,并综合了 VB 简单的可视化操作和 C+ 的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET 开发的首选语言。本书主要基于 Visual C#对 AutoCAD 进行二次开发,另外通过结合数学理论知识、程序设计和 CAD 开发技术等一些常见工程问题的解决方案。本书分基础篇和应用篇两部分,其中基础篇主要一些使用ActiveX 技术开发 AutoCAD 的常见例子,应用篇主要土木水利工程中较为常见的问题提出一些数学理论分析并结合程序设计来解决这类问题。全书共二十六个实例,所选例题力求实用、精简,深入浅出,易学易懂。本书中讲解的实例主要以

4、 AutoCAD 2007 为基础,使用 Visual Studio 2005 进行程序设计、编写以及调试运行。希望通过本书,能够帮助读者提高善于发现问题与分析问题的能力,并能使用程序设计来解决这些问题。本书主要面向土木、水利等专业以及 AutoCAD 开发者,也可作为高校计算机辅助设计类课程的。由于作者水平有限,疏漏和错误之处在所难免,恳请读者批评指正。作者2010 年 4 月目录基础篇1实例 1 基本例子11、新建项目12、添加. 13、全局变量定义14、打开 CAD 文件25、定义启动 CAD 对象的函数2实例 2 获取 CAD 中图形对象51、获取 CAD 图形对象52、CAD 中常用

5、图形对象名称53、获取鼠标点击位置5实例 3 直线对象71、获取直线的坐标72、其他常用属性和. 7实例 4 多对象91、获取多节点坐标92、其他常用属性和. 10实例 5实例 6实例 7实例 8实例 9获取三节点坐标11获取点的坐标13获取块的获取文字点14点及内容15点坐标及拟合点坐标17点坐标17获取样条曲线的1、获取样条曲线的2、获取样条曲线的拟合点坐标18实例 10 选择集201、在屏幕上选择对象202、根据条件选择对象203、根据范围选择对象25实例 11 绘制基本图形271、绘制直线272、添加文字273、绘制三. 28实例 12 编辑对象301、对象302、删除对象303、旋转

6、对象304、缩放对象325、移动对象34实例 13 图层对象371、添加新图层372、删除图层383、设置图层锁定、冻结、可见性及线型38实例 14 其他391、向 CAD 发送命令392、创建一个新的 CAD 文件393、保存 CAD 文件404、文件另存为405、关闭文档426、CAD43应用篇44实例 15 获取坐标441、新建项目442、获取直线坐标463、获取多4、获取三节点坐标48节点坐标505、获取样条曲线点坐标526、获取样条曲线拟合点坐标547、获取点的坐标568、获取块的9、获得文字点57点及内容5810、获取各种线节点坐标6011、表格显示数据6212、输出为文件6613

7、、输出 Excel 表格67应用71实例 161、线段的方向. 712、更改面片方向74实例 17 根据等高线绘制剖面图801、获取两条多的交点802、根据等高线绘制剖面图81实例 18 边界搜索921、凸边界搜索922、含凹边界的凸边界搜索953、边界内点的个数99三角网105实例 191、定义绘制面片的函数1052、定义一个集和绘制于一体的函数 GetBaseTrian()1053、划分三角网1064、错误处理107实例 20 Delaunay 三角剖分1101、获取点集坐标数组1102、获取点集边界1113、根据边界及内部点生成三角网1144、绘制三角网和边121实例 21 开挖量计算1

8、241、开挖方量计算原理1242、填方量计算原理1263、既有挖方、又有填方的计算原理1274、程序设计步骤及实现132实例 22 根据 TIN 生成等高线1421、定义数据结构1422、选择三角形面片对象1433、参数设置并绘制等高线143实例 23 根据高度图生成 TIN1471、新建项目1482、添加相关控件1493、全局变量定义1504、打开图片文件1505、生成方阵网格点1506、生成 TIN1517、保存 CAD 文件152实例 24 根据剖面线及路径建立模型1561、选取剖面线1562、选取路径对象1573、编辑面域对象158划分大坝模型166数据166实例 25 根据浇注1、浇

9、筑2、大坝模型的搜索寻找1703、划分模型171实例 26 智能赋予高. 1751、提取高程注记1752、连接高程注记1793、赋予高. 1844、搜曲线205基于 Visual C#的 AutoCAD 开发及其在工程中的应用基础篇实例 1 基本例子1、新建项目启动 Visual Studio 2005,新建一个项目,命名为“CAD 开发”,如下图所示:2、添加添加 AutoCAD 的图所示:AutoCAD 2007 Type Library 和 AutoCAD/ObjectDBX Common 17.0 Type Library,如下3、全局变量定义1基于 Visual C#的 AutoCA

10、D 开发及其在工程中的应用在全局变量中定义如下: Autodesk.AutoCAD.Interop.AcadApplication AcadApp; Autodesk.AutoCAD.Interop.AcadDocument AcadDoc;其中,AcadApplication 是 CAD 对象接口,AcadDocument 是 CAD 文件。4、打开 CAD 文件添加一个按钮,为按钮添加如下代码,实现打开一个 CAD 文件的功能:private void button1_Click(objecder, EventArgs e)OpenFileDialog pOpenDG = new Open

11、FileDialog(); pOpenDG.ShowDialog();string filePath = pOpenDG.FileName; AcadApp = new AcadApplication(); AcadApp.Application.Visible = true;AcadDoc = AcadApp.Documents.Open(filePath,null,null);程序运行结果如下图所示:如果没有语句“AcadApp.Application.Visible = true;”则无法显示 CAD界面,只能启动 CAD 在。通过“AcadApp = new AcadApplicati

12、on();”是创建一个新的 CAD 对象,但是并不是每次都需要创建 CAD 对象,如CAD 对象已经不需要再创建 CAD 对象。5、定义启动 CAD 对象的函数定义一个启动 CAD 对象的函数“启动 CAD()”,代码如下:private void 启动CAD()tryAcadApp = (AcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Application");2基于 Visual C#的 AutoCAD 开发及其在工程中的应用AcadDoc = AcadAp

13、p.ActiveDocument;catchOpenFileDialog pOpenDG = new OpenFileDialog();pOpenDG.Filter = "CAD文件(*.dwg)|*.dwg|CAD图形文件(*.dxf)|*.dxf" pOpenDG.Title = "打开CAD文件"pOpenDG.ShowDialog();string filePath = pOpenDG.FileName; if (filePath = "")MessageBox.Show("选择CAD文件无效!", &qu

14、ot;文件无效!"); Application.Exit();AcadApp = new AcadApplication();AcadDoc = AcadApp.Documents.Open(filePath, null, null);AcadApp.Application.Visible = true; Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption);其中“Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption);”是使得 CAD 对象在

15、最前面,要调用该函数还需要添加“Microsoft.VisualBasic”,如下图所示:这个函数在程序与 CAD 的交互中经常要用到。在前面的函数“启动 CAD()”中使用了 trycatch 语句用于试探 CAD 程序是否启动,如果启动则设置 AcadApp 对象为启动的 CAD 对象,且 CAD 文档为 CAD 程序的当前文档;若没有启动则创建一个新的 CAD 对象,并且打开新的 CAD 文档。可以在程序启动的代码中调用该函数,如下:private void Form1_Load(objecder, EventArgs e)3基于 Visual C#的 AutoCAD 开发及其在工程中的

16、应用启动CAD();4基于 Visual C#的 AutoCAD 开发及其在工程中的应用实例 2 获取 CAD 中图形对象1、获取 CAD 图形对象在 CAD 文件中有包含很多图形对象, 如点、线、面、体等等。获取 CAD 图形对象主要通过AcadDocument.Utility.GetEntity()代码如下:来获取。添加一个按钮,设置其 Name 和 Text 都为“获取对象名称”,其 Clickprivate void 获取对象名称_Click(objecder, EventArgs e)Microsoft.VisualBasic.Interaction.AppActivate(Acad

17、App.Caption); object returnObj,pickPoint;string pickPrompt = "选取物体对象!"AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt); AcadObject returnCADObj = (AcadObject)returnObj;MessageBox.Show("选取对象为:" + returnCADObj.ObjectName.ToString(); Microsoft.VisualBasic.Interact

18、ion.AppActivate(this.Text);其中,“Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption);”是将当前窗体设置为 CAD界面,returnObj 表示在 CAD 中获取的对象,pickPoint 表示在 CAD 中点击的坐标位置,pickPromp 表示要在 CAD的输出命令中要显示的文字(提示用户任何操作)。此外还需要定义一个 AcadObject 对象 returnCADObj,将前面获取的 returnObj 对象赋予它,然后通过 AcadObject 的属性和就可直接对该对象进行一些操作。运

19、行程序,在 AutoCAD 中选取一条三,其结果如下图所示:2、CAD 中常用图形对象名称CAD 中常用图形对象所对应的对象名称如下表所示:3、获取鼠标点击位置5序号名称对象名称(ObjectName)CAD 中对应令1直线AcDbLineLINE2多AcDbPolylinePLINE3二AcDb2dPolylinePLINE(样条曲线后)4样条曲线AcDbSplineSPLINE5三AcDb3dPolyline3DPOLY6圆AcDbCircleCIRCLE7圆弧AcDbArcARC8点AcDbPointPOINT9单行AcDbTextDTEXT10多行AcDbMTextMTEXT11面域A

20、cDbRegionREGION12图案填充AcDbHatchBHATCH13块对象AcDbBlockReferenceBLOCK14面片AcDbFace3DFACE基于 Visual C#的 AutoCAD 开发及其在工程中的应用同时获取在 CAD 中点击的坐标位置,首先定义一个数组用于保存点击的坐标位置,如下double pickPointArray;然后将点击返回的对象 pickPoint 强制转换成 Double 数据类型,如下:pickPointArray =(Double)pickPoint;然后用一个消息窗体来显示结果,如下:MessageBox.Show("点击位置:X

21、=" + pickPointArray0.ToString() + ",Y=" pickPointArray1.ToString() + ",Z=" + pickPointArray2.ToString();运行程序,其结果如下图所示:+至此,按钮“获取对象名称”的 Click中所有程序代码如下:private void 获取对象名称_Click(objecder, EventArgs e)Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption); object returnO

22、bj,pickPoint;string pickPrompt = "选取物体对象!" double pickPointArray;AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt); AcadObject returnCADObj = (AcadObject)returnObj;pickPointArray =(Double)pickPoint;MessageBox.Show("选取对象为:" + returnCADObj.ObjectName.ToString();Me

23、ssageBox.Show("点击位置:X=" + pickPointArray0.ToString() pickPointArray1.ToString() + ",Z=" + pickPointArray2.ToString(); Microsoft.VisualBasic.Interaction.AppActivate(this.Text);+",Y="+6基于 Visual C#的 AutoCAD 开发及其在工程中的应用实例 3 直线对象1、获取直线的坐标要获取直线的坐标首先必须获取到直线对象,然后通过该直线的属性来获得它的坐

24、标值。首先,添加一个按钮,设置其 Name 和 Text 属性都为“获取直线的坐标”,然后为其添加代码如下:private void 获取直线的坐标_Click(objechandle01:der, EventArgs e)Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption); object returnObj, pickPoint;string pickPrompt = "选取直线!"AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pic

25、kPrompt); AcadObject returnCADObj = (AcadObject)returnObj;if (returnCADObj.ObjectName = "AcDbLine")AcadLine double doublereturnLine = (AcadLine)returnCADObj; lineStartPoint=new Double2;line= new Double2;= (Double)returnLine.StartPoint;lineStartPointline=(Double)returnLine.;lineStartPoint0.

26、ToString() lineStartPoint1.ToString() lineStartPoint2.ToString()MessageBox.Show("直线的起点坐标为:"+ ","+ ","+ "n" + "直线的终点坐标为:" + line+ "," + line+ "," + line0.ToString()1.ToString()2.ToString();elseMessageBox.Show("选择的不是直线!请重新选择!&q

27、uot;); goto handle01;Microsoft.VisualBasic.Interaction.AppActivate(this.Text);其中,先用“returnCADObj.ObjectName = "AcDbLine"”来是否为直线,如果不是直线则返回至 handle01再选择。若为直线,则定义一个 AcadLine 直线对象,通过它的两个属性 StartPoint 和坐标和终点坐标。运行程序,其结果如下图所示:来获取直线的起点2、其他常用属性和7基于 Visual C#的 AutoCAD 开发及其在工程中的应用若需要删除该直线对象,通过直线对象的 D

28、elete()即可完成。同时,通过 Length 属性还可以获得直线的长度,通过 Angle 属性还可以获得直线的倾斜角度,通过 Move、Rotate 等操作。还可以对直线进行移动、选择等8基于 Visual C#的 AutoCAD 开发及其在工程中的应用实例 4 多对象1、获取多节点坐标获取多节点坐标主要是通过 AcadLWPolyline 对象的 Coordinates 属性获取。添加一个按钮,设置其 Name和 Text 属性都为“获取多节点坐标”,同时添加一个 RichTextBox 控件,设置其 name 为“ResultInfo”。为“获取多节点坐标”按钮的 Click添加如下代

29、码:private void 获取多handle01:节点坐标_Click(objecder, EventArgs e)Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption); object returnObj, pickPoint;string pickPrompt = "选取多!"AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt); AcadObject returnCADObj = (AcadObject)retur

30、nObj;if (returnCADObj.ObjectName = "AcDbPolyline")AcadLWPolyline returnPolyLine = (AcadLWPolyline)returnCADObj; double polyLinePoint;polyLinePoint = (Double)returnPolyLine.Coordinates;int i, string for (ipointCount = polyLinePoint.Length / 2; showInfo=""= 0; i < polyLinePoint.

31、Length-1; i = i + 2)showInfo += polyLinePointi.ToString() + "," + polyLinePointi+1.ToString() +"n"showInfo += "标高为:" + returnPolyLine.Elevation.ToString(); ResultInfo.Text = showInfo;elseMessageBox.Show("选择的不是多goto handle01;!请重新选择!");Microsoft.VisualBasic.Inte

32、raction.AppActivate(this.Text);其中,polyLinePoin 为获取到的坐标点数组,polyLinePoint.Length 表示数组的长度。由于 Polyline 中所有节点都在一个平面上,AcadLWPolyline 的 Coordinates 属性中只是包含节点的两个坐标(X 坐标和Y 坐标),Z 坐标通过 Elevation 属性来获得,所以节点个数 pointCount = polyLinePoint.Length/2。运行程序,其显示结果如下图所示:9基于 Visual C#的 AutoCAD 开发及其在工程中的应用2、其他常用属性和和直线对象一样,

33、若需要删除该直线对象,通过对象的 Delete()所示:即可完成。其常用的属性和如下表10属性说明说明Area多所包围范围的面积Delete()删除多d是否闭合Explode()分解多ConstantWidth全局宽度get_Coordinate(Index)获取多中指定点的坐标Coordinates节点坐标GetBoundingBox(MinPo int,MaxPoint)获取多包围盒的最大坐标和最小坐标位置Document所在的 CAD 文档Highlight(bool)是否显示Layer所在图层IntersectWith(Inters ectObject,option)与其他图形对象相交

34、操作Length长度Move(FromPoint,ToPoi nt)移动多Normal多所在面的法线set_Coordinate(Index,pVal)设置指定节点的坐标Visible是否可见Rotate(BasePoint,Rot ationAngle)根据基点击角度旋转多基于 Visual C#的 AutoCAD 开发及其在工程中的应用实例 5 获取三节点坐标获取三节点坐标是通过 Acad3DPolyline 的 Coordinates 属性来获取。添加一个按钮,设置其 Name和 Text 属性都为“获取三private void 获取三handle01:节点坐标”,然后为其 Click

35、节点坐标_Click(objec添加代码如下:der, EventArgs e)Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption); object returnObj, pickPoint;string pickPrompt = "选取三!"AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt); AcadObject returnCADObj = (AcadObject)returnObj;if (returnCADOb

36、j.ObjectName = "AcDb3dPolyline")Acad3DPolyline return3dPolyLine = (Acad3DPolyline)returnCADObj; double TDpolyLinePoint;TDpolyLinePoint int i;string showInfo for (i = 0; i <showInfo += (Double)return3dPolyLine.Coordinates;= ""TDpolyLinePoint.Length-2; i=i+3)TDpolyLinePointi.ToS

37、tring() + "," + TDpolyLinePointi+1.ToString()+ "," +TDpolyLinePointi + 2.ToString() + "n"ResultInfo.Text= showInfo;elseMessageBox.Show("选择的不是三goto handle01;!请重新选择!");Microsoft.VisualBasic.Interaction.AppActivate(this.Text);其中,return3dPolyLine.Coordinates 是获取到三

38、为节点个数)。运行程序,其结果如下如所示:的各个节点坐标,它是一个长度为3*n 的数组(n11基于 Visual C#的 AutoCAD 开发及其在工程中的应用12基于 Visual C#的 AutoCAD 开发及其在工程中的应用实例 6 获取点的坐标获取点的坐标是通过 AcadPoint 的 Coordinates 属性来获取。添加一个按钮,设置其 Name 和 Text 属性都为“获取点的坐标”,然后为其 Click添加代码如下:private void 获取点的坐标_Click(objechandle01:der, EventArgs e)Microsoft.VisualBasic.In

39、teraction.AppActivate(AcadApp.Caption); object returnObj, pickPoint;string pickPrompt = "选取点!"AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt); AcadObject returnCADObj = (AcadObject)returnObj;if (returnCADObj.ObjectName = "AcDbPoint")AcadPoint returnPointObj =

40、(AcadPoint)returnCADObj; double PointCoord;PointCoord = (Double)returnPointObj.Coordinates; string showInfo;showInfo = PointCoord0.ToString() + "," + PointCoord1.ToString()+ "," + PointCoord2.ToString(); ResultInfo.Text = showInfo;elseMessageBox.Show("选择的不是点!请重新选择!"); g

41、oto handle01;Microsoft.VisualBasic.Interaction.AppActivate(this.Text);运行程序,其结果如下图所示:13基于 Visual C#的 AutoCAD 开发及其在工程中的应用实例 7 获取块的点获取点的坐标是通过 AcadBlockReference 的 InsertionPoint 属性来获取。添加一个按钮,设置其 Name 和 Text属性都为“获取块的点”,然后为其 Click添加代码如下:private void 获取块的handle01:点_Click(objecder, EventArgs e)Microsoft.Vi

42、sualBasic.Interaction.AppActivate(AcadApp.Caption); object returnObj, pickPoint;string pickPrompt = "选取块!"AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt); AcadObject returnCADObj = (AcadObject)returnObj;if (returnCADObj.ObjectName = "AcDbBlockReference")AcadBl

43、ockReference returnBlock = (AcadBlockReference)returnCADObj; double blockPoint;blockPoint = (Double)returnBlock.InsertionPoint; string showInfo;showInfo = blockPoint0.ToString() + "," + blockPoint1.ToString()+ "," + blockPoint2.ToString(); ResultInfo.Text = showInfo;elseMessageBo

44、x.Show("选择的不是块!请重新选择!"); goto handle01;Microsoft.VisualBasic.Interaction.AppActivate(this.Text);运行程序,其结果如下图所示:14基于 Visual C#的 AutoCAD 开发及其在工程中的应用实例 8 获取文字点及内容获取文字点及内容是通过 AcadText 或 AcadMText 的 InsertionPoint 属性来获取点坐标、通过点及内容”,然后TextString 属性来获取文字内容。添加一个按钮,设置其 Name 和 Text 属性都为“获取文字为其 Click添加

45、代码如下:private void 获取文字handle01:点及内容_Click(objecder, EventArgs e)Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption); object returnObj, pickPoint;string pickPrompt = "选取文字!"AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt); AcadObject returnCADObj = (AcadObject)

46、returnObj;if (returnCADObj.ObjectName = "AcDbText")AcadText returnTextObj = (AcadText)returnCADObj; double textInsertionPoint;textInsertionPoint = (Double)returnTextObj.InsertionPoint; string showInfo;showInfo = textInsertionPoint0.ToString() + "," + textInsertionPoint1.ToString(

47、)+ "," + textInsertionPoint2.ToString();showInfo += "n文字内容为:" + returnTextObj.TextString.ToString(); ResultInfo.Text = showInfo;else if(returnCADObj.ObjectName = "AcDbMText")AcadMText returnMTextObj = (AcadMText)returnCADObj; double textInsertionPoint;textInsertionPoint

48、 = (Double)returnMTextObj.InsertionPoint; string showInfo;showInfo = textInsertionPoint0.ToString() + "," + textInsertionPoint1.ToString()+ "," + textInsertionPoint2.ToString();showInfo += "n文字内容为:" + returnMTextObj.TextString.ToString(); ResultInfo.Text = showInfo;else

49、MessageBox.Show("选择的不是文字!请重新选择!"); goto handle01;Microsoft.VisualBasic.Interaction.AppActivate(this.Text);运行程序,其结果如下图所示:15基于 Visual C#的 AutoCAD 开发及其在工程中的应用16基于 Visual C#的 AutoCAD 开发及其在工程中的应用实例 9 获取样条曲线的点坐标及拟合点坐标1、获取样条曲线的点坐标获取样条曲线的点坐标是通过 AcadSpline 的 ControlPoints 属性来获取样条曲线的点坐标。添加一个按钮,设置其 N

50、ame 和 Text 属性都为“获取样条曲线点坐标”,然后为其 Click添加代码如下:private void 获取样条曲线handle01:点坐标_Click(objecder, EventArgs e)Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption); object returnObj, pickPoint;string pickPrompt = "选取样条曲线!"AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPromp

51、t); AcadObject returnCADObj = (AcadObject)returnObj;if (returnCADObj.ObjectName = "AcDbSpline")AcadSpline returnSpline = (AcadSpline)returnCADObj; double splineControlPoint;splineControlPoint = (Double)returnSpline.ControlPoints; string showInfo=""int i;for (i = 0; i < splineC

52、ontrolPoint.Length - 2; i = i + 3)showInfo+= splineControlPointi.ToString() + "," + splineControlPointi1.ToString()+ "," + splineControlPointi + 2.ToString() +"n"ResultInfo.Text = showInfo;elseMessageBox.Show("选择的不是样条曲线!请重新选择!"); goto handle01;Microsoft.Visual

53、Basic.Interaction.AppActivate(this.Text);运行程序,其结果如下如所示:17基于 Visual C#的 AutoCAD 开发及其在工程中的应用2、获取样条曲线的拟合点坐标获取样条曲线的拟合点坐标是通过 AcadSpline 的 FitPoints 属性来获取样条曲线的拟合点坐标。添加一个按钮,设置其 Name 和 Text 属性都为“获取样条曲线拟合点坐标”,然后为其 Click添加代码如下:private void 获取样条曲线拟合点坐标_Click(objechandle01:der, EventArgs e)Microsoft.VisualBasic.Interaction.AppAc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论