一.為什么要預覽
預覽很多時候用在pdm上,一般瀏覽的時候也需要瀏覽,這比直接讀文件名來判斷這是什么文件來的直接,可以減少尋找到需要文件的時間。
二.solidworks文件的預覽方式
1.solidworks文件在資源瀏覽器中就可以預覽到零件的外觀圖片,用solidworks打開來選擇零件也可以預覽。
2.使用擴展資源瀏覽器的方式實現(xiàn)預覽;
3.在安裝有solidworks的電腦上實現(xiàn)預覽;
4.在打開solidworks的情況下預覽;
5.在關閉solidworks的情況下預覽;
6.在沒有安裝solidworks的情況下預覽;
三.我們該選擇哪一種預覽方式
我推薦使用添加edrawing控件的方式實現(xiàn)預覽
可以實現(xiàn)在無solidworks安裝的情況下實現(xiàn)預覽;
而且預覽不只是一張圖片,還可以實現(xiàn)放大縮下,旋轉(zhuǎn)等操作;
可以用作.net控件方便的嵌入到我們的程序當中。

預覽.gif
四.如何添加solidworks的edrawing預覽控件
1.添加edrawing控件的兩個dll;
using eDrawingHostControl;
using EModelView;
2.在窗口的load事件中將控件加到窗體上;
3.對窗體的控件大小屬性賦值;
ctrl.Location = new Point(230, 10);
ctrl.Size = new System.Drawing.Size(350, 350);
ctrl.eDrawingControlWrapper.FullUI = 0;
4.使用控件的OpenDoc放大打開文檔
ctrl.eDrawingControlWrapper.OpenDoc(partPath_Tem + "\\" + Name, false, false, true, "");
例如你的Clsid是{0321CD0E-FC6A-4537-BE25-F786CF2C8C1C}
//通過反射來創(chuàng)建[ActiveX控件](https://www.baidu.com/s?wd=ActiveX%E6%8E%A7%E4%BB%B6&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)
Type type = Type.GetTypeFromCLSID(new Guid(“0321CD0E-FC6A-4537-BE25-F786CF2C8C1C”));
if (null != type)
{
object activeControl = Activator.CreateInstance(type);
}
創(chuàng)建出來以后通過類型裝換,轉(zhuǎn)換你對應的類
追問
<pre accuse="qRA" style="margin: 0px; padding: 0px; font-family: "PingFang SC", "Lantinghei SC", "Microsoft YaHei", arial, 宋體, sans-serif, tahoma; white-space: pre-wrap; word-wrap: break-word;">private static object GetActiveXObject(Guid clsid)
{
Type t = Type.GetTypeFromCLSID(clsid);
if (t == null)
{
return null;
}
return Activator.CreateInstance(t);
}
就這么寫吧?
可是有個問題呀,返回值是object類型的,clsid對應的類里面的方法屬性不是沒法用了嗎</pre>
追答
<pre accuse="aRA" style="margin: 0px; padding: 0px; font-family: "PingFang SC", "Lantinghei SC", "Microsoft YaHei", arial, 宋體, sans-serif, tahoma; white-space: pre-wrap; word-wrap: break-word;">YourActiveClass myActive = Activator.CreateInstance(t) as YourActiveClass ;
if (null == myActive)
{
throw exception;
}
YourActiveClass 是你這個Guid對應的類型</pre>