Annotation注解对象详解


在Solidworks工程图中,除视图以外,大多数的元素,如文本,尺寸,件号,粗糙度等都属于Annotation注解大类,即下图中的红框工具。文本,尺寸,件号,粗糙度对象都是注解对象的细分。本文我们先初步介绍下Annotation对象。

image.png

实例1:获得注解对象信息

如下图所示,视图中的元素均属于注解对象,包括尺寸,注释,件号,粗糙度,形位公差,基准,中心线,修订云。本例先得到这些注解对象的基本信息。

image.png

实例代码:


public static void GetAllAnnotationInView(ModelDoc2 SwDoc,string ViewName)
{
    //注解,件号,尺寸,表面粗糙度,中心符号,焊接符号,公差,基准
    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("坐标=(" + pos[0].ToString().Trim()+","+ pos[1].ToString().Trim() + ")\r\n");
         bool sc = SwAnnn.SetName((i).ToString().Trim());
         Sb.Append("名称设置结果=" + 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的属性或方法,实现对注解的如下常用操作

image.png

实例2:获得注解细分对象

注解一些通用的特性会由Annotation对象的方法或属性实现,各细分种类特有的特性将由各细分对象的属性或方法实现。本例将获得这些细分对象,如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("选中对象【形位公差】已获得")

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空