public INFITF.Reference GetCATIASketchReference(TransCAD.IStdSketchFeature tSketch) { INFITF.Reference cRef = null; string tRefName = tSketch.SketchPlane.ReferenceeName; if (tSketch.SketchPlane.Type == TransCAD.ReferenceType.ExplicitModelObject) // 평면인 경우 { if (tRefName == "XYPlane") { cRef = (INFITF.Reference)PartManager.cOriginalElements.PlaneXY; } else if (tRefName == "YZPlane") { cRef = (INFITF.Reference)PartManager.cOriginalElements.PlaneYZ; } else if (tRefName == "ZXPlane") { cRef = (INFITF.Reference)PartManager.cOriginalElements.PlaneZX; } else { // DatumPlaneOffset } } else if (tSketch.SketchPlane.Type == TransCAD.ReferenceType.Brep) // B-rep 면인 경우 { string cRefName = GetCATIANameFromTransCADName(tRefName); cRef = PartManager.cPart.CreateReferenceFromName(cRefName); } return(cRef); }
public string GetReportNameBySketchElementName(string tSketchName, string tSketchElementName) { string cReportName = null; IEnumerator tFeatureList = PartManager.tFeatures.GetEnumerator(); while (tFeatureList.MoveNext()) { TransCAD.IFeature tFeature = (TransCAD.IFeature)tFeatureList.Current; if (tFeature.Name == tSketchName) { TransCAD.IStdSketchFeature tSketch = (TransCAD.IStdSketchFeature)tFeature; IEnumerator tGeoms = tSketch.Geometries.GetEnumerator(); int count = 2; // localX, localY 포함 while (tGeoms.MoveNext()) { TransCAD.IStdSketchGeometry tGeom = (TransCAD.IStdSketchGeometry)tGeoms.Current; count++; if (tGeom.Name == tSketchElementName) { cReportName = count.ToString(); break; } } break; } } return(cReportName); }
// Post public void TranslateT2C(TransCAD.IFeature tFeature) { TransCAD.IStdSketchFeature tSketch = (TransCAD.IStdSketchFeature)tFeature; string sketchName = tSketch.Name; TransCAD.IStdSketchGeometries tGeoms = tSketch.Geometries; double[] coords = new double[9]; object[] tCoords = new object[9]; tSketch.GetCoordinateSystem(out coords[0], out coords[1], out coords[2], out coords[3], out coords[4], out coords[5], out coords[6], out coords[7], out coords[8]); for (int i = 0; i < 9; ++i) { tCoords[i] = coords[i]; } INFITF.Reference cSktReference = PartManager.ReferenceManager.GetCATIASketchReference(tSketch); MECMOD.Sketch cSketch = PartManager.cSketches.Add(cSktReference); cSketch.SetAbsoluteAxisData(tCoords); cFactory = cSketch.OpenEdition(); // 스케치 로컬 좌표 축 설정 MECMOD.GeometricElement axis = cSketch.GeometricElements.Item("AbsoluteAxis"); INFITF.CATBaseDispatch localX = axis.GetItem("HDirection"); MECMOD.Line2D locX = (MECMOD.Line2D)localX; locX.ReportName = ++cReportName; INFITF.CATBaseDispatch localY = axis.GetItem("VDirection"); MECMOD.Line2D locY = (MECMOD.Line2D)localY; locX.ReportName = ++cReportName; IEnumerator tGeomList = tGeoms.GetEnumerator(); while (tGeomList.MoveNext()) { TransCAD.IStdSketchGeometry tGeom = (TransCAD.IStdSketchGeometry)tGeomList.Current; if (tGeom.Type == TransCAD.StdSketchGeometryType.Line || tGeom.Type == TransCAD.StdSketchGeometryType.Centerline) { SketchLine2D line2D = new SketchLine2D(this); line2D.TranslateT2C(tGeom); if (tGeom.Type == TransCAD.StdSketchGeometryType.Centerline) { cSketch.CenterLine = cCenterLine; } } else if (tGeom.Type == TransCAD.StdSketchGeometryType.Circle || tGeom.Type == TransCAD.StdSketchGeometryType.CircularArc) { SketchCircle2D circle2D = new SketchCircle2D(this); circle2D.TranslateT2C(tGeom); } } cSketch.CloseEdition(); cReference = PartManager.cPart.CreateReferenceFromObject(cSketch); PartManager.cPart.InWorkObject = cSketch; PartManager.cPart.UpdateObject(cSketch); PartManager.ReferenceManager.NameMap.Add(tSketch.Name, cSketch.get_Name()); }