Exemplo n.º 1
0
 // 创建带文字的线型 ////// 返回线型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
         }
     }
 }