某机械设备CAD系统的社团与统筹

4.1系统开发目的

  建立一个集规划、选型、建模、出图为紧凑的某机械设备CAD系统。最后实现通过改动某机械设备的紧要参数自动生成一套新的某机械设备三维实体模型和工程图的目标。 

4.2 系统开发环境与工具

硬件环境
:图形工作站,内存4G,要求配有图片加速卡,呈现1024*768,USB接口、光驱和任何外部设备

软件条件:操作系统为Windows XP/Win2000/NT
等。主流三维实体造型软件SolidWorks2011或更高版本,面向对象的Visual
Basic6.0作为二次开发工具,Access 提供后台数据支撑。

4.3 系统架构及系统工作流程

4.3.1 系统架构

                过渡界面

                主界面

总体设计参数                    总体布置

        结构件        运行部门        起升机构        标准件  通用件

      桥架 小车架  设计选型模块 模型模块 设计选型模块 模型模块 

4.3.2 系统办事流程

    设计模块

完全布置  装配体设计  零件设计  更新零部件模型  更新装配体模型  更新工程图

     标准件 通用件

4.4  系统规划

  某机械CAD系统对机械设备的统筹是自上而下的,首先确定大的总体布置尺寸,再确定部件尺寸,最终确定零件尺寸。模型更新于此相反先要更新零件模型,最终才能更新部件模型。在下边窗口中确定了大的装配尺寸,将被引用到下边窗口,并且不允许在部属窗口修改,从而确保完全设计的系统性。

  历次设计记录表为全程襄助的,只要系统运转,它就处在打开状态,用来囤积主梁、通用件、标准件的记录号、及其他子窗口的界面数据。有了它的帮助你的设计不必几次到位,每一回从新开拓系统都足以继续您上次未形成的计划性,不必顾虑从新起先。

     
标准件、通用件库的支撑使得设计选型更加便民,在另外程序界面可以直接调用标准件和通用件界面,选拔标准件或通用件。标准件和通用件界面同时可以做到数据库完善的效益,可以不停扩展新的记录。

4.4.1 程序启动界面设计及编程

     
当主程序载入时,屏幕展现启动界面,下拉式探出,待一切主程序都载入内存,即没有。通过时钟控制窗口低度来兑现下拉式弹出职能,依照判断主窗口体现状态控制是否卸载启动窗口。

 Option Explicit ‘强制变量声明

 Private Sub Form_Load()

 Timer1.Interval=10

 Timer1.Enabled=True

  guodu.Height=100

 End Sub

 Private Sub Timer1_Timer()

 If(guodu.Height<4395) Then

       guodu.Height=guodu.Height+65 ‘ 控制窗口的莫大递增

 Else

        MDIForm1.Show

        If MDIForm1.WindowState=2 Then  
‘假若主程序加载完成,则卸载启动窗口

                 Timer1.Enabled=False

                  Unload Me

        End If

 End if 

 End Sub

 4.4.2 主界面设计及编程

4.4.2.1 主界面设计

     
主界面是机械CAD系统的最首要的人机接口,其协调程度将一直影响到该系统的使用性能。

     
程序主窗口为MDI窗口,分六个区:菜单区、工具条区、视图区、状态栏区。由以下控件组成:菜单栏、工具栏、状态栏、Picture控件、按钮、eDrawing控件、Imagelist控件。

     1) 菜单栏紧要内容根本实现各模块调用效能:

       总体设计  
:系统规划,设计参数,总体布置,小车布置,预览模型,退出

  桥架结构:主梁,端梁,中间梁,轨道 

       运行部门:大车运行部门,小车运行部门-〉设计选型;模型与图片

  起升机构:主起升机构,副起升机构->设计选型,机构布置,卷筒组,定滑轮装置,吊钩组

  小车架:总体布置,主起升主梁,小车架端梁

  标准件:轴承,联轴器,螺栓,螺母,平垫圈,弹簧垫圈

  通用件:轴承座,车轮、减速器、制动器、起升电机、运行电机

       协助:协助要旨,关于

  2)工具栏共有7个飞跃按钮,提供连接到主梁、端梁、中间梁、大车运行部门、小车运行部门、主起升机构、副起升机构模块的迅速模式。

  3)视图区重要成就模型预览的法力。由多少个Picture
控件分成两局部,左侧的一些分为模型显示区,左边部分为模型视图控制区,共有6个按钮完成主视、俯视、左视、等轴测、适应屏幕、关闭等视图转化控制。同时,可以透过鼠标动态旋转模型,通过鼠标中间滚轮放大缩小视图,通过鼠标右键菜单有更多准备选项,试区界面是共用界面,还足以被其他模块界面调用,以便观看模型生成后的功力,如运行部门,起升机构等都会调用此界面。

  视图区的效益在很大程度上倚重eDrawing控件。对eDrawing控件做简单表明。eDrawing应用程序是会同SolidWorks一同发行的行使软件,给你提供生成、观阅、及共享您的3D模型和2D工程图的威力。

  eDrawings应用程序编程接口(API)是一个针对eDrawings的OLE编程接口,作为MicrosoftActiveX控件来兑现。可以动用eDrawingsAPI来自定义eDrawings
