|
www.mxdraw.com
|
块表记录类型接口,所有可见实体都会放到块表记录中用于显示 支持扩展属性"isFromExternalReference",类型为: LONG 支持扩展属性"pathName",类型为: CString 支持扩展属性函数"AddCustomEntity",添一个自定义实体
[ object, uuid(0898BDA3-7A39-4B5B-8CCB-AAD485AB0893), dual, nonextensible, helpstring("IMxDrawBlockTableRecord interface"), pointer_default(unique) ]
interface IMxDrawBlockTableRecord : IMxDrawSymbolTableRecord;MxDrawBlockTableRecord.idl
例如: 让用户在图上,选择一个图块,把它替换成,Rect.dwg,C#代码.
MxDrawUtility mxUtility = new MxDrawUtility(); object getPt; MxDrawEntity ent = mxUtility.GetEntity(out getPt, "n 选择块引用实体:"); if (ent == null) { return; } if (ent is MxDrawBlockReference) { MxDrawBlockReference blkRef = (MxDrawBlockReference)ent; String sBlkFilePath = axMxDrawX1.GetOcxAppPath() + "\Blk\Rect.dwg"; axMxDrawX1.InsertBlock(sBlkFilePath, "MyBlk2"); MxDrawDatabase curDatabase = (MxDrawDatabase)(axMxDrawX1.GetDatabase()); MxDrawBlockTable blkTable = curDatabase.GetBlockTable(); MxDrawBlockTableRecord myblkRec = blkTable.GetAt("MyBlk2", false); if(myblkRec == null) { return; } blkRef.BlockTableRecordId = myblkRec.ObjectID; }
例如: 在块表记录中添加一个自定义实体.
MxDrawDatabase database = (MxDrawDatabase)axMxDrawX1.GetDatabase();
MxDrawBlockTableRecord blkRec = database.CurrentSpace();
// 调用AddCustomEntity函数绘制自定义实体。 逗号后的字符串"DrawCustEntity"是自定义实体的GUID
MxDrawResbuf ret = blkRec.GetProp("AddCustomEntity,DrawCustEntity");
// 得到自定义实体。
MxDrawCustomEntity ent = (MxDrawCustomEntity)database.ObjectIdToObject(ret.AtObjectId(0));
// 设置自定义实体的属性。
ent.BeginSetValue();
ent.SetDouble("Width", 30);
MxDrawPoint pt1 = new MxDrawPoint();
pt1.x = 10;
pt1.y = 10;
MxDrawPoint pt2 = new MxDrawPoint();
pt2.x = 20;
pt2.y = 20;
ent.SetPoint("Point1", pt1);
ent.SetPoint("Point2", pt2);
ent.SetLong("Count", 2);
ent.EntSetValue();