有时候,我们对Revit本身自带的命令显示的图标产生了兴趣,要怎么才能获取到这些图片呢。直接在安装目录下找好像并没有找到。那就只能换个思路了...
思路:反编译Revit图标资源类库UIFrameworkRes.dll,获取Revit自身命令的图标资源流,保存到本地。
1、首先找到UIFrameworkRes.dll所在的位置,这个文件在Revit的安装目录下。
2、调用Revit生成图标的方法。在D:\Ribbons会生成Revit所有自身命令的图标。方法具体实现在下文
GenerateRevitIcons(@"D:\Ribbons", @"D:\LightRevit\RevitDlls");
生成revit图标的方法
public static void GenerateRevitIcons(string targetFolder,string revitFolder)
{
var resourceDll = Path.Combine(revitFolder, "UIFrameworkRes.dll");
var resource = Assembly.LoadFile(resourceDll);
var info = resource.GetManifestResourceStream("UIFrameworkRes.g.resources");
ResourceReader resourceReader = new ResourceReader(info);
var directory = targetFolder;
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
foreach (DictionaryEntry en in resourceReader)
{
var name = en.Key.ToString();
if (name.StartsWith(@"ribbon/images"))
{
var tempFileName = Path.GetFileName(name);
var path = Path.Combine(directory, tempFileName);
Stream stream = en.Value as Stream;
if (stream == null)
{
continue;
}
var bytes = new Byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
File.WriteAllBytes(path, bytes);
}
}
}
结束:当然这些代码没什么难度。唯一的所得就是给二次开发的同学打开了一种思路,不要被RevitApi,RevitUIApi这两个类库束缚。
如果只需要命令图标的话,可以关注公众号:小红楼BIM,发送资料编码:da100896, 获取资料下载链接。
公众号二维码: