zoukankan      html  css  js  c++  java
  • NXOpen中的信息显示窗口

    NX中许多消息都是通过信息窗口反馈给用户的,如下图所示:

    NXOpen中使用ListingWindow类表示信息窗口,该窗口从实现的角度来看,更像一个数据流而不是一个窗口,为什么怎么说呢?看看它的成员方法和属性就知道了。
    ListingWindow中比较重要的方法有Open()、Close()、CloseWindow()、WriteLine()和WriteFullLine()等。其中Open方法和Close方法实际上是操作窗口中显示的数据的,就是说,使用ListingWindow显示数据之前,必须要使用Open方法打开,就像连接数据库一样,先要建立连接,然后使用完成之后还要使用Close方法关闭,该方法并不关闭窗体本身,而是关闭写入的数据流,关闭窗口要使用CloseWindow方法。
    两个写字符串函数WriteLine和WriteFullLine其行为类似,但是WriteFullLine会无视字符个数,所有字符都会写入到一行,而WriteLine有字符数限制,超过了132个就会显示在下一行。如果提供的字符串是null,则什么都不错,也不会抛出异常。
    ListingWindow的属性并不多,比较重要的就两个只读属性,其中一个是IsOpen用于检测ListingWindow是否打开,另一个是Device,返回DeviceType的枚举,该属性值受到方法SelectDevice()的影响,该方法的原型如下:

    public void SelectDevice(
        ListingWindow.DeviceType deviceType,
        string fileName
    )
    

    这个方法就是一个重定向选项,用于指定显示的数据流是只显示在窗口上还是写入文件中,或者两者都有。但是在使用时注意,输出被写入缓冲区,只有当设备被修改时才会被刷新,例如下面的代码在Close调用之后并不会将字符串写入到文件中去:

    1 ListingWindow lw = theSession.ListingWindow; 
    2 lw.SelectDevice(ListingWindow.DeviceType.FileAndWindow, @"C:log.txt");
    3 lw.Open();
    4 if (lw.IsOpen)
    5     lw.WriteLine(“Lemniscate”);
    6 lw.Close();//不会被刷新
    7 lw.SelectDevice(ListingWindow.DeviceType.Window, "");//现在才被刷新

    下面的这段代码将源代码用ListingWindow显示出来:

     1 using System.IO;
     2 using NXOpen;
     3 public class NXListingWindow
     4 {
     5 
     6     public static void Main()
     7     {
     8         Session theSession = Session.GetSession();
     9         UI theUI = UI.GetUI();
    10         StreamReader sr = new StreamReader(@"F:VS ProjectsNXListingWindowNXListingWindowNXListingWindow.cs");
    11         string s;
    12         try
    13         {
    14             s = sr.ReadToEnd();
    15             sr.Close();
    16             sr.Dispose();
    17             ListingWindow lw = theSession.ListingWindow;
    18             lw.SelectDevice(ListingWindow.DeviceType.FileAndWindow, @"C:log.txt");
    19             lw.Open();
    20             if (lw.IsOpen)
    21                 lw.WriteLine(s);
    22             lw.Close();//不会被刷新
    23             lw.SelectDevice(ListingWindow.DeviceType.Window, "");//现在才被刷新
    24         }
    25         catch (System.Exception ex)
    26         {
    27             theUI.NXMessageBox.Show("Exception!", NXMessageBox.DialogType.Error, ex.Message);
    28         }
    29     }    
    30 }

    运行效果如下:

  • 相关阅读:
    拾遗:『rhel6系列的开、关机脚本』
    拾遗:{rpm、yum及源码方式管理软件包}
    拾遗:sed&vim
    拾遗:Linux 用户及权限管理基础
    『BASH』——Learn BashScript from Daniel Robbins——[003]
    『BASH』——Hadex's brief analysis of "Lookahead and Lookbehind Zero-Length Assertions"
    『BASH』——Learn BashScript from Daniel Robbins——[001-002]
    Modular arithmetic and Montgomery form 实现快速模乘
    __int128使用
    Windows10下安装CentOS7双系统
  • 原文地址:https://www.cnblogs.com/Lemniscate/p/3494762.html
Copyright © 2011-2022 走看看