工程图视图对象View

上一文中介绍了工程图中的图纸对象,本文接着介绍工程图中的视图对象View。工程图视图中的各类元素,我们都可以通过视图对象View间接获得。

image.png

实例1:工程图视图对象获取

在上一文《工程图图纸对象Sheet》的最后一例中使用了Sheet.GetViews方法遍历所有视图。但这种方法的效率会比较低,如果我们已知视图名称可以通过本例更快捷地获得视图对象。

public static View GetViewByName(ModelDoc2 SwDoc, string ViewName, bool showmesg)
{
    StringBuilder Sb = new StringBuilder();
    Feature SwFeat = ((DrawingDoc)SwDoc).FeatureByName(ViewName);
    Sb.Append("特征名:" + SwFeat.Name + "\r\n");
    Sb.Append("特征类型:" + SwFeat.GetTypeName2() + "\r\n");
    View SwView = SwFeat.GetSpecificFeature2();
    Sb.Append("视图名称:" + SwView.Name + "\r\n");
    if (showmesg)
    {
          System.Windows.MessageBox.Show(Sb.ToString().Trim());
    }
    return SwView;
}

如果我们已知视图名称,我们可以借助特征对象,直接获得所需视图对象。运行效果如下图:

image.png

实例2:工程视图信息获取

通过视图对象可以获得与操作视图中的很多元素,比如尺寸,注解,材料表,这里先介绍下视图的一些常用操作,其他元素会在后面的文章中一一介绍。

public static void GetViewInfo(ModelDoc2 SwDoc, string ViewName)
{
      StringBuilder Sb = new StringBuilder("视图信息如下:\r\n");
      View SwView = GetViewByName(SwDoc, ViewName, false);//获得视图
      Sb.Append("角度:" + SwView.Angle.ToString().Trim() + "\r\n");
      Sb.Append("显示状态:" + SwView.DisplayState.ToString().Trim() + "\r\n");
      double[] pos = SwView.Position;
      Sb.Append("位置:X=" + pos[0].ToString().Trim() + ",Y=" + pos[1].ToString().Trim() + "\r\n");
      Sb.Append("引用配置:" + SwView.ReferencedConfiguration.ToString().Trim() + "\r\n");
      if (SwView.ReferencedDocument is ModelDoc2)
      {
           Sb.Append("参考文档:" + ((ModelDoc2)SwView.ReferencedDocument).GetPathName().ToString().Trim() + "\r\n");
      }
      Sb.Append("视图部件:" + SwView.RootDrawingComponent.Name.ToString().Trim() + "\r\n");//指工程图该视图下面引用的部件名,有-1,-2区分,比如对该视图这部件中局部隐藏
      Sb.Append("视图比例:" + SwView.ScaleDecimal.ToString().Trim() + "\r\n");
      Sb.Append("所在图纸:" + SwView.Sheet.GetName().ToString().Trim() + "\r\n");
      Sb.Append("视图朝向:" + SwView.GetOrientationName().ToString().Trim() + "\r\n");
      System.Windows.MessageBox.Show(Sb.ToString().Trim());
 }

运行效果如下图:

image.png

实例3:视图的修改

本例中主要介绍一些工程图出图时,视图的常用操作,更为详细的操作将在后续文章中进行深化

public static void ChangeView(ModelDoc2 SwDoc, string ViewName)
{
     View SwView = GetViewByName(SwDoc, ViewName, false);//获得视图
     SwView.Position = new double[] { 0, 0 };
     SwView.Angle = 45 * Math.PI / 180.0;//弧度
     SwView.ScaleDecimal = SwView.ScaleDecimal * 2;//比例比原来扩大2倍
     SwDoc.EditRebuild3();//改变
     SwView.FocusLocked = true;//视图锁焦
     SwView.PositionLocked = true;//视图位置锁定不可被移动
     SwView.SetName2(ViewName + "A");//重命名视图
     System.Windows.MessageBox.Show("执行成功!");
}

运行效果如下图:


image.png

如下图为本文的示例程序,源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》实例序号21

image.png

你可能感兴趣的:(工程图视图对象View)