将文件夹中的所有Solidworks文件转换为步骤文件宏

时间:2018-12-08 13:05:38

标签: macros solidworks converters step

我正在四处寻找并查找一个宏,该宏将在运行时将位置中的文件转换为.stp文件,而我遇到了以下问题。我如何操纵它以获取文件夹中的下一个文件并继续下一个文件并将其转换,直到所有文件都已转换。

Dim swApp               As Object

将零件设为对象

将FilePath设置为字符串

将sFilePath设置为字符串

将PathSize设置为长

将PathNoExtention设置为字符串

将NewFilePath设置为字符串

将FileLocation设置为字符串

将sPath设置为字符串

我尽可能地昏昏欲睡

将bRebuild设为布尔值

将bRet设置为布尔值

将sRev转换为字符串

将nError错误尽可能远

将nWarnings尽可能长地

Sub main()

设置swApp = Application.SldWorks

设置部件= swApp.ActiveDoc

FilePath = Part.GetPathName

PathSize = Strings.Len(FilePath)

sPath = Left(Part.GetPathName,InStrRev(Part.GetPathName,“ \”))

sRev = Part.CustomInfo(“ re”)'在此处更改配置属性名称

FileLocation =“ C:”

PathNoExtension = Strings.Left(FilePath,PathSize-7)

Part.SaveAs(PathNoExtension和“ rev”和sRev和“ .step”)

结束子

1 个答案:

答案 0 :(得分:0)

如果您不使用VB6宏,则可以通过几种不同的方式进行操作。如果使用.NET宏(Visual Basic或C#),则它们支持.NET库,这使此过程非常简单。我已经在C#中创建了以下控制台应用程序。您可以在SolidWorks中创建与.NET宏相同的东西。添加到您提供的示例中的重要事项是foreach语句,该语句将遍历目录中的所有文件,并且仅在SolidWorks零件或装配体上执行翻译。

using SolidWorks.Interop.sldworks;
using System;
using System.IO;

namespace CreateStepFiles
{
    class Program
    {
        static SldWorks swApp;

        static void Main(string[] args)
        {
            string directoryName = GetDirectoryName();

            if (!GetSolidWorks())
            {
                return;
            }

            int i = 0;

            foreach (string fileName in Directory.GetFiles(directoryName))
            {
                if (Path.GetExtension(fileName).ToLower() == ".sldprt")
                {
                    CreateStepFile(fileName, 1);
                    i += 1;
                }
                else if (Path.GetExtension(fileName).ToLower() == ".sldasm")
                {
                    CreateStepFile(fileName, 2);
                    i += 1;
                }
            }

            Console.WriteLine("Finished converting {0} files", i);

        }

        static void CreateStepFile(string fileName, int docType)
        {
            int errors = 0;
            int warnings = 0;

            ModelDoc2 swModel = swApp.OpenDoc6(fileName, docType, 1, "", ref errors, ref warnings);

            string stepFile = Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName), ".STEP");

            swModel.Extension.SaveAs(stepFile, 0, 1, null, ref errors, ref warnings);

            Console.WriteLine("Created STEP file: " + stepFile);;

            swApp.CloseDoc(fileName);
        }

        static string GetDirectoryName()
        {
            Console.WriteLine("Directory to Converty");
            string s = Console.ReadLine();

            if (Directory.Exists(s))
            {
                return s;
            }

            Console.WriteLine("Directory does not exists, try again");
            return GetDirectoryName();
        }

        static bool GetSolidWorks()
        {
            try
            {
                swApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));

                if (swApp == null)
                {
                    throw new NullReferenceException(nameof(swApp));
                }

                if (!swApp.Visible)
                {
                    swApp.Visible = true;
                }

                Console.WriteLine("SolidWorks Loaded");
                return true;
            }
            catch (Exception)
            {
                Console.WriteLine("Could not launch SolidWorks");
                return false;
            }
        }
    }
}
相关问题