I'm having problem running some example VB code. It runs fine on another machine with VB. Just not mine. PC-DMIS is running in offline mode and the same program is loaded on each machine.
Dim app As PCDLRN.Application
Dim cmds As PCDLRN.Commands
Dim cmd As PCDLRN.Command
Dim part As PCDLRN.PartProgram
Dim res As Boolean
Dim cnt As Integer
Dim str As String
Dim fids As String
Set app = CreateObject("PCDLRN.Application")
Set part = app.ActivePartProgram
Set cmds = part.Commands
Open Text1.Text For Output As #1
For Each cmd In cmds
If cmd.IsDimension Then
If cmd.DimensionCommand.Feat1 <> "" Then
fids = "," + cmd.DimensionCommand.Feat1
End If
If cmd.DimensionCommand.Feat2 <> "" Then
fids = fids + "," + cmd.DimensionCommand.Feat2
End If
If cmd.DimensionCommand.Feat3 <> "" Then
fids = fids + "," + cmd.DimensionCommand.Feat3
End If
If cmd.Type <> DIMENSION_END_LOCATION And cmd.Type <> DIMENSION_START_LOCATION And cmd.Type <> DIMENSION_TRUE_START_POSITION And cmd.Type <> DIMENSION_TRUE_END_POSITION Then
str = cmd.ID
str = str + fids + GetNextString(cmd)
Print #1, str
fids = ""
End If
End If
Next cmd
I'm getting the following error at the "For Each cmd In cmds" line of code.
Run-time error '451'
Property let procedure not defined and property get procedure did not return and object.
Here's your program after some modifications to run under VB 2005 Express.
Dim app As PCDLRN.Application
Dim cmds As PCDLRN.Commands
Dim cmd As PCDLRN.Command
Dim part As PCDLRN.PartProgram
Dim res As Boolean
Dim cnt As Integer
Dim cmdCnt As Integer
Dim str As String
Dim fids As String
app = CreateObject("PCDLRN.Application")
part = app.ActivePartProgram
cmds = part.Commands
'Open Text1.Text For Output As #1 Note: VB6 syntax
FileOpen(1, "C:\Text1.txt", OpenMode.Output, OpenAccess.Default)
cmdCnt = cmds.Count
For i As Integer = 1 To cmdCnt
'For Each cmd In cmds Note: cmds is not a Collections Object
cmd = cmds.Item(i)
If cmd.IsDimension Then
If cmd.DimensionCommand.Feat1 <> "" Then
fids = "," + cmd.DimensionCommand.Feat1
End If
If cmd.DimensionCommand.Feat2 <> "" Then
fids = fids + "," + cmd.DimensionCommand.Feat2
End If
If cmd.DimensionCommand.Feat3 <> "" Then
fids = fids + "," + cmd.DimensionCommand.Feat3
End If
If cmd.Type <> DIMENSION_END_LOCATION And cmd.Type <> DIMENSION_START_LOCATION And cmd.Type <> DIMENSION_TRUE_START_POSITION And cmd.Type <> DIMENSION_TRUE_END_POSITION Then
str = cmd.ID
'str = str + fids + GetNextString(cmd) Note: GetNextString doesn't exist - VB6 syntax?.
str = str + fids
'Print #1, str Note: VB6 syntax
PrintLine(1, str)
fids = ""
End If
End If
Next
'Next cmd
FileClose(1)
I commented out the lines that didn't work as written, put a note explaining why. The line before or after is a substitute that works. Wasn't sure what GetNextString(cmd) was trying to extract from the cmd object.
My main observation is your statement 'For each cmd in cmds' didn't work for me because 'cmds' is not a Collections type object. Is is possible you have a different version VB runtime library on each of your machines?
Here's your program after some modifications to run under VB 2005 Express.
Dim app As PCDLRN.Application
Dim cmds As PCDLRN.Commands
Dim cmd As PCDLRN.Command
Dim part As PCDLRN.PartProgram
Dim res As Boolean
Dim cnt As Integer
Dim cmdCnt As Integer
Dim str As String
Dim fids As String
app = CreateObject("PCDLRN.Application")
part = app.ActivePartProgram
cmds = part.Commands
'Open Text1.Text For Output As #1 Note: VB6 syntax
FileOpen(1, "C:\Text1.txt", OpenMode.Output, OpenAccess.Default)
cmdCnt = cmds.Count
For i As Integer = 1 To cmdCnt
'For Each cmd In cmds Note: cmds is not a Collections Object
cmd = cmds.Item(i)
If cmd.IsDimension Then
If cmd.DimensionCommand.Feat1 <> "" Then
fids = "," + cmd.DimensionCommand.Feat1
End If
If cmd.DimensionCommand.Feat2 <> "" Then
fids = fids + "," + cmd.DimensionCommand.Feat2
End If
If cmd.DimensionCommand.Feat3 <> "" Then
fids = fids + "," + cmd.DimensionCommand.Feat3
End If
If cmd.Type <> DIMENSION_END_LOCATION And cmd.Type <> DIMENSION_START_LOCATION And cmd.Type <> DIMENSION_TRUE_START_POSITION And cmd.Type <> DIMENSION_TRUE_END_POSITION Then
str = cmd.ID
'str = str + fids + GetNextString(cmd) Note: GetNextString doesn't exist - VB6 syntax?.
str = str + fids
'Print #1, str Note: VB6 syntax
PrintLine(1, str)
fids = ""
End If
End If
Next
'Next cmd
FileClose(1)
I commented out the lines that didn't work as written, put a note explaining why. The line before or after is a substitute that works. Wasn't sure what GetNextString(cmd) was trying to extract from the cmd object.
My main observation is your statement 'For each cmd in cmds' didn't work for me because 'cmds' is not a Collections type object. Is is possible you have a different version VB runtime library on each of your machines?