通过 Matrix3d 插入块可以有属性吗?
Block insert via Matrix3d can have attributes?
美好的一天,
我正在尝试创建一个 csharp 程序来将多个块插入到 Autocad 图形中,每个块都有不同的插入点。为简单起见,鉴于该块是我使用矩阵插入的另一幅图,我将在下面粘贴它。
问题是我要引入的块具有我需要我的程序能够更改的文本属性。
有什么方法可以继续使用下面的插入方法,同时在插入时仍然设法编辑块属性?然后在第二次插入时进行不同的编辑?
using (tr)
{
Vector3d blockDisplacement1 = new Vector3d(ptInsert.Value.X, ptInsert.Value.Y, ptInsert.Value.Z);
double blockScale = 1.0;
string blockPath = @"T:\test.dwg";
Database tmpDb = new Database(false, true);
tmpDb.ReadDwgFile(blockPath, System.IO.FileShare.Read, true, "");
Matrix3d Transform = Matrix3d
.Scaling(blockScale, Point3d.Origin)
.PreMultiplyBy(Matrix3d.Displacement(blockDisplacement1))
.PreMultiplyBy(ed.CurrentUserCoordinateSystem);
db.Insert(Transform, tmpDb, true);
tr.Commit();
tr.Dispose();
}
}
绝对有可能。将块插入活动图形后,您可以修改现有属性值或打开块 table 记录并添加全新的实体。
这里有几篇博客文章可以帮助您入门:
http://adndevblog.typepad.com/autocad/2012/06/inserting-a-block-with-attributes-to-modelspace.html
http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-2107599E-9405-4D8B-A6DD-83D603B41568
美好的一天,
我正在尝试创建一个 csharp 程序来将多个块插入到 Autocad 图形中,每个块都有不同的插入点。为简单起见,鉴于该块是我使用矩阵插入的另一幅图,我将在下面粘贴它。 问题是我要引入的块具有我需要我的程序能够更改的文本属性。
有什么方法可以继续使用下面的插入方法,同时在插入时仍然设法编辑块属性?然后在第二次插入时进行不同的编辑?
using (tr)
{
Vector3d blockDisplacement1 = new Vector3d(ptInsert.Value.X, ptInsert.Value.Y, ptInsert.Value.Z);
double blockScale = 1.0;
string blockPath = @"T:\test.dwg";
Database tmpDb = new Database(false, true);
tmpDb.ReadDwgFile(blockPath, System.IO.FileShare.Read, true, "");
Matrix3d Transform = Matrix3d
.Scaling(blockScale, Point3d.Origin)
.PreMultiplyBy(Matrix3d.Displacement(blockDisplacement1))
.PreMultiplyBy(ed.CurrentUserCoordinateSystem);
db.Insert(Transform, tmpDb, true);
tr.Commit();
tr.Dispose();
}
}
绝对有可能。将块插入活动图形后,您可以修改现有属性值或打开块 table 记录并添加全新的实体。
这里有几篇博客文章可以帮助您入门:
http://adndevblog.typepad.com/autocad/2012/06/inserting-a-block-with-attributes-to-modelspace.html
http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-2107599E-9405-4D8B-A6DD-83D603B41568