表對象TableAnnotation

如圖乐设,在Solidworks工程圖中會用到很多表讼庇,包括普通的表,明細(xì)表等近尚。本文我們先學(xué)習(xí)普通的表對象TableAnnotation以及表特征GeneralTableFeature的相關(guān)使用蠕啄。

image.png

GeneralTableFeature是表的特征體現(xiàn),TableAnnotation則是表特征的一個具體的表戈锻。本文將通過表的插入歼跟,獲取等操作,學(xué)習(xí)表類對象的一些常規(guī)使用方法格遭。

示例1 表格的插入

表格的插入主要使用了工程圖文檔對象的DrawingDoc::InsertTableAnnotation2方法哈街。本例中將插入一個使用模板的表格和一個自定義的表格

實(shí)例代碼

public static void InsertTable(ModelDoc2 SwDoc,string TempPath)
{
    double x = 600 / 1000.0;
    double y1 = 200 / 1000.0;
    double y2 = 100 / 1000.0;
    
    Sheet SwSheet = ((DrawingDoc)SwDoc).GetCurrentSheet();
    double[] sheetprop = SwSheet.GetProperties2();
    double scale = sheetprop[2] / sheetprop[3];

    //使用表模板
    SwDoc.SketchManager.CreateLine(0,0,0,x*1.0/ scale, y1 * 1.0 / scale, 0);
    TableAnnotation SwTable1=((DrawingDoc)SwDoc).InsertTableAnnotation2(false, x, y1, (int)swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopRight, TempPath, 4, 6);
    SwTable1.Title = "模板表格標(biāo)題";
    SwTable1.GeneralTableFeature.GetFeature().Name = "示例模板表格";

    //自定義表
    SwDoc.SketchManager.CreateLine(0, 0, 0, x * 1.0 / scale, y2 * 1.0 / scale, 0);
    TableAnnotation SwTable2 = ((DrawingDoc)SwDoc).InsertTableAnnotation2(false, x, y2, (int)swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopLeft,"", 4, 6);
    SwTable2.Title = "自定義表格標(biāo)題";
    SwTable2.GeneralTableFeature.GetFeature().Name = "示例自定義表格";
    SwTable2.Text2[2, 3,true] = "測試文本";
  }

實(shí)例效果

image.png

實(shí)例解析

DrawingDoc::InsertTableAnnotation2參數(shù)解讀

image.png
image.png

從實(shí)例的效果圖與分析可以看到,決定表格的位置拒迅,不僅和參數(shù)有關(guān)骚秦,也與表格的錨點(diǎn)設(shè)置類型有關(guān)。

通過TableAnnotation實(shí)例的屬性和方法璧微,我們可以對單元格進(jìn)行賦值作箍,插入行列等常規(guī)表格自動化操作。

實(shí)例2 獲取表格

本例將通過TableAnnotation前硫,GeneralTableFeature的方法屬性胞得,來獲取上例中插入的表格及獲取相關(guān)消息。

代碼實(shí)例

 public static void GetTable(ModelDoc2 SwDoc,string TableName)
 {
     Feature SwTableFeat = ((DrawingDoc)SwDoc).FeatureByName(TableName);
     if (SwTableFeat != null)
     {
         StringBuilder Sb = new StringBuilder("");
         GeneralTableFeature gtf = SwTableFeat.GetSpecificFeature2();
         TableAnnotation SwTabe = gtf.GetTableAnnotations()[0];
         Sb.Append("表標(biāo)題:"+SwTabe.Title+"\r\n");
         Sb.Append("內(nèi)容:" + SwTabe.Text2[2, 3,true]);
         System.Windows.MessageBox.Show(Sb.ToString().Trim());
     }
 }

實(shí)例效果

image.png

實(shí)例分析

