问题描述
想做一个族库管理插件,其中有一个功能是预览其缩略图.
解决方案1
revit api中有一个ElementType.GetPreviewImage方法,ElementType的常用子类就是familySymbol
需要注意的是GetPreviewImage返回的是一个Bitmap,在winform中是直接可以用于pictureBox的image控件的,
但是wpf中的image控件的source一般接受的是一个BitmapImage.
bitmap和bitmapimage的区别以及如何相互转换在此不说,搜一搜即可,但要注意一点:
bitmap转换为bitmapImage或者bitmap.save()时,一定要保证创建bitmap的stream没有关闭,也就是说要避免使用using语句!
解决方案2
不使用任何revit api,使用System.IO.Packaging.StorageInfo的GetStreams方法,以下是链接:
https://thebuildingcoder.typepad.com/blog/2010/06/open-revit-ole-storage.html
他提供了一个示例文件的下载:
https://thebuildingcoder.typepad.com/files/openrevitolestorage.zip
简单概括下原理:反射System.IO.Packaging.StorageRoot的Open方法