用.Net在AutoCAD中创建包含文字的线型

在Kean这篇文章(Creating a complex AutoCAD linetype containing text using .NET)的启发下,修改了一个创建文字线型的函数,按自己的理解补充了一些注释;增加了重复添加线型记录时出现错误的修。在绘图时把图形实体指定为本线型就可以了。

代码如下:

[code=csharp]///

/// 创建带文字的线型 /// /// 返回线型ID  public static ObjectId CreateLineTypeWithText() { 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("Ben")) { return lt["Ben"]; } else { // 创建新的线型记录. LinetypeTableRecord ltr = new LinetypeTableRecord(); // ...设置线型记录特性 ltr.Name = "Ben"; ltr.AsciiDescription = "Ben Supply ---- Ben ---- Ben ---- Ben ----"; 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, "Ben");//文字内容 // 线段Dash #3 ltr.SetDashLengthAt(2, -0.3); // 添加新的线型记录到线型表 ObjectId ltId = lt.Add(ltr); tr.AddNewlyCreatedDBObject(ltr, true); tr.Commit(); return ltId;//返回线型记录ID } } }[/code]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值