您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > CAD二次开发报告示例
城市轨道交通线路设计平曲线绘制一、程序要求1、新建数据库,名称为“基础数据.mdb”。2、建立数据表:plane_CureveData(平面曲线信息表)。字段名称和类型如表1所示。3、同时,新建一个窗体,窗体中放置MsFLexGrid表格控件一个,导入按钮实现将文本文件内容导入到MsFLexGrid表格控件;增加、修改、删除数据的相关编辑;保存实现表格数据保存到数据库(基础数据.mdb)中功能,界面如图1。4、根据曲线信息,计算五大桩里程,新建立图层“平曲线图”,并在图层“平曲线图”中绘制平曲线图,并标注出曲线五要素,字体任意设定为中文字体,颜色任意。同时设定线宽为1、线颜色任意。表1平面曲线信息表字段名称和类型字段名称数据类型交点编号dbText交点桩号dbSingle曲线类型dbText曲线转向dbText曲线半径dbSingle曲线转角dbSingle起端缓和曲线长度dbSingle终端缓和曲线长度dbSingle二、主要过程1、新建三个窗体,分别为新建项目、打开项目和平面曲线数据。“新建项目”窗体实现新建名为“基础数据.xxd”的项目文件和“基础数据.mdb”的数据库文件(内含数据表plane_CureveData,表内无数据);“打开项目”窗体实现打开已有项目并在AutoCAD中自动绘制平曲线图;“平面曲线数据”窗体包含一个FlexGrid表格控件,实现导入包含平面曲线数据的文本文件(平面曲线.txt)并且能够对表格内的数据进行增加、修改、删除,最终保存入已打开项目对应的数据库文件中。2、在程序中,按照上述要求编写相关代码。节选部分重要代码如下所示:(1)新建数据库代码图1平面曲线数据窗体PublicSubCreateDatabase()'创建数据库Dimm_WorkSpaceAsWorkspaceSetm_WorkSpace=DBEngine.Workspaces(0)DimnewdbAsDatabase'定义数据库变量m_DatabaseName=m_ProjectPath+\基础数据.mdb'设定新建数据库位置Setnewdb=m_WorkSpace.CreateDatabase(m_DatabaseName,dbLangChineseSimplified)DimnewtblAsTableDef'创建表plane_CureveDataSetnewtbl=newdb.CreateTableDef(plane_CureveData)'平面曲线信息表Setm_Field(1)=newtbl.CreateField(交点编号,dbText)Setm_Field(2)=newtbl.CreateField(交点桩号,dbSingle)Setm_Field(3)=newtbl.CreateField(曲线类型,dbText)Setm_Field(4)=newtbl.CreateField(曲线转向,dbText)Setm_Field(5)=newtbl.CreateField(曲线半径,dbSingle)Setm_Field(6)=newtbl.CreateField(曲线转角,dbSingle)Setm_Field(7)=newtbl.CreateField(起端缓和曲线长度,dbSingle)Setm_Field(8)=newtbl.CreateField(终端缓和曲线长度,dbSingle)CallCreateTable(newdb,newtbl,8)'生成表MsgBox项目创建成功,vbInformation,新建项目newdb.Close'关闭数据库及其中的表Setnewdb=Nothing'删除数据库对象实例EndSub(2)创建菜单示例创建项目管理菜单PublicFunctionCreateProjectManageMenu()OnErrorResumeNextDimmnuGroupAsAcadMenuGroupDimmnuMainAsAcadPopupMenuDimmenuNamesAsStringDimmenuCollectionAsAcadPopupMenusDimmenuAsAcadPopupMenuSetmnuGroup=ThisDrawing.Application.MenuGroups.Item(0)SetmnuMain=mnuGroup.Menus.Add(项目管理(&P))CallBuildSubMenu(mnuMain,新建设计项目(&N),mcoNewProject)'分隔符EndFunction(3)绘制平曲线代码'绘制平面线型SubDrawPMLine()OnErrorResumeNextDimplineObjAsAcadLWPolylineDimpoints(0To11)AsDoubleDimtextStringAsStringDimQZAsDouble'曲中桩号DimZHAsDouble'直缓桩号DimHYAsDouble'缓圆桩号DimYHAsDouble'园缓桩号DimHZAsDouble'缓直桩号DimaAsDouble'转角DimLs0AsDouble'起端缓和曲线长DimLe0AsDouble'终端缓和曲线长DimRAsDouble'曲线半径DimLAsDouble'曲线长DimTAsDouble'切线长DimPAsDoubleDimmAsDoubleDimPIAsDoubleDimText_aAsStringDima_DuAsDoubleDima_FenAsDoubleDima_MiaoAsDoubleCallSetFontName(楷体_GB2312)PI=3.14159265359IfLen(m_DatabaseName)=0Then'表示还没有打开数据库连接ExitSubEndIf'创建名为平曲线图的新图层DimLayerObjAsAcadLayerSetLayerObj=ThisDrawing.Layers.Add(平曲线图)LayerObj.color=acCyan'指定平曲线图图层的颜色为青色DimiAsLongDimmSQLAsString'打开数据库连接SetCon=NewADODB.ConnectionmSQL=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=+m_DatabaseName+;Con.OpenmSQL'设置记录集Setmrs=NewADODB.RecordsetSetmrs.ActiveConnection=Con'设置记录当前接连mrs.CursorLocation=adUseClientmSQL=select*fromplane_CureveDataORDERBY交点桩号ASCmrs.OpenmSQL,Con,adOpenKeyset,adLockOptimistic'打开记录集Dimm_TotalsAsIntegerm_Totals=0DoWhileNotmrs.EOF'将表格所有数据写入数据库表中m_Totals=m_Totals+1If(m_Totals=1)Thena=mrs.Fields(5)Ls0=mrs.Fields(6)Le0=mrs.Fields(7)R=mrs.Fields(4)P=Ls0*Ls0/(24*R)m=Ls0/2T=(R+P)*Tan(a*PI/360)+mL=PI*a*R/180+Ls0a_Du=Fix(a)a_Fen=Fix((a-a_Du)*60)a_Miao=Round(((a-a_Du)*60-a_Fen)*60,2)Text_a=Str(a_Du)&°&Str(a_Fen)&′&Str(a_Miao)&″textString=R=&Str(R)&&α=&Text_a&&vbCrLf&T=&Str(Round(T,2))&&lo=&Str(Ls0)+&L=&Str(Round(L,2))QZ=mrs.Fields(1)ZH=QZ-THY=ZH+Ls0HZ=QZ+TYH=HZ-Le0points(0)=0:points(1)=0points(2)=ZH:points(3)=points(1)points(4)=HYIf(mrs.Fields(3)=左)Thenpoints(5)=-50CallDrawText(ZH+30,points(1)+80,textString,150,0,acAlignmentMiddleLeft)ElseIf(mrs.Fields(3)=右)Thenpoints(5)=50CallDrawText(ZH+30,points(1)-30,textString,150,0,acAlignmentMiddleLeft)EndIfEndIfpoints(6)=QZ:points(7)=points(5)points(8)=YH:points(9)=points(5)points(10)=HZ:points(11)=points(1)m_X=points(10):m_Y=points(11)SetplineObj=ThisDrawing.ModelSpace._AddLightWeightPolyline(points)plineObj.Layer=平曲线图plineObj.ConstantWidth=1'多段线全局宽度m_Totals=m_Totals+1mrs.MoveNextEndIf(以上是第一段曲线绘制的代码)plineObj.ConstantWidth=1'多段线全局宽度''指定多段线到地面线图层上plineObj.Layer=平曲线图plineObj.UpdateZoomAllEndSub3、效果展示图2第一段平曲线图
本文标题:CAD二次开发报告示例
链接地址:https://www.777doc.com/doc-7194289 .html