{"id":600,"date":"2019-12-16T13:10:00","date_gmt":"2019-12-16T05:10:00","guid":{"rendered":"http:\/\/localhost:8080\/?p=600"},"modified":"2019-12-16T13:10:00","modified_gmt":"2019-12-16T05:10:00","slug":"c-solidworks-%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91-api-%e5%ae%9e%e4%be%8b%ef%bc%9a%e5%a4%9a%e5%ae%9e%e4%bd%93%e9%9b%b6%e4%bb%b6%e5%af%bc%e5%87%ba","status":"publish","type":"post","link":"https:\/\/blog.ke-zhi.com\/?p=600","title":{"rendered":"C# SolidWorks \u4e8c\u6b21\u5f00\u53d1 API &#8212; \u5b9e\u4f8b\uff1a\u591a\u5b9e\u4f53\u96f6\u4ef6\u5bfc\u51fa"},"content":{"rendered":"<h1> <a href=\"https:\/\/www.cnblogs.com\/solidworksapi\/p\/12897446.html\" target=\"_blank\" rel=\"nofollow noopener\"> <span>C# SolidWorks \u4e8c\u6b21\u5f00\u53d1 API &#8212; \u5b9e\u4f8b\uff1a\u591a\u5b9e\u4f53\u96f6\u4ef6\u5bfc\u51fa<\/span> <\/a> <\/h1>\n<p>\u8fd9\u4e00\u7bc7\u6587\u7ae0\u6765\u8c08\u4e00\u4e0b\u5982\u4f55\u5feb\u901f\u5bfc\u51fa\u4e00\u4e2a\u96f6\u4ef6\u4e2d\u7684\u591a\u5b9e\u4f53\uff0c\u6bcf\u4e2a\u5b9e\u4f53\u4ee5\u5355\u72ec\u96f6\u4ef6\u540d\uff0c\u5e76\u4e14\u4f1a\u7b80\u5355\u7684\u5f97\u5230\u5b83\u7684\u5305\u56f4\u76d2\u4fe1\u606f\uff0c<\/p>\n<p>\u6700\u7ec8\u751f\u6210\u4e00\u4e2a\u88c5\u914d\u4f53\u3002<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img-blog.csdnimg.cn\/2019121612581611.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3plbmdxaDAzMTQ=,size_16,color_FFFFFF,t_70\"><\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img-blog.csdnimg.cn\/20191216130040557.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3plbmdxaDAzMTQ=,size_16,color_FFFFFF,t_70\">&nbsp;<\/p>\n<p>&nbsp;\u4e0b\u9762\u662f\u96f6\u4ef6\uff1a \u4ee5\u591a\u5b9e\u4f53\u8fdb\u884c\u7684\u8bbe\u8ba1\uff0c\u5b9e\u4f53\u5e76\u4e14\u8bbe\u5b9a\u4e86\u6750\u8d28\u3002<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img-blog.csdnimg.cn\/20191216125950997.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3plbmdxaDAzMTQ=,size_16,color_FFFFFF,t_70\"><\/p>\n<p>&nbsp;\u7a0b\u5e8f\u4f1a\u5728\u540c\u76ee\u5f55\u4e0b\u751f\u6210\u76f8\u540c\u7684\u6587\u4ef6\u5939\u548c\u88c5\u914d\u4f53\u4fe1\u606f\uff0c \u6709\u4e86\u88c5\u914d\u4f53\uff0c\u540e\u9762\u5c31\u65b9\u4fbf\u751f\u6210BOM\u4e86\uff08\u540c\u65f6\u7a0b\u5e8f\u4e2d\u5bf9\u7a0b\u5e8f\u7684\u590d\u5236 \u9635\u5217\u505a\u4e86\uff09\u5904\u7406.<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/img-blog.csdnimg.cn\/20191216130416445.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3plbmdxaDAzMTQ=,size_16,color_FFFFFF,t_70\"><\/p>\n<p>&nbsp;\u83b7\u53d6\u5b9e\u4f53\u5173\u952e\u4ee3\u7801:<\/p>\n<pre><code> private void ListBodies()\n        {\n            ModelDoc2 swModel = null;\n            PartDoc swPart = null;\n            object vBody;\n            bool bRet;\n\n            swModel = (ModelDoc2)iswApp.ActiveDoc;\n            swModel.ClearSelection2(true);\n            Debug.Print(\"File = \" + swModel.GetPathName());\n\n            txtPath.Text = swModel.GetPathName();\n\n            this.Text = System.IO.Path.GetFileName(txtPath.Text);\n\n            switch (swModel.GetType())\n            {\n                case (int)swDocumentTypes_e.swDocPART:\n                    swPart = (PartDoc)swModel;\n                    \/\/ Solid bodies\n                    object[] vBodyArr = null;\n                    Body2 swBody = default(Body2);\n\n                    MathTransform swMathTrans = null;\n                    vBodyArr = (object[])swPart.GetBodies2((int)swBodyType_e.swSolidBody, true);\n\n                    if ((vBodyArr != null))\n                    {\n                        \/\/ Debug.Print(\"  Number of solid bodies: \" + vBodyArr.Length);\n\n                        foreach (object vBody_loopVariable in vBodyArr)\n                        {\n                            vBody = vBody_loopVariable;\n                            swBody = (Body2)vBody;\n\n                            string[] vConfigName = null;\n                            vConfigName = (string[])swModel.GetConfigurationNames();\n                            string sMatDB = \"\";\n                            string sMatName = swBody.GetMaterialPropertyName(\"\", out sMatDB);\n\n                            \/\/bRet = swBody.RemoveMaterialProperty((int)swInConfigurationOpts_e.swAllConfiguration, (vConfigName));\n\n                            \/\/ Debug.Print(\"Body--&gt; \" + swBody.Name + \" \" + \"\");\n\n                            FeatureType Ftype = 0;\n\n                            var childFeature = swBody.GetFeatures();\n\n                            foreach (var item in childFeature)\n                            {\n                                Feature f = (Feature)item;\n\n                                Debug.Print(swBody.Name + \"--&gt;\" + f.GetTypeName());\n\n                                if (f.GetTypeName() == \"MoveCopyBody\")\n                                {\n                                    Ftype = FeatureType.Copy;\n                                }\n                                if (f.GetTypeName() == \"MirrorSolid\")\n                                {\n                                    Ftype = FeatureType.Mirror;\n                                }\n                            }\n\n                            Body2 swOriBody = null;\n\n                            string swOriBodyName = \"\";\n                            string swOriBodyBox = \"\";\n\n                            if (Ftype != 0)\n                            {\n                                try\n                                {\n                                    swOriBody = swBody.GetOriginalPatternedBody(out swMathTrans);\n\n                                    swOriBodyName = swOriBody.Name;\n\n                                    swOriBodyBox = GetBodyBox(swOriBody);\n                                }\n                                catch (Exception)\n                                {\n                                }\n                            }\n\n                            string bbox = GetBodyBox(swBody);\n\n                            BodyModel tempBodyM = new BodyModel(swBody.Name, sMatName, swOriBodyName, Ftype, bbox);\n\n                            if (bbox == swOriBodyBox &amp;&amp; swBody.Name.ToString().Contains(swOriBodyName.ToString()) == false)\n                            {\n                                if ((int)tempBodyM.featureT == 0)\n                                {\n                                    listBodies_Normally.Items.Add(tempBodyM.name);\n                                }\n                                else if ((int)tempBodyM.featureT == 1 &amp;&amp; tempBodyM.name.Contains(\"\u955c\u5411\") == true) \/\/mirror\n                                {\n                                    listBodies_MirrorCopy.Items.Add(tempBodyM.name + \"&lt;--M--\" + tempBodyM.refBodyname);\n                                    tempBodyM.comment = \"\u955c\u5411-\" + tempBodyM.refBodyname;\n                                    \/\/tempBodyM.name = \"\u955c\u50cf-\" + tempBodyM.refBodyname + \"-\" ;\n                                }\n                                else if ((int)tempBodyM.featureT == 2 &amp;&amp; (tempBodyM.name.Contains(\"\u590d\u5236\") == true || tempBodyM.name.Contains(\"\u9635\u5217\") == true))  \/\/copy\n                                {\n                                    listBodies_MirrorCopy.Items.Add(tempBodyM.name + \"&lt;--C--\" + tempBodyM.refBodyname);\n\n                                    tempBodyM.comment = \"\u590d\u5236-\" + tempBodyM.refBodyname;\n                                }\n                            }\n                            else\n                            {\n                                listBodies_Normally.Items.Add(tempBodyM.name);\n                            }\n\n                            bodyModels.Add(tempBodyM);\n                        }\n                    }\n                    break;\n\n                case (int)swDocumentTypes_e.swDocASSEMBLY:\n                    \/\/ProcessAssembly(swApp, swModel);\n                    break;\n\n                default:\n                    return;\n                    break;\n            }\n\n            Debug.Print(bodyModels.Count.ToString());\n        }<\/code><\/pre>\n<p>\u751f\u6210\u65b0\u7684\u88c5\u914d\u4f53\u4ee3\u7801\uff1a<\/p>\n<pre><code>    private void CreateNewAssembly(string assemblyName, List&lt;string&gt; partsname)\n        {\n            string assemblyDefaultPath = iswApp.GetDocumentTemplate(2, \"\", 0, 0, 0);\n\n            var part = iswApp.NewDocument(assemblyDefaultPath, 0, 0, 0);\n\n            if (part != null)\n            {\n                AssemblyDoc assemblyDoc = part as AssemblyDoc;\n\n                ModelDoc2 modelDoc2 = assemblyDoc as ModelDoc2;\n\n                ModelDocExtension swModExt = default(ModelDocExtension);\n\n                int errors = 0;\n                int warnings = 0;\n\n                swModExt = (ModelDocExtension)modelDoc2.Extension;\n\n                swModExt.SaveAs(assemblyName,\n                    (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, errors, warnings);\n\n                modelDoc2 = iswApp.ActiveDoc;\n\n                int i = 0;\n                int tempV = ProgressBar.Value;\n                foreach (var partN in partsname)\n                {\n                    labStatus.Text = \"\u6b63\u5728\u88c5\u914d--&gt;\" + Path.GetFileNameWithoutExtension(partN);\n\n                    ProgressBar.Value = tempV + i;\n\n                    iswApp.OpenDoc6(partN.ToString(), 1, 32, \"\", ref errors, ref warnings);\n\n                    assemblyDoc = (AssemblyDoc)iswApp.ActivateDoc3(System.IO.Path.GetFileNameWithoutExtension(assemblyName) + \".sldasm\", true, 0, errors);\n\n                    Component2 swInsertedComponent = default(Component2);\n\n                    swInsertedComponent = assemblyDoc.AddComponent5(partN, 0, \"\", false, \"\", 0, 0, 0);\n\n                    modelDoc2 = iswApp.ActiveDoc;\n                    modelDoc2.ClearSelection2(true);\n\n                    modelDoc2.Extension.SelectByID2(swInsertedComponent.GetSelectByIDString(), \"COMPONENT\", 0, 0, 0, false, 0, null, 0);\n\n                    assemblyDoc.UnfixComponent();\n\n                    modelDoc2.ClearSelection2(true);\n\n                    modelDoc2.Extension.SelectByID2(\"Point1@Origin@\" + swInsertedComponent.GetSelectByIDString(), \"EXTSKETCHPOINT\", 0, 0, 0, false, 0, null, 0);\n\n                    modelDoc2.Extension.SelectByID2(\"Point1@Origin\", \"EXTSKETCHPOINT\", 0, 0, 0, true, 0, null, 0);\n\n                    Mate2 mate2 = default(Mate2);\n\n                    mate2 = assemblyDoc.AddMate5(20, -1, false, 0, 0, 0, 0, 0.001, 0, 0, 0, false, false, 0, out int warings);\n                    modelDoc2.ClearSelection2(true);\n                    modelDoc2.EditRebuild3();\n\n                    iswApp.CloseDoc(partN);\n\n                    i = i + 1;\n                }\n\n                iswApp.ActivateDoc3(System.IO.Path.GetFileNameWithoutExtension(assemblyName) + \".sldasm\", true, 0, errors);\n                modelDoc2 = iswApp.ActiveDoc;\n                modelDoc2.ShowNamedView2(\"*\u7b49\u8f74\u6d4b\", 7);\n                modelDoc2.ViewZoomtofit2();\n                modelDoc2.Save();\n            }\n\n            ProgressBar.Value = ProgressBar.Maximum;\n        }\n<\/code><\/pre>\n<p>\u5b8c\u6574\u4ee3\u7801\u8bf7\u53bb\u7801\u4e91\u6216\u8005github.<\/p>\n<p><a href=\"https:\/\/gitee.com\/painezeng\/CSharpAndSolidWorks\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/gitee.com\/painezeng\/CSharpAndSolidWorks<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/painezeng\/CSharpAndSolidWorks\" target=\"_blank\" rel=\"nofollow noopener\">https:\/\/github.com\/painezeng\/CSharpAndSolidWorks<\/a><\/p>\n<p>          posted @<br \/>\n<span>2019-12-16 13:10<\/span>&nbsp;<br \/>\n<a href=\"https:\/\/www.cnblogs.com\/solidworksapi\/\" target=\"_blank\" rel=\"nofollow noopener\">painezeng<\/a>&nbsp; \u9605\u8bfb(<br \/>\n<span>501<\/span>)&nbsp; \u8bc4\u8bba(<br \/>\n<span>0<\/span>)&nbsp;<br \/>\n<a href=\"https:\/\/i.cnblogs.com\/EditPosts.aspx?postid=12897446\" rel=\"nofollow noopener\" target=\"_blank\">\u7f16\u8f91<\/a>&nbsp;<br \/>\n<a href=\"\" target=\"_blank\" rel=\"nofollow noopener\">\u6536\u85cf<\/a>&nbsp;<br \/>\n<a href=\"\" target=\"_blank\" rel=\"nofollow noopener\">\u4e3e\u62a5<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C# SolidWorks \u4e8c\u6b21\u5f00\u53d1 API &#8212; \u5b9e\u4f8b\uff1a\u591a\u5b9e\u4f53\u96f6\u4ef6\u5bfc\u51fa \u8fd9\u4e00\u7bc7\u6587\u7ae0\u6765\u8c08\u4e00\u4e0b\u5982\u4f55\u5feb\u901f [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":601,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[4,5],"tags":[7,6,8],"series":[],"class_list":["post-600","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-solidworks-","category-solidworks","tag-api","tag-solidworks","tag-8"],"views":191,"_links":{"self":[{"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=\/wp\/v2\/posts\/600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=600"}],"version-history":[{"count":0,"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=\/wp\/v2\/posts\/600\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=\/wp\/v2\/media\/601"}],"wp:attachment":[{"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=600"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/blog.ke-zhi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}