SMS MANA PUNKU IOMANTA CHAYANCHU

1 概述
2 什么是Solidworks二次开�?
3 Solidworks二次开�的�义
4 Solidworks二次开�的应用
5 Solidworks二次开�的工具
6 Solidworks二次开�的步骤
7 Solidworks二次开�的技巧
8 Solidworks二次开�的优势
9 Solidworks二次开�的挑战
10 如何学习Solidworks二次开�?
11 Solidworks二次开�的未�
12 �功案例
13 结论
14 常�问题解答
Solidworks二次开�

  1. 概述
  2. 什么是Solidworks二次开�?
    2.1 Solidworks二次开�的�义
    2.2 Solidworks二次开�的应用
    2.3 Solidworks二次开�的工具
  3. Solidworks二次开�的步骤
  4. Solidworks二次开�的技巧
  5. Solidworks二次开�的优势
  6. Solidworks二次开�的挑战
  7. 如何学习Solidworks二次开�?
  8. Solidworks二次开�的未�
  9. �功案例
  10. 结论
  11. 常�问题解答
    Solidworks二次开�
  12. 概述
    Solidworks是一�广泛应用�工程设计领域的软件,而Solidworks二次开�是在其基础上进行二次开�,以满足个性化需求和��工作效�。

  13. 什么是Solidworks二次开�?
    2.1 Solidworks二次开�的�义
    Solidworks二次开��以根�用户的具体需求,定制化功能,使得软件更加适用���行业和项目。

2.2 Solidworks二次开�的应用
Solidworks二次开�广泛应用�机械设计�汽车制造�航空航天等领域,为工程师�供更加�活的工具和解决方案。

2.3 Solidworks二次开�的工具
Solidworks二次开�的工具包括API(应用程���)����件等,用户�以根�需�选择�适的工具进行开�。

  1. Solidworks二次开�的步骤
    Solidworks二次开�的步骤包括需求分��设计�编��测试和部署等,确�开�过程顺利进行。

  2. Solidworks二次开�的技巧
    在Solidworks二次开�中,��好编程技巧和Solidworks API的使用是�常��的。

  3. Solidworks二次开�的优势
    Solidworks二次开�的优势在��以满足个性化需求,�高工作效�,并且�以��有系统无�集�。

  4. Solidworks二次开�的挑战
    尽管Solidworks二次开�有诸多优势,但也�临�技术难度较高�学习曲线陡峭等挑战。

  5. 如何学习Solidworks二次开�?
    想�学习Solidworks二次开�,�以通过官方文档�在线教程��加培训�等方�进行学习。

  6. Solidworks二次开�的未�
    ��工业技术的�断�展,Solidworks二次开�将会越�越�到�视,为�行业�供更加个性化的解决方案。

  7. �功案例
    列举一些�功应用Solidworks二次开�的案例,展示其在�际应用中的价值和作用。

  8. 结论
    Solidworks二次开�是一项�常有�景的工作,通过学习和�践,�以为个人和�业带�巨大的价值。

  9. 常�问题解答
  10. Solidworks二次开�难�?

学习任何新技能都会�临一定的挑战,Solidworks二次开�也�例外。但��您有�心和毅力,��Solidworks二次开�并�是一件太困难的事情。

  1. 学习Solidworks二次开�需�具备什么样的基础?

最好具备一定的编程基础,熟悉��对象的编程语言会有所帮助。�外,对Solidworks软件的基本�作也是必备的。

  1. Solidworks二次开�有哪些�际应用?

Solidworks二次开��以应用���工程设计项目,比如自动化设计�定制化功能开�等。具体应用�决�您的需求和创造力。

  1. 学习Solidworks二次开�需�多长时间?

这�决�个人的学习速度和投入时间。一般�说,��基本的Solidworks二次开�技能�能需�几个月到一年的时间。

  1. 学会Solidworks二次开�之�,�以�中�得什么?

定制化工具和功能:通过二次开�,您�以根�特定需求创建定制化的工具和功能,以�高工作效�和自动化工作�程[1].
�强用户体验:二次开��以帮助改善Solidworks的用户体验,例如添加新的按钮�工具�或界�元素�使�作更加直观和便�[2].
自动化任务:您�以利用二次开�创建脚本和��自动执行��性任务,�而节�时间和�少错误[4].
�高生产效�:通过开�定制化的解决方案,您�以加快产�设计和开�过程,�而�高生产效�和���本[5].
� Sources
zhuanlan.zhihu.com – ç•…è°ˆSolidWorksä¸�API 二次开å�‘
zhihu.com – 如何进行Solidworks二次开å�‘?
csdn.net – C# Solidworks二次开å�‘:自动创建虚拟零件å�Šä½¿ç”¨æ³¨æ„�事项
ugapi.com – 智汇3Dè�”å�ˆSolidWorks二次开å�‘圈内多ä½�资深开å�‘者

