From: Sam on 10 Jan 2008 11:30 I am trying to write a macro to create a custom property for Weight and set the Weight custom property value to "SW- Mass(a)Part1.SLDPRT" (including parenthesis) so that at the next save the value of the Weight custom property will be set to the weight of the model. The macro works for the most part but I cannot get the initial value of the Weight custom property to include the parenthesis. The codes is below and as you can see the "SW- Mass(a)Part1.SLDPRT" is enclosed in parenthesis but the only thing added to the custom property value is SW-Mass(a)Part1.SLDPRT (without the parenthesis). I tried adding a second set of parenthesis to the code (""SW-Mass(a)Part1.SLDPRT"") but that causes a problem with the macro. I am sure there must be a way to do this, any help will be greatly appreciated. ModelDoc.AddCustomInfo3("", "Weight", swCustomInfoText, "SW- Mass(a)Part1.SLDPRT")
From: That70sTick on 10 Jan 2008 12:03 Do you mean "quotation marks"? Use CHR(34) to get a quote mark. i.e. String1 = chr(34) & "This text in quotes" & chr(34)
From: Sam on 10 Jan 2008 12:17 HA, yes quotation marks... But for some reason that is not getting converted into the weight value, the custom property value remains "SW-Mass(a)Part1.SLDPRT". If I manually add that same text string to the value for a custom property (and I mean manual key strokes, not by selecting from the combo box) then the weight of the component is assigned to the custom property. Even if I add "SW-Mass(a)Part1.SLDPRT" to a custom property for a part file that has already been saved as 1234.sldprt then the Part1 is converted to 1234.sldprt and the weight value is assigned to the custom property but it does not seem to be working that way when the custom property value is assigned via the API. Any ideas why??? Thanks, Sam
From: That70sTick on 10 Jan 2008 12:53 Post your code.
From: Sam on 10 Jan 2008 13:04 Here is the code, its part of a batch utilities program that I have developed over time. There is some "filtering" at the first to make sure its only working on sldprt files then a silent save at the end. The code for adding the Weight custom property is near the end, look for SetSuccess = ... Dim selcol As New Collection Dim longerror As Long Dim DocOptions As Long Dim thisDoc As Variant Dim i As Integer Dim c As Integer Dim retval As Variant Dim vConfNameArr As Variant Dim sConfigName As String Dim ci As Long Dim bShowConfig As Boolean Dim boolstatus As Boolean Dim swSelMgr As SldWorks.SelectionMgr Set swApp = Application.SldWorks DocOptions = swOpenDocOptions_Silent For Each thisDoc In doclist Dim DocType As Long Dim DocExt As String Dim SkipFile As Long SkipFile = InStr(1, thisDoc, "~", vbTextCompare) 'Do not process temp files If SkipFile = 0 Then DocExt = UCase(Right(thisDoc, 3)) Select Case DocExt Case "PRT" DocType = swDocPART Case "DRW" DocType = swDocDRAWING Case "ASM" DocType = swDocASSEMBLY Case Else DocType = swDocNONE 'MsgBox "Unexpected extension encountered: " & thisDoc End Select '*** Filter doc types to act on*** If DocType = swDocPART Then 'Act on slddrw files only Dim DocErrors As Long Dim DocWarnings As Long Dim ModelDoc As SldWorks.ModelDoc2 Dim nretval As Long Dim SetSuccess As Boolean Dim swCustPropMgr As SldWorks.CustomPropertyManager Set ModelDoc = swApp.OpenDoc6(thisDoc, DocType, DocOptions, "", DocErrors, DocWarnings) If ModelDoc Is Nothing Then MsgBox "Couldn't open document: " & thisDoc Else SetSuccess = ModelDoc.AddCustomInfo3("", "Weight", swCustomInfoText, Chr(34) & "SW-Mass(a)Part1.SLDPRT" & Chr(34)) Dim SaveOptions As Long SaveOptions = swSaveAsOptions_Silent Dim SaveSuccess As Boolean SaveSuccess = ModelDoc.Save3(SaveOptions, DocErrors, DocWarnings) If SaveSuccess = False Then MsgBox "Couldn't save document: " & thisDoc End If End If swApp.CloseDoc thisDoc End If End If Next End Sub
|
Next
|
Last
Pages: 1 2 3 Prev: Mathematical functions for curves in sketch Next: trouble after loading SW 2008 |