UG二次开发学习进阶帮手——操作录制
2010-11-19 17:14
405 查看
什么是操作录制?这是UG NX系列中增加的可以录制手工操作命令的工具。录制的一系列NXOpen程序命令。通过这些命令可以重现操作。当然,从中我们也可以用来学习NXOpen。 然而,录制的程序往往是记录我们手工操作的命令流,其中很多信息是固定的操作,不具有灵活性。可以重现整个手工操作过程。同时,不是所有的命令都能够被录制。正如UG Help系统所说的:有些命令不能被记录,有些命令只能部分记录。正如我以前的帖子说过,UG有个两个开发包Open和NXOpen,Open主要是API和包装 API的类。NXOpen是类库。操作录制的结果是NXOpen程序形式。但是Open在某些细节上要强于NXOpen。所以,操作录制不能代替二次开发。 虽然如此,UG操作录制确实有很多意义:通过文本重现整个操作;改变程序内容可以适度的变动操作过程,不用重做整个操作;通过这个记录可以帮助我们学习NXOpen程序。 现在,我们来录制一个创建block的命令流。 我用的是NX6,其他版本差不多。 在菜单【首选项】里选择【用户界面】。 在对话框“用户界面首选项”中的【操作记录】Tab中选择【选择操作记录语言】。 UG NX6支持java、C#、C++等语言命令录制,其中C#是NX6新加入支持的。 现在在菜单【工具】中选择【操作记录】,其中有下面三个常用命令: 录制-暂停录制-停止录制 当然也可以选择工具条【操作录制】。 选择【录制】,选择保存录制命令程序的目录。 之后UG的菜单和工具条上会出现可录制的标示,如果没有的命令是不能被录制的。
选择block命令弹出创建block的对话框。 我就是改了长宽高为10、20、30,点击确定生成block。 点击保存按钮。 选择【停止录制】结束本次录制。 下面我们将说说这个录制的程序。 view plaincopy to clipboardprint? ·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150 // NX 6.0.0.24 // Journal created by nicholas on Tue Feb 17 21:18:57 2009 中国标准时间 // using System; using NXOpen; public class NXJournal { public static void Main(string[] args) { Session theSession = Session.GetSession(); Part workPart = theSession.Parts.Work; Part displayPart = theSession.Parts.Display; // ---------------------------------------------- // 菜单:插入->Design Feature->Block... // ---------------------------------------------- NXOpen.Session.UndoMarkId markId1; markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start"); NXOpen.Features.Feature nullFeatures_Feature = null; NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1; blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature); blockFeatureBuilder1.BooleanOption.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create; Body[] targetBodies1 = new Body[1]; Body nullBody = null; targetBodies1[0] = nullBody; blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1); theSession.SetUndoMarkName(markId1, "Block 对话框"); NXOpen.Session.UndoMarkId markId2; markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Block"); blockFeatureBuilder1.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths; Point point1; point1 = blockFeatureBuilder1.OriginPoint; blockFeatureBuilder1.OriginPoint = point1; Point3d originPoint1 = new Point3d(0.0, 0.0, 0.0); blockFeatureBuilder1.SetOriginAndLengths(originPoint1, "10", "20", "30"); blockFeatureBuilder1.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, nullBody); NXOpen.Features.Feature feature1; feature1 = blockFeatureBuilder1.CommitFeature(); theSession.DeleteUndoMark(markId2, null); theSession.SetUndoMarkName(markId1, "Block"); blockFeatureBuilder1.Destroy(); workPart.FacetedBodies.DeleteTemporaryFacesAndEdges(); // ---------------------------------------------- // 菜单:文件->保存 // ---------------------------------------------- PartSaveStatus partSaveStatus1; partSaveStatus1 = workPart.Save(NXOpen.BasePart.SaveComponents.True, NXOpen.BasePart.CloseAfterSave.False); partSaveStatus1.Dispose(); // ---------------------------------------------- // 菜单:工具->操作记录->Stop Recording // ---------------------------------------------- } public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; } }
// NX 6.0.0.24 // Journal created by nicholas on Tue Feb 17 21:18:57 2009 中国标准时间 // using System; using NXOpen; public class NXJournal { public static void Main(string[] args) { Session theSession = Session.GetSession(); Part workPart = theSession.Parts.Work; Part displayPart = theSession.Parts.Display; // ---------------------------------------------- // 菜单:插入->Design Feature->Block... // ---------------------------------------------- NXOpen.Session.UndoMarkId markId1; markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start"); NXOpen.Features.Feature nullFeatures_Feature = null; NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1; blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature); blockFeatureBuilder1.BooleanOption.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create; Body[] targetBodies1 = new Body[1]; Body nullBody = null; targetBodies1[0] = nullBody; blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1); theSession.SetUndoMarkName(markId1, "Block 对话框"); NXOpen.Session.UndoMarkId markId2; markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Block"); blockFeatureBuilder1.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths; Point point1; point1 = blockFeatureBuilder1.OriginPoint; blockFeatureBuilder1.OriginPoint = point1; Point3d originPoint1 = new Point3d(0.0, 0.0, 0.0); blockFeatureBuilder1.SetOriginAndLengths(originPoint1, "10", "20", "30"); blockFeatureBuilder1.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, nullBody); NXOpen.Features.Feature feature1; feature1 = blockFeatureBuilder1.CommitFeature(); theSession.DeleteUndoMark(markId2, null); theSession.SetUndoMarkName(markId1, "Block"); blockFeatureBuilder1.Destroy(); workPart.FacetedBodies.DeleteTemporaryFacesAndEdges(); // ---------------------------------------------- // 菜单:文件->保存 // ---------------------------------------------- PartSaveStatus partSaveStatus1; partSaveStatus1 = workPart.Save(NXOpen.BasePart.SaveComponents.True, NXOpen.BasePart.CloseAfterSave.False); partSaveStatus1.Dispose(); // ---------------------------------------------- // 菜单:工具->操作记录->Stop Recording // ---------------------------------------------- } public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; } } Main函数是入口函数。 11-13行是常用变量的声明。 17-57是建立block的命令记录。 其中,17-18是声明UndoMark。相当于事务,可以用来回滚程序影响。 UG默认每个命令都设置了UndoMark,所以如果用用UndoMark块的程序效率较低,采用UndoMark声明中间的程序不在做程序你的UndoMark。对效率提高有帮助。 51-53结束UndoMark块。 22NXOpen采用类厂模式,workPart.Features.CreateBlockFeatureBuilder是产生一个对象。 49 feature1 = blockFeatureBuilder1.CommitFeature();生成特征 62-65点击保存按钮的命令录制。 原文:http://blog.csdn.net/begtostudy/archive/2009/02/17/3903124.aspx
选择block命令弹出创建block的对话框。 我就是改了长宽高为10、20、30,点击确定生成block。 点击保存按钮。 选择【停止录制】结束本次录制。 下面我们将说说这个录制的程序。 view plaincopy to clipboardprint? ·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150 // NX 6.0.0.24 // Journal created by nicholas on Tue Feb 17 21:18:57 2009 中国标准时间 // using System; using NXOpen; public class NXJournal { public static void Main(string[] args) { Session theSession = Session.GetSession(); Part workPart = theSession.Parts.Work; Part displayPart = theSession.Parts.Display; // ---------------------------------------------- // 菜单:插入->Design Feature->Block... // ---------------------------------------------- NXOpen.Session.UndoMarkId markId1; markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start"); NXOpen.Features.Feature nullFeatures_Feature = null; NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1; blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature); blockFeatureBuilder1.BooleanOption.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create; Body[] targetBodies1 = new Body[1]; Body nullBody = null; targetBodies1[0] = nullBody; blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1); theSession.SetUndoMarkName(markId1, "Block 对话框"); NXOpen.Session.UndoMarkId markId2; markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Block"); blockFeatureBuilder1.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths; Point point1; point1 = blockFeatureBuilder1.OriginPoint; blockFeatureBuilder1.OriginPoint = point1; Point3d originPoint1 = new Point3d(0.0, 0.0, 0.0); blockFeatureBuilder1.SetOriginAndLengths(originPoint1, "10", "20", "30"); blockFeatureBuilder1.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, nullBody); NXOpen.Features.Feature feature1; feature1 = blockFeatureBuilder1.CommitFeature(); theSession.DeleteUndoMark(markId2, null); theSession.SetUndoMarkName(markId1, "Block"); blockFeatureBuilder1.Destroy(); workPart.FacetedBodies.DeleteTemporaryFacesAndEdges(); // ---------------------------------------------- // 菜单:文件->保存 // ---------------------------------------------- PartSaveStatus partSaveStatus1; partSaveStatus1 = workPart.Save(NXOpen.BasePart.SaveComponents.True, NXOpen.BasePart.CloseAfterSave.False); partSaveStatus1.Dispose(); // ---------------------------------------------- // 菜单:工具->操作记录->Stop Recording // ---------------------------------------------- } public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; } }
// NX 6.0.0.24 // Journal created by nicholas on Tue Feb 17 21:18:57 2009 中国标准时间 // using System; using NXOpen; public class NXJournal { public static void Main(string[] args) { Session theSession = Session.GetSession(); Part workPart = theSession.Parts.Work; Part displayPart = theSession.Parts.Display; // ---------------------------------------------- // 菜单:插入->Design Feature->Block... // ---------------------------------------------- NXOpen.Session.UndoMarkId markId1; markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start"); NXOpen.Features.Feature nullFeatures_Feature = null; NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1; blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature); blockFeatureBuilder1.BooleanOption.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create; Body[] targetBodies1 = new Body[1]; Body nullBody = null; targetBodies1[0] = nullBody; blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1); theSession.SetUndoMarkName(markId1, "Block 对话框"); NXOpen.Session.UndoMarkId markId2; markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Block"); blockFeatureBuilder1.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths; Point point1; point1 = blockFeatureBuilder1.OriginPoint; blockFeatureBuilder1.OriginPoint = point1; Point3d originPoint1 = new Point3d(0.0, 0.0, 0.0); blockFeatureBuilder1.SetOriginAndLengths(originPoint1, "10", "20", "30"); blockFeatureBuilder1.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, nullBody); NXOpen.Features.Feature feature1; feature1 = blockFeatureBuilder1.CommitFeature(); theSession.DeleteUndoMark(markId2, null); theSession.SetUndoMarkName(markId1, "Block"); blockFeatureBuilder1.Destroy(); workPart.FacetedBodies.DeleteTemporaryFacesAndEdges(); // ---------------------------------------------- // 菜单:文件->保存 // ---------------------------------------------- PartSaveStatus partSaveStatus1; partSaveStatus1 = workPart.Save(NXOpen.BasePart.SaveComponents.True, NXOpen.BasePart.CloseAfterSave.False); partSaveStatus1.Dispose(); // ---------------------------------------------- // 菜单:工具->操作记录->Stop Recording // ---------------------------------------------- } public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; } } Main函数是入口函数。 11-13行是常用变量的声明。 17-57是建立block的命令记录。 其中,17-18是声明UndoMark。相当于事务,可以用来回滚程序影响。 UG默认每个命令都设置了UndoMark,所以如果用用UndoMark块的程序效率较低,采用UndoMark声明中间的程序不在做程序你的UndoMark。对效率提高有帮助。 51-53结束UndoMark块。 22NXOpen采用类厂模式,workPart.Features.CreateBlockFeatureBuilder是产生一个对象。 49 feature1 = blockFeatureBuilder1.CommitFeature();生成特征 62-65点击保存按钮的命令录制。 原文:http://blog.csdn.net/begtostudy/archive/2009/02/17/3903124.aspx
相关文章推荐
- UG二次开发学习进阶帮手——操作录制
- Lucene学习二次开发之——分词开发流程
- Python学习笔记——Python开发中的网络操作
- 分布式进阶(十四)分布式开发学习感触
- Autodesk View and Data API二次开发学习指南
- phpcms二次开发学习
- java学习日记——泛型在开发中的使用和时间的操作
- IOS 开发进阶--多线程和网络--对于耗时操作的代码体验
- JAVAWEB开发之redis学习(三)——list相关的操作命令
- PHP:SMS移动短信接口二次开发中的插入多行记录操作(含实时进度显示)
- Android基于XMPP Smack Openfire下学习开发IM(二)对分组、好友和头像等一些操作
- MOSS 2010:Visual Studio 2010开发体验(24)——如何在浏览器中直接对BCS模型直接进行编辑和新增操作
- ImageJ二次开发学习纪录之初步体会
- phpcms 模块之间 调用 常用操作列表(二次开发)
- Android开发学习之IO文件读写操作
- 分布式进阶(十四)分布式开发学习感触
- zen-cart基本操作手册(二次开发手册)
- 嵌入式开发之C基础学习笔记09--位段,枚举和文件操作
- Dynamic CRM 2013学习笔记(三十八)流程1 - 操作(action)开发与配置详解
- Delphi开发学习二:使用ADOQuery控件对SQL数据库表进行操作