【精品】AutoCAD应用基础-二次开发的接口原理精品ppt课件.ppt

上传人:1595****071 文档编号:71300844 上传时间:2023-02-02 格式:PPT 页数:70 大小:1.56MB
返回 下载 相关 举报
【精品】AutoCAD应用基础-二次开发的接口原理精品ppt课件.ppt_第1页
第1页 / 共70页
【精品】AutoCAD应用基础-二次开发的接口原理精品ppt课件.ppt_第2页
第2页 / 共70页
点击查看更多>>
资源描述

《【精品】AutoCAD应用基础-二次开发的接口原理精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】AutoCAD应用基础-二次开发的接口原理精品ppt课件.ppt(70页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、AutoCAD应用基础-二次开发的接口原理 二次开发的接口原理 开发环境对应的编程语言 开发方式能力范围对比 开发环境的难易程度及学习时间对比 4.6 VBA二次开发lActiveX技术介绍(了解)lVB(VBA)开发AutoCAD的一般流程(掌握)lAutoCAD开发的对象介绍l平键视图绘制实例(理解)l数据库的应用 平键视图绘制(LISP)LISP源程序(defun jian()(setq lth(getreal nlength)r (getreal nradius)p1 (getpoint nbase point)(setq p2(polar p1 0 lth)p3(polar p2(*

2、pi 0.5)(*2 r)p4(polar p1(*pi 0.5)(*2 r)c1(polar p1(*pi 0.5)r)c2(polar c1 0 lth)LISP源程序 (command line p1 p2 line p3 p4)(command arc c c1 p4 p1 arc c c2 p2 p3)DCL文件:text:text key=text1;key=text1;label=label=插入基点坐标插入基点坐标插入基点坐标插入基点坐标;:edit_box:edit_boxkey=x;key=x;label=x=;label=x=;width=10;width=10;valu

3、e=100;value=100;:edit_box :edit_boxkey=y;key=y;label=y=;label=y=;width=10;width=10;value=100;value=100;:edit_box:edit_boxkey=z;key=z;label=z=;label=z=;width=10;width=10;value=100;value=100;ok_cancel;ok_cancel;jian:dialogjian:dialog label=label=绘制圆头平键绘制圆头平键绘制圆头平键绘制圆头平键;:edit_box :edit_boxkey=lth;key=

4、lth;label=label=长度长度长度长度;width=10;width=10;value=200;value=200;:edit_box :edit_box key=r;key=r;label=label=圆头半径圆头半径圆头半径圆头半径;width=10;width=10;value=25;value=25;缺点1 AutoLISP语言特殊,应用范围较窄2 AutoLISP语言功能较为有限3 图形界面需要另外使用DCL语言编制对话框,并使用LISP程序驱动,不直观,且较为复杂在众多的编程工具中,最适合初学者和非专业编程人员的便是Visual Basic(简称VB)第一个可视化编程开发

5、工具。众多知名的IT界人士都是Basic专家,最著名的莫过于比尔盖茨了,他本人曾参与了Visual Basic的编程工作。4.6.1 ActiveX简介ActiveX是Microsoft公司于1996年正式命名的一项技术,前身是Microsoft的OLE。ActiveX的基础是COM(组件对象模型)。COM是一种能使软件部件作为对象进行相互作用的二进制标准。ActiveX技术负责两个应用程序之间的通信,这两个应用程序组成客户机、服务器模式(C/S)。AutoCAD ActiveX提供在AutoCAD内或在AutoCAD外控制编程的机制,它是通过使AutoCAD对象开放到外部世界来作到这一点的。

6、只要这些对象被开放,就可以通过多种不同的编程语言环境和其它应用程序来访问它们。AutoCAD ActiveX 通过AutoCAD的ActiveX界面:对AutoCAD绘图的编程对更多的编程环境开放。这之前局限于AutoLISP和C+。与其它的Windows应用程序共享数据更加方便。VB与VBAVB是Microsoft公司推出的一个可视化的面向对象的应用程序开发工具,继承了Basic语言简单易学的优点,又增强了可视化、数据库编程等功能。VBA(Visual Basic for Applications)则是嵌入在应用程序中的VB开发环境。它和VB一样有很强的开发能力,两者之间的主要区别是VBA和

7、AutoCAD运行在同一内存空间。4.6.2 VB编程简介1 VB概述1)VB的特点l可视化的设计平台l面向对象的设计方法l事件驱动的编程机制 几个基本概念l对象l属性l方法l事件 2)开发环境 2 VB语言基础1)代码模块和窗口,自动编码2)书写规则 单引号注释,空格加下划线续行3)变量 命名 声明:隐式 x=1 显式 dim x as Integer 强制声明 Option Explicit (工具-选项-编辑器-要求变量声明)作用域:过程级、模块级(private)、全局(public)数据类型:弱类型 4)常量 系统常量 vbOK AcadCircle 自定义 Const PI=3.1

