autocad二次开发教程基础篇_第1页
autocad二次开发教程基础篇_第2页
autocad二次开发教程基础篇_第3页
autocad二次开发教程基础篇_第4页
autocad二次开发教程基础篇_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

AutoCad二次开发.netFrameWork平台C#语言开发基础篇讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861基础知识准备熟悉Autocad的操作了解C#语言,最少要会C语言什么是Autocad二次开发

让autocad软件更适应我们的工作,提高我们的工作效率。把重复单调的操作交给程序,把复杂的计算交给程序。讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861几种开发语言的比较Lisp:语言简单,易于上手,只要会使用CAD命令,和CAD本身的结合度较高,基本上就可以完成开发,不具备高级语言的特性,书写麻烦。VBA:语言简单,易于上手,和excel的宏基本类似.运行效率不高.上面两种语言对于大型程序都显得力不从心。ObjectARX:功能强大,效率高,对开发人员的要求高,需要掌握VC++。.Net:结合了vba简单易用的特点,同时又具备强大的功能。 .Net可以使用VB、C#、C++等多种语言来开发。讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861本套系列教程的计划初级篇:主要介绍CAD二次开发的基础知识.全面了解,基本清楚.进级篇:分知识点介绍,重点掌握.实例篇:以实例为主,完成系统开发.关于在线答疑讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861基础操作AutoCad开发准备及如何调用dll文件讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861开发环境本次开发环境我们选择最新版的Autocad2015和visualstudio2013进行演示2007-2009->Framework2.02010-2011->Framework3.52012-2014->Framework4.0开发语言C#讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861关于dll引用的问题目前的资料通常讲需要引用下面3个类AcDbMgd.dll.当使用图形文件中的对象时使用这个DLL文件。AcMgd.dll.当使用AutoCAD应用程序时使用这个DLL文件。AcCui.dll.当使用自定义文件时使用这个DLL文件。但是发现引用了这三个类仍然出错讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861autoCAD2013后有变化一个非常关键的dll文件被单独拿了出来AcCoreMgd.dll讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861环境测试在命令行中输出一段文字讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861编译出错警告 1 未能解析主引用“acdbmgd”,因为它是针对“.NETFramework,Version=v4.5”框架生成的。该框架版本高于当前目标框架“.NETFramework,Version=v4.0”。警告 2 未能解析主引用“acmgd”,因为它对程序集“Acdbmgd,Version=,Culture=neutral,PublicKeyToken=null”具有间接依赖关系,而该程序集是针对“.NETFramework,Version=v4.5”框架生成的。该框架版本高于当前目标框架“.NETFramework,Version=v4.0”。讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861编译出错警告 1 所生成项目的处理器架构“MSIL”与引用“acdbmgd”的处理器架构“AMD64”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构保持一致,或者为引用关联一个与您的项目的目标处理器架构相符的处理器架构。讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861未知命令讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861绘制基本图形讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861AutoCAD对象的层次结构讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861图形数据库-DataBase讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861添加图元的基本步骤1、创建图形对象2、添加对象到块表记录3、提交处理获取图形数据库的方法1、先获取当前文档,让后通过文档获取图形数据库

Documentdoc=Application.DocumentManager.MdiActiveDocument;

Databasedb=doc.Database;2、直接获取当前文档的图形数据库