Viewer.
创造交互式网页和转移文件。该API中包含可通过VisualBasic(VB)调用的函数。这多少个功效提供了到eDrawings环境的第一手访问路径。在VB环境下将eDrawings
Controls
引入,即可将eDrawings作为一个控件使用,并由此API函数来拜会或直接控制eDrawins.

       
视图区并非一贯出现在程序主界面上,而是在有模型突显需要时才面世,同时又考虑到它将被不同的模块所调用所以由几个集体函数来决定视图区的产出和藏身,分别是 printmodel(str)
,Closemodel(str) ,以国有函数的款式写在Moudle1模块里。

  4)状态栏用于显示操作指示和处境信息。

 4.4.2.2 主界面编程

  基本思路:

  程序分MDIForm1窗体程序代码和Model1模块程序代码。MDIForm1主窗体代码完成的重大职能是:建立序列数据库的连日;建立与SolidWorks主程序的连年;打开历次设计记录表;调整窗口中各部件的地点、初步化界面;指定菜单栏、工具栏的单击事件,指定状态栏的来得内容。Model1模块代码里根本存放在整个系列软件共用的公家变量,公共函数等。

       1)主窗体MDIForm1的窗体代码:   

  Private Sub MDIForm_Load() ‘界面起先化

       Picture1.Visible=False

       Picture2.Visible=False

       Me.StatusBar1.Panels(1).Text=”机械设计”

  Me.StatusBar1.Panels(2).Text=”日期:”+Format(Date,“yyyy年mm月dd日”)

       Set swApp=CreateObject(“Sldworks.Application”)
 ‘建立与SolidWorks主程序的连日

  Set conn=New ADODB.Connection   ‘建立序列数据库连接

  conn.ConnectingString=”Provider=microsoft.jet.oledb.4.0;data
source=” & App.Path &”\某机械设计.mdb”

       conn.Open

       Set rs=New ADODB.Recordset   ‘定义记录集对象

  rs.CursorLocation=adUseClient

       rs.Open “历次设计记录”,conn,adOpenStatic,adLockOptimistic

       rs.MoveLast

  End Sub

     
 当窗口大小爆发变化时应该自行调整主窗口内各控件的职务,以使各种控件都在窗口内,由MDIForm_Resize()函数完成这些功用。

  Private Sub MDIForm_Resize()

       Picture1.Width=Me.Width * 1/5

       Picture2.Width=Me.Width – Picture1.Width

       EModelViewControl1.Width=Picture2.Width

       EModelviewControl1.Height=Picture2.Height
        ….

       End Sub

     
 菜单栏是重要的顺序入口,由她成功各样模块的调用,菜单栏协会的是否站得住将一直影响系统的施用,当菜单项被单击时接触单击事件做到各模块的调用效用。

  Private Sub menu1_Click()   ‘系统规划

qg111钱柜娱乐官网,        xtsj.Show

  End Sub

     
 七个视图控制按钮,完成视图的转移,以便从各种角度观望模型。在按钮的单击事件里为eDrawing控件的ViewOrientation
项指定不同的值便可实现视图的变换,以左视图为例:

  Private Sub Command5_Click()   ‘左视图

       MDIForm1.EModelViewControl1.ViewOrientation=eMVOrientationLeft

  End Sub

     
 工具栏是指向各模块的疾速模式,可以在很大程度上加码系统的易用性,由Toolbar1_ButtonClick(ByVal
Button As
ComctlLib.Button)实现其效劳。当工具拦的按钮被单击时,首先判断按钮的重点字,依据重大字决定要推行的言语,实现对此外模块的调用效能。

  Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button)

        Select Case Button.key

        Case “zl”

                 zl1.Show   ‘主梁模块

        end Select

       End Sub

     
 退出系统时,要关门数据库,关闭SolidWorks应用程序,释放变量。由窗口卸载事件MDIForm_Unload(Cancel
As Integer)完成这个效应。

       Private Sub MDIForm_Unload(Cancel As Integer)

       rs.Close ‘ 关闭历次设计记录表

       Set rs=Nothing

       conn.Close   ‘关闭系统数据库

       Set conn=Nothing

       swApp.exitapp   ‘退出SolidWorks应用程序

       Set swApp=Nothing

       End Sub

       2)Moudle1