8、41592653589795)运算 算术:+-*/mod 连接字符串:+&关系:=逻辑:Not And Or Xor 6)数组 Dim intCounter(9)As Integer Dim intSums(3 to 10)as Integer 7)控制结构 判断结构 条件 if dtm Now then dtm=Nowif x 0 then y=0elseif x 10 then y=1else y=2end if 选择 select case flag case 1 x=0 case 2 x=1 case else x=2 end select 循环结构 Do 循环i=0do while

9、i 100 i=i+1loopi=0do i=i+1loop while i 100 for循环 sum=0for i=1 to 100 step 2 sum=sum+1next 8)过程 子过程 Sub Compute(a As Integer,b As Integer)Dim c As Integer c=a+b Print the result is;&c End Sub 调用:Call Compute(1,2)或 Compute 1,2 函数Function add(a As Integer,b As Integer)As Integer add=a+bEnd Function 调用:

10、sum=add(1,2)或 Call add(1,2)传值 ByVal 传值 ByRef 传地址 9)对象 对象变量 声明:Dim frmX as Form 赋值:Set frmX=new frmSample 释放:Set frmX=nothing 容器对象中的对象:frmSam.cmdDemo.Caption 常用内建对象:App,Clipboard 3 窗体 例1)属性2)方法3)事件 4 控件内部控件ActiveX控件可插入对象 5 ActiveX部件的使用1)添加引用 工程引用AutoCAD2004类型库2)声明对象变量 Dim acadApp As AcadApplication3)

11、将对象引用赋予变量 Set acadApp=CreateObject(AutoCAD.Application)Set acadApp=GetObject(,AutoCAD.Application)4)使用对象 Set acadDoc=acadApp.ActiveDocument Set lineObj=acadDoc.ModelSpace.AddLine(startPoint,endPoint)例:创建直线Sub AddLineVB()On Error Resume Next Dim acadApp As acadApplication Set acadApp=GetObject(,AutoC

12、AD.Application)If Err Then Err.Clear Set acadApp=CreateObject(AutoCAD.Application)If Err Then MsgBox Err.Description Exit Sub End If End If acadApp.Visible=True Dim acadDoc As acadDocument Set acadDoc=acadApp.ActiveDocument 建立直线端点 Dim lineObj As acadLine Dim startPoint(0 To 2)As Double Dim endPoint(

13、0 To 2)As Double startPoint(0)=100 startPoint(1)=100 startPoint(2)=0 endPoint(0)=300 endPoint(1)=300 endPoint(2)=0 Set lineObj=acadDoc.ModelSpace.AddLine(startPoint,endPoint)在模型空间创建直线 ZoomAllEnd Sub 4.6.3 VBA开发初步Sub AddLineVBA()在模型空间中加入直线 Dim lineObj As AcadLine Dim startPoint(0 To 2)As Double Dim e

