一.为什么要预览
预览很多时候用在pdm上,一般浏览的时候也需要浏览,这比直接读文件名来判断这是什么文件来的直接,可以减少寻找到需要文件的时间。
二.solidworks文件的预览方式
1.solidworks文件在资源浏览器中就可以预览到零件的外观图片,用solidworks打开来选择零件也可以预览。
2.使用扩展资源浏览器的方式实现预览;
3.在安装有solidworks的电脑上实现预览;
4.在打开solidworks的情况下预览;
5.在关闭solidworks的情况下预览;
6.在没有安装solidworks的情况下预览;
三.我们该选择哪一种预览方式
我推荐使用添加edrawing控件的方式实现预览
可以实现在无solidworks安装的情况下实现预览;
而且预览不只是一张图片,还可以实现放大缩下,旋转等操作;
可以用作.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}
//通过反射来创建[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);
}
创建出来以后通过类型装换,转换你对应的类
追问
<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>
网友评论