本文带大家初步了解下Solidworks的图纸对象Sheet。如下图sheet1,与图纸2分别是Sheet对象的一个实例。通过图纸对象,我们可以获取与设置图纸相关的信息,也能获得图纸上的各类元素,如视图,表格等等。
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());
}
运行效果如下:
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());
}
运行效果如下:
如下图为本文的示例程序,源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》 , 实例序号20