SolidWorks PDM二次开发—登陆

SolidWorks PDM二次开发—登陆

打开API帮助文件

我们打开SolidWorks PDM Professional API帮助文件,文件名为API_GB.chm

查找 一下登陆的关键字: Login
就能发现如下几个关键方法:

登陆操作

下面是API中对这几个登陆的解释:

  1. Login:Logs in to the specified vault using the specified user name and password.

  2. LoginAuto:Logs in to the specified vault.

  3. LoginEx:Allows an application that is not supplied and supported by SOLIDWORKS Corporation to:

    			log into SOLIDWORKS PDM Professional
    			- or - 
    			log into a vault view
    			- or - 
    			directly access the vault database
    			when the same user is not already logged into a local view.
    
  4. LogInWindowsUser:Logs into SOLIDWORKS PDM Professional as the specified user.

接下来看代码:


			var vault = new EdmVault5();  //新建一库实例
            //检查登陆
            
            #region 登陆方式1
	          	if (!vault.IsLoggedIn)  //检查是否已经登陆
	            {
	                vault.Login("Admin", "XXXXXX", "PDMTraining");                
	            }
            #endregion
          
  			#region 登陆方式2
				//调用PDM自己的登陆界面进行登陆。
            	vault.LoginAuto("PDMTraining",0);
          
            #endregion
            
            #region 登陆方式3
            	//后端静默登陆,适合需要进行提权时进行后台处理。
            	(vault as IEdmVault13).LoginEx("Admin","*****","PDMTraining",0);

            #endregion
            
            #region 登陆方式4
            	//使用windows用户登陆
            	(vault as IEdmVault11).LogInWindowsUser("Admin", "*****", "PDMTraining");

            #endregion 
			  
	

上面就是登陆的一些方法,需要根据实际情况选择。

获取库名

下面再讲一个获取库名称列表的方法:

			#region 获取库列表

            EdmViewInfo[] edmViewInfos = null;
            (vault as IEdmVault13).GetVaultViews(out edmViewInfos, false);

            List<string> vaultNames = new List<string>();

            if (edmViewInfos != null)
            {
                foreach (var edmViewInfo in edmViewInfos)
                {

                    vaultNames.Add(edmViewInfo.mbsVaultName);
                }
            }

            Debug.Print(vaultNames.Count().ToString());

            #endregion

posted @
2021-10-24 10:26 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源

如何 SolidWorks 减小文件大小?

如何 SolidWorks 减小文件大小?

今天在无意中看到了官方培训视频中关于如何减小文件大小的视频,虽然有些方法在实际中操作过,但是有些新方法可以知道一下。
常规的就是把文件另存,这样大小有时候会小很多,尤其是多配置的情况下。
也许后续在SolidWorks二次开发过程中考虑到网络或者文件尺寸因素的情况下,可能用的到。

方法有以下:

  • 保存为最新版本的文件
  • 压缩复杂的特征
  • 方块法
  • 压缩基体特征法
  • 降低显示质量

下面是例子:
原始文件2014 989kb

– 保存为最新版本的文件
这个不解释,就是文件升级。
保存为2020之后 文件变为784kb – 压缩复杂的特征 这个就是把零件中比较复杂的特征压缩掉,可以用过自带的工具体现:

把耗时的特征压缩掉之后 ,另存后大小变为了127kb

– 方块法
这个就是把原有的零件用一个块块包起来。


此时文件大小变成了 378kb:

– 压缩基体特征法

第一个特征压缩掉之后, 其实相当于所有的特征都压缩了。这个方法以前也用过。只是不知道如果有很多特征本来压缩的时候是不是会有问题(无法还原),大家可以自行测试。
这个状态下文件尺寸是 107kb

官方的视频操作中用的是这个方法来重新解除压缩。

– 降低显示质量


上面是高质量的情况下,保存的尺寸

下面是修改为不随文件保存tessellation信息之后 ,文件的大小: 412kb

关于多配置的文件,有些选项可以控制。但是如果配置都随文件保存的话,文件尺寸就很大,如果不保存的话,文件小,但是使用时会重新计算。


posted @
2021-10-22 16:25 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源

SolidWorks 二次开发—SelectionManager的学习以及妙用

SolidWorks 二次开发—SelectionManager的学习以及妙用

SelectionManager的妙用


SelectionManager的介绍

官方API相关解释:
ISelectionMgr Interface: Allows you to get information about selected objects, obtain API objects representing the selected item, and get your selection coordinates interpreted in model or sketch space.
允许您获取有关所选对象的信息,获取表示所选项目的 API 对象,并在模型或草图空间中解释您的选择坐标。


SelectionManager Property (IModelDoc2):Gets the ISelectionMgr object for this document, which makes the currently selected object available. 获取此文档的ISelectionMgr对象,这使当前选定的对象可用。