YOUTUBE NISQAPI GATA IO

SolidWorks二次开�指的是使用SolidWorks软件�供的开�工具和API(应用程���),对SolidWorks软件进行定制化开�,以适应用户特定需求的过程。通过这�方�,用户�以自定义SolidWorks的功能�界�和工具,使其更加符�其工作�程和需求,�高工作效�和精度。SolidWorks二次开�需�具备一定的编程和软件开�技能,比如熟悉C++�C#�VB�Python等编程语言,并熟悉SolidWorks API的使用方法。

刚好最近没什么主题写文章,有个网�自学开�,问到打包的改�问题。我就�写个例��,因为官方的例��写了加�缀和生缀,没有写如何修改�个零件的�称,以�如何��标准件的�始引用关系。

举个例�,下�这个零件有三个零件一个工程图
在这里�入图片�述

在这里�入图片�述
如�用英文系统或者英文版solidworks的人肯定能看出�,这个�作是Pack And Go
所以先在api帮助中找一找。
在这里�入图片�述
�具体的例�我就�讲了,直�上引起代�:


        private void btnPackAndGo_Click(object sender, EventArgs e)
        {

            SldWorks swApp = Utility.ConnectToSolidWorks();

            string sourceAsmFile = @"D:\09_Study\CSharpAndSolidWorks\CSharpAndSolidWorks\TemplateModel\TempAssembly.sldasm";
            string targetAsmFolder = @"D:\PackPath\";
            Dictionary<string, string> replaceList= new Dictionary<string, string>();

            replaceList.Add("TempAssembly", "我的新装�");
            replaceList.Add("clamp1", "新零件1");
            replaceList.Add("clamp3", "新零件6");
            replaceList.Add("MateTest", "��测试");

            PackAndGo(swApp, sourceAsmFile, targetAsmFolder, true,replaceList,"SW-","");

        }

        /// <summary>
        /// 利用solidworks打包
        /// </summary>
        /// <param name="swApp"></param>
        /// <param name="sourceAsmFile">�装�体路径</param>
        /// <param name="targetAsmFile">目标路径</param>
        /// <param name="includeDwg">是�包�图纸</param>
        /// <param name="replaceList">替�内容</param>
        /// <param name="AddPrefix">�缀</param>
        /// <param name="AddSuffix">�缀</param>
        private void PackAndGo(SldWorks swApp, string sourceAsmFile,string targetAsmFolder,bool includeDwg, Dictionary<string,string> replaceList,string AddPrefix="",string AddSuffix="")
        {
            ModelDoc2 swModelDoc = default(ModelDoc2);
            ModelDocExtension swModelDocExt = default(ModelDocExtension);
            PackAndGo swPackAndGo = default(PackAndGo);         
            bool status = false;
            int warnings = 0;
            int errors = 0;
            int i = 0;
            int namesCount = 0;
            string myPath = null;
            int[] statuses = null;

            // Open assembly

            swModelDoc = (ModelDoc2)swApp.OpenDoc6(sourceAsmFile, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
            swModelDocExt = (ModelDocExtension)swModelDoc.Extension;

            // Get Pack and Go object
            Debug.Print("Pack and Go");
            swPackAndGo = (PackAndGo)swModelDocExt.GetPackAndGo();

            // Get number of documents in assembly
            namesCount = swPackAndGo.GetDocumentNamesCount();
            Debug.Print("  Number of model documents: " + namesCount);

            // Include any drawings, SOLIDWORKS Simulation results, and SOLIDWORKS Toolbox components
            swPackAndGo.IncludeDrawings = includeDwg;
            Debug.Print(" Include drawings: " + swPackAndGo.IncludeDrawings);
            swPackAndGo.IncludeSimulationResults = true;
            Debug.Print(" Include SOLIDWORKS Simulation results: " + swPackAndGo.IncludeSimulationResults);
            swPackAndGo.IncludeToolboxComponents = true;
            Debug.Print(" Include SOLIDWORKS Toolbox components: " + swPackAndGo.IncludeToolboxComponents);

            // Get current paths and filenames of the assembly's documents
            object fileNames;
            object[] pgFileNames = new object[namesCount - 1];
            status = swPackAndGo.GetDocumentNames(out fileNames);
            pgFileNames = (object[])fileNames;

            Debug.Print("");
            Debug.Print("  Current path and filenames: ");
            if ((pgFileNames != null))
            {
                for (i = 0; i <= pgFileNames.GetUpperBound(0); i++)
                {
                    Debug.Print("    The path and filename is: " + pgFileNames[i]);
                }
            }

            // Get current save-to paths and filenames of the assembly's documents
            object pgFileStatus;
            status = swPackAndGo.GetDocumentSaveToNames(out fileNames, out pgFileStatus);
            pgFileNames = (object[])fileNames;
            Debug.Print("");
            Debug.Print("  Current default save-to filenames: ");
            if ((pgFileNames != null))
            {
                for (i = 0; i <= pgFileNames.GetUpperBound(0); i++)
                {
                    Debug.Print("   The path and filename is: " + pgFileNames[i]);
                }
            }

            // Set folder where to save the files

            status = swPackAndGo.SetSaveToName(true, targetAsmFolder);

            // Flatten the Pack and Go folder structure; save all files to the root directory
            swPackAndGo.FlattenToSingleFolder = true;

            // Add a prefix and suffix to the filenames
            swPackAndGo.AddPrefix = AddPrefix;
            swPackAndGo.AddSuffix = AddSuffix;

            // Verify document paths and filenames after adding prefix and suffix
            object getFileNames;
            object getDocumentStatus;
            string[] pgGetFileNames = new string[namesCount - 1];

            status = swPackAndGo.GetDocumentSaveToNames(out getFileNames, out getDocumentStatus);
            pgGetFileNames = (string[])getFileNames;
            Debug.Print("");
            Debug.Print("  My Pack and Go path and filenames after adding prefix and suffix: ");
            for (i = 0; i <= pgGetFileNames.Count()-1; i++)
            {

                Debug.Print("  替��  My path and filename is: " + pgGetFileNames[i]);

                foreach (var replaceItem  in replaceList)
                {
                    pgGetFileNames[i]= pgGetFileNames[i].Replace(replaceItem.Key, replaceItem.Value);
                }

                Debug.Print("  替��  My path and filename is: " + pgGetFileNames[i]);

             }

            //�新�存�称
            swPackAndGo.SetDocumentSaveToNames(pgGetFileNames);

            // 执行打包。
            statuses = (int[])swModelDocExt.SavePackAndGo(swPackAndGo);

            swApp.CloseDoc(swApp.IActiveDoc2.GetPathName());

        }

执行完结� 就这样了,打开是正常的。
在这里�入图片�述
好了,今天就写这么多了。这是是�常用的一个方法,需�大家自己消化。

HTTPS WWW.PUNKU IO PUNTO_GT_PREMIO

月末了,这个月的任务还没完�,难�是因为太忙了�,好��是。
今天就简�记录一下�一段时间有人问的一个问题,�么知�文件在没有在solidworks中打开。如�没打开就�A ,已�打开了就�B. 别乱想,�是说�个动作哈。
大家看过之�的教程的都知�Opendoc这个方法。
这个就是打开�个已�存在的文件并返�它的指针(�翻译的哈)
在这里�入图片�述
但是这个和网�问的问题没什么直�关系,�想知�文件有没有打开,常规�路就有以下几�:

  • é��å�†å·²ç»�打开的文件,进行对比
Traverse All Open Documents Example (C++ COM)
  • 切æ�¢åˆ°è¯¥å��称的文件,如æ�œæˆ�功则表示已ç»�打开。
var swModel= swApp.IActivateDoc("xxx.sldprt");
  • ç›´æ�¥åˆ©ç”¨æ‰“开命令,看看执行完是ä¸�是当å‰�零件。(如æ�œæ–‡ä»¶å·²ç»�打开,会返å›�一个对象,但没有激活)
            //打开文件
            var fileName = @"XXXXX";
            int errors = 0;
            int warnings = 0;

            var swModel = (ModelDoc2)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
有没有更�害的�法呢,我们�找一找。我�装我英文很牛B,�索一下opened document
��以下内容,最�一个有点�。

在这里�入图片�述

在这里�入图片�述
到目�为止,最直�的方法就是GetOpenDocumentByName
在这里�入图片�述
示例代�如下:


            var partOpened = swApp.GetOpenDocumentByName(@"D:9_StudyCSharpAndSolidWorksCSharpAndSolidWorksTemplateModelclamp3.sldprt");

            if (partOpened!=null)
            {
                MessageBox.Show("该文件已�被打开");
            }
            else
            {
                MessageBox.Show("该文件已�没有被打开。");
            }

好了,结�了。

收�好地�,以防找�到。
www gate io

GATE.IO SASACHAKUYPI KACHKAN

GATEIO INTIYUQ Solidworks PDM二次开å�‘—文件夹相关æ“�作 GATEIO SAFEMOON V2 NISQA ASTAKUY

IOS PUNKUKUNA NEOPLASIA

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

ALU PUNKU.IO

�以�考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);

