上一文中介紹了工程圖中的圖紙對(duì)象,本文接著介紹工程圖中的視圖對(duì)象View。工程圖視圖中的各類(lèi)元素,我們都可以通過(guò)視圖對(duì)象View間接獲得。

image.png
實(shí)例1:工程圖視圖對(duì)象獲取
在上一文《工程圖圖紙對(duì)象Sheet》的最后一例中使用了Sheet.GetViews方法遍歷所有視圖。但這種方法的效率會(huì)比較低,如果我們已知視圖名稱(chēng)可以通過(guò)本例更快捷地獲得視圖對(duì)象。
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("特征類(lèi)型:" + SwFeat.GetTypeName2() + "\r\n");
View SwView = SwFeat.GetSpecificFeature2();
Sb.Append("視圖名稱(chēng):" + SwView.Name + "\r\n");
if (showmesg)
{
System.Windows.MessageBox.Show(Sb.ToString().Trim());
}
return SwView;
}
如果我們已知視圖名稱(chēng),我們可以借助特征對(duì)象,直接獲得所需視圖對(duì)象。運(yùn)行效果如下圖:

image.png
實(shí)例2:工程視圖信息獲取
通過(guò)視圖對(duì)象可以獲得與操作視圖中的很多元素,比如尺寸,注解,材料表,這里先介紹下視圖的一些常用操作,其他元素會(huì)在后面的文章中一一介紹。
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("顯示狀態(tài):" + 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區(qū)分,比如對(duì)該視圖這部件中局部隱藏
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());
}
運(yùn)行效果如下圖:

image.png
實(shí)例3:視圖的修改
本例中主要介紹一些工程圖出圖時(shí),視圖的常用操作,更為詳細(xì)的操作將在后續(xù)文章中進(jìn)行深化
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;//比例比原來(lái)擴(kuò)大2倍
SwDoc.EditRebuild3();//改變
SwView.FocusLocked = true;//視圖鎖焦
SwView.PositionLocked = true;//視圖位置鎖定不可被移動(dòng)
SwView.SetName2(ViewName + "A");//重命名視圖
System.Windows.MessageBox.Show("執(zhí)行成功!");
}
運(yùn)行效果如下圖:

image.png
如下圖為本文的示例程序,源碼可上我的Github下載。操作步驟可見(jiàn)文章《公眾號(hào)源碼Github分享庫(kù)》 , 實(shí)例序號(hào)21

image.png