某机械设备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()   ‘系统规划

        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

发表评论

电子邮件地址不会被公开。 必填项已用*标注