예제 #1
0
        public static void PlierTole(this Body2 Tole, ModelDoc2 mdl, String nomConfigPliee)
        {
            var tmpTole = Tole;

            if (tmpTole.IsNull())
            {
                tmpTole = mdl.ePartDoc().eChercherCorps(CONSTANTES.NOM_CORPS_DEPLIEE, false);

                if (tmpTole.IsNull())
                {
                    return;
                }
            }

            Feature FonctionDepliee = tmpTole.eFonctionEtatDepliee();

            FonctionDepliee.eModifierEtat(swFeatureSuppressionAction_e.swSuppressFeature, nomConfigPliee);

            mdl.eEffacerSelection();

            FonctionDepliee.eParcourirSousFonction(
                f =>
            {
                if ((f.Name.ToLowerInvariant() == CONSTANTES.LIGNES_DE_PLIAGE.ToLowerInvariant()) ||
                    (f.Name.ToLowerInvariant() == CONSTANTES.CUBE_DE_VISUALISATION.ToLowerInvariant()))
                {
                    f.eSelect(true);
                }
                return(false);
            }
                );

            mdl.BlankSketch();
            mdl.eEffacerSelection();
        }
예제 #2
0
        private Boolean AppliquerOptions(ModelDoc2 mdlBase, Feature f, View vue, String nomEsquisse, Boolean afficher)
        {
            if (f.Name == nomEsquisse)
            {
                f.eSelectionnerById2Dessin(mdlBase, vue);
                if (afficher)
                {
                    mdlBase.UnblankSketch();
                }
                else
                {
                    mdlBase.BlankSketch();
                }

                return(true);
            }

            return(false);
        }
예제 #3
0
 private void cmdMasquerEsquisses(ModelDoc2 mdl)
 {
     mdl.eParcourirFonctions(
         f =>
     {
         if (f.GetTypeName2() == FeatureType.swTnFlatPattern)
         {
             return(true);
         }
         else if (f.GetTypeName2() == FeatureType.swTnProfileFeature)
         {
             f.eSelect(false);
             mdl.BlankSketch();
             mdl.eEffacerSelection();
         }
         return(false);
     },
         true
         );
 }
예제 #4
0
        private Boolean AppliquerOptionsPliage(ModelDoc2 mdlBase, Feature f, View vue)
        {
            if (f.Name.StartsWith(CONSTANTES.LIGNES_DE_PLIAGE))
            {
                f.eSelectionnerById2Dessin(mdlBase, vue);

                // Attention à l'ordre pour l'affichage des notes de pliage
                if (AfficherLignePliage)
                {
                    mdlBase.UnblankSketch();
                    vue.ShowSheetMetalBendNotes = AfficherNotePliage;
                }
                else
                {
                    vue.ShowSheetMetalBendNotes = false;
                    mdlBase.BlankSketch();
                }

                return(true);
            }

            return(false);
        }
        private Feature EsquisseRepere(ModelDoc2 mdl, Boolean creer = true)
        {
            // On recherche l'esquisse contenant les parametres
            Feature Esquisse = mdl.eChercherFonction(fc => { return(fc.Name == CONSTANTES.NOM_ESQUISSE_NUMEROTER); });

            if (Esquisse.IsNull() && creer)
            {
                var SM = mdl.SketchManager;

                // On recherche le chemin du bloc
                String cheminbloc = CheminBlocEsquisseNumeroter();

                if (String.IsNullOrWhiteSpace(cheminbloc))
                {
                    return(null);
                }

                // On supprime la definition du bloc
                SupprimerDefBloc(mdl, cheminbloc);

                // On recherche le plan de dessus, le deuxième dans la liste des plans de référence
                Feature Plan = mdl.eListeFonctions(fc => { return(fc.GetTypeName2() == FeatureType.swTnRefPlane); })[1];

                // Selection du plan et création de l'esquisse
                Plan.eSelect();
                SM.InsertSketch(true);
                SM.AddToDB          = false;
                SM.DisplayWhenAdded = true;

                mdl.eEffacerSelection();

                // On récupère la fonction de l'esquisse
                Esquisse = mdl.Extension.GetLastFeatureAdded();

                // On insère le bloc
                MathUtility Mu      = App.Sw.GetMathUtility();
                MathPoint   Origine = Mu.CreatePoint(new double[] { 0, 0, 0 });
                var         def     = SM.MakeSketchBlockFromFile(Origine, cheminbloc, false, 1, 0);

                // On récupère la première instance
                // et on l'explose
                var Tab = (Object[])def.GetInstances();
                var ins = (SketchBlockInstance)Tab[0];
                SM.ExplodeSketchBlockInstance(ins);

                // Fermeture de l'esquisse
                SM.AddToDB          = false;
                SM.DisplayWhenAdded = true;
                SM.InsertSketch(true);

                //// On supprime la definition du bloc
                //SupprimerDefBloc(mdl, cheminbloc);

                // On renomme l'esquisse
                Esquisse.Name = CONSTANTES.NOM_ESQUISSE_NUMEROTER;

                mdl.eEffacerSelection();

                // On l'active dans toutes les configurations
                Esquisse.SetSuppression2((int)swFeatureSuppressionAction_e.swUnSuppressFeature, (int)swInConfigurationOpts_e.swAllConfiguration, null);
            }

            if (Esquisse.IsRef())
            {
                // On selectionne l'esquisse, on la cache
                // et on la masque dans le FeatureMgr
                // elle ne sera pas du tout acessible par l'utilisateur
                Esquisse.eSelect();
                mdl.BlankSketch();
                Esquisse.SetUIState((int)swUIStates_e.swIsHiddenInFeatureMgr, true);
                mdl.eEffacerSelection();

                mdl.EditRebuild3();
            }

            return(Esquisse);
        }
