下面我们演示如果在AutoCAD中做一个属性块文件,然后在控件中如何插入该属性块,并修改它的属性。

1. 打开AutoCAD软件,画一些图形,比如我画了一个圆,然后用attdef命令,插入一个属性定义,如下图:

插入属性定义,如下图

2. 使用WBLOCK命令,把我们画的图形输入一个块文件,命令界面如下:

基点,选对圆的中心位置,它是图块的插入原点,点选择对象,选择我们刚画的圆和属性定义,目标指定我们的输出文件位置.

这样我们做好图块文件MyBlock.dwg

3. 下面代码,会插入MyBlock.dwg文件,然后绘一个属性块,然后修改图块属性文字,

js如下:

// 注释文本内容
var sNoteText = "这是属性文字";
// 注释图块名
var sNote = "NoteBlockName";
// 让用点取一个注释插入点。

//与用户交互到在图上提取一个点
var point = mxOcx.GetPoint(false,0,0,"\n 点取插入点:");

if (point == null)
{
   alert("用户取消..");
    return;
}

var curDatabase = mxOcx.GetDatabase();
// 得到块表对象
var blkTable = curDatabase.GetBlockTable();
// 得到当前空间
var curSpace = curDatabase.CurrentSpace();
// 当前块表中是否已经有名为sNote的块表记录,如有返回
var blkRec = blkTable.GetAt(sNote, true);
if (blkRec == null)
{
    //  没有就新插入块表记录
    //  sBlkFilePath是块文字路径


    var sBlkFilePath = "d:\\MyBlock.dwg";
    // 把dwg文件导入到当前数据库。
    mxOcx.InsertBlock(sBlkFilePath, sNote);
    // 得到新插入的块表记录
    blkRec = blkTable.GetAt(sNote, true);
}
if (blkRec != null)
{
    // 在当前空间中插入一个块引用。
    var blkRef = curSpace.InsertBlock(point.x, point.y, sNote, 4.0, 0.0);
    // 创建属性块的属性。
    var param = mxOcx.NewResbuf();
    blkRef.SetProp("createAttribute", param);
    // 修改属性文字。
    for (var j = 0; j < blkRef.AttributeCount; j++)
    {
        // 得到块引用中所有的属性
        var  attrib = blkRef.AttributeItem(j);
        if (attrib.Tag == "MYATTRIB")
        {
            attrib.TextString = sNoteText;
        }
    }
    // 修改了属性文字,通知块引用更新显示。
    blkRef.AssertWriteEnabled();
}
12-26 21:34
查看更多