Databasedb=HostApplicationServices.WorkingDatabase;Line对象的两个构造方法讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861绘制直线(Line类)构造函数publicLine();publicLine(Point3dpointer1,Point3dpointer2);属性publicdoubleAngle{get;}publicVector3dDelta{get;}publicoverridePoint3dEndPoint{get;set;}publicdoubleLength{get;}publicVector3dNormal{get;set;}publicoverridePoint3dStartPoint{get;set;}publicdoubleThickness{get;set;}讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861封装两个绘制直线的函数讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861绘制圆弧(Arc类)构造函数publicArc();publicArc(Point3dcenter,doubleradius,doublestartAngle,doubleendAngle);publicArc(Point3dcenter,Vector3dnormal,doubleradius,doublestartAngle,doubleendAngle);属性publicPoint3dCenter{get;set;}publicdoubleEndAngle{get;set;}publicdoubleLength{get;}publicVector3dNormal{get;set;}publicdoubleRadius{get;set;}publicdoubleStartAngle{get;set;}publicdoubleThickness{get;set;}publicdoubleTotalAngle{get;}讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861CircularArc3d类构造函数publicCircularArc3d();publicCircularArc3d(Point3dstartPoint,Point3dpointOnArc,Point3dendPoint);publicCircularArc3d(Point3dcenter,Vector3dnormal,doubleradius);publicCircularArc3d(Point3dcenter,Vector3dnormal,Vector3dreferenceVector,doubleradius,doublestartAngle,doubleendAngle);属性publicPoint3dCenter{get;set;}publicdoubleEndAngle{get;}publicPoint3dEndPoint{get;}publicVector3dNormal{get;}publicdoubleRadius{get;set;}publicVector3dReferenceVector{get;}publicdoubleStartAngle{get;}publicPoint3dStartPoint{get;}讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861CircularArc3d类Set方法publicvoidSet(Point3dstartPoint,Point3dpointOnArc,Point3dendPoint);publicvoidSet(Point3dcenter,Vector3dnormal,doubleradius);publicvoidSet(Curve3dcurve1,Curve3dcurve2,doubleradius,doubleparam1,doubleparam2);publicvoidSet(Curve3dcurve1,Curve3dcurve2,Curve3dcurve3,doubleparam1,doubleparam2,doubleparam3);publicvoidSet(Point3dcenter,Vector3dnormal,Vector3dreferenceVector,doubleradius,doublestartAngle,doubleendAngle);publicvoidSetAngles(doublestartAngle,doubleendAngle);publicvoidSetAxes(Vector3dnormal,Vector3dreferenceVector);讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861绘制圆(Circle类)函数publicCircle();publicCircle(Point3dcenter,Vector3dnormal,doubleradius);方法publicPoint3dCenter{get;set;}publicdoubleCircumference{get;set;}publicdoubleDiameter{get;set;}publicVector3dNormal{get;set;}publicdoubleRadius{get;set;}publicdoubleThickness{get;set;}讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861多段线(Polyline)轻量多段线优化多段线(PolyLine)重量多段线二维多段线三维多段线构造函数publicPolyline();publicPolyline(intvertices);属性publicboolClosed{get;set;}publicdoubleConstantWidth{get;set;}publicdoubleElevation{get;set;}publicboolHasBulges{get;}publicboolHasWidth{get;}publicboolIsOnlyLines{get;}publicdoubleLength{get;}publicVector3dNormal{get;set;}publicintNumberOfVertices{get;}publicboolPlinegen{get;set;}publicdoubleThickness{get;set;}讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861凸度在多段线中,用一个顶点与下一个顶点所形成的圆弧角度的四分之一的正切值表示。0表示直线,1表示半圆讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861矩形和正多边形计算各个顶点的坐标,然后按多段线处理讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861椭圆(Ellipse类)构造函数publicEllipse();publicEllipse(Point3dcenter,Vector3dunitNormal,Vector3dmajorAxis,doubleradiusRatio,doublestartAngle,doubleendAngle);属性publicPoint3dCenter{get;set;}publicdoubleEndAngle{get;set;}publicboolIsNull{get;}publicVector3dMajorAxis{get;}publicdoubleMajorRadius{get;}publicVector3dMinorAxis{get;}publicdoubleMinorRadius{get;}publicVector3dNormal{get;}publicdoubleRadiusRatio{get;set;}publicdoubleStartAngle{get;set;}publicvoidSet(Point3dcenter,Vector3dunitNormal,Vector3dmajorAxis,doubleradiusRatio,doublestartAngle,doubleendAngle);讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861填充(Hatch类)讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861图案填充步骤创建Hatch对象设置Hatch对象属性PatternScale设置填充类型和图案名称SetHatchPattern()将Hatch对象加入模型空间设置关联Association设置填充边界AppendLoop()计算并显示填充EvaluateHatch()提交事务处理mit()讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861设置Hatch对象属性PatternAngle渐变填充步骤创建Hatch对象设置填充类型为渐变HatchobjectType=GradientObject将Hatch对象加入模型空间设置关联Association设置填充边界AppendLoop()计算并显示填充EvaluateHatch()提交事务处理mit()设置渐变类型和渐变图案SetGradient()设置渐变起始和结束颜色SetGradientColor()编辑图形讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861编辑图形讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861Entity对象的IsNewObject属性1-创建图形对象后,IsNewObject属性—True2-加入块记录表后,IsNewObject属性—True3-加信息到图形数据库后,IsNewObject属性—False4-事务提交后,IsNewObject属性—False图形未加入图形数据库-直接通过矩阵转换移动图形已加入图形数据库-需要开启事务处理,然后矩阵转换移动图形指定参考原点指定参考目标点获取参考原点到参考目标点的向量计算移动矩阵调用图形的移动方法讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861复制图形讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861旋转图形讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861镜像图形删除原对象直接通过矩阵转换不删除原对象按转换矩阵复制讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861缩放图形讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861删除图形讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861图形阵列阵列的实质就是复制和旋转图形矩形整列环形阵列讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861用户交互最基本的命令行交互是通过一系列的ed.GetXXX的方法来实现的1、GetPoint()获取点坐标用PromptPointResult接收字符串提示信息:正确输入屏幕拾取和输入两个、三个坐标值都能得到正确结果如果输入一个坐标会得到错误的值Status:OKValue值为坐标点输入ESC:Status:Cancel其他输入为无效,程序一直等待用户输入讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861用户交互PromptPointOptions提示信息:正确输入和ESC和上面一样输入空格或回车Status:None同时可以添加关键字的输入讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861.Net交互操作类方法名作用提示选项类提示结果类GetAngle提示用户输入一个角度值PromptAngleOptionsPromptDoubleResultGetCorner提示用户拾取矩形的角点PromptCornerOptionsPromptCornerResultGetDistance提示用户输入一段距离PromptDistanceOptionsPromptDoubleResultGetDouble提示用户输入一个实数PromptDoubleOptionsPromptDoubleResultGetEntity提示用户拾取一个实体PromptEntityOptionsPromptEntityResultGetInteger提示用户输入一个整数PromptIntegerOptionsPromptIntegerResultGetKeywords提示用户输入关键字PromptKeywordOptionsPromptResultGetNestedEntity提示用户拾取嵌套实体PromptNestedEntityOptionsPromptNestedEntityResultGetPoint提示用户输入一个点PromptPointOptionsPromptPointResultGetString提示用户输入一个字符串PromptStringOptionsPromptResult讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861PromptStatus枚举值提示结果类枚举值提示结果类Cancel用户取消输入None输入回车Error未知错误OK输入成功Keyword用户输入关键字Other其他Modeless非模态输入状态讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861仿系统直线命令讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861用户拖拽类EntityJig1、创建一个继承与EntityJig的类2、实现这个抽象类的两个方法用于更新图形对象,这个更新属性是不需要使用事务处理protectedoverrideboolUpdate()这个函数的作用是当鼠标在屏幕上移动时,就会被调用,实现这个函数时,一般是用它改变的门图形的属性(我们在这个类里定义的属性)protectedoverrideSamplerStatusSampler(JigPromptsprompts)3、调用函数的处理可以通过获取的坐标值进行相应的处理可以通过获取对象的图形对象(此时没有加入图形数据库)进行处理讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861选择集选择图形的方法1、GetSelection()用户在图形中选择实体2、SelectAll()选择所有实体3、SelectCrossingWindow()选择窗口中及和窗口四边相交的实体4、SelectCrossingPolygon选择多边形中及和多边形相交的实体5、SelectFence栏选6、SelectImplied选择当前图形中已经选择的实体7、SelectLast选择图形中最后绘制的实体8、SelectPrevious选择上一个选择集9、SelectWindow选择窗口中的实体10、SelectWindowPolygon选择多边形中的实体这里没有提供通过一个点坐标选择图形的方法,我们可以通过SelectCrossingWindow来实现讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861选择集-一个简单的例子讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861通过过滤器选择图形讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861如何查看图元属性代码命令:(setqent(entsel))选择对象:(<图元名:7ffffb42050>(1699.06-6219.750.0))

