Annotation注解對象

在Solidworks工程圖中,除視圖以外女蜈,大多數(shù)的元素持舆,如文本,尺寸伪窖,件號逸寓,粗糙度等都屬于Annotation注解大類,即下圖中的紅框工具覆山。文本竹伸,尺寸,件號簇宽,粗糙度對象都是注解對象的細(xì)分勋篓。本文我們先初步介紹下Annotation對象。

image.png

實例1:獲得注解對象信息

如下圖所示晦毙,視圖中的元素均屬于注解對象生巡,包括尺寸,注釋见妒,件號孤荣,粗糙度,形位公差须揣,基準(zhǔn)盐股,中心線,修訂云耻卡。本例先得到這些注解對象的基本信息疯汁。

image.png

實例代碼:

public static void GetAllAnnotationInView(ModelDoc2 SwDoc,string ViewName)
{
    //注解,件號卵酪,尺寸幌蚊,表面粗糙度谤碳,中心符號,焊接符號,公差,基準(zhǔn)
    View SwView = ((Feature)((DrawingDoc)SwDoc).FeatureByName(ViewName)).GetSpecificFeature2();
    object[] ObjAnnos = SwView.GetAnnotations(); 
    int i = 1;
    foreach (object ObjAnno in ObjAnnos)
    {
         StringBuilder Sb = new StringBuilder("");
         Sb.Append("注解"+i.ToString().Trim()+"\r\n");
         Annotation SwAnnn = (Annotation)ObjAnno;
         Sb.Append("類型="+((swAnnotationType_e)SwAnnn.GetType()).ToString().Trim()+"\r\n");
         Sb.Append("所屬=" + ((swAnnotationOwner_e)SwAnnn.OwnerType).ToString().Trim() + "\r\n");
         double[] pos = SwAnnn.GetPosition();
         Sb.Append("坐標(biāo)=(" + pos[0].ToString().Trim()+","+ pos[1].ToString().Trim() + ")\r\n");
         bool sc = SwAnnn.SetName((i).ToString().Trim());
         Sb.Append("名稱設(shè)置結(jié)果=" + sc.ToString().Trim() + "\r\n");
         Sb.Append("名稱=" + SwAnnn.GetName() + "\r\n");
         SwAnnn.Select(false);//選中溢豆,直觀顯示該對象
         System.Windows.Forms.MessageBox.Show(Sb.ToString().Trim());
         i++;
     }
 }

運行效果:

image.png
image.png
image.png

實例分析:

我們可以通過如下方式獲得Annotation對象

image.png

可以通過Annotation的屬性或方法蜒简,實現(xiàn)對注解的如下常用操作

image.png

實例2:獲得注解細(xì)分對象

注解一些通用的特性會由Annotation對象的方法或?qū)傩詫崿F(xiàn),各細(xì)分種類特有的特性將由各細(xì)分對象的屬性或方法實現(xiàn)漩仙。本例將獲得這些細(xì)分對象搓茬,如Note,SFSymbol队他,DisplayDimension等各類對象卷仑,這些對象的屬性方法可進一步操作各自特性的功能。

實例代碼:

