/// <summary>
        /// Renvoi le modele actif ou ouvre le fichier à partir du chemin passé en parametre.
        /// Le fichier est ouvert en mode silencieux, il ne devrait donc pas être visible.
        /// </summary>
        /// <param name="Chemin"></param>
        /// <returns></returns>
        public eModele Modele(String Chemin = "")
        {
            Log.Methode(cNOMCLASSE);

            eModele pModele = new eModele();
            if (String.IsNullOrEmpty(Chemin))
            {
                Log.Message("Document actif");
                ModelDoc2 pModeleActif = _SwSW.ActiveDoc;
                pModele.Init(pModeleActif, this);
                pModele.ReinitialiserComposant();
            }
            else
            {
                Log.Message("Ouvrir " + Chemin);
                pModele.Init(Ouvrir(Chemin), this);
            }

            if (pModele.EstInitialise)
                return pModele;
            else
                return null;
        }
        /// <summary>
        /// Renvoi le modele en cours d'edition
        /// </summary>
        /// <returns></returns>
        public eModele ModeleEnCoursEdition()
        {
            Log.Methode(cNOMCLASSE);
            eModele pModeleActif = this.Modele();
            eModele pModeleEdite = new eModele();
            if (pModeleActif.EstInitialise && (pModeleActif.TypeDuModele == TypeFichier_e.cAssemblage))
            {
                if (pModeleEdite.Init(pModeleActif.Assemblage.SwAssemblage.GetEditTarget(), this))
                {
                    eComposant pComposant = new eComposant();
                    if (pComposant.Init(pModeleActif.Assemblage.SwAssemblage.GetEditTargetComponent(), pModeleEdite))
                    {
                        pModeleEdite.Composant = pComposant;
                        return pModeleEdite;
                    }

                }
            }

            return pModeleActif;
        }
        /// <summary>
        /// Creer un document
        /// </summary>
        /// <param name="Dossier"></param>
        /// <param name="NomDuDocument"></param>
        /// <param name="TypeDeDocument"></param>
        /// <param name="Gabarit"></param>
        /// <returns></returns>
        public eModele CreerDocument(String Dossier, String NomDuDocument, TypeFichier_e TypeDeDocument, String Gabarit = "")
        {
            eModele pModele = new eModele();
            ModelDoc2 pSwModele;

            String pCheminGabarit = "";

            if (String.IsNullOrEmpty(Gabarit))
            {
                switch (TypeDeDocument)
                {
                    case TypeFichier_e.cAssemblage:
                        pCheminGabarit = _SwSW.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swDefaultTemplateAssembly);
                        break;
                    case TypeFichier_e.cPiece:
                        pCheminGabarit = _SwSW.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swDefaultTemplatePart);
                        break;
                    case TypeFichier_e.cDessin:
                        pCheminGabarit = _SwSW.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swDefaultTemplateDrawing);
                        break;
                }
            }
            else
            {
                String[] pTabCheminsGabarit = _SwSW.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swFileLocationsDocumentTemplates).Split(';');

                foreach (String Chemin in pTabCheminsGabarit)
                {
                    pCheminGabarit = Chemin + @"\" + Gabarit + CONSTANTES.InfoFichier(TypeDeDocument, InfoFichier_e.cGabarit);
                    if (File.Exists(pCheminGabarit))
                        break;
                }
            }

            int Format = 0;
            Double Lg = 0;
            Double Ht = 0;

            if (TypeDeDocument == TypeFichier_e.cDessin)
            {
                Double[] pTab = _SwSW.GetTemplateSizes(pCheminGabarit);
                Format = (int)pTab[0];
                Lg = pTab[1];
                Ht = pTab[2];
            }

            Log.Message(Format.ToString());
            Log.Message(Lg.ToString());
            Log.Message(Ht.ToString());

            pSwModele = _SwSW.NewDocument(pCheminGabarit, Format, Lg, Ht);
            pSwModele.Extension.SaveAs(Dossier + @"\" + NomDuDocument + CONSTANTES.InfoFichier(TypeDeDocument),
                                        (int)swSaveAsVersion_e.swSaveAsCurrentVersion,
                                        (int)swSaveAsOptions_e.swSaveAsOptions_Silent,
                                        null,
                                        ref Erreur,
                                        ref Warning);

            if (pModele.Init(pSwModele, this))
                return pModele;

            return null;
        }