这里的图元名实际就是ObjectId命令:(setqent_data(carent))<图元名:7ffffb42050>命令:(setqent_data(entgetent_data))((-1.<图元名:7ffffb42050>)(0."TEXT")(330.<图元名:7ffffb03980>)(5."D688D")(100."AcDbEntity")(67.0)(410."Model")(8."0")(62.1)(100."AcDbText")(101698.09-6220.870.0)(40.2.6)(1."200")(50.0.0)(41.1.0)(51.0.0)(7."55")(71.0)(72.0)(110.00.00.0)(2100.00.01.0)(100."AcDbText")(73.0))第二次查看((-1.<图元名:7ffffb42050>)(0."TEXT")(330.<图元名:7ffffb03980>)(5."D688D")(100."AcDbEntity")(67.0)(410."Model")(8."0")(62.0)(100."AcDbText")(101698.09-6220.870.0)(40.2.6)(1."200")(50.0.0)(41.1.0)(51.0.0)(7."55")(71.0)(72.0)(110.00.00.0)(2100.00.01.0)(100."AcDbText")(73.0))不清楚,问度娘先选择,再处理Ed.SelectionImplied()[CommandMethod("PickDemo"mandFlags.UsePickSet)]使用先选择,后处理需要满足下面的条件1、系统变量pickfirst为12、CommandMethod标记位用UsePicdSet标识3、Ed.SelectionImplied获取选择的图形讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861动态交互类DrawJig//重绘图形protectedoverrideboolWorldDraw(Autodesk.AutoCAD.GraphicsInterface.WorldDrawdraw)//获取鼠标在屏幕的运动,需要更新图形对象的属性,或进行矩阵变换protectedoverrideSamplerStatusSampler(JigPromptsprompts)讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861单行文字(DBText)构造函数publicDBText();属性publicPoint3dAlignmentPoint{get;set;}publicdoubleHeight{get;set;}publicTextHorizontalModeHorizontalMode{get;set;}publicboolIsDefaultAlignment{get;}publicboolIsMirroredInX{get;set;}publicboolIsMirroredInY{get;set;}publicAttachmentPointJustify{get;set;}publicVector3dNormal{get;set;}publicdoubleOblique{get;set;}publicPoint3dPosition{get;set;}publicdoubleRotation{get;set;}publicstringTextString{get;set;}publicObjectIdTextStyleId{get;set;}publicstringTextStyleName{get;}publicdoubleThickness{get;set;}publicTextVerticalModeVerticalMode{get;set;}publicdoubleWidthFactor{get;set;}讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861特殊字符编码/以垂直方式堆叠文字,由水平线分割#以对角方式堆叠文字,由对角线分割^以公差堆叠(垂直堆叠,不用直线分割)讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861多行文字(MText)构造函数publicMText();属性publicdoubleActualHeight{get;}publicdoubleActualWidth{get;}publicstaticstringAlignChange{get;}publicdoubleAscent{get;}publicAttachmentPointAttachment{get;set;}publicboolBackgroundFill{get;set;}publicColorBackgroundFillColor{get;set;}publicdoubleBackgroundScaleFactor{get;set;}publicTransparencyBackgroundTransparency{get;set;}publicstaticstringBlockBegin{get;}publicstaticstringBlockEnd{get;}publicstaticstringColorChange{get;}publicboolColumnAutoHeight{get;set;}publicintColumnCount{get;set;}publicboolColumnFlowReversed{get;set;}publicdoubleColumnGutterWidth{get;set;}publicColumnTypeColumnType{get;set;}publicdoubleColumnWidth{get;set;}publicstringContents{get;set;}publicdoubleDescent{get;}publicVector3dDirection{get;set;}publicFlowDirectionFlowDirection{get;set;}publicstaticstringFontChange{get;}publicdoubleHeight{get;set;}publicstaticstringHeightChange{get;}publicstaticstringLineBreak{get;}publicdoubleLineSpaceDistance{get;set;}publicdoubleLineSpacingFactor{get;set;}publicLineSpacingStyleLineSpacingStyle{get;set;}publicPoint3dLocation{get;set;}publicstaticstringNonBreakSpace{get;}publicVector3dNormal{get;set;}publicstaticstringObliqueChange{get;}publicstaticstringOverlineOff{get;}publicstaticstringOverlineOn{get;}publicstaticstringParagraphBreak{get;}publicdoubleRotation{get;set;}publicstaticstringStackStart{get;}publicstaticstringStrikethroughOff{get;}publicstaticstringStrikethroughOn{get;}publicstringText{get;}publicdoubleTextHeight{get;set;}publicObjectIdTextStyleId{get;set;}publicstringTextStyleName{get;}publicstaticstringTrackChange{get;}publicstaticstringUnderlineOff{get;}publicstaticstringUnderlineOn{get;}publicboolUseBackgroundColor{get;set;}publicdoubleWidth{get;set;}publicstaticstringWidthChange{get;}讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861多行文字\\A1;\\U+00D850{\\H0.5x;\\SH7/P7;}\\A1;\\U+00D850{\\H0.5x;\\SH7#P7;}\\A1;\\U+00D850{\\H0.5x;\\S+0.020^-0.010;}"讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861实例-采样标注通过选择基准线和曲线,自动完成采样线和采样长度标注讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861注释AlignedDimension对齐注释RotatedDimension旋转注释ArcDimension圆弧注释DiametricDimension直径注释RadialDimension半径注释LineAngularDimension2角度注释Point3AngularDimension

3点角度注释OrdinateDimension坐标注释讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861符号表块表(BlockTable)/块表记录(BlockTableRecord)层表(LayerTable)

/层表记录(LayerTableRecord)线型表(LinetypeTable)

/线型表记录(LinetypeTableRecord)文字样式表(TextStyleTable)

/文字样式表记录(TextStyleTableRecord)注释样式表(DimStyleTable)/注释样式表记录(DimStyleTableRecord)视图表(ViewTable)/视图表记录(ViewTableRecord)UCS表(UCSTable)/UCS表记录(UCSTableRecord)视口表(ViewportTable)/视口表记录(ViewportTableRecord)注册应用程序表(RegAppTable)/注册应用程序表记录(RegAppTableRecord)讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861层表层表(LayerTable)

/层表记录(LayerTableRecord)publicstringName{get;set;}图层名publicColorColor{get;set;}颜色publicboolIsFrozen{get;set;}冻结publicboolIsHidden{get;set;}隐藏publicboolIsLocked{get;set;}锁定publicboolIsOff{get;set;}关闭publicboolIsPlottable{get;set;}打印publicObjectIdLinetypeObjectId{get;set;}线型publicLineWeightLineWeight{get;set;}线宽讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861文字样式表文字样式表(TextStyleTable)

/文字样式表记录(TextStyleTableRecord)讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861注释样式表注释样式表(DimStyleTable)/注释样式表记录(DimStyleTableRecord)讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861线型表线型表(LinetypeTable)

/线型表记录(LinetypeTableRecord)介绍如何加载系统已有线型讲解:李小科淘宝帐号lixiaoke_2000旺旺群:578226861块操作创建块实际上就是创建一个块表记录

温馨提示

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

评论

0/150

提交评论