UG二次开发简明文档
- 格式:pdf
- 大小:286.32 KB
- 文档页数:31
目录第一章绪论 (1)1.1 课题背景 (1)1.1.1 研究背景 (1)1.1.2 研究的意义 (5)1.2 主要设计思想及研究内容 (6)1.3 UG/OPEN Grip二次开发技术 (7)1.3.1 UG/OPEN Grip简介 (7)1.3.2 UG/OPEN Grip的应用范围 (8)1.3.3 UG/OPEN Grip语言 (9)1.3.4 UG/OPEN Grip的人机优点 (10)1.4 本章小结 (10)第二章建立刨床机构数学模型 (11)2.1 牛头刨床机构各部件的作用 (11)2.2 绘制刨床机构简图 (12)2.3 建立刨床机构的数学模型 (13)2.3.1 位移公式的建立 (13)2.3.2 速度公式的建立 (13)2.3.3 加速度公式的建立 (14)第三章利用UG/OPEN Grip语言进行静态建模 (15)3.1 GRADE编译GRIP的方法 (15)3.2 静态建模 (17)3.2.1 GRIP程序的结构介绍 (17)3.2.2 初始设置 (18)3.2.3 建立静态实体模型 (18)3.3 本章小结 (23)第四章刨床机构运动分析 (24)4.1 主要设计思想 (24)4.2 建立刨床机构的运动坐标系 (24)4.3 刨床机构运动模型 (25)4.3.1 绝对运动模型 (25)4.4 程序设计思想流程图 (26)4.5 选择运动机构 (27)4.6 编制刨床机构运动程序 (27)4.6.1 运动方式的确定 (27)4.6.2 实现各杆件的运动 (27)4.7 刨床机构各构件的输出曲线 (31)4.7.1 输出曲线的意义 (31)4.7.2 各杆的速度,加速度等曲线及值的输出 (32)4.8 本章小结 (40)第五章优化并完善设计软件 (41)5.1 查询功能的实现 (41)5.1.1 建立查询窗口 (41)5.1.2 设计思想 (41)5.1.3 实现查询功能 (41)5.1.4继续查询及重新运动分析 (43)5.2 本章小结 (44)第六章结论 (45)1 全文总结 (45)2 有待进一步的研究工作 (45)参考文献 (46)致谢 (47)第一章绪论1.1 课题背景1.1.1 研究背景1.刨床机构的发展趋势机械系统动力学分析是一个很古老的研究课题,现在的解决方法已经很多。
211设置计算机环境首先建立UG二次开发的工作目录,假定工作目录为X盘根目录下的ug_develop文件夹;其次,在文件夹中新建app lication和startup 两个子文件夹;然后设置变量名、变量值分别为“UGII_USER_D IR”与“X: \ ug_develop”的环境变量。
212新建MFC工程启动Visual C + + , 在“Projects”标签页中选择“MFC AppWizard”,新建一个名为locate 的dll工程。
213设置VC环境通过浏览对locate工程加入UGOPEN中libvmath2pp. lib、libugopenint. lib和libufun. lib三个UG库函数,如图3所示。
图3添加三个库函数214实现VC与UG的交互如图4 所示,在“p roject set2ting”对话框中, 选择标签“De2bug”, 在“Executable for debugsession”项中浏览到UG的可执行文件ugraf. exe,经过VC 中编译与链接后,点击运行时VC则会调用UG; 然后选择标签link,在该对话框中“Output file name”栏中写入dll文件所要存放的路径“D: \ug_develop \ app lication \ locate. dll”。
选择菜单“Tools”的子菜单项“Op tions”,在“Op2tions”对话框中选择标签“Directories”。
在“Show direc2tories for”下拉框中选择“Include files”项,双击空白项,浏览到UG安装路径,最后选择UGOPEN文件夹。
之后选择下拉框中的“L ibrary files”, 同样的方法把UGOPEN浏览进来,最终完成VC和UG的交互。
3.2 用户菜单的开发利用文本编辑菜单文件locate.men, 最终实现的用户菜单界面如图5。
菜单文件如下:VERSION 170EDIT UG_GATEWAY_MAIN_MENUBARBEFORE UG_HELPCASCADE_BUTTON MENU_LOCATELABEL 夹具END_OF_BEFOREMENU MENU_LOCATEBUTTON MENU_LOCATE1LABEL 定位系统ACTIONS ApplicationEND_OF_MENU3.3 界面设计及其功能实现方式3.3.1 用户界面开发根据以上的理论分析, 笔者课题组开发了基于MFC和UG 的计算机辅助定位方案分析系统。
UG的二次开发1。
建立两个目录。
建立第一个目录E:\my_first_UG,在这个目录下建立两个新的目录:E:\my_first_UG\application 和E:\my_first_UG\startup。
建立第二个目录E:\my_source,用存放你的源代码。
2。
设置环境变量。
再Windows中设置一个新的环境变量:UGII_USER_DIR=E:\my_first_UG。
3。
打开UG,进入UIStyler应用(在Application菜单的最后)。
4。
设计一个对话框。
1)在"Dialog Title"一栏填入:First Dialog,按Apply(每次输入完成后,都要按Apply,为避免?嗦,以后不再提及)。
2)在"Cue"一栏输入:%……%¥%¥¥##*%*(*(*―*―((,什么都行,呵呵。
3)在"Prefix Name"中,把CHANGE改为MY。
4)加入四个控件。
String,Push Button,Label和Single Select List编辑对话框的各个控件。
1)改变String控件的标题,标识和长度。
Label “String” -> “Input an item”.Identifier "STR_0" -> "ITEM"Width in... 0 -> 202) 改变Push Button控件的标题,标识和回调函数的名字。
Label "Push Button" -> "Import"Identifier "ACTION_1" -> "IMPORT"callbacks "action_1_act_cb" -> import_cb把"Creates Dialog"激活。
ug二次开发介绍————————————————————————————————作者:————————————————————————————————日期:UG二次开发功能简介Unigraphics(UG)是美国UGS公司的集CAD/CAM/CAE于一体的软件集成系统,功能覆盖整个产品的开发过程:从概念设计、功能工程、功能分析到制造,在航空航天、汽车、机械、模具和家用电器等工业领域的应用非常广泛。
UG软件提供了功能强大的二次开发(应用开发)模块,利用该模块可对UG系统进行用户化裁减和开发。
UG/Open是一系列UG开发工具的总称,主要由UG/Open API、UG/Open GRIP、UG/Open MenuScript和UG/Open UIStyler四部分组成。
UG/Open API (又称User Function ),是一个允许程序访问并改变UG对象模型的程序集。
UG/Open API 封装了近2000个UG操作的函数,它可以对UG的图形终端、文件管理系统和数据库进行操作,几乎所有能在UG界面上的操作都可以用UG/Open API 函数实现。
UG/Open API程序按其连接方式分为两种,内部模式(Internal环境) 和外部模式(External 环境)。
采用内部模式开发的程序只能在UG 的界面环境(Session)下运行,其优点是可以连接的更快且程序更小并能与用户交互;采用外部模式开发的程序能在操作系统中独立执行,其缺点是无法实时显示图形与用户交互,值得注意的是部分函数只能在内部模式下执行。
UG/Open API 程序使用的是C 或C + + 编程语言。
基于Windows操作系统的UG二次开发可以在VC + + 6.0或环境下进行,VC提供的各类库函数和丰富的编程资源进一步提升了UG/Open API的功能,同时也为集成企业原有的C/C++语言程序提供了方便。
UG/Open GRIP ( Graphics Interactive Programming) 是一种专用的图形交互编程语言,与UG系统集成,可以实现UG环境下的大多数应用操作。
1、系统环境设置:安装目录为:D:\ugnx4.0,用户工作目录为:E:\ugnx4.0。
(1)将Ug安装目录下的D:\ugnx4.0\UGII\ugii_env.dat文件中:#UGII_VENDOR_DIR=${UGALLIANCE_DIR}\vendor#UGII_SITE_DIR=${UGALLIANCE_DIR}\site#UGII_USER_DIR=${HOME }(该语句是用来设置用户自己二次开发内容的目录)改为:UGII_USER_DIR=E:\ugnx4.0去掉前面的注释符号“#”,以使它们起作用;将${HOME }改为用户工作目录。
(2)Tools->option,Directories,include files把D:\UGNX4.0\UGOPEN路径加入。
2、新建工程Microsoft Visual C++ 6.0安装目录为:D:\Program Files。
File->new,projects,选择Unigraphics NX AppWizard V1;(检查安装目录D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Template下是否有文件ugopen.awx及ugopen.hlp,如果没有,将这两个文件复制到上述文件夹中)(下载UgOpen_v19.rar)(Ctrl+F7)compile 编译运行,(F7)build 生成.dll 文件。
3、在UG 用户工作目录E:\ugnx4.0下新建startup 和application 文件夹startup 文件夹下存放:.men 和.dll 文件;application 文件夹下存放:.dlg 和.bmp 文件注意:改为:否则出现下述错误:。
UG软件二次开发工具的使用UG软件是美国EDS公司开发的一套集CAD/CAM/CAE为一体的高端软件。
由于其强大的设计、分析、制造和产品数据管理的功能,国内外许多企业都将它作为首选软件。
但是UG软件与其它CAD软件一样是一个通用软件,专业针对性差,因而不能满足各种各样具体产品的设计需要,在实际的工程设计中难以达到理想的效果,几乎不能真正实现灵活高效的特点。
因而UG软件的二次开发就成为CAD技术推广应用过程中必须面对和解决的课题之一。
二次开发就是把商品化、通用化的CAD系统用户化,本地化的过程,二次开发后能大大提高设计人员的设计效率,缩短设计周期。
因此UG软件的二次开发人员必须掌握几种UG软件的开发工具及其使用方法,才能为企业开发出本地化的UG软件。
UG/Open是一系列UG开发工具的总称,是UG软件为用户或第三方开发人员提供的最主要的开发工具。
它主要由UG/OpenGR IP、UG/Open API、UG/Open MenuScrip t和 UG/ Open UISt yler 四个部分组成。
一、UG/OPEN GRIPUG/OPEN GRIP(Graphics Interactive Programming)是一种专用的图形交互编程语言。
这种语言与UG系统集成,能够实现强大的图形绘制、装配、工程图的生成和一定的文件管理功能,主要进行UG的功能调用。
GRIP程序一般是在UG平台下编制的,有独特的开发工具、编译链接过程、程序语法和文件格式,具体开发过程如下:(一)编写源程序:在UG Open GRIP环境界面中,选择Edit,用记事本创建或打开一个.grs文件,也就是GRIP源文件。
(二)编译源程序:选择Compile对源程序进行编译生成扩展名为.gri的编译文件,如果主程序中含有子程序,则两者要分别进行编译,链接时主程序自动对子程序进行链接。
(三)链接程序:选择Link将扩展名为.gri的文件链接生成可执行的GRIP文件,扩展名为.grx,这个文件就是UG可以识别的执行文件。
搭建UG二次开发框架的文档一、设置环境变量如图:反键“我的电脑”,选择pop菜单中的“属性”。
在“属性”对话框中选择“高级”选项卡。
点击“环境变量”,进入“环境变量”对话框。
在Administrator的用户变量中新建一个变量UGII_USER_DIR。
其中,变量值是二次开发时“application”和“startup”所在的目录路径。
二、建立二次开发的目录按照上面设置的用户环境变量中给出的变量值,在F盘中建立一个文件夹:KONKA。
然后在KONKA中新建三个文件夹:application,startup,mysource。
三、在UG中建立UI Styler对话框在application中选择User Interface Styler 模块。
进入界面后利用UG本身提供的控件进行界面设计,特别注意,如果希望进入对话框后鼠标呈选择状态,请勾选Selection选项卡中的Enable Selection选项。
如图:在这里,特别介绍一种较特殊的控件的用法——Tool Palette。
例如我要生成如图的对话框中的Tool Palette——步骤:在Attributes选项卡中的Bitmaps中给出的是一个后缀为ubm的文件目录。
此文件的生成方式如下:在application文件夹中建立一系列的图标(*.bmp)。
新建一个文本文件,其中按如下格式写文件,效果是在“步骤”中按文件名的前后顺序显示图标。
List Items中按排给出的文字是对每一个图标功能的提示说明。
保存对话框到application文件夹,这样,就有3个文件被保存了:*.dlg,*.h,*.c。
四、在VC++上搭建开发平台1).将*.h和*.c文件剪切到mysource文件夹中,打开VC++,在mysource中新建一个DLL工程,将*.h和*.c文件添加到该工程里。
2).在Tools主菜单里选择Option子菜单。
在Directories 选项卡中的“include files和Library files”中给出UGOPEN 的路径。
1_UG二次开发实用教程第一章编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(1_UG二次开发实用教程第一章)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为1_UG二次开发实用教程第一章的全部内容。
第1章二次开发应用初步UG/NX是当今世界上最先进和高度集成的、面向制造行业的CAD/CAE/CAM软件系统,可用于产品的整个开发过程,包括产品概念设计、建模、分析和加工。
UG/NX 以其强大的设计和加工功能而著称,可以支持目前市场上销售的不同厂家的所有工作站及微机平台,广泛应用于通用机械、模具、汽车及航空航天领域,被很多世界著名公司选定为企业计算机辅助设计、分析、制造的标准。
从20世纪60年代起UG就一直代表着工程制造业CAD/CAM软件产品的最高水平。
20世纪90年代,UG进入中国市场,受到广大CAD/CAM用户的欢迎。
UG在中国的用户已超过1000多家,装机量达到350 多套。
这是因为UG是一个集成化、全面、一体的软件,它包括设计、加工、分析和最流行的产品数据管理(PDM),给企业提供了一个全面的解决方案。
1.1 CAD软件的二次开发随着CAD应用领域的不断扩大和应用水平的不断提高,用户需求与CAD系统规模之间的矛盾日益增加,没有一个CAD系统能够完全满足用户的各种需求.作为商品化的CAD软件产品,是否拥有一个开放的体系结构,是衡量该软件的优劣性、适用性和生命力的重要标志,而是否拥有一个开发简便、运行高效的二次开发平台又是开放式体系结构的核心和关键.目前,主流的CAD软件都具有用户定制功能并提供二次开发工具。
通过CAD软件的二次开发工具可以把商品化、通用化的CAD系统用户化、本地化、即以CAD系统为基础平台,在软件开发商所提供的开发环境与编程接口基础之上,根据自身的技术需要研制开发符合相关标准和适合企业实际应用的用户化、专业化、知识化、集成化软件,以进一步提高产品研发的效率。
UG二次开发模板UG软件是由德国西门子公司开发的,是一款面向PLC编程的工程软件。
UG软件具有强大的PLC编程功能,可以满足不同行业和应用的需求。
UG软件支持二次开发,用户可以根据自己的需求进行自定义编程和功能扩展。
本文将介绍UG软件的二次开发模板。
UG软件的二次开发主要包括两部分:PLC程序编程和界面开发。
PLC程序编程是UG软件的核心功能,用户可以通过编写PLC程序来控制设备的运行。
UG软件提供了多种编程语言的支持,包括Ladder Diagram (LD)、Instruction List(IL)、Structured Text(ST)等。
用户可以根据自己的编程习惯和需求选择合适的编程语言。
UG软件的界面开发可以通过组态工具实现。
组态工具提供了丰富的控件库,用户可以通过拖拽控件和设置属性来设计界面。
UG软件还支持界面与PLC程序的绑定,用户可以通过界面操作来控制PLC程序的执行。
以下是UG软件二次开发的模板代码:1.PLC程序编程:```Structured TextPROGRAM MainVARx:BOOL;END_VARNETWORK1:x:=TRUE;END_NETWORK```以上代码是一个简单的PLC程序,它定义了一个变量x,并将其赋值为TRUE。
2.界面开发:```xmlTitle="UG界面" Height="350" Width="525"><Grid><Button Content="Start" Width="100" Height="50"Click="Button_Click"/></Grid></Window>```以上代码是一个简单的界面,它包含一个按钮,当按钮被点击时触发Button_Click事件。
UG二次开发【快速出车间文档】UG附带的出车间文档需要进行运算,这样一来,出车间文档在程序刀路形成很慢的情况下这运算速度让人接受不了;下图是做的一个简易车间文档示例:程序使用,下边是源代码:(代码中SnapPic.exe 为VB做的抓图工具)Option Strict OffImports SystemImports System.IOImports NXOpenImports NXOpen.CAMImports NXOpen.UFImports NXOpen.UtilitiesImports System.DrawingImports System.Windows.FormsModule Module1Dim theSession As Session = Session.GetSession()Dim myUI As UI = UI.GetUI()Dim theUFSession As UFSession = UFSession.GetUFSession()Dim theWorkPart As Part = theSession.Parts.WorkDim mytag() As NXOpen.Tag'选择的加工操作标记数组Dim mcount As Integer'选择的加工操作数量Sub Main()Shell(Environment.GetEnvironmentVariable("UGII_USER_DIR ") + "\UDO\Post\SnapPic.exe", AppWinStyle.NormalFocus, True)Try'获取选择的操作数theUFSession.UiOnt.AskSelectedNodes(mcount, mytag)If mcount = 0 ThenMsgBox("没有选择加工操作!", MsgBoxStyle.OkOnly, "提示信息")Exit SubEnd If'设置车间文档EXCEL模板路径Dim fp As String= Environment.GetEnvironmentVariable("UGII_USER_DIR") + "\UDO\Post\WorkShop.xls"'打开与写出车间文档If String.IsNullOrEmpty(fp) = False ThenDim myExcel As New MY_EXCELmyExcel.Create()myExcel.Open(fp)myExcel.Write("M4", AskDisplatyPartName())myExcel.Write("S4", Format(Now, "yyyy/MM/dd"))myExcel.InsertPicture("b4",Environment.GetEnvironmentVariable("UGII_USER_DIR") + "\UDO\Post\jietu.jpg")For i = 0 To mcount - 1'输出结果myExcel.Write("B" + (i + 17).T oString, (i + 1).ToString)myExcel.Write("D"+ (i + 17).T oString, GetGemoGroup_Name(mytag(i)))myExcel.Write("E"+ (i + 17).ToString, GetToolPathName(mytag(i)))myExcel.Write("F" + (i + 17).ToString, GetToolName(mytag(i))) myExcel.Write("G"+ (i + 17).ToString, GetToolNumber(mytag(i)).T oString)myExcel.Write("H"+ (i + 17).ToString, GetToolDiameter(mytag(i)).ToString)myExcel.Write("I"+ (i + 17).ToString, GetToolCornerRadius(mytag(i)).ToString)myExcel.Write("J"+ (i + 17).ToString, GetToolHeight(mytag(i)).T oString)myExcel.Write("K"+ (i + 17).ToString, GetToolFluteLength(mytag(i)).T oString)myExcel.Write("L"+ (i + 17).ToString, GetStockPart(mytag(i)).T oString)myExcel.Write("M"+ (i + 17).T oString, GetStockFloor(mytag(i)).T oString)myExcel.Write("N"+ (i + 17).ToString, GetSpeedValue(mytag(i)).T oString)myExcel.Write("O"+ (i + 17).ToString, GetFeedValue(mytag(i)).T oString)myExcel.Write("Q"+ (i + 17).ToString,CInt(GetCutTime(mytag(i))).T oString)NextmyExcel.SaveAs()'myExcel.Quit()End If'出错处理:Catch ex As ExceptionMsgBox(ex)End TryEnd Sub'当前文档文件名Function AskDisplatyPartName() As StringDim UFS As UFSession = UFSession.GetUFSession()Dim part_name As String = ""Dim part_tag As NXOpen.Tag = UFS.Part.AskDisplayPartUFS.Part.AskPartName(part_tag, part_name)Dim aa() As StringDim bb() As Stringaa = Split(part_name, ".prt")part_name = aa(0)bb = Split(part_name, "\")part_name = bb(bb.Length - 1)Return part_nameEnd Function'取加工几何试图程序组Function GetGemoGroup_Name(ByVal camObjectTag As NXOpen.Tag) As StringDim theGemoGroup_Tag As NXOpen.TagDim GemoGroupName As String = ""theUFSession.Oper.AskGeomGroup(camObjectTag, theGemoGroup_Tag)theUFSession.Obj.AskName(theGemoGroup_Tag, GemoGroupName)Return GemoGroupNameEnd Function'取操作名称Function GetT oolPathName(ByVal camObjectTag As NXOpen.Tag) As StringDim ToolPathName As String = ""theUFSession.Oper.AskNameFromTag(camObjectTag, ToolPathName)Return ToolPathNameEnd Function'获取刀具名称Function GetT oolName(ByVal camObjectTag As NXOpen.Tag) As StringDim ToolName As String = ""Dim ToolTag As NXOpen.TagtheUFSession.Oper.AskCutterGroup(camObjectTag, ToolTag) theUFSession.Obj.AskName(T oolTag, ToolName)Return ToolNameEnd Function'获取刀具号码Function GetToolNumber(ByVal camObjectTag As NXOpen.Tag) As IntegerDim ToolTag As NXOpen.TagDim ToolNumber As IntegertheUFSession.Param.AskIntValue(T oolTag, UFConstants.UF_PARAM_TL_NUMBER, ToolNumber)Return ToolNumberEnd Function'获取刀具长度Function GetT oolHeight(ByVal camObjectTag As NXOpen.Tag) As DoubleDim ToolTag As NXOpen.TagDim ToolHeight As DoubletheUFSession.Oper.AskCutterGroup(camObjectTag, ToolTag) theUFSession.Param.AskDoubleValue(ToolTag, UFConstants.UF_PARAM_TL_HEIGHT, ToolHeight)Return ToolHeightEnd Function'获取刀具直径Function GetT oolDiameter(ByVal camObjectTag As NXOpen.Tag) As DoubleDim ToolTag As NXOpen.TagDim ToolDiameter As DoubletheUFSession.Oper.AskCutterGroup(camObjectTag, ToolTag) theUFSession.Param.AskDoubleValue(ToolTag, UFConstants.UF_PARAM_TL_DIAMETER, ToolDiameter) Return ToolDiameterEnd Function'获取刀具刃长Function GetToolFluteLength(ByVal camObjectTag As NXOpen.Tag) As DoubleDim ToolTag As NXOpen.TagDim ToolFluteLength As DoubletheUFSession.Param.AskDoubleValue(ToolTag, UFConstants.UF_PARAM_TL_FLUTE_LN, ToolFluteLength) Return ToolFluteLengthEnd Function'获取刀具R角Function GetToolCornerRadius(ByVal camObjectTag As NXOpen.Tag) As DoubleDim ToolTag As NXOpen.TagDim ToolCornerRadius As DoubletheUFSession.Oper.AskCutterGroup(camObjectTag, ToolTag) theUFSession.Param.AskDoubleValue(ToolTag, UFConstants.UF_PARAM_TL_COR1_RAD, ToolCornerRadius) Return ToolCornerRadiusEnd Function'取部件侧部余量Function GetStockPart(ByVal camObjectTag As NXOpen.Tag) As DoubleDim StockPart As DoubletheUFSession.Param.AskDoubleValue(camObjectTag, UFConstants.UF_PARAM_STOCK_PART, StockPart)Return StockPartEnd Function'取部件底部余量Function GetStockFloor(ByVal camObjectTag As NXOpen.Tag) As DoubleDim Stockfloor As DoubletheUFSession.Param.AskDoubleValue(camObjectTag, UFConstants.UF_PARAM_STOCK_FLOOR, Stockfloor)Return StockfloorEnd Function'取主轴转速Function GetSpeedValue(ByVal camObjectTag As NXOpen.Tag) As DoubleDim SpeedVale As DoubletheUFSession.Param.AskDoubleValue(camObjectTag, UFConstants.UF_PARAM_SPINDLE_RPM, SpeedVale)Return SpeedValeEnd Function'取进给速度Function GetFeedValue(ByVal camObjectTag As NXOpen.Tag) As DoubleDim FeedValue As DoubleDim_camObject As NXObject= NXObjectManager.Get(camObjectTag)Dim params(0) As CAM.Operationparams(0) = CType(_camObject, Operation)Dim FeedsBuilder1 As ObjectsFeedsBuilder= theSession.Parts.Work.CAMSetup.CreateFeedsBuilder(params) FeedValue = FeedsBuilder1.FeedsBuilder.FeedCutBuilder.ValueFeedsBuilder1.Destroy()Return FeedValueEnd Function'取切削时间Function GetCutTime(ByVal camObjectTag As NXOpen.Tag) As DoubleDim CutTime As DoubletheUFSession.Param.AskDoubleValue(camObjectTag, 142,CutTime)Return CutTimeEnd FunctionPublic Function GetUnloadOption(ByVal dummy As String) As Integer'Unloads the image immediately after execution within NXGetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately'----Other unload options-------'Unloads the image when the NX session terminates'GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination'Unloads the image explicitly, via an unload dialog'GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Explicitly'-------------------------------End FunctionEnd ModulePublic Class MY_EXCELPrivate app As ObjectPrivate book As ObjectPrivate sheet As Object'表格名称Public Property xlSheetName() As StringGetReturn End GetSet(ByVal value As String) = valueEnd SetEnd Property'新建程序Public Function Create() As Booleanapp = CreateObject("Excel.Application")If app Is Nothing ThenReturn FalseElseapp.Visible = TrueReturn TrueEnd IfEnd Function'打开文件Public Sub Open(ByVal xlFileName As String)book = app.Workbooks.Open(xlFileName)sheet = book.ActiveSheetEnd Sub'写单元格Public Sub Write(ByVal_Range As String, ByVal value As Object)If _Range <> ""Thensheet.Range(_Range).Value = valueEnd IfEnd Sub'插入图片Public Sub InsertPicture(ByVal_Range As String, ByVal imageFile As String)If _Range <> ""ThenDim ExcelRange As Object = sheet.Range(_Range)Dim Ins_image As ImageIns_image = Image.FromFile(imageFile)Dim HeightScale As Double= Math.Round((ExcelRange.Height * 12 - 6) / Ins_image.Height, 2) Dim WidthScale As Double= Math.Round((ExcelRange.Width * 15 - 6) / Ins_image.Width, 2) Dim ScaleHW As Double= Math.Min(HeightScale, WidthScale)sheet.Shapes.AddPicture(imageFile, 0, 1, ExcelRange.Left + 2, ExcelRange.T op + 2, Ins_image.Width * ScaleHW, Ins_image.Height * ScaleHW)Ins_image.Dispose()End IfEnd Sub'取指定单元格值Public Function GetValue(ByVal_table As Integer, ByVal _Range As String) As StringDim sheet As Object = book.Sheets.Item(_table)Return sheet.Range(_Range).valueEnd FunctionPublic Function Save() As Booleanbook.Save()End FunctionPublic Function SaveAs() As BooleanDim Sdlg As SaveFileDialog = New SaveFileDialog'定义一个保存对话框Sdlg.FileName = AskDisplatyPartName() + "加工工序单.xls"'保存对话框的默认文件名Sdlg.Filter = "EXCEL档案(*.xls)|*.xls"'过滤器设置If Sdlg.ShowDialog = Windows.Forms.DialogResult.OK Then '如果保存对话框的确认按钮被按下book.SaveAs(Sdlg.FileName) '保存文件End IfEnd Function'结束EXCEL对象Public Function Quit() As Booleanbook.close()app.Quit()app = NothingGC.Collect()End Function'取数组Public Function GetArryValue(ByRef _table As Integer, ByVal _Row As String, ByVal _Cell As String, ByRef ArryString() As String) As IntegerDim sheet As Object = book.Sheets.Item(_table)Dim rowvalue As String = sheet.Range(_Row).valueDim cellvalue As String = sheet.Range(_Cell).valueDim k As Integer = 0If rowvalue <> ""And cellvalue <> ""ThenDim rowstr() As String = Split(rowvalue, "/")Dim cellstring() As String = Split(cellvalue, "/")Dim a, b, c, d As IntegerIf rowstr.Length > 1 And cellstring.Length > 0 Thena = Convert.T oInt32(rowstr(0))b = Convert.T oInt32(rowstr(1))If a > 0 And b > a ThenReDim Preserve ArryString(b - a)For i As Integer = 0 To b - aArryString(i) = cellstring(0) & Convert.ToString(a + i)k += 1NextIf rowstr.Length > 3 And cellstring.Length > 1 Thenc = Convert.ToInt32(rowstr(2))d = Convert.T oInt32(rowstr(3))If c > 0 And d > c ThenReDim Preserve ArryString(b - a + d - c + 1)For j As Integer = 0 To d - cArryString(b - a + j + 1) = cellstring(1) & Convert.ToString(c + j)k += 1NextEnd IfEnd IfEnd IfEnd IfEnd IfReturn kEnd FunctionEnd Class。
ug二次开发与实例精解(pdf+源代码)摘要:1.UG 二次开发的概述2.UG 二次开发的实例精解3.UG 二次开发的优势与应用场景4.总结正文:UG 二次开发与实例精解(pdf+源代码) 是一本关于UG (Unigraphics)二次开发的教程,旨在帮助读者深入了解UG 二次开发的相关知识和技巧。
在这里,我们将分四个部分来详细介绍这个主题。
首先,我们将介绍UG 二次开发的概述。
UG 是一款广泛应用于工业设计领域的CAD/CAM 软件,二次开发是指在原有软件基础上,通过编程技术扩展和优化其功能,以满足特定需求。
在UG 中,二次开发可以通过编写脚本(如C++、VBA 等)或使用UG 提供的API 接口实现。
这使得用户可以根据自己的需求定制UG,提高设计效率和精度。
接下来,我们将通过实例精解来具体介绍UG 二次开发的应用。
实例涵盖了UG 建模、加工编程、数据管理等方面的二次开发。
通过这些实例,读者可以了解到如何运用C++和VBA 编程语言,以及如何使用UG API 接口来实现自定义功能。
这些实例可以帮助读者快速掌握UG 二次开发的技巧,并在实际工作中应用。
在第三个部分,我们将讨论UG 二次开发的优势与应用场景。
通过二次开发,用户可以自定义UG 的功能和操作界面,提高工作效率;可以实现与其他软件的集成,实现数据交换和对接;还可以开发专用的工具和插件,满足特定领域的需求。
这些优势使得UG 二次开发在工业设计领域具有广泛的应用前景。
此外,我们还将介绍一些典型的应用场景,以帮助读者更好地理解UG 二次开发的实际意义。
最后,我们将对本文的内容进行总结。
通过本文的介绍,读者应该能够了解UG 二次开发的基本概念、方法和应用,为进一步学习和实践打下基础。
总之,UG 二次开发与实例精解(pdf+源代码) 是一本实用的教程,旨在帮助读者掌握UG 二次开发的相关知识和技巧。
UG二次开发功能简介Unigraphics(UG)是美国UGS公司的集CAD/CAM/CAE于一体的软件集成系统,功能覆盖整个产品的开发过程:从概念设计、功能工程、功能分析到制造,在航空航天、汽车、机械、模具和家用电器等工业领域的应用非常广泛。
UG软件提供了功能强大的二次开发(应用开发)模块,利用该模块可对UG系统进行用户化裁减和开发。
UG/Open是一系列UG开发工具的总称,主要由UG/Open API、UG/Open GRIP、UG/Open MenuScript和UG/Open UIStyler四部分组成。
UG/Open API (又称User Function ),是一个允许程序访问并改变UG对象模型的程序集。
UG/Open API 封装了近2000个UG操作的函数,它可以对UG的图形终端、文件管理系统和数据库进行操作,几乎所有能在UG界面上的操作都可以用UG/Open API 函数实现。
UG/Open API程序按其连接方式分为两种,内部模式(Internal环境) 和外部模式(External 环境)。
采用内部模式开发的程序只能在UG 的界面环境(Session)下运行,其优点是可以连接的更快且程序更小并能与用户交互;采用外部模式开发的程序能在操作系统中独立执行,其缺点是无法实时显示图形与用户交互,值得注意的是部分函数只能在内部模式下执行。
UG/Open API 程序使用的是C 或C + + 编程语言。
基于Windows操作系统的UG二次开发可以在VC + + 6.0或环境下进行,VC提供的各类库函数和丰富的编程资源进一步提升了UG/Open API的功能,同时也为集成企业原有的C/C++语言程序提供了方便。
UG/Open GRIP ( Graphics Interactive Programming) 是一种专用的图形交互编程语言,与UG系统集成,可以实现UG环境下的大多数应用操作。