Пример #1
0
        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;
            }
        }
Пример #3
0
        // 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;
            }
        }
Пример #4
0
        // 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());
        }