14、ndPoint(0 To 2)As Double 定义直线的起点和终点 startPoint(0)=100 startPoint(1)=100 startPoint(2)=0 endPoint(0)=300 endPoint(1)=300 endPoint(2)=0 在模型空间中创建直线 Set lineObj=ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)ZoomAllEnd Sub 1 VBA开发环境 2 AutoCAD ActiveX对象模型为了有效地使用AutoCAD ActiveX,应当非常熟悉AutoCAD实体,对象。对象是A

15、utoCAD ActiveX接口的主体,每一个公开的对象代表AutoCAD的一个细小的部分。在AutoCAD ActiveX接口中有很多不同类型的对象,比如:l图形对象 lines,arcs,text,dimensionsl类型设置 linetypes,dimension typel组织结构 layers,groups,blocks其中程序对象(AutoCAD Application)是AutoCAD ActiveX对象模型的根对象。1)AutoCAD Application 2)AutoCAD Documents 3)Preference 3 设置环境1)打开图形文件Sub Ch3_Open

16、Drawing()Dim dwgName As String dwgName=c:Program Filesacad 2004sampleHotel Model.dwg.dwg If Dir(dwgName)Then ThisDrawing.Application.Documents.Open dwgName Else MsgBox File&dwgName&does not exist.End IfEnd Sub 2)创建新图形Sub Ch3_NewDrawing()Dim docObj As AcadDocument Set docObj=ThisDrawing.Application.D

17、ocuments.AddEnd Sub 3)保存图形Sub Ch3_SaveActiveDrawing()Save the active drawing under the current name ThisDrawing.Save Save the active drawing under a new name ThisDrawing.SaveAs MyDrawing.dwgEnd Sub Sub Ch3_TestIfSaved()If Not(ThisDrawing.Saved)Then If MsgBox(Do you wish to save this drawing?,vbYesNo

18、)=vbYes Then ThisDrawing.Save End If End IfEnd Sub 4)设置参数Dim acadPref as AcadPreferencesSet acadPref=ThisDrawing.Application.PreferencesacadPref.Display.CursorSize=100acadPref.Display.DisplayScreenMenu=TrueacadPref.Display.DisplayScrollBars=False 5)设置程序窗口Sub Ch3_PositionApplicationWindow()ThisDrawin

19、g.Application.WindowTop=0 ThisDrawing.Application.WindowLeft=0 ThisDrawing.Application.width=400 ThisDrawing.Application.height=400End SubThisDrawing.Application.WindowState=acMaxThisDrawing.Application.WindowState=acMin 6)设置绘图窗口ThisDrawing.Width=400ThisDrawing.Height=400ThisDrawing.WindowState=acMa

20、xThisDrawing.WindowState=acMin Sub Ch3_ZoomWindow()ZoomWindow MsgBox Perform a ZoomWindow with:&vbCrLf&_ 1.3,7.8,0&vbCrLf&_ 13.7,-2.6,0,ZoomWindow Dim point1(0 To 2)As Double Dim point2(0 To 2)As Double point1(0)=1.3:point1(1)=7.8:point1(2)=0 point2(0)=13.7:point2(1)=-2.6:point2(2)=0 ThisDrawing.App

21、lication.ZoomWindow point1,point2 MsgBox Perform a ZoomPickWindow,ZoomPickWindow ThisDrawing.Application.ZoomPickWindowEnd Sub 7)设置系统变量ThisDrawing.SetVariable MAXSORT,100sysVarName=FILLMODE varData=ThisDrawing.GetVariable(sysVarName)MsgBox sysVarName&=&varData,GetVariable Example 8)提示用户输入Sub Ch3_Get

22、PointsFromUser()Dim startPnt As Variant Dim endPnt As Variant Dim prompt1 As String Dim prompt2 As String prompt1=vbCrLf&Enter the start point of the line:prompt2=vbCrLf&Enter the end point of the line:startPnt=ThisDrawing.Utility.GetPoint(,prompt1)endPnt=ThisDrawing.Utility.GetPoint(startPnt,prompt

23、2)ThisDrawing.ModelSpace.AddLine startPnt,endPnt ThisDrawing.Application.ZoomAllEnd Sub 9)访问命令行Sub Ch3_SendACommandToAutoCAD()ThisDrawing.SendCommand Circle 2,2,0 4 ThisDrawing.SendCommand zoom a End Sub 4 创建实体线段Sub Example_AddLine()Dim lineObj As AcadLine Dim startPoint(0 To 2)As Double Dim endPoin

