簡體   English   中英

SolidWorks 2013 宏 - 字符串操作?

[英]SolidWorks 2013 Macro - String manipulation?

SolidWorks 使用 VBA 作為其宏,但它與 Excel VBA 非常不同(這是我習慣的)。 它們使得在 SW 中操作字符串變得非常困難(並且很可能是不可能的)。 我試過使用 Left() 函數和 Mid() 函數,但我不知道如何使它工作。 基本上我需要它做的是一個另存為 .DXF 文件並將其命名為標題,但沒有工作表名稱。 工作表名稱導致了問題,我正在嘗試將其刪除。 我可以用

Part.GetTitle

獲取標題的字符串,例如,類似於

PA0000 - Sheet1

我只是想讓它成為

PA0000

有時長度不同,所以我嘗試使用

Left(Part.GetTitle,Instr(Part.GetTitle, " ")-1)

但它給出了類型不匹配錯誤。 我究竟做錯了什么? 這個宏剩下的就是剪掉“-Sheet1”。

我對 help.solidworks.com 上的代碼進行了一些更改; 這應該適合你。 只需根據需要更改文件夾。

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
'http://help.solidworks.com/2012/English/api/sldworksapi/Save_File_As_PDF_Example_VB.htm
Sub main()
    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.DrawingDoc
    Dim swPart                      As SldWorks.PartDoc
    Dim bRet                        As Boolean
    Dim MyPath                      As String
    Dim MyFolder                    As String
    Dim longstatus                  As Long
    Dim filename                    As String
    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc

    MyFolder = "C:\temp" ' Change to temp drive since curdir is often write protected.
    myFile = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, ".") - 1)
    myFile = Right(myFile, Len(myFile) - InStrRev(myFile, "\"))
    MyPath = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") - 1)
    MyPath = Right(MyPath, Len(MyPath) - InStrRev(MyPath, "\"))

    Debug.Print "FileName = " & myFile
    Debug.Print "File = " & swModel.GetPathName
    Debug.Print "Folder = " & MyPath
    Debug.Print "Current Folder = " & CurDir$
    Debug.Print (MyFolder & "\" & myFile & ".DXF")
    filename = MyFolder & "\" & myFile & ".DXF"
    longstatus = swModel.SaveAs3(filename, 0, 0)
    ' For PDF Generation
    ' longstatus = swModel.SaveAs3(MyFolder & "\" & myFile & ".PDF", 0, 0) 
End Sub

longname = Len(Part.GetTitle) - 9

' 另存為 longstatus = Part.SaveAs3(Left(Part.GetTitle, longname) + ".SLDDRW", 0, 2)

所以完整的代碼是:

Dim swApp As Object
Dim longname As Long
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
longname = Len(Part.GetTitle) - 9

' Save As
longstatus = Part.SaveAs3(Left(Part.GetTitle, longname) + ".SLDDRW", 0, 2)
boolstatus = Part.FeatureManager.EditRollback(swMoveRollbackBarTo_e.swMoveRollbackBarToEnd, "")
Part.ClearSelection2 True

' Save As
longstatus = Part.SaveAs3(Left(Part.GetTitle, longname) + ".PDF", 0, 0)
End Sub

暫無
暫無

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

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