模块首要代码。在Moudle1模块里重点完成全套系统公共变量、公共函数的概念。

         (1)定义公共变量

         Option Explicit

         Public conn As ADODB.Connection    ‘数据库连接对象

         Public rs AS ADODB.Recordset   ‘历次设计表记录对象

         Public rss As ADODB.Recordset    ‘主梁模型关键数据表记录对象

         Public swApp As Object                
 ‘SolidWorks主程序连接对象

         …

         (2) printmodel(str)  公共函数

         Str为字符型变量,用于传递要显示模型的存储目录。 

         效用:展现视区界面,表现模型重建后的效应。

  Public Sub printmodel(str As String)

       MDIForm1.menu1.Enabled=False

       MDIForm1.menu2.Enabled=False

       ….

       MDIForm1.EModelViewControl1.OpenDoc str,True,True,False,””

       End  Sub

       (3) closemodel(str)  公共函数

  str 为字符型变量,用于传递要关张突显模型的目录。

  功效:关闭视区界面

        Public Sub closemodel(str As String)

        MDIForm1.menu1.Enabled=True

        …

        MDIForm1.EModelViewControl1.CloseActiveDoc str

        MDIForm1.Picture1.Visible=False

        MDIForm1.Picture2.Visible=False

        End Sub

        (4)read(r1.r2.form) 公共函数

         r1为数据表的记录集

         r2整形变量,从第r2个字段读出内容;

        form为窗口指针变量,用于传递所要操作的窗口。

       
效率:从数据表的第r1条记下的第r2个字段读出内容,按对应涉及给form窗口的所有text控件赋值

        Public Sub read(r1 As ADODB.Recordset,r2 As Integer, Form As
Form) ‘r1记录 r2字段 form 窗口

        Dim i as single

        Dim j as single

        …

        str1=r1.Fields(r2)

        j=1

        For i=1 to Len(str1)

              If (Mid(str1,i,1)<>”#”)Then

                    temp=temp+Mid(str1,i,1)

              else

                    str(j)=temp

                    j=j+1

                    temp=””

              End if

        Next

         ….

   End Sub

      (5)Save(r1,r2,form)

          r1 为数据表的记录集

   r2整形变量,从第r2个字段读出内容

   from为窗口指针变量,用于传递所要操作的窗口。

   效用:按时应提到将form窗口所有text控件的值连接成特定的字符串,存储到数据表的第r1条记下的第r2个字段

         
 表明:第r1条记下的第r2个字段的习性为备注类型,以便能积存较长额字符串。

          Public Sub save (r1 As ADODB.Recordset,r2 As Integer, Form as
Form)  ‘ r1 记录,r2字段 ,form 窗口

          Dim i as single

          Dim j as single

          …

          For Each txt in Form.Controls

               If TypeOf txt Is TextBox Then

                      i=Mid(txt.Name,5,2)

                      if i>max Then 

                              max=i

                      End if 

                     ….

               End if 

          Next

          t1=StrComp(str1,r1.Fields(r2),vbTextCompare)

          If t1<>0 Then

             
 t1=MsgBox(“界面尺寸已经被改变,确实要保存数据吧?”,1,“数据更新”)

               …

          Endif 

           End Sub

          (6)find(r1,r2,r3)

            r1为数据表的记录集

           r2整形变量,从第r2个字段读出内容

           r3整形变量,从字段中读出第r3个数值

           效用:从数据表的第r1条记下的第r2个字段读出第r3个数字内容

  Public Function find(r1 As ADODB.Recordset,r2 AS Integer, r3 As
Integer) As string 

       Dim i as Single

       Dim j as Single

        …

        temp=””

        str1=r1.Fields(r2)

        j=0

        if r3=1 then

                i=1

                 while(Mid(str1,i,1)<>”#”)

                         temp=temp+Mid(str1,i,1)

                         i=i+1

                 WEnd

         Else

               for i=1 to Len(str1)

               If (Mid(str1,i,1)=”#”)Then

                    j=j+1

                    If (i>=r3-1)Then

                         Exit For

                    Endif 

               End if 

                next

                i=i+1

                While(Mid(str1,i,1)<>”#”)

                       temp=temp+Mid(str1,i,1)

                       i=i+1

                 Wend

        endif

         find=temp

       End function

        (7) find1(str1,r3)

         str1 字符串变量

   r3整形变量

   功能:从字符串str1中找出第r3个数字,作为函数重返。

        Public Function find1(str1 as String, r3 as Integer) As string

         Dim i as Single

         …..

         Dim temp as string 

         temp=””

          j=0

         If r3=1 then

                i=1

                while(Mid(str1,i,1)<>”#”)

                       temp=temp+Mid(str1,i,1)

                       i=i+1

                wend

          Else

           …..

        end if 

         find1=temp

        End function

相关文章