當(dāng)我們需要獲得表格中的信息時开瞭,可以通過特征獲取方式先獲得表特征對象GeneralTableFeature實(shí)例懒震,然后通過該特征獲得所需要操作的表對象TableAnnotation實(shí)例。這里不妨讀者先思考下GeneralTableFeature與TableAnnotation的關(guān)系嗤详。

實(shí)例3 表的拆分與合并

在實(shí)例2中个扰,我們看到我們需要先獲得GeneralTableFeature對象,再間接獲得TableAnnotation對象葱色。為什么TableAnnotation不能代表一個特征呢递宅?我們先來看下本實(shí)例,本實(shí)例對表進(jìn)行了行拆分和行合并苍狰。

實(shí)例代碼

 public static void SetTable(ModelDoc2 SwDoc, string TableName)
 {
      Feature SwTableFeat = ((DrawingDoc)SwDoc).FeatureByName(TableName);
      if (SwTableFeat != null)
      {
          StringBuilder Sb = new StringBuilder("");
          GeneralTableFeature gtf = SwTableFeat.GetSpecificFeature2();
          TableAnnotation SwTabe = gtf.GetTableAnnotations()[0];

          #region 表格拆分
          System.Windows.MessageBox.Show("分割前表數(shù)量:"+ gtf.GetTableAnnotationCount().ToString());
          SwTabe.Split((int)swTableSplitLocations_e.swTableSplit_AfterRow, 1);
          System.Windows.MessageBox.Show("分割后表數(shù)量:" + gtf.GetTableAnnotationCount().ToString());
          SwTabe.Merge((int)swTableMergeLocations_e.swTableMerge_All);
          System.Windows.MessageBox.Show("合并后表數(shù)量:" + gtf.GetTableAnnotationCount().ToString());
          #endregion
     }
}

實(shí)例效果

image.png
image.png

實(shí)例分析

從表格拆分后办龄,我們可以很明顯地看到,一個表格的特征GeneralTableFeature對應(yīng)了多個表格TableAnnotation實(shí)例淋昭。從這里我們可以進(jìn)一步理解GeneralTableFeature與TableAnnotation的區(qū)別俐填。

如下圖為本文的示例程序,源碼可上我的Github下載翔忽。操作步驟可見文章《公眾號源碼Github分享庫》 英融, 實(shí)例序號23

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市歇式,隨后出現(xiàn)的幾起案子驶悟,更是在濱河造成了極大的恐慌,老刑警劉巖材失,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痕鳍,死亡現(xiàn)場離奇詭異,居然都是意外死亡龙巨,警方通過查閱死者的電腦和手機(jī)笼呆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旨别,“玉大人抄邀,你說我怎么就攤上這事≈玳唬” “怎么了境肾?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胆屿。 經(jīng)常有香客問我奥喻,道長,這世上最難降的妖魔是什么非迹? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任环鲤,我火速辦了婚禮,結(jié)果婚禮上憎兽,老公的妹妹穿的比我還像新娘冷离。我一直安慰自己吵冒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布西剥。 她就那樣靜靜地躺著痹栖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞭空。 梳的紋絲不亂的頭發(fā)上揪阿,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機(jī)與錄音咆畏,去河邊找鬼南捂。 笑死,一個胖子當(dāng)著我的面吹牛旧找,可吹牛的內(nèi)容都是我干的溺健。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼钮蛛,長吁一口氣:“原來是場噩夢啊……” “哼矿瘦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起愿卒,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤缚去,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后琼开,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體易结,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年柜候,在試婚紗的時候發(fā)現(xiàn)自己被綠了搞动。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡渣刷,死狀恐怖鹦肿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辅柴,我是刑警寧澤箩溃,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站碌嘀,受9級特大地震影響涣旨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜股冗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一霹陡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦烹棉、人聲如沸攒霹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽催束。三九已至,卻和暖如春辅髓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背少梁。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工洛口, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凯沪。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓第焰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親妨马。 傳聞我的和親對象是個殘疾皇子挺举,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容