modifyLayer(ObjectId idLayer, short colorIndex, LineWeight weight, string nameLineType = null) { try { using (BaseObjs._acadDoc.LockDocument()) { using (Transaction tr = BaseObjs.startTransactionDb()) { LayerTableRecord Ltr = (LayerTableRecord)tr.GetObject(idLayer, OpenMode.ForWrite); Ltr.Color = Color.FromColorIndex(ColorMethod.ByBlock, colorIndex); Ltr.LineWeight = weight; if (nameLineType != null) { LinetypeTable LTT = Base_Tools45.LineType.getLineTypeTable(); if (LTT.Has(nameLineType) == false) { BaseObjs._db.LoadLineTypeFile(nameLineType, "acad.lin"); } Ltr.LinetypeObjectId = LTT[nameLineType]; } tr.Commit(); } } } catch (System.Exception ex) { BaseObjs.writeDebug(ex.Message + " Layer.cs: line: 346"); } }
public static void AddLayer(Transaction transaction, Layer layer) { Database db = Active.Database; LinetypeTable lineTypeTabel = transaction.GetObject <LinetypeTable>(db.LinetypeTableId, OpenMode.ForRead); LayerTable layerTable = transaction.GetObject <LayerTable>(db.LayerTableId, OpenMode.ForRead); if (GetLineType(transaction, layer.LineType) is LinetypeTableRecord lineType && GetLayer(transaction, layer.Name) is LayerTableRecord) { LayerTableRecord newLayer = new LayerTableRecord() { Name = layer.Name, LinetypeObjectId = lineType.ObjectId, Color = Color.FromColorIndex(ColorMethod.ByAci, layer.ColorIndex) }; using (new Wrappers.WriteEnabler(layerTable)) { if (layerTable.IsWriteEnabled) { layerTable.Add(newLayer); transaction.AddNewlyCreatedDBObject(newLayer, true); } } } }
getLinetypeTableRecord(string name) { LinetypeTableRecord LTtr = null; try { using (Transaction tr = BaseObjs.startTransactionDb()) { LinetypeTable LTT = getLineTypeTable(); if (LTT.Has(name) == true) { LTtr = (LinetypeTableRecord)tr.GetObject(LTT[name], OpenMode.ForRead); } else { BaseObjs._db.LoadLineTypeFile(name, "ACAD.LIN"); LTtr = (LinetypeTableRecord)tr.GetObject(LTT[name], OpenMode.ForRead); } tr.Commit(); } } catch (System.Exception ex) { BaseObjs.writeDebug(ex.Message + " LineType.cs: line: 63"); } return(LTtr); }
/// <summary> /// 新建图层 /// </summary> /// <param name="db">图形数据库</param> /// <param name="layername">图层名</param> /// <param name="colorIndex">颜色索引</param> /// <param name="linetype">线型</param> /// <param name="lineWeight">线宽</param> /// <param name="isprint">是否打印</param> /// <param name="zs">注释</param> /// <returns></returns> public static ObjectId AddLayer(this Database db, string layername, short colorIndex, string linetype, LineWeight lineWeight, bool isprint, string zs) { //打开层表 LayerTable lt = (LayerTable)db.LayerTableId.GetObject(OpenMode.ForRead); if (!lt.Has(layername)) { LayerTableRecord ltr = new LayerTableRecord { Name = layername, Color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex) };//定义一个新的层表记录 LinetypeTable ltt = (LinetypeTable)db.LinetypeTableId.GetObject(OpenMode.ForRead); if (ltt.Has(linetype)) { ltr.LinetypeObjectId = ltt[linetype]; } else { db.LoadLineTypeFile(linetype, "acadiso.lin"); ltr.LinetypeObjectId = ltt[linetype]; } ltr.LineWeight = lineWeight; ltr.IsPlottable = isprint; ltr.Description = zs; lt.UpgradeOpen(); lt.Add(ltr); db.TransactionManager.AddNewlyCreatedDBObject(ltr, true); lt.DowngradeOpen(); } return(lt[layername]); }
string.Format("Standartization\\{0}\\DataLayers.xml", codeGroup)); // @"Z:\AutoCAD_server\ShareSettings\Standartization" + "\\" + codeGroup + "\\" + "DataLayers.xml"; public List <LayerTableRecord> GetListLayers(Database db, bool isStandart) //Список всех слоев в документе { List <LayerTableRecord> listLayers = new List <LayerTableRecord>(); using (Transaction tr = db.TransactionManager.StartTransaction()) { if (isStandart) { MainForm.dicLineTypes = new Dictionary <long, string>(); LinetypeTable acLinTbl = tr.GetObject(db.LinetypeTableId, OpenMode.ForWrite) as LinetypeTable; foreach (var item in acLinTbl) { LinetypeTableRecord btr = (LinetypeTableRecord)tr.GetObject(item, OpenMode.ForRead); MainForm.dicLineTypes.Add(btr.Id.OldId, btr.Name); } } var layerTable = tr.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable; foreach (var layer in layerTable) { LayerTableRecord ltr = (LayerTableRecord)tr.GetObject(layer, OpenMode.ForWrite, true); ltr.IsLocked = false; listLayers.Add(ltr); } tr.Commit(); } return(listLayers); }
public void CheckLinetype() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (Transaction tr = db.TransactionManager.StartTransaction()) { LinetypeTable ltt = tr.GetObject(db.LinetypeTableId, OpenMode.ForRead) as LinetypeTable; //foreach(ObjectId id in ltt) //{ // LinetypeTableRecord lttr = (LinetypeTableRecord)tr.GetObject(id, OpenMode.ForRead); //} if (!ltt.Has("SWALL")) { LinetypeTableRecord lttr = new LinetypeTableRecord(); lttr.Name = "SWALL"; lttr.PatternLength = 0.75; lttr.NumDashes = 3; lttr.Comments = "___________//_______"; lttr.AsciiDescription = "___________//_______"; ltt.UpgradeOpen(); ltt.Add(lttr); tr.AddNewlyCreatedDBObject(lttr, true); tr.Commit(); } } }
/// <summary> /// Gets the linetype table records. /// </summary> /// <param name="symbolTbl">The symbol table.</param> /// <param name="mode">The mode.</param> /// <param name="filter">The filter.</param> /// <returns></returns> public static IEnumerable <LinetypeTableRecord> GetLinetypeTableRecords(this LinetypeTable symbolTbl, OpenMode mode = OpenMode.ForRead, SymbolTableRecordFilter filter = SymbolTableRecordFilter.None) { return (symbolTbl.GetSymbolTableRecords <LinetypeTableRecord>( symbolTbl.Database.TransactionManager.TopTransaction, mode, filter, false)); }
// 创建带文字的线型 ////// 返回线型ID public static ObjectId CreateLineTypeWithText(string lineTypeName, string text) { Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { // 读出文字样式表 TextStyleTable tt = (TextStyleTable)tr.GetObject(db.TextStyleTableId, OpenMode.ForRead); // 读出线型表 LinetypeTable lt = (LinetypeTable)tr.GetObject(db.LinetypeTableId, OpenMode.ForWrite); if (lt.Has(lineTypeName)) { return(lt[lineTypeName]); } else // 创建新的线型记录. { LinetypeTableRecord ltr = new LinetypeTableRecord(); // ...设置线型记录特性 ltr.Name = lineTypeName; ltr.AsciiDescription = lineTypeName + " Supply ---- " + text + " ---- " + text + " ---- " + text + " ----"; ltr.PatternLength = 1.1; ltr.NumDashes = 3; //分为三段 // 线段Dash #1 ltr.SetDashLengthAt(0, 0.5); // 线段Dash #2 ltr.SetDashLengthAt(1, -0.3); ltr.SetShapeStyleAt(1, tt["Standard"]); //文字样式设定 ltr.SetShapeNumberAt(1, 0); //文字位置设定,用一二维向量控制 ltr.SetShapeOffsetAt(1, new Vector2d(-0.1, -0.05)); ltr.SetShapeScaleAt(1, 0.1); //文字比例 ltr.SetShapeIsUcsOrientedAt(1, false); ltr.SetShapeRotationAt(1, 0); //文字方向,0为顺直接方向 ltr.SetTextAt(1, text); //文字内容 // 线段Dash #3 ltr.SetDashLengthAt(2, -0.3); // 添加新的线型记录到线型表 ObjectId ltId = lt.Add(ltr); tr.AddNewlyCreatedDBObject(ltr, true); tr.Commit(); return(ltId);//返回线型记录ID } } }
public void testLayerIterator() { Database db = HostApplicationServices.WorkingDatabase; Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; StreamWriter textFile = new StreamWriter("c:\\3.txt", false); using (Transaction trans = db.TransactionManager.StartTransaction()) { LayerTable lt = (LayerTable)trans.GetObject(db.LayerTableId, OpenMode.ForRead); LinetypeTable tt = (LinetypeTable)trans.GetObject(db.LinetypeTableId, OpenMode.ForRead); foreach (ObjectId layerId in lt) { LayerTableRecord ltr = (LayerTableRecord)trans.GetObject(layerId, OpenMode.ForRead); String layerName = ltr.Name; String colorName = ltr.Color.ToString(); ObjectId linetypeId = ltr.LinetypeObjectId; LinetypeTableRecord ttr = (LinetypeTableRecord)trans.GetObject(linetypeId, OpenMode.ForRead); String linetypeName = ttr.Name; String withLayer = ltr.LineWeight.ToString(); String str = layerName + " " + colorName + " " + linetypeName + " " + withLayer; textFile.WriteLine(str, false); } textFile.Close(); trans.Commit(); } }
public static void DeleteLayer(string layerName, Database db) //Удаление слоя { using (Transaction tr = db.TransactionManager.StartTransaction()) { LinetypeTable acLinTbl = tr.GetObject(db.LinetypeTableId, OpenMode.ForWrite) as LinetypeTable; var layerTable = tr.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable; foreach (var layer in layerTable) { LayerTableRecord ltr = (LayerTableRecord)tr.GetObject(layer, OpenMode.ForWrite, true); if (ltr.Name.Equals("0")) { db.Clayer = ltr.Id; //обязательная активация в текущий слой 0 } if (!ltr.Name.Equals(layerName)) { continue; } try { ltr.IsLocked = false; ltr.Erase(); break; } catch { } } tr.Commit(); } }
public static void RegisterLayer(this Database currentDatabase, string layerId, short colorIndex = 7, string linetype = "CONTINUOUS") { if (currentDatabase == null) { throw new ArgumentNullException(nameof(currentDatabase)); } // Start a transaction Transaction acTrans = currentDatabase.TransactionManager.TopTransaction; // Open the Layer table for read LayerTable acLyrTbl = acTrans.GetObject(currentDatabase.LayerTableId, OpenMode.ForRead) as LayerTable; if (acLyrTbl is null) { throw new NullReferenceException("Layer table dictionary not retrieved"); } //Return if layer exists if (acLyrTbl.Has(layerId)) { return; } using (LayerTableRecord acLyrTblRec = new LayerTableRecord()) { // Assign the layer the ACI color 3 and a name acLyrTblRec.Color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex); acLyrTblRec.Name = layerId; LinetypeTable acLinTbl = acTrans.GetObject(currentDatabase.LinetypeTableId, OpenMode.ForRead) as LinetypeTable; if (acLinTbl is null) { throw new NullReferenceException("Linetype dictionary not retrieved"); } if (acLinTbl.Has(linetype)) { // Set the linetype for the layer acLyrTblRec.LinetypeObjectId = acLinTbl[linetype]; } else { throw new ArgumentOutOfRangeException("Linetype does not exist", new Exception()); } // Upgrade the Layer table for write acLyrTbl.UpgradeOpen(); // Append the new layer to the Layer table and the transaction acLyrTbl.Add(acLyrTblRec); acTrans.AddNewlyCreatedDBObject(acLyrTblRec, true); } }
public string AjoutePolyline(double startx, double starty, double endx, double endy, double epaisseur, byte R, byte G, byte B, string legende, string linetype, string linfilepath) { //db = HostApplicationServices.WorkingDatabase; //doc = Application.DocumentManager.GetDocument(db); doc = Application.DocumentManager.MdiActiveDocument; db = doc.Database; try { DocumentLock loc = doc.LockDocument(); using (loc) { using (Transaction tr = db.TransactionManager.StartTransaction()) { //doc.Editor.WriteMessage("ok 0"); LinetypeTable lt = (LinetypeTable)tr.GetObject(db.LinetypeTableId, OpenMode.ForWrite); if (!lt.Has(linetype)) { db.LoadLineTypeFile(linetype, linfilepath); } Polyline p = new Polyline(); p.AddVertexAt(p.NumberOfVertices, new Point2d(startx, starty), 0, epaisseur, epaisseur); p.AddVertexAt(p.NumberOfVertices, new Point2d(endx, endy), 0, epaisseur, epaisseur); p.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(R, G, B); //doc.Editor.WriteMessage("ok 1"); //if (AddNewLineType(linetype, linfilepath, tr)) p.Linetype = linetype; //doc.Editor.WriteMessage("ok 2"); if (startx - endx < UNITE_X) { endx = startx + UNITE_X; } BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); btr.AppendEntity(p); tr.AddNewlyCreatedDBObject(p, true); //doc.Editor.WriteMessage("ok 3"); tr.Commit(); return("c bon"); } } } catch (Exception excp) { return("c pas bon /" + excp.Message + "/" + excp.ErrorStatus.ToString()); } }
/// <summary> /// 设置当前线型 /// </summary> /// <param name="db">数据库对象</param> /// <param name="typeName">要设置的线型名</param> public static void SetCurrentLineType(this Database db, string typeName) { var trans = db.TransactionManager; //打开线型表 LinetypeTable lt = (LinetypeTable)trans.GetObject(db.LinetypeTableId, OpenMode.ForRead); if (lt.Has(typeName)) //如果存在名为typeName的线型 { db.Celtype = lt[typeName]; //设置当前线型 } }
public static ObjectId LoadLineType(this Database db, string typeName) { LinetypeTable lt = (LinetypeTable)db.LinetypeTableId.GetObject(OpenMode.ForRead); if (!lt.Has(typeName)) { db.LoadLineTypeFile(typeName, "acadiso.lin"); } return(lt[typeName]); }
static public ObjectIdCollection GetObjIdNonGrafical(Database db) { ObjectIdCollection idsNonGraficals = new ObjectIdCollection(); Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { //Block Table BlockTable btBlock = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; foreach (ObjectId btrId in btBlock) { idsNonGraficals.Add(btrId); } //Dim Style DimStyleTable tbDimSty = tr.GetObject(db.DimStyleTableId, OpenMode.ForRead) as DimStyleTable; foreach (ObjectId btrId in tbDimSty) { idsNonGraficals.Add(btrId); } //Layer LayerTable tbLayer = tr.GetObject(db.LayerTableId, OpenMode.ForRead) as LayerTable; foreach (ObjectId btrId in tbLayer) { idsNonGraficals.Add(btrId); } //Line types LinetypeTable tbLinetype = tr.GetObject(db.LinetypeTableId, OpenMode.ForRead) as LinetypeTable; foreach (ObjectId btrId in tbLinetype) { idsNonGraficals.Add(btrId); } //Table Style TextStyleTable tbTextStyle = tr.GetObject(db.TextStyleTableId, OpenMode.ForRead) as TextStyleTable; foreach (ObjectId btrId in tbTextStyle) { idsNonGraficals.Add(btrId); } foreach (ObjectId objId in idsNonGraficals) { if (!objId.IsValid) { idsNonGraficals.Remove(objId); } } } return(idsNonGraficals); }
/// <summary> /// 从“acadiso.lin”线型文件中装载指定线型 /// </summary> /// <param name="db">数据库对象</param> /// <param name="typeName">线型名</param> /// <returns>返回装载的线型的Id</returns> public static ObjectId LoadLineType(this Database db, string typeName) { //打开线型表 LinetypeTable lt = (LinetypeTable)db.LinetypeTableId.GetObject(OpenMode.ForRead); if (!lt.Has(typeName))//如果不存在名为typeName的线型 { //加载typeName线型 db.LoadLineTypeFile(typeName, "acad.lin"); } return(lt[typeName]);//返回加载的线型的ObjectId }
public static LinetypeTableRecord GetLineType(Transaction transaction, string lineTypeName) { Database db = Active.Database; LinetypeTable lineTypeTable = transaction.GetObject <LinetypeTable>(db.LinetypeTableId, OpenMode.ForRead); if (lineTypeTable.Has(lineTypeName)) { ObjectId oid = lineTypeTable[lineTypeName]; return(transaction.GetObject <LinetypeTableRecord>(oid, OpenMode.ForRead)); } return(null); }
//根据线型名称得到线型ID public static ObjectId GetLineType(string lineTypeName) { ObjectId lineTypeId = ObjectId.Null; Document curDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Autodesk.AutoCAD.DatabaseServices.TransactionManager transactionManager = curDoc.Database.TransactionManager; using (Autodesk.AutoCAD.DatabaseServices.Transaction transaction = transactionManager.StartTransaction()) { LinetypeTable curLineTypeTab = transactionManager.GetObject(curDoc.Database.LinetypeTableId, OpenMode.ForRead) as LinetypeTable; lineTypeId = curLineTypeTab[lineTypeName]; transaction.Commit(); } return(lineTypeId); }
public static void AddLineType(Transaction transaction, LineType lineType) { Document document = Active.Document; Database db = document.Database; LinetypeTable lineTypeTable = transaction.GetObject <LinetypeTable>(db.LinetypeTableId, OpenMode.ForRead); // if the layer is not loaded in the current dwg if (!lineTypeTable.Has(lineType.Name)) { db.LoadLineTypeFile(lineType.Name, lineType.FileName); // Todo: Test if commit doesn't close the transaction. transaction.Commit(); } }
private void applyLineStyle(AC_Entity ent, Color lineColor, string LineStyle, double scale) { ent.Color = lineColor; tr.start_Transaction(); LinetypeTable lintable = tr.AC_Tr.GetObject(tr.AC_Db.LinetypeTableId, OpenMode.ForRead) as LinetypeTable; if (!lintable.Has(LineStyle)) { tr.AC_Db.LoadLineTypeFile(LineStyle, "acad.lin"); } tr.AC_Tr.Commit(); tr.AC_Tr.Dispose(); ent.Linetype = LineStyle; ent.LinetypeScale = scale; }
// CheckLayers: Validate that required Layers and Linetypes // are present in the drawing. Add if not present. public static void CheckLayers(string layerToCheck, short colorToUse, string lineTypeToAssign) { Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (Transaction tr = db.TransactionManager.StartTransaction()) { // Open the Layer table for read LayerTable lt = tr.GetObject(db.LayerTableId, OpenMode.ForRead) as LayerTable; LayerTableRecord ltr; if (lt.Has(layerToCheck) == false) { ltr = new LayerTableRecord(); // Assign the layer the ACI color ltr.Color = Autodesk.AutoCAD.Colors.Color.FromColorIndex(ColorMethod.ByAci, colorToUse); // Name the new Layer ltr.Name = layerToCheck; // Upgrade the Layer table for write lt.UpgradeOpen(); // Append the new layer to the Layer table and the transaction lt.Add(ltr); tr.AddNewlyCreatedDBObject(ltr, true); } else { ltr = tr.GetObject(lt[layerToCheck], OpenMode.ForRead) as LayerTableRecord; } // Open the Line Type table for read LinetypeTable linTbl = tr.GetObject(db.LinetypeTableId, OpenMode.ForRead) as LinetypeTable; if (linTbl.Has(lineTypeToAssign) == false) { // Load desired Linetype db.LoadLineTypeFile(lineTypeToAssign, "acad.lin"); } ltr.UpgradeOpen(); ltr.LinetypeObjectId = linTbl[lineTypeToAssign]; tr.Commit(); } // End Trans } // end CheckLayers()
public static bool CheckLinestyleExists(string LineStyleName) { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (Transaction tr = doc.TransactionManager.StartTransaction()) { //LinetypeTableRecord lttr = new LinetypeTableRecord(); LinetypeTable ltt = (LinetypeTable)tr.GetObject(db.LinetypeTableId, OpenMode.ForRead, true); if (ltt.Has(LineStyleName)) { return(true); } return(false); } }
/// <summary> /// 创建一个新的线型 /// </summary> /// <param name="db">数据库对象</param> /// <param name="typeName">线型名</param> /// <returns>返回新建线型的Id</returns> public static ObjectId AddLineType(this Database db, string typeName) { //打开线型表 LinetypeTable lt = (LinetypeTable)db.LinetypeTableId.GetObject(OpenMode.ForRead); if (!lt.Has(typeName)) //如果存在名为typeName的线型表记录 { lt.UpgradeOpen(); //切换线型表为写 //新建一个线型表记录 LinetypeTableRecord ltr = new LinetypeTableRecord(); ltr.Name = typeName; //设置线型表记录的名称 lt.Add(ltr); //将新的线型表记录的信息添加到的线型表中 db.TransactionManager.AddNewlyCreatedDBObject(ltr, true); lt.DowngradeOpen(); //为了安全,将线型表的状态切换为读 } return(lt[typeName]); //返回新添加的线型表记录的ObjectId }
/// <summary> /// 获取线型ID /// </summary> /// <param name="linetypeName">线型名</param> /// <returns>结果</returns> public static ObjectId GetLinetypeId(string linetypeName) { Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction()) { LinetypeTable oltTab = (LinetypeTable)trans.GetObject(db.LinetypeTableId, OpenMode.ForRead); if (oltTab.Has(linetypeName)) { return(oltTab[linetypeName]); } else { return(db.ContinuousLinetype); } } }
public static ObjectId GetLinestyleID(string LineStyleName) { ObjectId result = ObjectId.Null; Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { LinetypeTable ltt = (LinetypeTable)tr.GetObject(db.LinetypeTableId, OpenMode.ForRead); result = ltt[LineStyleName]; tr.Commit(); } return(result); }
public void AddNewLineType(string linetype, string linfilepath) { try { //ajoute la ligne si elle n'existe pas déjà using (Transaction tr = db.TransactionManager.StartTransaction()) { LinetypeTable lt = (LinetypeTable)tr.GetObject(db.LinetypeTableId, OpenMode.ForWrite); if (!lt.Has(linetype)) { db.LoadLineTypeFile(linetype, linfilepath); } tr.Commit(); } //return true; } catch (Exception excp) { } }
getLineTypeTable() { LinetypeTable LTT = null; Database DB = BaseObjs._db; try { using (Transaction tr = BaseObjs.startTransactionDb()) { LTT = (LinetypeTable)tr.GetObject(DB.LinetypeTableId, OpenMode.ForRead); tr.Commit(); } } catch (System.Exception ex) { BaseObjs.writeDebug(ex.Message + " LineType.cs: line: 30"); } return(LTT); }
public void CreateLayer() { Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction()) { LayerTable lt = (LayerTable)trans.GetObject(db.LayerTableId, OpenMode.ForWrite); ObjectId layerId; if (lt.Has("abc") == false) { LayerTableRecord ltr = new LayerTableRecord(); ltr.Name = "abc"; Color layerColor = Color.FromColorIndex(ColorMethod.ByColor, 120); ltr.Color = layerColor; LinetypeTable tt = (LinetypeTable)trans.GetObject(db.LinetypeTableId, OpenMode.ForRead); LinetypeTableRecord ttr; try { db.LoadLineTypeFile("CENTER", "acadiso.lin"); } catch { // ´Ë´¦ÎÞÐè²Ù×÷. } ttr = (LinetypeTableRecord)trans.GetObject(tt["CENTER"], OpenMode.ForRead); ltr.LinetypeObjectId = ttr.ObjectId; ltr.LineWeight = LineWeight.LineWeight030; db.LineWeightDisplay = true; db.Ltscale = 2; // ͼ²ãËø¶¨ //ltr.IsLocked = True // ͼ²ã¶³½á //ltr.IsFrozen = True // ͼ²ã¹Ø±Õ //ltr.IsOff = True layerId = lt.Add(ltr); trans.AddNewlyCreatedDBObject(ltr, true); db.Clayer = layerId; } trans.Commit(); } }
public ArrayList GetLineTypes() { ArrayList lineTypes = new ArrayList(); Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (Transaction trans = db.TransactionManager.StartTransaction()) { LinetypeTable liTab = trans.GetObject(db.LinetypeTableId, OpenMode.ForRead) as LinetypeTable; foreach (var li in liTab) { LinetypeTableRecord litr = trans.GetObject(li, OpenMode.ForRead) as LinetypeTableRecord; lineTypes.Add(litr.Name); } } return(lineTypes); }
public static ObjectId GetLineTypeId(string strLineType, Database db) { if (string.IsNullOrEmpty(strLineType)) { return(ObjectId.Null); } using (Transaction trans = db.TransactionManager.StartTransaction()) { LinetypeTable ltTab = trans.GetObject(db.LinetypeTableId, OpenMode.ForRead) as LinetypeTable; if (ltTab != null) { if (ltTab.Has(strLineType)) { return(ltTab[strLineType]); } } } return(ObjectId.Null); }
private static LinetypeTableRecord GetLineType(Transaction tr, ObjectId idLineStd, LinetypeTable acLinTbl) { LinetypeTableRecord currentLineType = null; string nameLineType = ""; foreach (var item in MainForm.dicLineTypes) { if (idLineStd.OldId != item.Key) continue; nameLineType = item.Value; break; } foreach (var item in acLinTbl) { LinetypeTableRecord lineTbr = (LinetypeTableRecord)tr.GetObject(item, OpenMode.ForRead); if (lineTbr.Name.ToUpper() == nameLineType.ToUpper()) { currentLineType = lineTbr; return currentLineType; } } return currentLineType; }