ASWAN PISI QHATUY QULLQI GATEIO

 	            //读�文件夹 

                //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);
                }

QASH PUNKU.IO

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

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

IMAYNATATAQ MISIKUNATA NACENA

     			//刷新本地文件夹

                rootFolder.Refresh();

结�正常:

结�,收工。

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

posted @
2023-04-25 15:47 
painezeng  阅读(
0)  评论(
0
编辑 
收è—� 
举报  
��

GATEIO AFILIADO NISQA T'INKI

GATE.IO CRIPTO NISQAMANTA QULLQI HURQUNAPAQ QULLQIKUNA SolidWorks二次开�-示例67.创建标准的三视图(工程图) HTTPS WWW.GATEIO PIQPA INTERCAMBIO

一��心,�快一个月没有交作业了,�知�有没有人期待我的作业。
�过今天会让大家失望,今天是补交作业。
补一下之�未写的示例:
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
编辑 
收è—� 
举报  
��

GATEIO VS FTX NISQA

GATE.IO INTERCAMBIO RANKING NISQA 如何利用chatGPT/GPT4高效学习Solidworks二次开� GATE.IO INTERCAMBIO NISQA APALANCAMIENTO NISQAYUQ KANKU

最近比较�的无疑是ChatGPT/GPT4,它的出�是�是�大家所想的,能够改�世界。
比如说让我丢了饭碗
![在这里�入图片�述](https://img-blog.csdnimg.cn/3ab46dde8f89452da5c524f770de19b7.png)

IMAYNATATAQ RANTIY KAMACHIYTA CHINKACHINA GATE.IO

先用这个试试,�说这个比较方便,直�是在对应的文件中进行对�。

安装�,直�在左侧建立一个你熟悉的�缀格�。我就用main.cs�

按Ctrl+K和它进行对�。


看看它的结�:

哇�,写的水平�以呀。我�装看�懂。让他给我在上�加一些注释�。

这时它是上下文模�,会在�侧�示结�,并�示你是����修改。
我
我就直��制-替�。

这样对一个新手�说,是�是比较�好了?
在它�供的信��出�外的情况下,至少�个逻辑和方法写的比较清楚了。
我们��继续问:


它在下方�加了如下代�:关键是他还主动给你用中文写好了注释。
虽然我��的�图是SolidWorks中已�打开零件,直��以读�。
但是写的方法是传的一个文件路径,主动帮你打开,�读��性,第一眼看起�所写的代�问题�大。

public static Dictionary<string, string> GetCustomProperties(string filePath)
{
    SldWorks swApp = null;
    try
    {
        // 创建 SolidWorks 应用程�对象
        swApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
        // 设置 SolidWorks 应用程�对象��
        swApp.Visible = true;
        // 打开文件
        ModelDoc2 swModel = (ModelDoc2)swApp.OpenDoc6(filePath, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", 0, 0);
        // ��自定义�性
        CustomPropertyManager swCustPropMgr = swModel.Extension.CustomPropertyManager[""];
        object[] names = (object[])swCustPropMgr.GetNames();
        object[] values = (object[])swCustPropMgr.GetValues(names);
        // 将自定义�性存入字典
        Dictionary<string, string> customProperties = new Dictionary<string, string>();
        for (int i = 0; i < names.Length; i++)
        {
            customProperties.Add(names[i].ToString(), values[i].ToString());
        }
        // 关闭文件
        swApp.CloseDoc(filePath);
        // 返�自定义�性字典
        return customProperties;
    }
    catch (Exception ex)
    {
        // 输出读�自定义�性错误信�
        Console.WriteLine("读�自定义�性出错: " + ex.Message);
        return null;
    }
    finally
    {
        // 如� SolidWorks 应用程�对象�为空,退出应用程�
        if (swApp != null)
        {
            swApp.ExitApp();
        }
    }
}

HTTPS://PUERTA IO

直�开个vs,并引用一下solidworks的两个库。

建立 了一个�制�程�,调用第一个写的方法。
它会自动创建一个Solidworks,并显示了版本。


功能的显示了版本�。
但�幸的是,第二个功能中出�了�存在方法,我查了api 帮助,根本找�到这个。所以这个�能是它在学习过程中别人写过的扩展方法。


没�法,我们�能自己改进了。
这�是简�的�,其�Solidworks中�供了GetAll的方法�以直�得到所有的�性。

调试�行一下,��读起�没有问题,所以效�还算�错。

就目�的体��说,整体效�还算�错,相当�找一个会抄作业的助手 。
�正就是有啥问题就�问,对�对自己�验�。
这样对�新手�说,还是比自己�百度或者Google�索效�更高。
至�能�能干�我们的饭碗,应该还是需�一定时间的。

posted @
2023-03-31 13:49 
gateio login  阅读(
0)  评论(
0
编辑 
收è—� 
举报  
��