예제 #6
0
        private GeomVue AppliquerOptionsVue(DrawingDoc dessin, PartDoc piece, View vue)
        {
            vue.ShowSheetMetalBendNotes = AfficherNotePliage;

            MathUtility SwMath = App.Sw.GetMathUtility();

            var liste = piece.eListeFonctionsDepliee();

            if (liste.Count == 0)
            {
                return(null);
            }

            Feature FonctionDepliee = liste[0];

            GeomVue g     = null;
            var     Liste = FonctionDepliee.eListeSousFonction();

            Feature f = Liste[0];

            // Les fonctions "Lignes de pliage" et "Cube de visualisation" ne sont pas toujours correctement
            // nommées donc ont considère que la première fonction = Ligne de pliage et la deuxième = Cube de visualisation

            if (f.GetTypeName2() == FeatureType.swTnProfileFeature)
            {
                ModelDoc2 mdlBase = dessin.eModelDoc2();

                f.eSelectionnerById2Dessin(mdlBase, vue);

                if (AfficherLignePliage)
                {
                    mdlBase.UnblankSketch();
                }
                else
                {
                    mdlBase.BlankSketch();
                }

                mdlBase.eEffacerSelection();
            }

            f = Liste[1];

            if (f.GetTypeName2() == FeatureType.swTnProfileFeature)
            {
                try
                {
                    f.eModifierEtat(swFeatureSuppressionAction_e.swUnSuppressFeature);

                    Sketch Esquisse = f.GetSpecificFeature2();

                    if (OrienterDvp)
                    {
                        Double Angle = AngleCubeDeVisualisation(vue, Esquisse);

                        // On oriente la vue
                        switch (OrientationDvp)
                        {
                        case eOrientation.Portrait:
                            if (Math.Abs(Angle) != MathX.eRad90D)
                            {
                                Double a = MathX.eRad90D - Math.Abs(Angle);
                                vue.Angle = (Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a;
                            }
                            break;

                        case eOrientation.Paysage:
                            if (Math.Abs(Angle) != 0 || Math.Abs(Angle) != MathX.eRad180D)
                            {
                                Double a = MathX.eRad90D - Math.Abs(Angle);
                                vue.Angle = ((Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a) - MathX.eRad90D;
                            }
                            break;

                        default:
                            break;
                        }
                    }

                    g = new GeomVue(vue, Esquisse);
                }
                catch
                {
                    WindowLog.EcrireF("Impossible d'orienter la vue : {0}", vue.Name);
                }
            }



            //FonctionDepliee.eParcourirSousFonction(
            //    f =>
            //    {
            //        if (f.Name.StartsWith(CONSTANTES.LIGNES_DE_PLIAGE))
            //        {
            //            //String NomSelection = f.Name + "@" + vue.RootDrawingComponent.Name + "@" + vue.Name;
            //            //Dessin.Extension.SelectByID2(NomSelection, "SKETCH", 0, 0, 0, false, 0, null, 0);

            //            ModelDoc2 mdlBase = dessin.eModelDoc2();

            //            f.eSelectionnerById2Dessin(mdlBase, vue);

            //            if (AfficherLignePliage)
            //                mdlBase.UnblankSketch();
            //            else
            //                mdlBase.BlankSketch();

            //            mdlBase.eEffacerSelection();
            //        }
            //        else if (f.Name.StartsWith(CONSTANTES.CUBE_DE_VISUALISATION))
            //        {
            //            try
            //            {
            //                f.eModifierEtat(swFeatureSuppressionAction_e.swUnSuppressFeature);

            //                Sketch Esquisse = f.GetSpecificFeature2();

            //                if (OrienterDvp)
            //                {
            //                    Double Angle = AngleCubeDeVisualisation(vue, Esquisse);

            //                    // On oriente la vue
            //                    switch (OrientationDvp)
            //                    {
            //                        case eOrientation.Portrait:
            //                            if (Math.Abs(Angle) != MathX.eRad90D)
            //                            {
            //                                Double a = MathX.eRad90D - Math.Abs(Angle);
            //                                vue.Angle = (Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a;
            //                            }
            //                            break;
            //                        case eOrientation.Paysage:
            //                            if (Math.Abs(Angle) != 0 || Math.Abs(Angle) != MathX.eRad180D)
            //                            {
            //                                Double a = MathX.eRad90D - Math.Abs(Angle);
            //                                vue.Angle = ((Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a) - MathX.eRad90D;
            //                            }
            //                            break;
            //                        default:
            //                            break;
            //                    }
            //                }

            //                g = new GeomVue(vue, Esquisse);
            //            }
            //            catch
            //            {
            //                WindowLog.EcrireF("Impossible d'orienter la vue : {0}", vue.Name);
            //            }
            //            return true;
            //        }
            //        return false;
            //    }
            //    );

            return(g);
        }
예제 #7
0
        /// <summary>
        /// 这里提供获取当前装配体的 bounding box
        /// </summary>
        /// <returns>返回 LxWxH</returns>
        private string GetActionAssemlbyBOX()
        {
            BoxSize newboxSize = new BoxSize();

            ModelDoc2 swModel = default(ModelDoc2);

            double L = 0;
            double W = 0;
            double H = 0;

            double[] BoxFeatureDblArray = new double[7];

            double[] BoxFaceDblArray = new double[7];

            SketchPoint[]   swSketchPt  = new SketchPoint[9];
            SketchSegment[] swSketchSeg = new SketchSegment[13];

            swModel = (ModelDoc2)iswApp.IActiveDoc2;

            AssemblyDoc assemblyDoc = (AssemblyDoc)swModel;

            BoxFeatureDblArray = (double[])assemblyDoc.GetBox((int)swBoundingBoxOptions_e.swBoundingBoxIncludeRefPlanes);

            L = (BoxFeatureDblArray[3] - BoxFeatureDblArray[0]) * 1000;
            W = (BoxFeatureDblArray[4] - BoxFeatureDblArray[1]) * 1000;
            H = (BoxFeatureDblArray[5] - BoxFeatureDblArray[2]) * 1000;

            List <double> myList = new List <double> {
                L, W, H
            };

            myList.Sort();

            newboxSize.Length = myList[2];
            newboxSize.Weigth = myList[1];
            newboxSize.Height = myList[0];

            bool b = swModel.Extension.SelectByID2("Size", "SKETCH", 0, 0, 0, false, 0, null, 0);

            if (b == false)
            {
                swModel.Insert3DSketch2(true);
                swModel.SetAddToDB(true);
                swModel.SetDisplayWhenAdded(false);

                SketchManager swSketchMgr = default(SketchManager);

                swSketchMgr = (SketchManager)swModel.SketchManager;
                // Draw points at each corner of bounding box
                swSketchPt[0] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[1], BoxFeatureDblArray[5]);
                swSketchPt[1] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[1], BoxFeatureDblArray[5]);
                swSketchPt[2] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[1], BoxFeatureDblArray[2]);
                swSketchPt[3] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[1], BoxFeatureDblArray[2]);
                swSketchPt[4] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[4], BoxFeatureDblArray[5]);
                swSketchPt[5] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[4], BoxFeatureDblArray[5]);
                swSketchPt[6] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[4], BoxFeatureDblArray[2]);
                swSketchPt[7] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[4], BoxFeatureDblArray[2]);
                // Now draw bounding box
                swSketchSeg[0]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z, swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z);
                swSketchSeg[1]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z, swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z);
                swSketchSeg[2]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z, swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z);
                swSketchSeg[3]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z, swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z);
                swSketchSeg[4]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z, swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z);
                swSketchSeg[5]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z, swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z);
                swSketchSeg[6]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z, swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z);
                swSketchSeg[7]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z, swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z);
                swSketchSeg[8]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z, swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z);
                swSketchSeg[9]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z, swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z);
                swSketchSeg[10] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z, swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z);
                swSketchSeg[11] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z, swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z);

                swModel.SetDisplayWhenAdded(true);
                swModel.SetAddToDB(false);

                //string actionSketchname = swModel.SketchManager.ActiveSketch.Name;

                swModel.Insert3DSketch2(true);

                swModel.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, true, false, "Size");
                swModel.ClearSelection2(true);

                swModel.Extension.SelectByID2("Size", "SKETCH", 0, 0, 0, false, 0, null, 0);

                swModel.BlankSketch();

                swModel.ClearSelection2(true);
            }

            BoxSize boxSize = new BoxSize();

            boxSize.Length = Math.Round(newboxSize.Length, 0);
            boxSize.Weigth = Math.Round(newboxSize.Weigth, 0);
            boxSize.Height = Math.Round(newboxSize.Height, 0);

            string proText = string.Join("x", boxSize.Length, boxSize.Weigth, boxSize.Height);

            return(proText);
        }
