下面我们演示如果在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(); }