24、t(0 To 2)As Double startPoint(0)=1:startPoint(1)=1:startPoint(2)=0 endPoint(0)=5:endPoint(1)=5:endPoint(2)=0 Create the line in model space Set lineObj=ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)ZoomAll End Sub 多义线Sub Ch4_AddLightWeightPolyline()Dim plineObj As AcadLWPolyline Dim points(0 To

25、 5)As Double points(0)=2:points(1)=4 points(2)=4:points(3)=2 points(4)=6:points(5)=4 Set plineObj=ThisDrawing.ModelSpace._ AddLightWeightPolyline(points)ThisDrawing.Application.ZoomAllEnd Sub 圆弧Sub Example_AddArc()Dim arcObj As AcadArc Dim centerPoint(0 To 2)As Double,radius As Double Dim startAngle

26、InDegree As Double Dim endAngleInDegree As Double centerPoint(0)=0:centerPoint(1)=0 centerPoint(2)=0:radius=5 startAngleInDegree=10 endAngleInDegree=230 Dim startAngleInRadian As Double Dim endAngleInRadian As Double startAngleInRadian=startAngleInDegree*3.141592/180 endAngleInRadian=endAngleInDegre

27、e*3.141592/180 Set arcObj=ThisDrawing.ModelSpace.AddArc(centerPoint,radius,startAngleInRadian,endAngleInRadian)End Sub 圆Sub Example_AddCircle()Dim circleObj As AcadCircle Dim centerPoint(0 To 2)As Double Dim radius As Double centerPoint(0)=0 centerPoint(1)=0 centerPoint(2)=0 radius=5 Set circleObj=T

28、hisDrawing.ModelSpace.AddCircle(centerPoint,radius)ZoomAll End Sub 样条曲线Sub Example_AddSpline()Dim splineObj As AcadSpline Dim noOfPoints As Integer Dim startTan(0 To 2)As Double Dim endTan(0 To 2)As Double Dim fitPoints(0 To 8)As Double noOfPoints=3 startTan(0)=0.5:startTan(1)=0.5:startTan(2)=0 endT

29、an(0)=0.5:endTan(1)=0.5:endTan(2)=0 fitPoints(0)=1:fitPoints(1)=1:fitPoints(2)=0 fitPoints(3)=5:fitPoints(4)=5:fitPoints(5)=0 fitPoints(6)=10:fitPoints(7)=0:fitPoints(8)=0 Set splineObj=ThisDrawing.ModelSpace.AddSpline(fitPoints,startTan,endTan)ZoomAll End Sub 图案填充Sub Example_AddHatch()Dim hatchObj

30、As AcadHatch Dim patternName As String Dim PatternType As Long Dim bAssociativity As Boolean Define the hatch patternName=ANSI31 PatternType=0 bAssociativity=True Set hatchObj=ThisDrawing.ModelSpace.AddHatch(PatternType,patternName,bAssociativity)Create the outer boundary for the hatch.(a circle)Dim

31、 outerLoop(0 To 0)As AcadEntity Dim center(0 To 2)As Double Dim radius As Double center(0)=3:center(1)=3:center(2)=0 radius=1 Set outerLoop(0)=ThisDrawing.ModelSpace.AddCircle(center,radius)hatchObj.AppendOuterLoop(outerLoop)hatchObj.Evaluate ThisDrawing.Regen True End Sub 选择集Sub Ch4_AddToASelection

