Robin's Blog

记录 积累 学习 成长

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

什么是操作录制?这是UG NX系列中增加的可以录制手工操作命令的工具。录制的一系列NXOpen程序命令。通过这些命令可以重现操作。当然,从中我们也可以用来学习NXOpen

 

然而,录制的程序往往是记录我们手工操作的命令流,其中很多信息是固定的操作,不具有灵活性。可以重现整个手工操作过程。同时,不是所有的命令都能够被录制。正如UG Help系统所说的:有些命令不能被记录,有些命令只能部分记录。正如我以前的帖子说过,UG有个两个开发包Open和NXOpen,Open主要是API和包装API的类。NXOpen是类库。操作录制的结果是NXOpen程序形式。但是Open在某些细节上要强于NXOpen。所以,操作录制不能代替二次开发。

 

虽然如此,UG操作录制确实有很多意义:通过文本重现整个操作;改变程序内容可以适度的变动操作过程,不用重做整个操作;通过这个记录可以帮助我们学习NXOpen程序。

 

现在,我们来录制一个创建block的命令流。

我用的是NX6,其他版本差不多。

 

在菜单【首选项】里选择【用户界面】。

 

在对话框“用户界面首选项”中的【操作记录】Tab中选择【选择操作记录语言】。

UG NX6支持javaC#C++等语言命令录制,其中C#NX6新加入支持的。

 

现在在菜单【工具】中选择【操作记录】,其中有下面三个常用命令:

录制-暂停录制-停止录制

当然也可以选择工具条【操作录制】。

 

选择【录制】,选择保存录制命令程序的目录。

之后UG的菜单和工具条上会出现可录制的标示,如果没有的命令是不能被录制的。

 

 

选择block命令弹出创建block的对话框。

我就是改了长宽高为102030,点击确定生成block

点击保存按钮。

 

选择【停止录制】结束本次录制。

 

下面我们将说说这个录制的程序。

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. // NX 6.0.0.24  
  2. // Journal created by nicholas on Tue Feb 17 21:18:57 2009 中国标准时间  
  3. //  
  4. using System;  
  5. using NXOpen;  
  6.   
  7. public class NXJournal  
  8. {  
  9.   public static void Main(string[] args)  
  10.   {  
  11.     Session theSession = Session.GetSession();  
  12.     Part workPart = theSession.Parts.Work;  
  13.     Part displayPart = theSession.Parts.Display;  
  14.     // ----------------------------------------------  
  15.     //   菜单:插入->Design Feature->Block...  
  16.     // ----------------------------------------------  
  17.     NXOpen.Session.UndoMarkId markId1;  
  18.     markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");  
  19.       
  20.     NXOpen.Features.Feature nullFeatures_Feature = null;  
  21.     NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1;  
  22.     blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature);  
  23.       
  24.     blockFeatureBuilder1.BooleanOption.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create;  
  25.       
  26.     Body[] targetBodies1 = new Body[1];  
  27.     Body nullBody = null;  
  28.     targetBodies1[0] = nullBody;  
  29.     blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1);  
  30.       
  31.     theSession.SetUndoMarkName(markId1, "Block 对话框");  
  32.       
  33.     NXOpen.Session.UndoMarkId markId2;  
  34.     markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Block");  
  35.       
  36.     blockFeatureBuilder1.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths;  
  37.       
  38.     Point point1;  
  39.     point1 = blockFeatureBuilder1.OriginPoint;  
  40.       
  41.     blockFeatureBuilder1.OriginPoint = point1;  
  42.       
  43.     Point3d originPoint1 = new Point3d(0.0, 0.0, 0.0);  
  44.     blockFeatureBuilder1.SetOriginAndLengths(originPoint1, "10""20""30");  
  45.       
  46.     blockFeatureBuilder1.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, nullBody);  
  47.       
  48.     NXOpen.Features.Feature feature1;  
  49.     feature1 = blockFeatureBuilder1.CommitFeature();  
  50.       
  51.     theSession.DeleteUndoMark(markId2, null);  
  52.       
  53.     theSession.SetUndoMarkName(markId1, "Block");  
  54.       
  55.     blockFeatureBuilder1.Destroy();  
  56.       
  57.     workPart.FacetedBodies.DeleteTemporaryFacesAndEdges();  
  58.       
  59.     // ----------------------------------------------  
  60.     //   菜单:文件->保存  
  61.     // ----------------------------------------------  
  62.     PartSaveStatus partSaveStatus1;  
  63.     partSaveStatus1 = workPart.Save(NXOpen.BasePart.SaveComponents.True, NXOpen.BasePart.CloseAfterSave.False);  
  64.       
  65.     partSaveStatus1.Dispose();  
  66.     // ----------------------------------------------  
  67.     //   菜单:工具->操作记录->Stop Recording  
  68.     // ----------------------------------------------  
  69.       
  70.   }  
  71.   public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }  
  72. }  

 

 

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点击保存按钮的命令录制。

posted on 2010-01-16 17:51  Robin99  阅读(3125)  评论(0)    收藏  举报