Solidworks PDM二次开发—文件夹相关操作

Solidworks PDM二次开发—文件夹相关操作

前言

好久没有更新Solidworks PDM的操作了,今天我们来学习一下文件夹的几个常用操作。

新建文件夹

可以参考api中的帮助 Add Folder Example (C#) —这里面有相关的卡设置

               //new 一个库对象
                var vault = new EdmVault5();

                //登陆到库中
                vault.LoginAuto("PDM2020Default", this.Handle.ToInt32());

                var vault2 = (IEdmVault7)vault;

                //本地根目录
                var rootPath = vault2.RootFolderPath;

                               
                var rootFolder = vault2.RootFolder;

                //新建子文件夹
                //这里路径可以多个子层级 如A\B\C 

                var newFolder = rootFolder.CreateFolderPath($@"\newTempFolder", this.Handle.ToInt32());
 IEdmFolder5 parentFolder = default(IEdmFolder5);
                parentFolder = vault2.GetFolderFromPath(ListBox.Items[0].ToString());
 
                dynamic folderName = "Temp";
                IEdmUserMgr5 usrMgr = default(IEdmUserMgr5);
                usrMgr = (IEdmUserMgr5)parentFolder.Vault;
 
                EdmFolderData data = default(EdmFolderData);
                data = new EdmFolderData();
 
                data.SetUserRights(usrMgr.GetUser("Engineer1").ID, (int)EdmRightFlags.EdmRight_Read | (int)EdmRightFlags.EdmRight_Lock);
                data.SetGroupRights(usrMgr.GetUserGroup("Administrators").ID, (int)EdmRightFlags.EdmRight_All);
 
                IEdmCard5 card = default(IEdmCard5);
                card = parentFolder.Vault.RootFolder.GetCard("doc");
                data.SetCardSource(card.ID, "doc");
 
                IEdmFolder5 folder = default(IEdmFolder5);
                folder = parentFolder.AddFolder(this.Handle.ToInt32(), folderName, data);
                Interaction.MsgBox("Created " + folderName + " successfully with ID, " + Conversion.Str(folder.ID) + ", in " + parentFolder.Name);

获取文件夹对象

 	            //读取文件夹 

                //var tempFolderObj = vault2.GetFolderFromPath($@"文件夹路径");


                IEdmEnumeratorVariable6 EnumVarFolder = (IEdmEnumeratorVariable6)folderObj;

                object ResValueObjFolder = null;
                //object ResValueObjFolderDB = null;
                //从数据库中读
                //EnumVarFolder.GetVarFromDb("项目编号", "", out ResValueObjFolderDB);

                EnumVarFolder.GetVar("项目编号", "", out ResValueObjFolder);
                if (ResValueObjFolder != null)
                {
                    MessageBox.Show($"项目编号:" + ResValueObjFolder);
                }

删除文件夹

 			//删除文件夹 DeleteFolder Method (IEdmFolder5)

                rootFolder.DeleteFolder(this.Handle.ToInt32(), folderObj.ID, true);

刷新文件夹

     			//刷新本地文件夹

                rootFolder.Refresh();

结果正常:

结束,收工。

var code = "a7325120-55a0-49ed-9394-1bfdcde9edb6"

posted @
2023-04-25 15:47 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源

SolidWorks二次开发-示例67.创建标准的三视图(工程图)

SolidWorks二次开发-示例67.创建标准的三视图(工程图)

一不小心,又快一个月没有交作业了,不知道有没有人期待我的作业。
不过今天会让大家失望,今天是补交作业。
补一下之前未写的示例:
67.创建标准的三视图

具体的我就不细讲了,直接上代码了:

private void btnCreate3thSTDView_Click(object sender, EventArgs e)
        {
            SldWorks swApp = Utility.ConnectToSolidWorks();

            string dotPath = @"D:\09_Study\CSharpAndSolidWorks\CSharpAndSolidWorks\TemplateModel\Drawing.drwdot";

            //用我们的模板新建一个工程图
            var Part = swApp.NewDocument(dotPath, 12, 0, 0);

            ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;        
        
            DrawingDoc drawingDoc = (DrawingDoc)swModel;

            string partPath = @"D:\09_Study\CSharpAndSolidWorks\CSharpAndSolidWorks\TemplateModel\bodies.sldasm";

            //在右侧工程图窗体刷新所有视图
            //drawingDoc.GenerateViewPaletteViews(partPath);

            //给视图插入模型 参数指定视图方向 与坐标

            var view1=  drawingDoc.CreateDrawViewFromModelView3(partPath, "*Front", 0.1, 0.1, 0);

            var boolstatus = swModel.Extension.SelectByID2(view1.Name, "DRAWINGVIEW", 0, 0, 0, false, 0, null, 0);

            //创建第一个关联视图
            var view2 = drawingDoc.CreateUnfoldedViewAt3(0.25, 0.1, 0, false);

             boolstatus = swModel.Extension.SelectByID2(view1.Name, "DRAWINGVIEW", 0, 0, 0, false, 0, null, 0);

            //创建第二个关联视图
            var view3 = drawingDoc.CreateUnfoldedViewAt3(0.1, 0.18, 0, false);

            //设定比例
            view1.ScaleDecimal = 0.25;


            swModel.EditRebuild3();


        }

上结果 :

好了,我写完了。
完了之后 ,我问了下GPT,看它能给我什么样的方案。

发现它可以呀,一个方法搞定。
然后我就看了看api帮助。然后发现这个方法只有一个参数呀,为什么GPT的这么多?
看来它又学了个”绝招“。 当然这个方法也是可以的,就是需要再对视图的位置进行一些调整。

posted @
2023-04-23 15:44 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源