工程图图纸对象Sheet

本文带大家初步了解下Solidworks的图纸对象Sheet。如下图sheet1,与图纸2分别是Sheet对象的一个实例。通过图纸对象,我们可以获取与设置图纸相关的信息,也能获得图纸上的各类元素,如视图,表格等等。

image.png

1.实例分析:图纸对象的获得

public static void GetSheet(ModelDoc2 DwgDoc)
{
     Sheet SwSheet = ((DrawingDoc)DwgDoc).GetCurrentSheet();
     System.Windows.MessageBox.Show("当前激活图纸:" + SwSheet.GetName());
     ((DrawingDoc)DwgDoc).ActivateSheet("图纸2");//激活图纸
     SwSheet = ((DrawingDoc)DwgDoc).GetCurrentSheet();
     System.Windows.MessageBox.Show("当前激活图纸:" + SwSheet.GetName());
     SwSheet.SetName("图纸X");
     DwgDoc.EditRebuild3();
     System.Windows.MessageBox.Show("当前激活图纸:" + SwSheet.GetName());
}

我们可以通过工程图文档对象的GetCurrentSheet与ActivateSheet方法获得当前激活的视图以及切换激活其他视图。

2.实例分析:获取图纸信息

public static void GetSheetProp(ModelDoc2 DwgDoc)
{
    double h = 0;
    double w = 0;
    StringBuilder sb = new StringBuilder("图纸详情:\r\n");
    sb.Append("---------");
    string[] sns = ((DrawingDoc)DwgDoc).GetSheetNames();
    foreach (string sn in sns)
    {
          Sheet SwSheet = ((DrawingDoc)DwgDoc).Sheet[sn];
          if (SwSheet != null)
          {
               sb.Append("图纸名称:" + SwSheet.GetName() + "\r\n");
               sb.Append("图纸格式特征名:" + SwSheet.GetSheetFormatName() + "\r\n");
               sb.Append("图纸格式模板:" + SwSheet.GetTemplateName() + "\r\n");
               sb.Append("图纸属性视图:" + SwSheet.CustomPropertyView + "\r\n");
               sb.Append("图纸比例:" + SwSheet.GetTemplateName() + "\r\n");
               SwSheet.GetSize(ref w, ref h);
               sb.Append("图纸大小:" + w + "*" + h + "\r\n");
               sb.Append("---------");
         }
    }
    System.Windows.MessageBox.Show(sb.ToString().Trim());
}

运行效果如下:

image.png

3.实例分析:获取图纸中的视图

public static void GetSheetViews(ModelDoc2 DwgDoc)
{
    StringBuilder sb = new StringBuilder("图纸详情:\r\n");
    sb.Append("---------\r\n");
    string[] sns = ((DrawingDoc)DwgDoc).GetSheetNames();
    foreach (string sn in sns)
    {
          Sheet SwSheet = ((DrawingDoc)DwgDoc).Sheet[sn];
          sb.Append("图纸"+ SwSheet.GetName()+"包含如下视图:\r\n");
          if (SwSheet != null)
          {
               object[] ObjViews = SwSheet.GetViews();
               foreach (object ObjView in ObjViews)
               {
                    if (ObjView is View)
                    {
                         string aa = ((View)ObjView).Name;
                         if (aa.Contains("*") == false)
                    {
                    sb.Append(aa + "\r\n");
               }
           }
       }
    }
    sb.Append("---------\r\n");
   }
   System.Windows.MessageBox.Show(sb.ToString().Trim());
 }

运行效果如下:

image.png

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

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容