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.IStdSketchGeometry tGeom) { if (tGeom.Type == TransCAD.StdSketchGeometryType.Circle) // Circle인 경우 { TransCAD.IStdSketchCircle tCircle = (TransCAD.IStdSketchCircle)tGeom; TransCAD.StdSketchControlPoint tCenterPoint = (TransCAD.StdSketchControlPoint)tCircle.CenterPoint; double cX = tCircle.CenterPoint.X; double cY = tCircle.CenterPoint.Y; MECMOD.Point2D cCenterPoint = SketchManager.cFactory.CreatePoint(cX, cY); cCenterPoint.ReportName = ++SketchManager.cReportName; double tRadius = tCircle.Radius; MECMOD.Circle2D cCircle = SketchManager.cFactory.CreateClosedCircle(cX, cY, tRadius); cCircle.CenterPoint = cCenterPoint; cCircle.ReportName = ++SketchManager.cReportName; } else if (tGeom.Type == TransCAD.StdSketchGeometryType.CircularArc) // Arc인 경우 { TransCAD.IStdSketchCircularArc tArc = (TransCAD.IStdSketchCircularArc)tGeom; TransCAD.StdSketchControlPoint tCenterPoint = (TransCAD.StdSketchControlPoint)tArc.CenterPoint; TransCAD.StdSketchControlPoint tStartPoint = (TransCAD.StdSketchControlPoint)tArc.StartPoint; TransCAD.StdSketchControlPoint tEndPoint = (TransCAD.StdSketchControlPoint)tArc.EndPoint; double cX = tArc.CenterPoint.X; double cY = tArc.CenterPoint.Y; MECMOD.Point2D cCenterPoint = SketchManager.cFactory.CreatePoint(cX, cY); cCenterPoint.ReportName = ++SketchManager.cReportName; double sX = tStartPoint.X; double sY = tStartPoint.Y; MECMOD.Point2D cStartPoint = SketchManager.cFactory.CreatePoint(sX, sY); cStartPoint.ReportName = ++SketchManager.cReportName; double eX = tEndPoint.X; double eY = tEndPoint.Y; MECMOD.Point2D cEndPoint = SketchManager.cFactory.CreatePoint(eX, eY); cEndPoint.ReportName = ++SketchManager.cReportName; double sA = tArc.StartAngle; double eA = tArc.EndAngle; double tRadius = tArc.Radius; MECMOD.Circle2D cCircle = SketchManager.cFactory.CreateCircle(cX, cY, tRadius, sA, eA); cCircle.CenterPoint = cCenterPoint; cCircle.StartPoint = cStartPoint; cCircle.EndPoint = cEndPoint; cCircle.ReportName = ++SketchManager.cReportName; } }
// Post public void TranslateT2C(TransCAD.IStdSketchGeometry tGeom) { if (tGeom.Type == TransCAD.StdSketchGeometryType.Line) // 일반 Line인 경우 { TransCAD.IStdSketchLine tLine = (TransCAD.IStdSketchLine)tGeom; TransCAD.StdSketchControlPoint tStartPoint = (TransCAD.StdSketchControlPoint)tLine.StartPoint; TransCAD.StdSketchControlPoint tEndPoint = (TransCAD.StdSketchControlPoint)tLine.EndPoint; double sX = tStartPoint.X; double sY = tStartPoint.Y; MECMOD.Point2D cStartPoint = SketchManager.cFactory.CreatePoint(sX, sY); cStartPoint.ReportName = ++SketchManager.cReportName; double eX = tEndPoint.X; double eY = tEndPoint.Y; MECMOD.Point2D cEndPoint = SketchManager.cFactory.CreatePoint(eX, eY); cEndPoint.ReportName = ++SketchManager.cReportName; MECMOD.Line2D cLine = SketchManager.cFactory.CreateLine(sX, sY, eX, eY); cLine.StartPoint = cStartPoint; cLine.EndPoint = cEndPoint; cLine.ReportName = ++SketchManager.cReportName; } else if (tGeom.Type == TransCAD.StdSketchGeometryType.Centerline) // Centerline인 경우 { TransCAD.IStdSketchCenterline tLine = (TransCAD.IStdSketchCenterline)tGeom; TransCAD.StdSketchControlPoint tStartPoint = (TransCAD.StdSketchControlPoint)tLine.StartPoint; TransCAD.StdSketchControlPoint tEndPoint = (TransCAD.StdSketchControlPoint)tLine.EndPoint; double sX = tStartPoint.X; double sY = tStartPoint.Y; MECMOD.Point2D cStartPoint = SketchManager.cFactory.CreatePoint(sX, sY); cStartPoint.ReportName = ++SketchManager.cReportName; double eX = tEndPoint.X; double eY = tEndPoint.Y; MECMOD.Point2D cEndPoint = SketchManager.cFactory.CreatePoint(eX, eY); cEndPoint.ReportName = ++SketchManager.cReportName; MECMOD.Line2D cLine = SketchManager.cFactory.CreateLine(sX, sY, eX, eY); cLine.StartPoint = cStartPoint; cLine.EndPoint = cEndPoint; cLine.ReportName = ++SketchManager.cReportName; SketchManager.cCenterLine = cLine; } }
// 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()); }