gpt4 book ai didi

c# - GetPreviewBitmapFile 使用奇怪的颜色保存预览位图 (SolidWorks)

转载 作者:行者123 更新时间:2023-12-01 18:52:50 27 4
gpt4 key购买 nike

我正在为我们的制造部门开发 C# VSTA 宏。我使用 SldWorks.GetPreviewBitMapFile 保存所选模型的位图预览并将其显示在图片框中,如下所示:

enter image description here

除了奇怪的颜色之外,代码看起来很好并且执行得很好:

bool status = swApp.GetPreviewBitmapFile(filepath, configuration, "D:\\preview.bmp");
pictureBox1.ImageLocation = "D:\\Preview.bmp";
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Refresh();

有人遇到过类似的问题吗?有什么解决办法吗?

最佳答案

这是工作代码的示例:

//to compare output
iSwApp.GetPreviewBitmapFile(@"c:\Path\Part1.SLDPRT", "Default", @"c:\Path\Part1_0.bmp");

object com = iSwApp.GetPreviewBitmap(@"c:\Path\Part1.SLDPRT", "Default");
stdole.StdPicture pic = com as stdole.StdPicture;
Bitmap bmp = Bitmap.FromHbitmap((IntPtr)pic.Handle);
bmp.Save(@"c:\Path\Part1_1.bmp");

关于 SW API 中的 GetPreviewBitmap 有一些注释:

  • 目前只有进程内应用程序(即宏或加载项)可以使用此方法;进程外应用程序(即可执行文件)将出现自动化错误,因为 IPictureDisp 接口(interface)无法跨进程边界进行编码。这是 Microsoft 特意设计的行为。有关详细信息,请参阅 Microsoft 知识库。
  • SolidWorks x64 中的宏或进程外应用程序不支持此方法。

我只能在 SolidWorks x64 中的 .NET 插件和 VBA 宏中使其工作。如果您需要加载项示例,请告诉我。

关于c# - GetPreviewBitmapFile 使用奇怪的颜色保存预览位图 (SolidWorks),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33196536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com