基于SolidEdge的智能图框属性编辑器发表时间:2008-8-18 丁建新高静丹来源:e-works介绍了基于SolidEdge,利用MicrosoftVisualStudio()进行二次开发的一个具有Windows界面的智能图框属性编辑器。
该编辑器使图框属性得到了统一的管理,不但可以接受用户的参数输入,并且又有智能继承功能,使我们在出图时更方便、快捷。
1、前言SolidEdge 是SIEMENS 公司旗下的一款基于Windows 环境的中高端CAD 软件。
它具有强大的二维和三维绘图功能,还提供了多种二次开发的途径,可以方便地开发出自己的应用程序来扩展SolidEdge 的功能,且界面友好,被广泛应用于各种行业中。
本公司自从引进SolidEdge 后,已将其应用到公司的各个领域,并在应用的基础上也对其进行了二次开发,智能图框属性编辑器就是其中一项二次开发的成果。
图框是工程师工作中最常用到的一种具有企业化特性的工具,随着业务量的增大,出图及图纸更新的速度明显的走快,对图框中一些内容的操作也变得极其的繁琐。
因此,对图框内容能够实现统一的管理并有一定的智能化,在保证工程师工作质量的同时提高其工作的速度,具有显著的实际应用意义,因此本人就开发了这个基于SolidEdge 的智能图框属性编辑器。
2、智能图框属性编辑器的开发智能图框属性编辑器,如图一所示,是将图框中所涉及到的需要修改的内容全部归纳在一起。
可以在自动识别工程图中所引用零件的零件名称、图号及比例等(如图二所示)的同时;接受用户的输入,并将这些数据的内容全部反应在相对应的图框中;也可以在进行图纸的更新时,自动识别原先图框中的属性值,以便进行数据的更新。
该编辑器的设计理念是用来提取、修改和增加SolidEdge中的参数信息,并通过SolidEdge 中的宏这个程序接口功能将开发的程序与SolidEdge完美结合,从而实现了图框属性的统一管理。
图1:(智能图框编辑器)图2:(智能图框编辑器工作启动状态)2.1 用户操作窗口的设计利用的可视化技术,可以创建用户的操作界面。
如图三所示,操作界面上主要分为四部分:设计属性、代号属性、技术要求及换版属性。
图3:(智能图框编辑器各工作界面)通过窗体的启动等控件来提取当前SolidEdge工程图所涉及的零部件信息,然后根据需要来对各个图框属性进行赋值,之后通过控件"确定"来实现对当前工程图图框中相关属性值的修改和增加,最后编写相关的程序代码。
对于智能图框属性编辑器,其核心代码是有关当前工程图的属性提取和修改、主视图比例的自动提取以及技术要求的输入。
2.2 程序代码及实现技术程序代码是针对用户界面各个控件的一种语言说明。
在智能图框属性编辑器中,最主要的技术成份是窗体启动和控件"确定"的代码。
2.2.1 公用变量的声明Inherits System.Windows.Forms.FormPrivate objSheet, objDocument, objSolidEdge, objvr As ObjectDim objApp As SolidEdgeFramework.ApplicationDim objDoc As SolidEdgeDraft.DraftDocumentDim objSheet1 As SolidEdgeDraft.SheetDim objTxtboxs As SolidEdgeFrameworkSupport.TextBoxesDim objTxtbox As SolidEdgeFrameworkSupport.TextBox此段程序代码主要作用是对将要用到的变量进行声明。
2.2.2 窗口启动时的代码Me.InstructorTableAdapter.Fill(Me.InstructorDataSet.instructor)Me.MaterialTableAdapter.Fill(Me.InstructorDataSet.material)On Error Resume NextobjSolidEdge = NothingobjSolidEdge = GetObject(, "SolidEdge.Application")If objSolidEdge Is Nothing ThenMsgBox("您必须在SolidEdge工程图环境下才能使用本程序。
")EndEnd IfOn Error GoTo 0On Error Resume Nextobjvr = objSolidEdge.ActiveDocumentIf Err.Number ThenMsgBox("当前没有活动的文件")EndEnd IfMe.Height = 423Me.Width = 362On Error GoTo 0初始数据载入设计者.Items.Add("设计者A")设计者.Items.Add("设计者B ")校对者;表面处理;说明;备注等ComboBox控件的数据载入方法和控件设计者的数据载入方式一样,当然也可以用数据库的形式进行加载。
Select Case objSolidEdge.ActiveEnvironmentCase "Detail" 图纸环境SSTab2.SelectedIndex = 0读入以前输入的信息On Error Resume Next设计属性图号.Text = objvr.Properties.Item("Custom").Item("图号").Value零件名称.Text = objvr.Properties.Item("Custom").Item("零件名称").Value设计者、设计日期以及代号属性等数据的读取依此类推比例自动On Error Resume NextIf 中间变量.Text = 0 ThenIf objvr.activesheet.DrawingViews.Item(1).ScaleFactor < 1 Then图纸比例.Text = "1:" & Format(1 / objvr.activesheet.DrawingViews.Item (1).ScaleFactor)Else图纸比例.Text = Format(objvr.activesheet.DrawingViews.Item(1).ScaleFactor) & ":1"End IfButton8.Visible = TrueButton9.Visible = FalseElse图纸比例.Enabled = True图纸比例.Text = objvr.Properties.Item("Custom").Item("图纸比例").ValueButton9.Visible = TrueButton8.Visible = FalseEnd If更新显示Call objvr.UpdatePropertyTextDisplay()此段程序代码(已将一些通用代码缩减,只保留了重要部分)主要作用是当启动程序后:程序自动检测打开程序的工作环境,因为本程序只允许在SolidEdge工程图环境下使用;程序中的各个ComboBox控件被赋值;程序自动读取当前工程图中的已有数据并加载到程序相对应的控件上以便修改;程序自动捕捉当前工程图的主视图比例。
初始数据载入设计者.Items.Add("设计者A")设计者.Items.Add("设计者B ")校对者;表面处理;说明;备注等ComboBox控件的数据载入方法和控件设计者的数据载入方式一样,当然也可以用数据库的形式进行加载。
Select Case objSolidEdge.ActiveEnvironmentCase "Detail" 图纸环境SSTab2.SelectedIndex = 0读入以前输入的信息On Error Resume Next设计属性图号.Text = objvr.Properties.Item("Custom").Item("图号").Value零件名称.Text = objvr.Properties.Item("Custom").Item("零件名称").Value设计者、设计日期以及代号属性等数据的读取依此类推比例自动On Error Resume NextIf 中间变量.Text = 0 ThenIf objvr.activesheet.DrawingViews.Item(1).ScaleFactor < 1 Then图纸比例.Text = "1:" & Format(1 / objvr.activesheet.DrawingViews.Item (1).ScaleFactor)Else图纸比例.Text = Format(objvr.activesheet.DrawingViews.Item(1).ScaleFactor) & ":1"End IfButton8.Visible = TrueButton9.Visible = FalseElse图纸比例.Enabled = True图纸比例.Text = objvr.Properties.Item("Custom").Item("图纸比例").ValueButton9.Visible = TrueButton8.Visible = FalseEnd If更新显示Call objvr.UpdatePropertyTextDisplay()此段程序代码(已将一些通用代码缩减,只保留了重要部分)主要作用是当启动程序后:程序自动检测打开程序的工作环境,因为本程序只允许在SolidEdge工程图环境下使用;程序中的各个ComboBox控件被赋值;程序自动读取当前工程图中的已有数据并加载到程序相对应的控件上以便修改;程序自动捕捉当前工程图的主视图比例。
2.2.3 控件"确定"程序代码开始写入属性Select Case objSolidEdge.ActiveEnvironmentCase "Detail" 图纸环境Call objvr.Properties.Item("Custom").Add("图号", 图号.Text)其它如零件名称、设计日期等依此类推中间变量Call objvr.Properties.Item("Custom").Add("中间变量", 中间变量.Text)End Select技术要求Dim i As IntegerFor i = 0 To ListBox2.Items.Count - 1TextBox2.Text = TextBox2.Text + Chr(49 + i) + "." + ListBox2.Items.Item(i) + Chr(13) + Chr(10)TextBox2.Text = TextBox2.Text + Chr(49 + i) + "." + ListBox2.Items.Item(i)TextBox2.Text = TextBox2.Text + Chr(13)Next iIf 启用.CheckState = CheckState.Checked ThenCreate/get the application with specific settingsOn Error Resume NextobjApp = GetObject(, "SolidEdge.Application")objDoc = objApp.ActiveDocumentobjSheet1 = objDoc.ActiveSheetCreate a TextBox objectobjTxtboxs = objSheet1.TextBoxesobjTxtbox = objTxtboxs.Add(x1:=0.04, y1:=0.11, z1:=0)If CheckBox1.CheckState = CheckState.Unchecked Then objTxtbox.Edit.TextSize = "0.0035"objTxtbox.Edit.Font = "宋体"objTxtbox.Edit.AspectRatio = "1"objTxtbox.Text = "技术要求:" + Chr(13) + TextBox2.Text ElseobjTxtbox.Edit.TextSize = "0.0035"objTxtbox.Edit.Font = "Arial"objTxtbox.Edit.AspectRatio = "1"objTxtbox.Text = "Notice:" + Chr(13) + TextBox2.Text End IfobjApp = NothingEnd If更新显示Call objvr.UpdatePropertyTextDisplay()End此段程序代码(已将一些通用代码缩减,只保留了重要部分)的主要作用是将用户输入的参数信息保存到当前打开的工程图中,其中比较有特色的是技术要求的输入这段代码,它完全控制了SolidEdge中TEXT这个参数。