程序效果:

 public Program()
    {
        try
        {
            theSession = Session.GetSession();
            theUI = UI.GetUI();
            theUfSession = UFSession.GetUFSession();
            Tag tag=Tag.Null;
            Tag[] tag_F;
            Double[] pos = new Double[] { 0, 0, 0 };
            String[] len = new String[] { “10”, “10”, “10” };
            UFModl uf_modl = UFSession.GetUFSession().Modl;
            uf_modl.CreateBlock1(FeatureSigns.Nullsign, pos, len, out tag);
            uf_modl.AskFeatFaces(tag, out tag_F);
            UFObj obj = UFSession.GetUFSession().Obj;
            obj.SetColor(tag_F[0],1);
            obj.SetColor(tag_F[1],20);
            obj.SetColor(tag_F[2], 20);
            obj.SetColor(tag_F[3], 30);
            obj.SetColor(tag_F[4], 40);
            obj.SetColor(tag_F[5], 50);
            theUI.NXMessageBox.Show(“Message”, NXMessageBox.DialogType.Information, “tag数量:” + (tag_F.Length).ToString());
        }
        catch (NXOpen.NXException ex)
        {
            // —- Enter your exception handling code here —–
            UI.GetUI().NXMessageBox.Show(“Message”, NXMessageBox.DialogType.Error, ex.Message);
        }
    }
以上为关键程序段,Program函数可以生成1个长方体并为长方体的6个面分别上色.
uf_modl.AskFeatFaces()方法的参数1为一个输入的特征tag(注意特征与体不同,如果输入体tag会报错,这里直接用上面生成长方体特征的方法所返回的特征tag),参数2为一个输出的tag数组,返回这个特征所包含的所有面tag.
使用UFObj obj = UFSession.GetUFSession().Obj;语句来获取obj对象(在后面用于通过提供调用面tag来修改面的颜色)
上面因为创建了一个长方体特征,长方体的面有6个,所以上面的获取特征的面返回的tag数组成员数是6个(可以通过.Length来确认).
然后通过调用obj.SetColor(tag_F[0],1);修改颜色,该方法的参数1为要被修改颜色的对象tag,参数2为要修改成的颜色(这个颜色值可以通过UG中的任意一个颜色选择界面中颜色对应的ID来取).
另外编程获取颜色的方法有两种,第一种是公式计算出颜色:color = (((255-R)/51)*6 + ((255-G)/51)*36 + ((255-B)/51)*1) + 1 其中R,G,B变量的取值范围在0-255内,还有一种方法是通过
ConvertRGBValueToColorNumber方法来将RGB转换为UG中的色号,该方法需要提供一个类型为ColorRGB的类实例,该ColorRGB类的构造函数接口为:
public ColorRGB (double RedColor,double GreenColor,double BlueColor);