public static void GetAllAnnotationObjectInView(ModelDoc2 SwDoc, string ViewName)
{
     View SwView = ((Feature)((DrawingDoc)SwDoc).FeatureByName(ViewName)).GetSpecificFeature2();
     Annotation SwAnnn = SwView.GetFirstAnnotation3();
     while (SwAnnn != null)
     {   
          if (SwAnnn.GetType() == (int)swAnnotationType_e.swSFSymbol)//粗糙度
          {
              SFSymbol SwSFSymbol= SwAnnn.GetSpecificAnnotation(); ;
              if (SwSFSymbol != null)
              {
                  ((Annotation)SwSFSymbol.GetAnnotation()).Select(false);//通過Ann對象使用選擇功能
                  System.Windows.Forms.MessageBox.Show("選中對象【粗糙度】已獲得");
              }
           }
           else if (SwAnnn.GetType() == (int)swAnnotationType_e.swNote)//注釋和件號都算這部分
           {
               Note SwNote = SwAnnn.GetSpecificAnnotation();
               if (SwNote != null)
               {
                    ((Annotation)SwNote.GetAnnotation()).Select(false);
                    System.Windows.Forms.MessageBox.Show("選中對象【注釋】已獲得");
               }
            }
            else if (SwAnnn.GetType() == (int)swAnnotationType_e.swDisplayDimension)
            {
                DisplayDimension SwDispDim = SwAnnn.GetSpecificAnnotation();
                if (SwDispDim != null)
                {
                    ((Annotation)SwDispDim.GetAnnotation()).Select(false);
                    System.Windows.Forms.MessageBox.Show("選中對象【尺寸】已獲得");
                }
            }
            else if (SwAnnn.GetType() == (int)swAnnotationType_e.swCenterMarkSym)
            {
                CenterMark SwCenterMark = SwAnnn.GetSpecificAnnotation();
                if (SwCenterMark != null)
                {
                    ((Annotation)SwCenterMark.GetAnnotation()).Select(false);
                    System.Windows.Forms.MessageBox.Show("選中對象【中心符號】已獲得");
                }
            }
            else if (SwAnnn.GetType() == (int)swAnnotationType_e.swWeldSymbol)//焊接符號
            {
                WeldSymbol SwWeldSymbol = SwAnnn.GetSpecificAnnotation();
                if (SwWeldSymbol != null)
                {
                    ((Annotation)SwWeldSymbol.GetAnnotation()).Select(false);
                    System.Windows.Forms.MessageBox.Show("選中對象【焊接符號】已獲得");
                }
            }
            else if (SwAnnn.GetType() == (int)swAnnotationType_e.swGTol)//形位公差
            {
                Gtol SwGtol= SwAnnn.GetSpecificAnnotation();
                if (SwGtol != null)
                {
                     ((Annotation)SwGtol.GetAnnotation()).Select(false);
                     System.Windows.Forms.MessageBox.Show("選中對象【形位公差】已獲得");
                }
            }
            else if (SwAnnn.GetType() == (int)swAnnotationType_e.swDatumTargetSym)//基準(zhǔn)
            {
                 DatumTargetSym SwDatumTargetSym = SwAnnn.GetSpecificAnnotation();
                 if (SwDatumTargetSym != null)
                 {
                     ((Annotation)SwDatumTargetSym.GetAnnotation()).Select(false);
                     System.Windows.Forms.MessageBox.Show("選中對象【基準(zhǔn)】已獲得");
                 }
            }
            else if (SwAnnn.GetType() == (int)swAnnotationType_e.swRevisionCloud)//修訂云
            {
                 RevisionCloud SwRevisionCloud = SwAnnn.GetSpecificAnnotation();
                 if (SwRevisionCloud != null)
                 {
                     ((Annotation)SwRevisionCloud.GetAnnotation()).Select(false);
                     System.Windows.Forms.MessageBox.Show("選中對象【修訂云】已獲得");
                 }
             }
             SwAnnn= SwAnnn.GetNext3();
     }
 }

運行效果:

image.png

實例分析:

首先我們可以通過Annotation::GetType方法,判斷注解的細(xì)分對象類型麸折,然后通過Annotation::GetSpecificAnnotation方法得到對應(yīng)的細(xì)分對象锡凝,從而使用細(xì)分對象的屬性或方法進一步自動操作對應(yīng)的注解。

如下圖為本文的示例程序磕谅,源碼可上我的Github下載私爷。操作步驟可見文章[《公眾號源碼Github分享庫》], 實例序號25

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末膊夹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捌浩,更是在濱河造成了極大的恐慌放刨,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尸饺,死亡現(xiàn)場離奇詭異进统,居然都是意外死亡,警方通過查閱死者的電腦和手機浪听,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門螟碎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人迹栓,你說我怎么就攤上這事掉分。” “怎么了克伊?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵酥郭,是天一觀的道長。 經(jīng)常有香客問我愿吹,道長不从,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任犁跪,我火速辦了婚禮椿息,結(jié)果婚禮上歹袁,老公的妹妹穿的比我還像新娘。我一直安慰自己寝优,他們只是感情好条舔,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著倡勇,像睡著了一般逞刷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妻熊,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天夸浅,我揣著相機與錄音,去河邊找鬼扔役。 笑死帆喇,一個胖子當(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
  • 正文 獨居荒郊野嶺守林人離奇死亡律秃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了治唤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棒动。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宾添,靈堂內(nèi)的尸體忽然破棺而出船惨,到底是詐尸還是另有隱情,我是刑警寧澤辞槐,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布掷漱,位于F島的核電站,受9級特大地震影響榄檬,放射性物質(zhì)發(fā)生泄漏卜范。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一鹿榜、第九天 我趴在偏房一處隱蔽的房頂上張望海雪。 院中可真熱鬧锦爵,春花似錦、人聲如沸奥裸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽湾宙。三九已至樟氢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侠鳄,已是汗流浹背埠啃。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伟恶,地道東北人碴开。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像博秫,于是被迫代替她去往敵國和親潦牛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

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