Exemplo n.º 1
0
        private static bool AddCylinder(CyPhy.Cylinder cylinder,
                                        List <KeyValuePair <string, string> > featureList)
        {
            bool status = true;

            if (cylinder != null)
            {
                // start, end, radius
                MgaModel      cylinderMga = cylinder.Impl as MgaModel;
                List <MgaFCO> startPts    = new List <MgaFCO>();
                startPts = FindByRole(cylinderMga, "CylinderStart");
                List <MgaFCO> endPts = new List <MgaFCO>();
                endPts = FindByRole(cylinderMga, "CylinderEnd");
                List <MgaFCO> radiusPts = new List <MgaFCO>();
                radiusPts = FindByRole(cylinderMga, "CylinderRadius");

                if (startPts.Count != 1 || endPts.Count != 1 || radiusPts.Count != 1)
                {
                    Logger.Instance.AddLogMessage(String.Format("Cylinder geometry must contain 1 CylinderStart, 1 CylinderEnd, and 1 CylinderRadius: {0}", cylinder.ToHyperLink()), Severity.Error);
                    return(false);
                }

                CyPhy.Point startPt = CyPhyClasses.Point.Cast(startPts[0]);
                if (!CreateFeatureFromPoint(startPt,
                                            featureList))
                {
                    Logger.Instance.AddLogMessage(String.Format("Cylinder geometry's CylinderStart point must connect to a Point datum inside a CADModel: {0}", cylinder.ToHyperLink()), Severity.Error);
                    return(false);
                }
                CyPhy.Point endPt = CyPhyClasses.Point.Cast(endPts[0]);
                if (!CreateFeatureFromPoint(endPt,
                                            featureList))
                {
                    Logger.Instance.AddLogMessage(String.Format("Cylinder geometry's CylinderEnd point must connect to a Point datum inside a CADModel: {0}", cylinder.ToHyperLink()), Severity.Error);
                    return(false);
                }
                CyPhy.Point radiusPt = CyPhyClasses.Point.Cast(radiusPts[0]);
                if (!CreateFeatureFromPoint(radiusPt,
                                            featureList))
                {
                    Logger.Instance.AddLogMessage(String.Format("Cylinder geometry's CylinderRadius point must connect to a Point datum inside a CADModel: {0}", cylinder.ToHyperLink()), Severity.Error);
                    return(false);
                }
            }
            else
            {
                status = false;
            }

            //var height = (extrusion.Impl as MgaModel).ChildFCOs.Cast<MgaFCO>().Where(x => x.MetaRole.Name == "ExtrusionHeight").FirstOrDefault();

            return(status);
        }