Remarks:
ISelectionMgr objects are transient because they are invalid as soon as another selection is made. So, do not hold on to these pointers for any length of time.
备注:ISelectionMgr对象是暂时的,因为一旦做出另一个选择,它们就无效。因此,不要长时间持有这些指针。

属性和方法:

http://help.solidworks.com/2018/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISelectionMgr_members.html

常用属性和方法:

EnableContourSelection

		启用或者禁用轮廓选择
		Enables and disables contour selection.  

EnableSelection

		启用或者禁用选择
		Enables or disables selection.  

SelectionColor

	    获取或设置选择颜色
	    Gets or sets the selection color.  

GetSelectedObject6(int Index, int Mark)

(http://help.solidworks.com/2018/english/api/sldworksapi/solidworks.interop.sldworkssolidworks.interop.sldworks.iselectionmgrgetselectedobject6.html)
这个方法是获取当前选中的对象,可以通过swSelectType_e这个对象类型来判断具体的选择。
注意: Index是从1开始,可以指定获取到第几个。
Mark是可以指定标记值。可用于过滤,0 表示没有标记的对象。

	官方api示例: [Get Areas of MidSurface Faces (C#)](http://help.solidworks.com/2018/english/api/sldworksapi/Get_Areas_of_MidSurface_Faces_Example_CSharp.htm)

GetSelectedObjectCount2

这个一般用于配合上面的方法一起使用,用于获取对象数量。

GetSelectedObjectsComponent4

这个我们之前的例子中有讲过,获取选中对象所属的组件实例(适用于装配体和工程图中)。
Gets the selected component in an assembly or drawing.  

GetSelectedObjectType3

这个就是获取选中对象的类型。
	Gets the type of object selected.  

GetSelectionPoint2

这个可以直接获取鼠标点击的那个点的坐标。(全局的)
Gets the selected point in model space coordinates from the currently selected object.  
![在这里插入图片描述](https://img-blog.csdnimg.cn/2b172b282761407bb0dfea65e8f200cc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAUGFpbmUgWmVuZw==,size_10,color_FFFFFF,t_70,g_se,x_16)

GetSelectionPointInSketchSpace2

这个返回草图空间的选中点坐标。
Gets the selection point projected on to the active sketch and returned in sketch space. 

IsInEditTarget2

获取选中的对象是否属于正在编辑的对象。
Gets whether the selected object is in the edit target.  

SetSelectedObjectMark

设置Mark值给指定的选择对象
Sets the mark value for the specified selection.  

SetSelectionPoint2

设置选择的点在模型空间中
Sets the selection point in model space.

SuspendSelectionList / ResumeSelectionList

	Suspends the current selection list.   /  Reinstates the previously suspended selection list.  
	暂停当前​​选择列表。  /   	恢复先前暂停的选择列表。 
	 
	这两个方法才是我们今天要讲的主角。

思考题

在之前 ,如果你让用户选择了5个对象,你要针对每一个对象进行处理,而且中间还要进行一些对象的选择的时候。你是怎么做的?

常用方案

之前我的做法是把每一个对象保存起来,利用持久id或者对象 来一个一个进行处理,但是这样比较麻烦。

正确答案

先看下这一对方法的解释:

感觉就是你可以把当前选择的所有对象暂存,你可以进行一些操作,比如重新选择对象。 用完之后再把之前暂存的选择集恢复出来,就还是原来和状态。 这样你还可以继续进行下一个对象的处理。

具体可以看这个官方的示例:

Add Objects to Selection List Example (C#)


关键代码区域:

				// Start a new selection list

	            ret = selMgr.SuspendSelectionList();    

	            Debug.Print("The current selection list with " + ret + " object (Sketch1) is suspended.");

	            // Add two objects to the new selection list

	            numAdded = selMgr.AddSelectionListObjects((arrObjIn), selData);

	            Debug.Print("A new selection list is started.");


	            // Get number of objects in the new selection list (should be 2)

	            count = selMgr.GetSelectedObjectCount();

	            Debug.Print("The selection list now contains " + count + " objects.");


	            // Get the last object in the new selection list

	            selobj = selMgr.GetSelectedObject6(count, 	-1);

	            Debug.Print("The last object in the selection list is of swSelectType_e = " + selMgr.GetSelectedObjectType3(count, -1) + ".");


	            // Go back to the previous selection list

	            selMgr.ResumeSelectionList();

	            Debug.Print("The previous selection list is resumed.");


	            // Get the number of objects in the selection list (should be 1)

	            count = selMgr.GetSelectedObjectCount();

	            Debug.Print("The selection list now contains " + count + " object (Sketch1).");

总结

像这种方法,如果只是靠宏录制,你永远也不会知道还有这种操作,所以还是要学会常查API,翻一翻,看一看,就会有新的收获 。

如果这篇文章对你有帮助,就点个赞呗。

最后假期余额已不足,祝大家节日快乐。

posted @
2021-10-05 10:18 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源