C# SolidWorks 二次开发 API—遍历零件所有可编辑尺寸

最近有高校学生问到一个问题,如何得到零件中所有可以编辑的尺寸信息。包括所有的特征以及草图尺寸。之前的博客中只是写了如何遍历特征以及图纸中的尺寸。通过查api发现,其实这个和图纸中标注的尺寸一样,直接使用:先看结果:零件:

        /// <summary>
       /// 遍历特征
       /// </summary>
       /// <param name="thisFeat"></param>
       /// <param name="isTopLevel"></param>
       public static void TraverseFeatures(Feature thisFeat, bool isTopLevel, bool isShowDimension = false)
      {
           Feature curFeat = default(Feature);
           curFeat = thisFeat;

           while ((curFeat != null))
          {
               //输出特征名称
               Debug.Print(curFeat.Name);
               if (isShowDimension == true) ShowDimensionForFeature(curFeat);

               Feature subfeat = default(Feature);
               subfeat = (Feature)curFeat.GetFirstSubFeature();

               while ((subfeat != null))
              {
                   //if (isShowDimension == true) ShowDimensionForFeature(subfeat);
                   TraverseFeatures(subfeat, false);
                   Feature nextSubFeat = default(Feature);
                   nextSubFeat = (Feature)subfeat.GetNextSubFeature();
                   subfeat = nextSubFeat;
                   nextSubFeat = null;
              }

               subfeat = null;

               Feature nextFeat = default(Feature);

               if (isTopLevel)
              {
                   nextFeat = (Feature)curFeat.GetNextFeature();
              }
               else
              {
                   nextFeat = null;
              }

               curFeat = nextFeat;
               nextFeat = null;
          }
      }

       /// <summary>
       /// 遍历零件中的所有特征
       /// </summary>
       /// <param name="feature"></param>
       public static void ShowDimensionForFeature(Feature feature)
      {
           var thisDisplayDim = (DisplayDimension)feature.GetFirstDisplayDimension();

           while (thisDisplayDim != null)
          {
               var dimen = (Dimension)thisDisplayDim.GetDimension();

               Debug.Print($"---特征 {feature.Name} 尺寸-->" + dimen.GetNameForSelection() + "-->" + dimen.Value);

               thisDisplayDim = (DisplayDimension)feature.GetNextDisplayDimension(thisDisplayDim);
          }
      }

代码已经上传,请自取。

发表评论

邮箱地址不会被公开。 必填项已用*标注