C# SolidWorks 二次開發 API---各種遍歷對象

已經有快一個月沒有更新博客了,一方面是二寶出生了,休了半個月假。再一個就是實在是太忙了。
這篇遍歷的已經計劃很久了,一直在草稿狀態。
在實際項目中,我們有時候無法通過一些名字或者信息來查找所要的對象,最快的方式就是通過遍歷。然後再去通過細節來找到想要的數據。

  • 遍歷圖塊
       ///這是根據名字來遍歷圖塊的定義
       public static SketchBlockDefinition GetBlockInstenseByBlockName(string blockName)
		{
			
			SwApp = ConnectToSolidWorks();

			var swModel = (ModelDoc2)SwApp.ActiveDoc;

			var skMgr = swModel.SketchManager;

			var vBlocks = (object[])skMgr.GetSketchBlockDefinitions();

			if (vBlocks == null)
			{
				return null;
			}
			else
			{
				foreach (var item in vBlocks)
				{
					var blockDef = (SketchBlockDefinition)item;
					var fBlock = blockDef.GetFeature();

					if (fBlock.Name == blockName)
					{
						return blockDef;
					}
				}
			}

			return null;
		}
  • 遍歷零件特徵
	     	var swSelMgr = (SelectionMgr)swModel.SelectionManager;
            var swFeat = (Feature)swModel.FirstFeature();
     
            while ((swFeat != null))
            {              
                var swSubFeat = (Feature)swFeat.GetFirstSubFeature();

                while ((swSubFeat != null))
                {
                    Debug.Print(swSubFeat.Name.ToString());                    
                    swSubFeat = (Feature)swSubFeat.GetNextSubFeature();
                }

                swFeat = (Feature)swFeat.GetNextFeature();
            }
  • 遍歷面上的邊
		    swModel = (ModelDoc2)swApp.ActiveDoc;
            swModelExt = swModel.Extension;
            swSelMgr = (SelectionMgr)swModel.SelectionManager;
            swFeature = (Feature)swSelMgr.GetSelectedObject6(1, -1);
            swModel.ClearSelection2(true);

            nFaceCount = swFeature.GetAffectedFaceCount();
            Debug.Print("Number of faces affected by selected feature = " + nFaceCount);
            vAffectedFaces = (object[])swFeature.GetAffectedFaces();

            for (i = 0; i <= (nFaceCount - 1); i++)
            {
                nEdgeCount = ((Face)vAffectedFaces[i]).GetEdgeCount();
                Debug.Print("   Number of edges on Face " + i + " = " + nEdgeCount);
                vEdges = (object[])((Face)vAffectedFaces[i]).GetEdges();

                for (j = 0; j <= (nEdgeCount - 1); j++)
                {
                    ((Edge)vEdges[j]).Display(2, 0, 0, 1, true);
                }
            }
	

  • 遍歷草圖直線
//獲取當前草圖對象
                var swSketch = (Sketch)swModel.GetActiveSketch2();

                //獲取該草圖中的所有線
                var vSketchSeg = (object[])swSketch.GetSketchSegments();

                //定義選擇
                SelectData swSelData = swSelMgr.CreateSelectData();

                SketchSegment swSketchSeg;
                //遍歷線
                for (int i = 0; i < vSketchSeg.Length; i++)
                {
                    swSketchSeg = (SketchSegment)vSketchSeg[i];

                    swSketchSeg.Select4(false, swSelData);
                    
                }

      
  • 遍歷草圖中的點
			 var swSketch = (Sketch)swModel.GetActiveSketch2();
             object[] vSketchPt = (object[])swSketch.GetSketchPoints2();
                SketchPoint swSketchPt;
                //遍歷點
                for (int i = 0; i < vSketchPt.Length; i++)
                {
                    swSketchPt = (SketchPoint)vSketchPt[i];        
                    
                }
  • 遍歷裝配中的零件
請參考之前的博文
  • 遍歷視圖

  var allViewsInThisSheet = (object[])sheet.GetViews();
  
  
  • 遍歷視圖中的尺寸
    Object[] displayDimensions = (Object[])swView.GetDisplayDimensions();
  • 遍歷視圖中的註釋
var swNote = (Note)swView.GetFirstNote();
  while (swNote != null)
   {
       
        var swAnn = (Annotation)swNote.GetAnnotation();       
        swNote = (Note)swNote.GetNext();
    }
  • 遍歷圖紙
 var sheetNames = (string[])drawingDoc.GetSheetNames();
 for (int i = 0; i < sheetNames.Length; i++)
    {
      var bActiveSheet = drawingDoc.ActivateSheet(sheetNames[i]);
    }

  • 遍歷視圖中形位公差
var swGtol = (Gtol)swView.GetFirstGTOL();

 while (swGtol != null)
 {
     
     var swAnn = (Annotation)swGtol.GetAnnotation();
        swGtol = (Gtol)swGtol.GetNextGTOL();
 }
  • 遍歷視圖中的表面粗糙度
var swSfSymbol = (SFSymbol)swView.GetFirstSFSymbol();

  while (swSfSymbol != null)
  {
     
      var swAnn = (Annotation)swSfSymbol.GetAnnotation();
     
      swSfSymbol = (SFSymbol)swSfSymbol.GetNext();
  }
  • 遍歷方程式
               //獲取當前模型
                ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;
                //定義方程式管理器
                EquationMgr swEqnMgr = default(EquationMgr);

                int i = 0;
                int nCount = 0;

                if (swModel != null)
                {
                    swEqnMgr = (EquationMgr)swModel.GetEquationMgr();
                     nCount = swEqnMgr.GetCount();
                    for (i = 0; i < nCount; i++)
                    {
                        Debug.Print("  Equation(" + i + ")  = " + swEqnMgr.get_Equation(i));
                        Debug.Print("    Value = " + swEqnMgr.get_Value(i));
                        Debug.Print("    Index = " + swEqnMgr.Status);
                       Debug.Print("    Global variable? " + swEqnMgr.get_GlobalVariable(i));
                    }

                    //修改高度爲60

                }
  • 遍歷球標
  • 遍歷屬性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章