From: Sam on
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
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
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
Post your code.
From: Sam on
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