- 积分
- 1199
- 明经币
- 个
- 注册时间
- 2006-3-1
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
我的代码可以生成一个带Mtext的标注。标注采用引线Leader生成,但是存在一个问题,就是你拖动Mtext的时候引线不会跟着动,请问代码是否存在问题??我用arxdbg工具查看的时候,发现Mtext的softpoints没有关联leader。如果用cad本身带的命令生成leader,是可以联动的,并且Mtext的softpoints关联leader。代码如下,请大家帮忙看看。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
namespace myCsharpARX
{
public class 引线leader标注用
{
//关联引线和注释
[CommandMethod("AddLeaderAnnotation1")]
public static void AddLeaderAnnotation()
{
// 获取当前数据库
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
// 启动事务
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
// 以读模式打开块表
BlockTable acBlkTbl;
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
OpenMode.ForRead) as BlockTable;
// 以写模式打开块表记录模型空间
BlockTableRecord acBlkTblRec;
acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
OpenMode.ForWrite) as BlockTableRecord;
// 创建多行文字(MText)注释
MText acMText = new MText();
acMText.Contents = "Hello, World.";
acMText.Location = new Point3d(350, 250, 0);
acMText.Width = 2;
//// 添加新对象到模型空间,记录事务
acBlkTblRec.AppendEntity(acMText);
acTrans.AddNewlyCreatedDBObject(acMText, true);
// 创建带注释的引线
Leader acLdr = new Leader();
acLdr.AppendVertex(new Point3d(0, 0, 0));
acLdr.AppendVertex(new Point3d(60, 50, 0));
acLdr.AppendVertex(new Point3d(100, 80, 0));
acLdr.HasArrowHead = true;
// 添加新对象到模型空间,记录事务
acLdr.Annotative = AnnotativeStates.True;
acLdr.Annotation = acMText.ObjectId;
//// 添加新对象到模型空间,记录事务
acBlkTblRec.AppendEntity(acLdr);
acTrans.AddNewlyCreatedDBObject(acLdr, true);
// 给引线对象附加注释
//acLdr.EvaluateLeader();
// 提交修改,回收内存
acTrans.Commit();
}
}
|
|