通过Matrix3d进行块插入可以有属性吗?

时间:2015-02-16 05:32:44

标签: c# autocad

美好的一天,

我正在尝试创建一个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();
        }
    }

1 个答案:

答案 0 :(得分:0)

这绝对有可能。将块插入活动图形后,可以修改现有属性值或打开块表记录并添加全新实体。

这里有几篇博客文章可以帮助您入门:

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