通过 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