solidowrks二次開發(fā)C#--solidworks預覽

一.為什么要預覽

預覽很多時候用在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: &quot;PingFang SC&quot;, &quot;Lantinghei SC&quot;, &quot;Microsoft YaHei&quot;, 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: &quot;PingFang SC&quot;, &quot;Lantinghei SC&quot;, &quot;Microsoft YaHei&quot;, 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>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1、窗體 1、常用屬性 (1)Name屬性:用來獲取或設置窗體的名稱,在應用程序中可通過Name屬性來引用窗體。 ...
    Moment__格調(diào)閱讀 4,805評論 0 11
  • alert(a); function name(parameters) { alert(parameters); ...
    name阿喆azhe閱讀 1,352評論 0 3
  • Web網(wǎng)站測試流程和方法(轉(zhuǎn)載) 1測試流程與方法 1.1測試流程 進行正式測試之前,應先確定如何開展測試,不可盲...
    夏了夏夏夏天閱讀 1,380評論 0 0
  • 世界上有很多在黑暗角落里掙扎著生存的人,如同這部日本影片一樣《無人知曉》。四個可能是不同父親的孩子,由一個...
    如詩清晨閱讀 233評論 0 0
  • 媽媽讀易經(jīng)上一遍。 下午四點多夫君打電話問我會不會去湖南懷化。我說會呀。夫君叫我回家收拾行李,下班到酒店門口兩寶看...
    娟娟_52c0閱讀 182評論 0 0

友情鏈接更多精彩內(nèi)容