예제 #8
0
        private GeomVue AppliquerOptionsVue(DrawingDoc dessin, PartDoc piece, View vue)
        {
            vue.ShowSheetMetalBendNotes = AfficherNotePliage;

            MathUtility SwMath = App.Sw.GetMathUtility();

            ModelDoc2 mdl = dessin.eModelDoc2();

            Body2 c = piece.eChercherCorps(CONSTANTES.NOM_CORPS_DEPLIEE, true);

            GeomVue g = null;

            c.eFonctionEtatDepliee().eParcourirSousFonction(
                f =>
            {
                if (f.Name.StartsWith(CONSTANTES.LIGNES_DE_PLIAGE))
                {
                    String NomSelection = f.Name + "@" + vue.RootDrawingComponent.Name + "@" + vue.Name;
                    mdl.Extension.SelectByID2(NomSelection, "SKETCH", 0, 0, 0, false, 0, null, 0);
                    if (AfficherLignePliage)
                    {
                        mdl.UnblankSketch();
                    }
                    else
                    {
                        mdl.BlankSketch();
                    }

                    mdl.eEffacerSelection();
                }
                else if (f.Name.StartsWith(CONSTANTES.CUBE_DE_VISUALISATION))
                {
                    try
                    {
                        f.eModifierEtat(swFeatureSuppressionAction_e.swUnSuppressFeature);

                        Sketch Esquisse = f.GetSpecificFeature2();

                        if (OrienterDvp)
                        {
                            Double Angle = AngleCubeDeVisualisation(vue, Esquisse);

                            // On oriente la vue
                            switch (OrientationDvp)
                            {
                            case eOrientation.Portrait:
                                if (Math.Abs(Angle) != MathX.eRad90D)
                                {
                                    Double a  = MathX.eRad90D - Math.Abs(Angle);
                                    vue.Angle = (Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a;
                                }
                                break;

                            case eOrientation.Paysage:
                                if (Math.Abs(Angle) != 0 || Math.Abs(Angle) != MathX.eRad180D)
                                {
                                    Double a  = MathX.eRad90D - Math.Abs(Angle);
                                    vue.Angle = ((Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a) - MathX.eRad90D;
                                }
                                break;

                            default:
                                break;
                            }
                        }

                        g = new GeomVue(vue, Esquisse);
                    }
                    catch
                    {
                        WindowLog.EcrireF("Impossible d'orienter la vue : {0}", vue.Name);
                    }
                    return(true);
                }
                return(false);
            }
                );

            return(g);
        }
예제 #9
0
        public void GetBoundingBox()
        {
            BoxSize   newboxSize = new BoxSize();
            BoxSize   boxSize    = new BoxSize();
            ModelDoc2 swModel    = default(ModelDoc2);

            double L = 0;
            double W = 0;
            double H = 0;

            double[] BoxFeatureDblArray = new double[7];

            double[]      BoxFaceDblArray = new double[7];
            SketchManager swSketchMgr     = default(SketchManager);

            SketchPoint[]   swSketchPt  = new SketchPoint[9];
            SketchSegment[] swSketchSeg = new SketchSegment[13];

            swModel = (ModelDoc2)iswApp.IActiveDoc2;

            PartDoc swPart = (PartDoc)swModel;

            BoxFeatureDblArray = (double[])swPart.GetPartBox(true);

            Debug.Print("  Pt1 = " + "(" + BoxFeatureDblArray[0] * 1000.0 + ", " + BoxFeatureDblArray[1] * 1000.0 + ", " + BoxFeatureDblArray[2] * 1000.0 + ") mm");
            Debug.Print("  Pt2 = " + "(" + BoxFeatureDblArray[3] * 1000.0 + ", " + BoxFeatureDblArray[4] * 1000.0 + ", " + BoxFeatureDblArray[5] * 1000.0 + ") mm");
            L = (BoxFeatureDblArray[3] - BoxFeatureDblArray[0]) * 1000;
            W = (BoxFeatureDblArray[4] - BoxFeatureDblArray[1]) * 1000;
            H = (BoxFeatureDblArray[5] - BoxFeatureDblArray[2]) * 1000;

            List <double> myList = new List <double> {
                L, W, H
            };

            myList.Sort();

            newboxSize.Length = myList[2];
            newboxSize.Weigth = myList[1];
            newboxSize.Height = myList[0];

            swModel.Insert3DSketch2(true);
            swModel.SetAddToDB(true);
            swModel.SetDisplayWhenAdded(false);

            swSketchMgr = (SketchManager)swModel.SketchManager;
            // Draw points at each corner of bounding box
            swSketchPt[0] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[1], BoxFeatureDblArray[5]);
            swSketchPt[1] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[1], BoxFeatureDblArray[5]);
            swSketchPt[2] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[1], BoxFeatureDblArray[2]);
            swSketchPt[3] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[1], BoxFeatureDblArray[2]);
            swSketchPt[4] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[4], BoxFeatureDblArray[5]);
            swSketchPt[5] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[4], BoxFeatureDblArray[5]);
            swSketchPt[6] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[4], BoxFeatureDblArray[2]);
            swSketchPt[7] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[4], BoxFeatureDblArray[2]);
            // Now draw bounding box
            swSketchSeg[0]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z, swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z);
            swSketchSeg[1]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z, swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z);
            swSketchSeg[2]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z, swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z);
            swSketchSeg[3]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z, swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z);
            swSketchSeg[4]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z, swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z);
            swSketchSeg[5]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z, swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z);
            swSketchSeg[6]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z, swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z);
            swSketchSeg[7]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z, swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z);
            swSketchSeg[8]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z, swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z);
            swSketchSeg[9]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z, swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z);
            swSketchSeg[10] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z, swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z);
            swSketchSeg[11] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z, swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z);

            swModel.SetDisplayWhenAdded(true);
            swModel.SetAddToDB(false);

            //string actionSketchname = swModel.SketchManager.ActiveSketch.Name;

            swModel.Insert3DSketch2(true);

            swModel.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, true, false, "Size");
            swModel.ClearSelection2(true);

            swModel.Extension.SelectByID2("Size", "SKETCH", 0, 0, 0, false, 0, null, 0);

            swModel.BlankSketch();

            swModel.ClearSelection2(true);

            boxSize.Length = Math.Round(newboxSize.Length, 1);
            boxSize.Weigth = Math.Round(newboxSize.Weigth, 1);
            boxSize.Height = Math.Round(newboxSize.Height, 1);
            //  swModel.Extension.CustomPropertyManager[""].Delete("尺寸");

            string proText = string.Join("x", boxSize.Length, boxSize.Weigth, boxSize.Height);

            string proTextStorck = string.Join("x", boxSize.Length + 10, boxSize.Weigth + 2, boxSize.Height + 1);

            swModel.Extension.CustomPropertyManager[""].Add3("零件尺寸", 30, proText, 1);
            swModel.Extension.CustomPropertyManager[""].Add3("下料尺寸", 30, proTextStorck, 1);
            swModel.Extension.CustomPropertyManager[""].Add3("下料方式", 30, "", 1);

            // swModel.AddCustomInfo("尺寸","Text", boxSize.Length.ToString());

            swModel.Save();
            iswApp.CloseDoc(swModel.GetPathName());
        }