32、Set()Dim sset As AcadSelectionSet Set sset=ThisDrawing.SelectionSets.Add(SS1)sset.SelectOnScreen Dim entry As AcadEntity For Each entry In sset entry.Color=acBlue entry.Update Next entryEnd Sub FilterType=0 FilterData=LINE sset.SelectOnScreen FilterType,FilterDataFilterType=8 图层FilterData=FLOOR9 sse

33、t.SelectOnScreen FilterType,FilterDataFilter Type=62 颜色Filter Data=5 红色sset.SelectOnScreen FilterType,FilterData 图层Sub Ch4_LayerInvisble()Dim circleObj As AcadCircle Dim center(0 To 2)As Double Dim radius As Double center(0)=2:center(1)=2:center(2)=0 radius=1 Set circleObj=ThisDrawing.ModelSpace._ A

34、ddCircle(center,radius)circleObj.Color=acByLayer Dim layerObj As AcadLayer Set layerObj=ThisDrawing.Layers.Add(ABC)layerObj.Color=acRed circleObj.Layer=ABC circleObj.Update layerObj.LayerOn=False ThisDrawing.Regen acActiveViewportEnd Sub 标注Sub Ch5_CreateRadialDimension()Dim dimObj As AcadDimRadial D

35、im center(0 To 2)As Double Dim chordPoint(0 To 2)As Double Dim leaderLen As Integer center(0)=0:center(1)=0:center(2)=0 chordPoint(0)=5 :chordPoint(1)=5:chordPoint(2)=0 leaderLen=5 Set dimObj=ThisDrawing.ModelSpace._ AddDimRadial(center,chordPoint,leaderLen)ZoomAllEnd Sub 4.6.4 实例 平键视图绘制(VB)1 基本参数输入

36、利用VB的可视化设计用户界面如下63机械CAD 2 计算1)定义变量 Dim length As Double Dim radius As Double Dim px As Double,py As Double,pz As Double Dim p1(0 To 2)As Double,p2(0 To 2)As Double Dim p3(0 To 2)As Double,p4(0 To 2)As Double Dim c1(0 To 2)As Double,c2(0 To 2)As Double 2)计算关键点坐标 length=Val(Text1.Text)radius=Val(Text2

37、.Text)px=Val(Text3.Text)py=Val(Text4.Text)pz=Val(Text5.Text)p1(0)=px p1(0)=px p1(1)=py p1(1)=py p1(2)=pz p1(2)=pz p2(0)=px+length p2(0)=px+length p2(1)=py p2(1)=py p2(2)=pz p2(2)=pz c1(0)=pxc1(0)=px c1(1)=py+radius c1(1)=py+radius c1(2)=pz c1(2)=pz65机械CAD 3 绘制图形 Set lineObj=acadDoc.ModelSpace.AddLin

38、e(p1,p2)Set lineObj=acadDoc.ModelSpace.AddLine(p3,p4)Set arcObj=acadDoc.ModelSpace.AddArc(c1,radius,PI*0.5,PI*1.5)Set arcObj=acadDoc.ModelSpace.AddArc(c2,radius,-PI*0.5,PI*0.5)AddLine方法Creates a line passing through two points.RetVal=object.AddLine(StartPoint,EndPoint)Object:ModelSpace Collection,Pa

39、perSpace Collection,BlockThe object or objects this method applies to.StartPoint:Variant(three-element array of doubles);input-only.The 3D WCS coordinates specifying the line start point.EndPoint:Variant(three-element array of doubles);input-onlyThe 3D WCS coordinates specifying the line endpoint.RetVal:Line object,The newly created Line object.其它增加实体的方法lAddArclAddCirclelAddTextlAddHatchlAddBoxlAddConelAddDimDiametric 小结lVB简单易学,设计界面快速直观l设计方法通用,可用于其它CAD软件的二次开发l一般流程 输入:设计GUI 处理:计算 输出:调用相应对象的方法绘图,显示计算结果lAutoCAD ActiveX对象的使用 作业利用VB或VBA实现:通过窗体输入圆心和半径,在AutoCAD中绘出相应的图形。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com