latour_g 发表于 2020-11-2 16:45:01

阻止预览图标

您好,
我有一个命令,可以将图形的每个块提取到文件夹中。我使用previewicon在Windows资源管理器中查看预览
这是否意味着我在Autocad中看到的预览在其他地方有库存<谢谢

**** Hidden Message *****

Atook 发表于 2020-11-2 22:00:56

嘿latour_g,也许这会有帮助:us Autodesk.AutoCAD.Windows.Data;。

公共静态位图块预览(字符串块名称)。
{。
位图结果 = 新位图(1,1);。
if (Active.Document == null) 返回结果;。
using (Transaction acTr = Active.TransactionManager.StartTransaction())。
{。
BlockTable bt = (BlockTable)acTr.GetObject(Active.Database.BlockTableId, OpenMode.ForRead);。
如果 (!bt.Has(块名)) 返回结果;。
BlockTableRecord btr = acTr.GetObject(bt, OpenMode.ForRead) as BlockTableRecord;。
if (btr == null) 返回结果;。
如果 (btr.HasPreviewIcon)。
{。
结果 = btr,PreviewIcon;。
}。
还。
{。
生成预览图标。
result = new Bitmap(ImageSourceToGDI(CMLContentSearchPreviews.GetBlockTRThumbnail(btr) as BitmapSource));。
}。
acTr.Commit();。
}。
返回结果;。
}。

latour_g 发表于 2020-11-9 11:21:20

谢谢Atok,它看起来很棒,但到目前为止我无法测试它。 我正在努力寻找ImageSourceToGDI。
你能告诉我在哪个图书馆找到它吗?
我正在Autodesk.Windows.Data中查看AcMgd版本21.0,但它不存在。
谢谢

Atook 发表于 2020-11-9 16:03:20

嘿,拉图尔,对不起我把它省略了,它只是同一类中的一个静态函数:private static System.Drawing.ImageSourceToGDI(System.Windows.Media.Imaging.BitmapSource src)。
{。
var ms = new MemoryStream();。
变量编码器 =。
new System.Windows.Media.Imaging.BmpBitmapEncoder();。
编码器,Frames.Add(。
System.Windows.Media.Imaging.BitmapFrame.Create(src)。
);。
编码器,保存(毫秒);。
女士,齐平();。
返回 System.Drawing.Image.FromStream(ms);。
}但这里真正的工作马是:CMLContentSearchPreviews.GetBlockTRThumbnail(btr);它包含在Autodesk.AutoCAD.Windows.DataKean中,在这里有更多关于它的内容。。
页: [1]
查看完整版本: 阻止预览图标