在实际项目中,我们有时候无法通过一些名字或者信息来查找所要的对象,最快的方式就是通过遍历。然后再去通过细节来找到想要的数据。
///这是根据名字来遍历图块的定义
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
}