[英]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.