GetPreviewBitmapFile 以奇怪的颜色保存预览位图 (SolidWorks)
GetPreviewBitmapFile save preview bitmap with strange colors (SolidWorks)
我正在为我们的制造部门开发 C# VSTA 宏。
我正在使用 SldWorks.GetPreviewBitMapFile
保存所选模型的位图预览并将其显示在图片框中,如下所示:
除了奇怪的颜色外,代码看起来和执行都很好:
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");
关于 GetPreviewBitmap 从 SW API:
- 目前只有进程内的应用程序(即宏或加载项)可以使用此方法;进程外应用程序(即可执行文件)将出现自动化错误,因为 IPictureDisp 接口无法跨进程边界编组。这是 Microsoft 设计的行为。有关详细信息,请参阅 Microsoft 知识库。
- SolidWorks x64 中的宏或进程外应用程序不支持此方法。
我只能在 .NET 插件和 VBA 宏中让它在 SolidWorks x64 中工作。
如果您需要加载项示例,请告诉我。
SW2016 更新。
GetPreviewBitmapFile 函数适用于进程外的 Csharp 控制台程序。但是,生成的位图颜色很奇怪。事实证明,唯一有效的解决方案是使用 SaveBmp 函数。
我正在为我们的制造部门开发 C# VSTA 宏。
我正在使用 SldWorks.GetPreviewBitMapFile
保存所选模型的位图预览并将其显示在图片框中,如下所示:
除了奇怪的颜色外,代码看起来和执行都很好:
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");
关于 GetPreviewBitmap 从 SW API:
- 目前只有进程内的应用程序(即宏或加载项)可以使用此方法;进程外应用程序(即可执行文件)将出现自动化错误,因为 IPictureDisp 接口无法跨进程边界编组。这是 Microsoft 设计的行为。有关详细信息,请参阅 Microsoft 知识库。
- SolidWorks x64 中的宏或进程外应用程序不支持此方法。
我只能在 .NET 插件和 VBA 宏中让它在 SolidWorks x64 中工作。 如果您需要加载项示例,请告诉我。
SW2016 更新。 GetPreviewBitmapFile 函数适用于进程外的 Csharp 控制台程序。但是,生成的位图颜色很奇怪。事实证明,唯一有效的解决方案是使用 SaveBmp 函数。