I am sure there must be a way to do this, any help will be greatly
appreciated.
ModelDoc.AddCustomInfo3("", "Weight", swCustomInfoText, "SW-
Ma...@Part1.SLDPRT")
Use CHR(34) to get a quote mark.
i.e.
String1 = chr(34) & "This text in quotes" & chr(34)
But for some reason that is not getting converted into the weight
value, the custom property value remains "SW-...@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-...@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
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-...@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
Does the property already exist in the file? AddCustomInfo does not
overwrite or change existing properties.
Usually I perform an AddCustomInfo and then a CustomInfo2 immediately
after in case the property already exists and I want to overwrite.
I think figured out the problem, Chr(34) does not seem to be adding a
quote. It adds two individual hash marks that looks like a quote but
it actually two indivdual characters. I need to find the character
number for a real quote, I think that will fix the problem.
Sam
Are you using a different (non-English) character set on your computer?
Thanks for your help...
Sam
I once wrote a VBA program w/ a form w/ one textbox and a command
button. Enter the a character into the textbox, hit command button,
and get a message box that returns the ascii number of the first
character in the textbox.
You will need to use the ASC command.
SetSuccess = ModelDoc.AddCustomInfo3("", "Weight", swCustomInfoText,
"""SW-...@Part1.SLDPRT""")
Thanks for your help
Sam