如何插入一个注释,注册内容是一个块引用和一段文字 ?
C#开发|大少爷|2017-07-27 11:02
-
回答:
private void InsertNote() { // 创建一个新图层 CreateLayer(); // 注释文本内容 String sNoteText = "这是一个注释"; // 注释图块名 String sNote = "NoteBlockName"; // 让用点取一个注释插入点。 MxDrawUtility mxUtility = new MxDrawUtility(); MxDrawPoint point = (MxDrawPoint)(mxUtility.GetPoint(null, "点取插入点 :")); if (point == null) { MessageBox.Show("用户取消.."); return; } // 得到当前应用对象 MxDrawApplication app = new MxDrawApplication(); // 得到当前数据库 MxDrawDatabase curDatabase = app.WorkingDatabase(); // 得到块表对象 MxDrawBlockTable blkTable = curDatabase.GetBlockTable(); // 得到当前空间 MxDrawBlockTableRecord curSpace = curDatabase.CurrentSpace(); // 当前块表中是否已经有名为sNote的块表记录,如有返回 MxDrawBlockTableRecord blkRec = blkTable.GetAt(sNote,true); if(blkRec == null) { // 没有就新插入块表记录 // sBlkFilePath是块文字路径 String sBlkFilePath = axMxDrawX1.GetOcxAppPath() + "\Blk\attribblock.dwg"; // 把dwg文件导入到当前数据库。 axMxDrawX1.InsertBlock(sBlkFilePath, sNote); // 得到新插入的块表记录 blkRec = blkTable.GetAt(sNote,true); } if (blkRec != null) { // 在当前空间中插入一个块引用。 MxDrawBlockReference blkRef = curSpace.InsertBlock(point, sNote, 4.0, 0.0); // 创建属性块的属性。 MxDrawResbuf param = new MxDrawResbuf(); blkRef.SetProp("createAttribute", param); } // 插入注释文本。 point.y = point.y - 20.0; curSpace.AddText(point, sNoteText, 16, 0.0, MCAD_McHorizontalAlignment.mcHorizontalAlignmentCenter, MCAD_McVerticalAlignment.mcVerticalAlignmentTop); }