Ejemplo n.º 1
0
        private void PositionnerVue(Sheet feuille, View vue, GeomVue g)
        {
            Double JeuEntreVue = 0.05;
            eZone  z;

            if (DicPoint.ContainsKey(feuille.GetName()))
            {
                z             = DicPoint[feuille.GetName()];
                z.PointMax.X += JeuEntreVue;
            }
            else
            {
                z = new eZone();
                Double Ymin = JeuEntreVue;

                if (feuille.eListeDesVues().Count > 0)
                {
                    var e = feuille.eEnveloppeDesVues();
                    Ymin += e.PointMax.Y;
                }

                z.PointMin.X = JeuEntreVue; z.PointMin.Y = Ymin;
                z.PointMax.X = z.PointMin.X; z.PointMax.Y = z.PointMin.Y;
                DicPoint.Add(feuille.GetName(), z);
            }

            Boolean NouvelleLigne = false;

            if (z.PointMax.X > 10)
            {
                NouvelleLigne = true;
            }

            if (NouvelleLigne)
            {
                z.PointMin.Y = z.PointMax.Y + JeuEntreVue;
                z.PointMax.X = z.PointMin.X;
                z.PointMax.Y = z.PointMin.Y;

                NouvelleLigne = false;
            }

            Double[] P = new Double[2];
            P[0] = z.PointMax.X + (g.ptCentreVueX - g.ptMinX);
            P[1] = z.PointMin.Y + (g.ptCentreVueY - g.ptMinY);

            vue.Position = P;

            z.PointMax.X = z.PointMax.X + g.Lg + JeuEntreVue;
            z.PointMax.Y = Math.Max(z.PointMax.Y, z.PointMin.Y + g.Ht);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
        public View CreerVueToleDvp(DrawingDoc dessin, Sheet feuille, PartDoc piece, String configDepliee, String Ref, String materiau, int quantite, Double epaisseur)
        {
            var NomVue = piece.eModelDoc2().eNomSansExt() + " - " + configDepliee;

            dessin.eModelDoc2().eEffacerSelection();

            View Vue = dessin.CreateFlatPatternViewFromModelView3(piece.eModelDoc2().GetPathName(), configDepliee, 0, 0, 0, !AfficherLignePliage, false);

            Vue.ScaleDecimal = 1;

            if (Vue.IsRef())
            {
                Vue.SetName2(NomVue);

                GeomVue g = AppliquerOptionsVue(dessin, piece, Vue);

                Vue.eSelectionner(dessin);

                try
                {
                    Note Note = dessin.eModelDoc2().InsertNote(String.Format("qté {0} // réf {1} [{2}] (Ep{3})", quantite, Ref, materiau, epaisseur));
                    Note.SetTextJustification((int)swTextJustification_e.swTextJustificationCenter);

                    Annotation Annotation = Note.GetAnnotation();

                    TextFormat swTextFormat = Annotation.GetTextFormat(0);
                    // Hauteur du texte en fonction des dimensions du dvp, 2.5% de la dimension max du dvp
                    swTextFormat.CharHeight = Math.Max(0.005, Math.Floor(Math.Max(g.Ht, g.Lg) * 0.025 * 1000) * 0.001);
                    Annotation.SetTextFormat(0, false, swTextFormat);

                    Annotation.Layer = "QUANTITE";
                    Annotation.SetLeader3((int)swLeaderStyle_e.swNO_LEADER, (int)swLeaderSide_e.swLS_SMART, true, true, false, false);
                    // Décalage du texte en fonction des dimensions du dvp, 0.1% de la dimension max du dvp
                    Annotation.SetPosition(g.ptCentreRectangleX, g.ptMinY - Math.Max(0.005, Math.Floor(Math.Max(g.Ht, g.Lg) * 0.001 * 1000) * 0.001), 0);
                    g.Agrandir(Note);
                }
                catch (Exception e)
                {
                    WindowLog.Ecrire("  - Erreur");
                    this.LogMethode(new Object[] { e });
                }

                if (InscrireNomTole)
                {
                    try
                    {
                        Note Note = dessin.eModelDoc2().InsertNote(Ref);
                        Note.SetTextJustification((int)swTextJustification_e.swTextJustificationCenter);

                        Annotation Annotation = Note.GetAnnotation();

                        TextFormat swTextFormat = Annotation.GetTextFormat(0);
                        // Hauteur du texte en fonction des dimensions du dvp, 2.5% de la dimension max du dvp
                        swTextFormat.CharHeight = TailleInscription * 0.001;
                        Annotation.SetTextFormat(0, false, swTextFormat);

                        Annotation.Layer = "GRAVURE";
                        Annotation.SetLeader3((int)swLeaderStyle_e.swNO_LEADER, (int)swLeaderSide_e.swLS_SMART, true, true, false, false);
                    }
                    catch (Exception e)
                    {
                        WindowLog.Ecrire("  - Erreur");
                        this.LogMethode(new Object[] { e });
                    }
                }

                PositionnerVue(feuille, Vue, g);

                return(Vue);
            }

            WindowLog.Ecrire("  - Erreur : pas de vue dvp");

            return(null);
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
0
        public View CreerVueToleDvp(DrawingDoc dessin, Sheet feuille, PartDoc piece, String configDepliee, String Ref, String materiau, int quantite, Double epaisseur)
        {
            // Si des corps autre que la tole dépliée sont encore visible dans la config, on les cache et on recontruit tout
            foreach (Body2 pCorps in piece.eListeCorps(false))
            {
                if ((pCorps.Name == CONSTANTES.NOM_CORPS_DEPLIEE))
                {
                    pCorps.eVisible(true);
                }
                else
                {
                    pCorps.eVisible(false);
                }
            }

            var NomVue = piece.eModelDoc2().eNomSansExt() + " - " + configDepliee;

            if (MajPlans)
            {
                foreach (var vue in feuille.eListeDesVues())
                {
                    if (vue.GetName2() == NomVue)
                    {
                        vue.eSelectionner(dessin);
                        dessin.eModelDoc2().Extension.DeleteSelection2((int)swDeleteSelectionOptions_e.swDelete_Advanced);
                        break;
                    }
                }
            }

            dessin.eModelDoc2().eEffacerSelection();

            View Vue = dessin.CreateFlatPatternViewFromModelView3(piece.eModelDoc2().GetPathName(), configDepliee, 0, 0, 0, !AfficherLignePliage, false);

            Vue.ScaleDecimal = 1;

            if (Vue.IsRef())
            {
                Vue.SetName2(NomVue);

                GeomVue g = AppliquerOptionsVue(dessin, piece, Vue);

                Vue.eSelectionner(dessin);

                {
                    Note Note = dessin.eModelDoc2().InsertNote(String.Format("{0}× {1} [{2}] (Ep{3})", quantite, Ref, materiau, epaisseur));
                    Note.SetTextJustification((int)swTextJustification_e.swTextJustificationCenter);

                    Annotation Annotation = Note.GetAnnotation();

                    TextFormat swTextFormat = Annotation.GetTextFormat(0);
                    // Hauteur du texte en fonction des dimensions du dvp, 2.5% de la dimension max du dvp
                    swTextFormat.CharHeight = Math.Max(0.005, Math.Floor(Math.Max(g.Ht, g.Lg) * 0.025 * 1000) * 0.001);
                    Annotation.SetTextFormat(0, false, swTextFormat);

                    Annotation.Layer = "QUANTITE";
                    Annotation.SetLeader3((int)swLeaderStyle_e.swNO_LEADER, (int)swLeaderSide_e.swLS_SMART, true, true, false, false);
                    // Décalage du texte en fonction des dimensions du dvp, 0.1% de la dimension max du dvp
                    Annotation.SetPosition(g.ptCentreRectangleX, g.ptMinY - Math.Max(0.005, Math.Floor(Math.Max(g.Ht, g.Lg) * 0.001 * 1000) * 0.001), 0);
                    g.Agrandir(Note);
                }

                if (InscrireNomTole)
                {
                    Note Note = dessin.eModelDoc2().InsertNote(Ref);
                    Note.SetTextJustification((int)swTextJustification_e.swTextJustificationCenter);

                    Annotation Annotation = Note.GetAnnotation();

                    TextFormat swTextFormat = Annotation.GetTextFormat(0);
                    // Hauteur du texte en fonction des dimensions du dvp, 2.5% de la dimension max du dvp
                    swTextFormat.CharHeight = TailleInscription * 0.001;
                    Annotation.SetTextFormat(0, false, swTextFormat);

                    Annotation.Layer = "GRAVURE";
                    Annotation.SetLeader3((int)swLeaderStyle_e.swNO_LEADER, (int)swLeaderSide_e.swLS_SMART, true, true, false, false);
                }

                if (ConvertirEsquisse)
                {
                    String titre = Vue.GetName2();
                    Vue.ReplaceViewWithSketch();
                    Vue = feuille.eListeDesVues().Last();
                    Vue.SetName2(titre);
                    g = new GeomVue(Vue);
                }

                PositionnerVue(feuille, Vue, g);

                return(Vue);
            }

            return(null);
        }