solidowrks二次开发C#--solidworks预览

一.为什么要预览

预览很多时候用在pdm上,一般浏览的时候也需要浏览,这比直接读文件名来判断这是什么文件来的直接,可以减少寻找到需要文件的时间。

二.solidworks文件的预览方式

1.solidworks文件在资源浏览器中就可以预览到零件的外观图片,用solidworks打开来选择零件也可以预览。
2.使用扩展资源浏览器的方式实现预览;
3.在安装有solidworks的电脑上实现预览;
4.在打开solidworks的情况下预览;
5.在关闭solidworks的情况下预览;
6.在没有安装solidworks的情况下预览;

三.我们该选择哪一种预览方式

我推荐使用添加edrawing控件的方式实现预览
可以实现在无solidworks安装的情况下实现预览;
而且预览不只是一张图片,还可以实现放大缩下,旋转等操作;
可以用作.net控件方便的嵌入到我们的程序当中。


solidowrks二次开发C#--solidworks预览_第1张图片
预览.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}
//通过反射来创建[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);
}
创建出来以后通过类型装换,转换你对应的类

追问

private static object GetActiveXObject(Guid clsid)
        {
            Type t = Type.GetTypeFromCLSID(clsid);
            if (t == null)
            {
                return null;
            }
            return Activator.CreateInstance(t);
        }

就这么写吧?

可是有个问题呀,返回值是object类型的,clsid对应的类里面的方法属性不是没法用了吗
追答
YourActiveClass myActive = Activator.CreateInstance(t) as YourActiveClass ;
if (null == myActive)
{
    throw exception;
}
YourActiveClass 是你这个Guid对应的类型

你可能感兴趣的:(solidowrks二次开发C#--solidworks预览)