Re-bonjour Me revoilà pour répondre a ma propre question. Je vais partager ce que j'ai appris. Donc entre temps j'ai appris le C# et j'ai bien fouillé l'API d'autocad Donc pou geler des calques particulier dans un Viewport (ou fenêtre en bon français) il y a tout simplement une méthode pour les instances des objets Viewport. Voici un exemple dans mon programme en particulier:
// la methode pour ajouter la fenetre dans la présentation
private ObjectId AjouterModelViewport(ObjectId LayoutBlockTabRecId)
{
//la petite Transaction
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
//on ouvre le Bloc de la présentation pou y ajouter la fenetre
BlockTableRecord btrLayout = (BlockTableRecord)acTrans.GetObject(LayoutBlockTabRecId,
OpenMode.ForWrite);
// Une nouvelle fenêtre
Viewport viewport = new Viewport();
// On spécifie ces propriétés
viewport.CenterPoint = new Point3d(101.5, 126.0, 0.0);
viewport.Width = 187.0;
viewport.Height = 246.0;
VerifCreaLayer();
viewport.Layer = "BeS-Cartouche";
viewport.StandardScale = StandardScaleType.Scale1To1;
viewport.ViewTarget = PointBase;
// là on gèle des calques a l’intérieur de la fenêtre
// l'argument ListeCalqueGeler et un objet ObjectIdCollection
viewport.FreezeLayersInViewport(ListeCalqueGeler.GetEnumerator());
// on ajoute tous ça a la présentions
btrLayout.AppendEntity(viewport);
acTrans.AddNewlyCreatedDBObject(viewport, true);
acTrans.Commit();
ModelViewport = viewport.Id;
return viewport.Id;
}
}