public void btnImportView()
{
Document doc = AcadApp.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
int nVuesCopie = 0;
int nVuesNonCopie = 0;
int nUCSCopie = 0;
int nUCSNonCopie = 0;
List
<string> listUCS_Existant
= new List
<string>(); List
<string> listVues_Existant
= new List
<string>();
listeScaleName.Clear();
using (doc.LockDocument())
{
using (Transaction tr = db.TransactionManager.StartTransaction())
{
ViewTable vt = (ViewTable)tr.GetObject(db.ViewTableId, OpenMode.ForWrite);
UcsTable ut = (UcsTable)tr.GetObject(db.UcsTableId, OpenMode.ForWrite);
//faire une liste des data déjà existant pour ne pas créer de doublons
foreach (ObjectId id in vt)
{
ViewTableRecord vtr = (ViewTableRecord)tr.GetObject(id, OpenMode.ForRead, false);
listVues_Existant.Add(vtr.Name.ToUpper());
}
foreach (ObjectId id in ut)
{
UcsTableRecord utr = (UcsTableRecord)tr.GetObject(id, OpenMode.ForRead, false);
listUCS_Existant.Add(utr.Name.ToUpper());
}
foreach (KeyValuePair<string, UCS_Data> kvp in listeUCS)
{
UCS_Data ucsData = kvp.Value;
if (listUCS_Existant.Contains(ucsData.name.ToUpper())) { nUCSNonCopie = nUCSNonCopie + 1; continue; }
else nUCSCopie = nUCSCopie + 1;
UcsTableRecord utr
= new UcsTableRecord
(); utr.Name = ucsData.name;
utr.Origin = ucsData.ptOrigin;
utr.XAxis = ucsData.axisX;
utr.YAxis = ucsData.axisY;
ut.Add(utr);
tr.AddNewlyCreatedDBObject(utr, true);
}
foreach (KeyValuePair<string, View_Data> kvp in listeView)
{
View_Data vueData = kvp.Value;
if (listVues_Existant.Contains(vueData.name.ToUpper())) { nVuesNonCopie = nVuesNonCopie + 1; continue; }
else nVuesCopie = nVuesCopie + 1;
ViewTableRecord vtr
= new ViewTableRecord
(); vtr.Name = vueData.name;
vtr.Target = vueData.viewTarget;
vtr.Height = vueData.viewHeight;
vtr.CenterPoint = vueData.viewCenter;
vtr.Width = vueData.viewWidth;
vtr.ViewDirection = vueData.viewDirection;
vtr.ViewTwist = vueData.viewTwist;
//read only vtr.Ucs = vueData.UCS;
//read only vtr.UcsName = vueData.UCSname;
//read only vtr.UcsOrthographic = vueData.vUcsOrthographic;
//read only vtr.ViewOrthographic = vueData.vViewOrthographic;
//read only vtr.IsUcsAssociatedToView = vueData.bIsUcsAssociatedToView;
if (ut.Has(vueData.UCSname))
{
UcsTableRecord ucsRec = (UcsTableRecord)tr.GetObject(ut[vueData.UCSname], OpenMode.ForRead);
vtr.SetUcs(ucsRec.ObjectId);
}
vtr.AmbientLightColor = vueData.colAmbientLightColor;
vtr.DefaultLightingOn = vueData.bViewDefaultLightingOn;
vtr.BackClipEnabled = vueData.bBackClipEnabled;
vtr.FrontClipAtEye = vueData.bFrontClipAtEye;
vtr.FrontClipEnabled = vueData.bFrontClipEnabled;
vtr.PerspectiveEnabled = vueData.bPerspectiveEnabled;
vtr.IsPaperspaceView = vueData.bIsPaperspaceView;
vtr.BackClipDistance = vueData.dBackClipDistance;
vtr.Brightness = vueData.dBrightness;
vtr.Contrast = vueData.dContrast;
vtr.FrontClipDistance = vueData.dFrontClipDistance;
vtr.LensLength = vueData.dLensLength;
vtr.DefaultLightingType = vueData.vDefaultLightingType;
//badUCS vtr.Elevation = vueData.dElevation;
//not in database (empty) vtr.LayerState = vueData.bLayerState;
//not in database vtr.ViewAssociatedToViewport = vueData.bViewAssociatedToViewport;
//not in database vtr.ToneOperatorParameters = vueData.voneOperatorParameters;
//invalid input vtr.Thumbnail = vueData.bitThumbnail;
/*ObjectContextManager ocm = db.ObjectContextManager;
ObjectContextCollection occ = ocm.GetContextCollection("ACDB_ANNOTATIONSCALES");
if (ocm != null)
{
if (occ != null)
{
foreach (AnnotationScale asc in occ)
{
listeScaleName.Add(asc.Name.ToUpper(), asc.Scale.ToString());
}
}
}
if (listeScaleName.ContainsKey(vueData.viewAnno.Name.ToUpper()))
vtr.AnnotationScale = vueData.viewAnno;
else
{
AnnotationScale asc = new AnnotationScale();
asc.Name = vueData.viewAnno.Name;
asc.DrawingUnits = vueData.viewAnno.DrawingUnits;
asc.PaperUnits = vueData.viewAnno.PaperUnits;
try
{
occ.AddContext(asc);
}
catch
{
}
vtr.AnnotationScale = vueData.viewAnno;
}*/
vt.Add(vtr);
tr.AddNewlyCreatedDBObject(vtr, true);
}
tr.Commit();
}
}
MessageBox.Show(nVuesCopie + " vues copiées, " + nVuesNonCopie + " vues déjà présentes, " + "\n" + nUCSCopie + " SCU copiés, " + nUCSNonCopie + " SCU déjà présentes.", "Terminé", MessageBoxButtons.OK);
}