예제 #10
0
            private Feature EsquisseRepere(ModelDoc2 mdl)
            {
                // On recherche l'esquisse contenant les parametres
                Feature Esquisse = mdl.eChercherFonction(fc => { return(fc.Name == CONSTANTES.NOM_ESQUISSE_NUMEROTER); });

                if (Esquisse.IsNull())
                {
                    var SM = mdl.SketchManager;

                    // On recherche le chemin du bloc
                    String cheminbloc = "";

                    var CheminDossierBloc = App.Sw.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swFileLocationsBlocks).Split(new String[] { ";" }, StringSplitOptions.RemoveEmptyEntries);

                    foreach (var chemin in CheminDossierBloc)
                    {
                        var d = new DirectoryInfo(chemin);
                        var r = d.GetFiles(CONSTANTES.NOM_BLOCK_ESQUISSE_NUMEROTER, SearchOption.AllDirectories);
                        if (r.Length > 0)
                        {
                            cheminbloc = r[0].FullName;
                            break;
                        }
                    }

                    if (String.IsNullOrWhiteSpace(cheminbloc))
                    {
                        return(null);
                    }

                    Action SupprimerDefBloc = delegate
                    {
                        var TabDef = (Object[])SM.GetSketchBlockDefinitions();
                        if (TabDef.IsRef())
                        {
                            foreach (SketchBlockDefinition blocdef in TabDef)
                            {
                                if (blocdef.FileName == cheminbloc)
                                {
                                    Feature d = blocdef.GetFeature();
                                    d.eSelect();
                                    mdl.Extension.DeleteSelection2((int)swDeleteSelectionOptions_e.swDelete_Absorbed);
                                    mdl.eEffacerSelection();
                                    break;
                                }
                            }
                        }
                    };

                    SupprimerDefBloc();

                    // On recherche le plan de dessus, le deuxième dans la liste des plans de référence
                    Feature Plan = mdl.eListeFonctions(fc => { return(fc.GetTypeName2() == FeatureType.swTnRefPlane); })[1];

                    // Selection du plan et création de l'esquisse
                    Plan.eSelect();
                    SM.InsertSketch(true);
                    SM.AddToDB          = false;
                    SM.DisplayWhenAdded = true;

                    mdl.eEffacerSelection();

                    // On récupère la fonction de l'esquisse
                    Esquisse = mdl.Extension.GetLastFeatureAdded();

                    // On insère le bloc
                    MathUtility Mu      = App.Sw.GetMathUtility();
                    MathPoint   Origine = Mu.CreatePoint(new double[] { 0, 0, 0 });
                    var         def     = SM.MakeSketchBlockFromFile(Origine, cheminbloc, false, 1, 0);

                    // On récupère la première instance
                    // et on l'explose
                    var Tab = (Object[])def.GetInstances();
                    var ins = (SketchBlockInstance)Tab[0];
                    SM.ExplodeSketchBlockInstance(ins);

                    // Fermeture de l'esquisse
                    SM.AddToDB          = false;
                    SM.DisplayWhenAdded = true;
                    SM.InsertSketch(true);

                    // On supprime la definition du bloc
                    SupprimerDefBloc();

                    // On renomme l'esquisse
                    Esquisse.Name = CONSTANTES.NOM_ESQUISSE_NUMEROTER;

                    mdl.eEffacerSelection();

                    // On l'active dans toutes les configurations
                    Esquisse.SetSuppression2((int)swFeatureSuppressionAction_e.swUnSuppressFeature, (int)swInConfigurationOpts_e.swAllConfiguration, null);
                }

                // On selectionne l'esquisse, on la cache
                // et on la masque dans le FeatureMgr
                // elle ne sera pas du tout acessible par l'utilisateur
                Esquisse.eSelect();
                mdl.BlankSketch();
                Esquisse.SetUIState((int)swUIStates_e.swIsHiddenInFeatureMgr, true);
                mdl.eEffacerSelection();
                return(Esquisse);
            }