private List <Line> GetManifoldEdge() { List <Line> lines = new List <Line>(); ModelDoc2 swDoc = (ModelDoc2)swApp.ActiveDoc; Feature feature = swDoc.GetFeatureInPrt("runnerCube0"); object[] faces = feature.GetFaces(); Vector target = new Vector(0, 0, 1); for (int i = 0; i < faces.Count(); i++) { Face2 face = (Face2)faces[i]; Vector normal = new Vector(face.Normal); if (normal.isSameDir(target, 0.000005) != 1) { continue; } object[] edges = face.GetEdges(); double area = face.GetArea(); int count = face.GetEdgeCount(); for (int j = 0; j < count; j++) { Edge edge = (Edge)edges[j]; Point start = new Point(edge.GetCurveParams3().StartPoint); Point end = new Point(edge.GetCurveParams3().EndPoint); Line line = new Line(start, end); lines.Add(line); } } return(lines); }
public static void GetFace(ModelDoc2 Doc) { ModelDocExtension DocEx = Doc.Extension; SelectionMgr SwSelMrg = Doc.SelectionManager; DocEx.SelectByID2("", "FACE", -100 / 1000.0, 60 / 1000.0, 15 / 1000.0, false, -1, null, 0); System.Windows.MessageBox.Show("模拟选中面"); string selcount = SwSelMrg.GetSelectedObjectCount2(-1).ToString(); swSelectType_e seltype = (swSelectType_e)SwSelMrg.GetSelectedObjectType3(1, -1); if (seltype == swSelectType_e.swSelFACES) { Face2 SwFace = SwSelMrg.GetSelectedObject6(1, -1); System.Windows.MessageBox.Show("选中数:" + selcount + "\r\n选中类型:" + seltype.ToString() + "\r\n选中面面积:" + SwFace.GetArea().ToString()); } }