簡體   English   中英

將文件夾中的所有Solidworks文件轉換為步驟文件宏

[英]Convert all Solidworks files in folder to step files macro

我到處搜索並尋找一個宏,該宏將在運行時將位置中的文件轉換為.stp文件,而我遇到了以下問題。 我如何操縱它以獲取文件夾中的下一個文件並繼續下一個文件並將其轉換,直到所有文件都已轉換。

Dim swApp               As Object

昏暗的零件作為對象

昏暗的FilePath作為字符串

昏暗的sFilePath作為字符串

昏暗的路徑大小

昏暗的PathNoExtention作為字符串

昏暗的NewFilePath作為字符串

昏暗的FileLocation作為字符串

Dim sPath作為字符串

昏暗的我只要

Dim bRebuild為布爾值

Dim bRet為布爾

Dim sRev作為字符串

昏暗的nErrors只要

昏暗警告

子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”)

結束子

如果您不使用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;
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM