/// <summary>Добавляем ObjectData-атрибуты к примитиву чертежа</summary> /// <param name="wid"> ObjectId примитива </param> /// <param name="wr"> Данные атрибутов </param> /// <param name="wTbl"> Таблица ObjectData </param> public void AddAttr(ObjectId wid, Data.MyRecord wr, Autodesk.Gis.Map.ObjectData.Table wTbl) { if (wTbl == null) { return; } var acDoc = Application.DocumentManager.MdiActiveDocument; using (acDoc.LockDocument()) { using (var acTrans = acDoc.Database.TransactionManager.StartTransaction()) { using (var odRecord = Record.Create()) { wTbl.InitRecord(odRecord); for (var i = 0; i < wTbl.FieldDefinitions.Count; i++) { var fdef = wTbl.FieldDefinitions[i]; var fval = wr.SearchField(fdef.Name); if (fval != null) { if (!fval.IsGeom) { odRecord[i].Assign(fval.GetString()); } } } wTbl.AddRecord(odRecord, wid); acTrans.Commit(); } } } }
/// <summary>Загружаем данные слоя</summary> /// <param name="wDoc">xml-файл с данными</param> /// <returns>Список записей</returns> /// <exception cref="Data.DataLoadException"> Ошибка XPath при загрузке слоя </exception> internal List <MyRecord> LoadData(XmlDocument wDoc) { try { var wNm = LoadNamespace(wDoc); var layersXmlNodeList = wDoc.DocumentElement?.SelectNodes(_Rule.LayerPath, wNm); if (layersXmlNodeList == null) { return(Table); } foreach (XmlNode n in layersXmlNodeList) { var layerXmlNodeList = n.SelectNodes(_Rule.Entpath, wNm); if (layerXmlNodeList == null) { continue; } foreach (XmlNode nn in layerXmlNodeList) { var wRec = new MyRecord(_Rule); wRec.LoadData(nn, wNm); Table.Add(wRec); } } return(Table); } catch (XPathException e) { throw new DataLoadException("Ошибка XPath при загрузке слоя " + Name, e); } }
/// <summary> /// Загружаем данные слоя /// </summary> /// <param name="wDoc"> xml-файл с данными </param> /// <returns> Список записей </returns> /// <exception cref="Data.DataLoadException"> Ошибка XPath при загрузке слоя </exception> internal List <MyRecord> LoadData(XmlDocument wDoc) { try { XmlNamespaceManager wNM = this.LoadNamespace(wDoc); XmlNodeList LayersXmlNodeList = wDoc.DocumentElement.SelectNodes(this._Rule.LayerPath, wNM); XmlNodeList LayerXmlNodeList; MyRecord wRec; foreach (XmlNode n in LayersXmlNodeList) { LayerXmlNodeList = n.SelectNodes(this._Rule.Entpath, wNM); foreach (XmlNode nn in LayerXmlNodeList) { wRec = new MyRecord(this._Rule); wRec.LoadData(nn, wNM); this.Table.Add(wRec); } } return(this.Table); } catch (System.Xml.XPath.XPathException e) { throw new Data.DataLoadException("Ошибка XPath при загрузке слоя " + this.Name, e); } }
/// <summary> /// Добавляем ObjectData-атрибуты к примитиву чертежа /// </summary> /// <param name="wid"> ObjectId примитива </param> /// <param name="wr"> Данные атрибутов </param> /// <param name="wTbl"> Таблица ObjectData </param> public void AddAttr(ObjectId wid, Data.MyRecord wr, Autodesk.Gis.Map.ObjectData.Table wTbl) { AppServ.Document acDoc = AppServ.Application.DocumentManager.MdiActiveDocument; using (AppServ.DocumentLock acLckDoc = acDoc.LockDocument()) { using (Transaction acTrans = acDoc.Database.TransactionManager.StartTransaction()) { using (Record odRecord = Record.Create()) { wTbl.InitRecord(odRecord); FieldDefinition fdef; Data.FieldValue fval; for (int i = 0; i < wTbl.FieldDefinitions.Count; i++) { fdef = wTbl.FieldDefinitions[i]; fval = wr.SearchField(fdef.Name); if (fval != null) { if (!fval.IsGeom) { odRecord[i].Assign(fval.GetString()); } } } wTbl.AddRecord(odRecord, wid); acTrans.Commit(); } } } }