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

问题描述 投票:0回答:1

我正在寻找一个宏,它将在运行时将该位置的文件转换为.stp文件,我遇到了下面的内容。我如何操纵它来抓取文件夹中的下一个文件并继续下一个文件并转换它们直到所有文件都已转换。

Dim swApp               As Object

昏暗的部分作为对象

Dim FilePath As String

Dim sFilePath As String

昏暗的PathSize一样长

Dim PathNoExtention As String

Dim NewFilePath As String

Dim FileLocation As String

Dim sPath As String

昏昏欲睡

Dim bRebuild As Boolean

Dim bRet As Boolean

Dim sRev As String

昏暗的错误

昏暗的nWarnings长

子主()

设置swApp = Application.SldWorks

设置Part = 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”)

结束子

macros solidworks converters step
1个回答
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;
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.