public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiapp = commandData.Application;
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
Autodesk.Revit.DB.View view = doc.ActiveView;
Reference refer = uidoc.Selection.PickObject(ObjectType.Element, "");
Wall wall = doc.GetElement(refer) as Wall;
Transaction tran = new Transaction(doc, "BIM");
tran.Start();
SchemaBuilder bulder = new SchemaBuilder(new Guid("11111111-aaaa-2222-bbbb-333333333333"));
bulder.SetReadAccessLevel(AccessLevel.Public);
bulder.SetWriteAccessLevel(AccessLevel.Public);
bulder.SetSchemaName("StoreFile");
bulder.SetDocumentation("Data store for File");
FieldBuilder fiedBuilder = bulder.AddSimpleField("filename", typeof(string));
fiedBuilder.SetDocumentation("File Name");
FieldBuilder fiedBuilder2 = bulder.AddArrayField("data", typeof(byte));
fiedBuilder2.SetDocumentation("Store file data");
Schema schema = bulder.Finish();
string filename = null;
string filepath = null;
OpenFileDialog dialog = new OpenFileDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
dialog.Title = "扩展存储";
filename = dialog.SafeFileName;
filepath = dialog.FileName;
}
byte[] data = null;
using (FileStream stream = new FileStream(filepath, FileMode.Open, FileAccess.Read))
{
data = new byte[(int)stream.Length];
stream.Read(data, 0, data.Length);
stream.Close();
}
Entity entity = new Entity(schema);
Field field = schema.GetField("filename");
entity.Set(field, filename);
Field field2 = schema.GetField("data");
entity.Set > (field2, data);
wall.SetEntity(entity);
MessageBox.Show("文件存储成功!");
tran.Commit();
//读取文件字节流
IList listGuid = wall.GetEntitySchemaGuids();
Schema sa = Schema.Lookup(listGuid[0]);
Entity entity = wall.GetEntity(sa);
string name = entity.Get(sa.GetField("filename"));
byte[] fileData = entity.Get > (sa.GetField("data")).ToArray();
string path = @"C:\" + name;
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
fs.Write(fileData, 0, fileData.Length);
fs.Close();
MessageBox.Show("保存成功");
}
return Result.Succeeded;
}