"member" equivalent
CADForums.net Forum Index CADForums.net
Discussion of AutoCAD and other CAD software.
 
 FAQFAQ   MemberlistMemberlist     RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
 
Google
 
Web cadforums.net
"member" equivalent

 
Post new topic   Reply to topic    CADForums.net Forum Index -> VBA
Author Message
sdanis
Guest





Posted: Wed Mar 30, 2005 9:39 pm    Post subject: "member" equivalent Reply with quote

Is there an equivalent function in VBA for the Lisp function "MEMBER"?

Back to top
Paul Richardson
Guest





Posted: Wed Mar 30, 2005 11:16 pm    Post subject: Re: "member" equivalent Reply with quote

Not VBA but a scripting Dictionary has an exists method and
a remove method. Use in VBA by referencing the Microsoft
Scripting Runtime

Or manually check in an array or Collection.


"sdanis" <nospam@address.withheld> wrote in message
news:4291561.1112200778052.JavaMail.jive@jiveforum2.autodesk.com...
> Is there an equivalent function in VBA for the Lisp function "MEMBER"?
Back to top
sdanis
Guest





Posted: Wed Mar 30, 2005 11:33 pm    Post subject: Re: "member" equivalent Reply with quote

Hey Paul, how's the leg?
I'm not familiar with the MS Scripting Runtime.
What I want to do is this.
I have a selection set of blocks in the dwg.
I simple want to compare them to check for duplicate specific attribute "names".

Back to top
Paul Richardson
Guest





Posted: Thu Mar 31, 2005 1:25 am    Post subject: Re: "member" equivalent Reply with quote

Hey Scotty,

Leg is feeling much better, Thanks.
On my way back!

You will need to iterate your
selection set and remove
objects as needed.

I wrote some test code. Did a few
checks seem ok.

Paul

'<code>
Sub ssAtttesta()
Dim ss As AcadSelectionSet
Dim genObj As acadObject
Dim oBlock As AcadBlockReference
Dim iJc As Integer: iJc = 0
Dim iKc As Integer: iKc = 0
Dim iLc As Integer: iKc = 0
Dim oAttributes
Dim removeObjs() As AcadEntity

Set ss = ThisDrawing.SelectionSets.Add("SS")
ss.SelectOnScreen

For iJc = 0 To ss.Count - 1

If TypeOf ss(iJc) Is AcadBlockReference Then

Set oBlock = ss(iJc)

If oBlock.HasAttributes Then
oAttributes = oBlock.GetAttributes

For iKc = LBound(oAttributes) To UBound(oAttributes)

Select Case oAttributes(iKc).TagString

Case "ENTERNAME"

Select Case oAttributes(iKc).TextString

Case "Fred"
'if found add to removeObjs
ReDim Preserve removeObjs(iLc)
Set removeObjs(iLc) = ss(iJc)
iLc = iLc + 1

End Select

End Select

Next iKc

End If

End If

Next iJc

If Not UBound(removeObjs) < 0 Then
ss.RemoveItems removeObjs
ss.Update
'erase for testing
ss.Erase
End If

ThisDrawing.SelectionSets("SS").Delete

End Sub
'<code/>




"sdanis" <nospam@address.withheld> wrote in message
news:674976.1112207624785.JavaMail.jive@jiveforum1.autodesk.com...
Quote:
Hey Paul, how's the leg?
I'm not familiar with the MS Scripting Runtime.
What I want to do is this.
I have a selection set of blocks in the dwg.
I simple want to compare them to check for duplicate specific attribute
"names".
Back to top
sdanis
Guest





Posted: Thu Mar 31, 2005 1:44 am    Post subject: Re: "member" equivalent Reply with quote

tHANKS, i NEEDED THAT :-)
Back to top
Paul Richardson
Guest





Posted: Thu Mar 31, 2005 1:47 am    Post subject: Re: "member" equivalent Reply with quote

your welcome Anytime.
"sdanis" <nospam@address.withheld> wrote in message
news:24131523.1112215499883.JavaMail.jive@jiveforum1.autodesk.com...
> tHANKS, i NEEDED THAT :-)
Back to top
Paul Richardson
Guest





Posted: Thu Mar 31, 2005 2:51 am    Post subject: Re: "member" equivalent Reply with quote

Quote:
Dim iLc As Integer: iKc = 0
'don't need to set one of those habbits, but should be "iLc = 0"
Dim genObj As acadObject
'don't need


Also, You might want to use the upper bounds
of removeObjs to calc the incrementor. Less
chance of error.

Flunk Dan yet?

"Paul Richardson" <noSPAM@nospam.com> wrote in message
news:424b0b3a$1_2@newsprd01...
Quote:
Hey Scotty,

Leg is feeling much better, Thanks.
On my way back!

You will need to iterate your
selection set and remove
objects as needed.

I wrote some test code. Did a few
checks seem ok.

Paul

'<code
Sub ssAtttesta()
Dim ss As AcadSelectionSet
Dim genObj As acadObject
Dim oBlock As AcadBlockReference
Dim iJc As Integer: iJc = 0
Dim iKc As Integer: iKc = 0
Dim iLc As Integer: iKc = 0
Dim oAttributes
Dim removeObjs() As AcadEntity

Set ss = ThisDrawing.SelectionSets.Add("SS")
ss.SelectOnScreen

For iJc = 0 To ss.Count - 1

If TypeOf ss(iJc) Is AcadBlockReference Then

Set oBlock = ss(iJc)

If oBlock.HasAttributes Then
oAttributes = oBlock.GetAttributes

For iKc = LBound(oAttributes) To UBound(oAttributes)

Select Case oAttributes(iKc).TagString

Case "ENTERNAME"

Select Case oAttributes(iKc).TextString

Case "Fred"
'if found add to removeObjs
ReDim Preserve removeObjs(iLc)
Set removeObjs(iLc) = ss(iJc)
iLc = iLc + 1

End Select

End Select

Next iKc

End If

End If

Next iJc

If Not UBound(removeObjs) < 0 Then
ss.RemoveItems removeObjs
ss.Update
'erase for testing
ss.Erase
End If

ThisDrawing.SelectionSets("SS").Delete

End Sub
'<code/




"sdanis" <nospam@address.withheld> wrote in message
news:674976.1112207624785.JavaMail.jive@jiveforum1.autodesk.com...
Hey Paul, how's the leg?
I'm not familiar with the MS Scripting Runtime.
What I want to do is this.
I have a selection set of blocks in the dwg.
I simple want to compare them to check for duplicate specific attribute
"names".

Back to top
sdanis
Guest





Posted: Thu Mar 31, 2005 6:02 pm    Post subject: Re: "member" equivalent Reply with quote

Haven't flunked him YET but I keep an eye on him to make sure he's not cheating!! ;-)
Back to top
bcoward
Guest





Posted: Fri Apr 01, 2005 8:32 am    Post subject: Re: "member" equivalent Reply with quote

Scott,

Here is a class that compliments Paul's recommendation. Check out the Exists Function as you Member equivilent.


' Class : CDictionary
' Description : This class demonstrates using the Dictionary object
'
' To use the Dictionary object, you mst create a Reference
' to the Windows Scripting Runtime file (SCRRUN.DLL)
'
' Comparison modes
Public Enum EnumCompareModes
dicBinary = 1
dicText = 2
End Enum

' Private variables to manage property values
Private m_objDictionary As Scripting.Dictionary
Private m_eCompareMode As EnumCompareModes
Private m_lngCount As Long

Private Sub Class_Initialize()
' Set initial values to defaults which may be overridden
' with property settings
'
On Error GoTo PROC_ERR

' Default to text compare
m_eCompareMode = dicBinary

' Create the object
Set m_objDictionary = New Dictionary

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Class_Initialize"
Resume PROC_EXIT

End Sub

Public Property Get CompareMode() As EnumCompareModes
' Returns: The current setting of the CompareMode property
'
CompareMode = m_eCompareMode

End Property

Public Property Let CompareMode(eValue As EnumCompareModes)
' eValue: Comparison mode as defined by the EnumCompareModes
' enumerated type.
'
m_eCompareMode = eValue

End Property

Public Property Get Count() As Long
' Returns: The number of objects in the dictionary
'
On Error GoTo PROC_ERR

' Update the count
m_lngCount = m_objDictionary.Count

Count = m_lngCount

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Count"
Resume PROC_EXIT

End Property

Public Property Get Dictionary() As Scripting.Dictionary
' Returns: A handle the current dictionary object
'
On Error GoTo PROC_ERR

Set Dictionary = m_objDictionary

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Dictionary"
Resume PROC_EXIT

End Property

Public Property Get Item(varKey As Variant) As Variant
' Returns: The item in the dictionary with the specified key
' Parameters: varKey - The key of the item
'
On Error GoTo PROC_ERR

If IsObject(m_objDictionary.Item(varKey)) Then
Set Item = m_objDictionary.Item(varKey)
Else
Item = m_objDictionary.Item(varKey)
End If

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Item: " & Err.Number & ". " & Err.Description, , _
"Item"
Resume PROC_EXIT

End Property

Public Property Get Items() As Variant
' Comments : Returns the Dictionary items as an array
' Parameters: None
' Returns : Array of keys
'
On Error GoTo PROC_ERR

Items = m_objDictionary.Items

PROC_EXIT:
Exit Property

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Items"
Resume PROC_EXIT

End Property

Public Property Get Key(varKey As Variant) As Variant
' Returns: The key in the dictionary with the specified key.
' Parameters: varKey - The key of the item
'
On Error GoTo PROC_ERR
If IsObject(m_objDictionary.Item(varKey).Key) Then
Set Key = m_objDictionary(varKey).Key
Else
Key = m_objDictionary(varKey).Key
End If

PROC_EXIT:
Exit Property

PROC_ERR:
MsgBox "Item: " & Err.Number & ". " & Err.Description, , _
"Key"
Resume PROC_EXIT

End Property

Public Property Get Keys() As Variant
' Comments : Returns the Dictionary keys as an array
' Parameters: None
' Returns : Array of keys
'
On Error GoTo PROC_ERR

Keys = m_objDictionary.Keys

PROC_EXIT:
Exit Property

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Keys"
Resume PROC_EXIT

End Property

Public Sub Add( _
varKey As Variant, _
varItem As Variant)
' Comments : Adds the specified item to the Dictionary
' Parameters: varKey - Unique key for the item. Keys are required
' for all items in the Dictionary.
' varItem - item value
' Returns : Nothing
'
On Error GoTo PROC_ERR

m_objDictionary.Add varKey, varItem

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Add"
Resume PROC_EXIT

End Sub

Public Function Exists(varKey As Variant) As Boolean
' Comments : Determines if the specified item exists in the dictionary
' Comparison is done according to the setting of the
' CompareMode property.
' Parameters: varKey - key of the item to find
' Returns : True if the item exists, False otherwise.
'
Dim lngCounter As Long
Dim aTmpKeys() As Variant

On Error GoTo PROC_ERR

Select Case m_eCompareMode
Case dicBinary
' Binary mode appears to work correctly, so we'll just set
' the dictionary object's property and let the DLL to the work
m_objDictionary.CompareMode = vbBinaryCompare
Exists = m_objDictionary.Exists(varKey)

Case dicText
' Text mode (case insenstive) doesn't work because the vbTextCompare
' constant documented in the VB 6 documentation doesn't compile.
' We work around this by doing our own (slow) comparison.

' First copy the keys to an array
aTmpKeys = m_objDictionary.Keys

' Loop through to see if it exists
For lngCounter = 0 To UBound(aTmpKeys)
If LCase(varKey) = LCase(aTmpKeys(lngCounter)) Then
Exists = True
' As soon as its found, bail out of the loop
Exit For
Else
Exists = False
End If
Next lngCounter

End Select

PROC_EXIT:
Exit Function

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Exists"
Resume PROC_EXIT

End Function

Public Sub Remove(varKey As Variant)
' Comments : Removes the specified item from the Dictionary
' Parameters: varKey - key of the item to remove
' Returns : Nothing
'
On Error GoTo PROC_ERR

m_objDictionary.Remove varKey

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Remove"
Resume PROC_EXIT

End Sub

Public Sub RemoveAll()
' Comments : Removes all items from the Dictionary
' Parameters: None
' Returns : Nothing
'
On Error GoTo PROC_ERR

m_objDictionary.RemoveAll

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"RemoveAll"
Resume PROC_EXIT

End Sub

Public Sub SortDictionary(fKey As Boolean)
' Comments : Sorts the Dictionary items
' Parameters: fKey - True to sort by Key, False to sort by Item
' Returns : Nothing
'
Dim lngCounter As Long
Dim avarColumn1() As Variant
Dim avarColumn2() As Variant
Dim avarTmp() As Variant

On Error GoTo PROC_ERR

If fKey Then
' Sort by key, so get the Keys into the first dim of the array
avarColumn1 = m_objDictionary.Keys
avarColumn2 = m_objDictionary.Items
Else
' Sort by item, so get the Items into the first dim of the array
avarColumn1 = m_objDictionary.Items
avarColumn2 = m_objDictionary.Keys
End If

' Grow the tmp array
ReDim avarTmp(0 To UBound(avarColumn1), 1) As Variant

' Create a single array
For lngCounter = 0 To UBound(avarColumn1)
avarTmp(lngCounter, 0) = avarColumn1(lngCounter)
avarTmp(lngCounter, 1) = avarColumn2(lngCounter)
Next lngCounter

' Sort the array
DoSort avarTmp

' Clear all keys/items from the dictionary
m_objDictionary.RemoveAll

' Get the local array back into the dictionary
For lngCounter = 0 To UBound(avarTmp)
If fKey Then
m_objDictionary.Add avarTmp(lngCounter, 0), avarTmp(lngCounter, 1)
Else
m_objDictionary.Add avarTmp(lngCounter, 1), avarTmp(lngCounter, 0)
End If
Next lngCounter

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"SortDictionary"
Resume PROC_EXIT

End Sub

Private Sub DoSort(avarIn() As Variant)
' Comments : Sorts the passed variant array
' Parameters: avarIn() - array of variants
' Returns : Nothing
'
Dim intLowBounds As Integer
Dim intHighBounds As Integer
Dim intX As Integer
Dim intY As Integer
Dim varTmp As Variant
Dim varTmp2 As Variant

On Error GoTo PROC_ERR

' Get the bounds of the array
intLowBounds = LBound(avarIn)
intHighBounds = UBound(avarIn)

' For each element in the array
For intX = intLowBounds To intHighBounds - 1

' for each element in the array
For intY = intX + 1 To intHighBounds

' If a value lower in the array is greater than a values higher in the
' array, swap them
If avarIn(intX, 0) > avarIn(intY, 0) Then
varTmp = avarIn(intX, 0)
varTmp2 = avarIn(intX, 1)
avarIn(intX, 0) = avarIn(intY, 0)
avarIn(intX, 1) = avarIn(intY, 1)
avarIn(intY, 0) = varTmp
avarIn(intY, 1) = varTmp2
End If

Next intY

Next intX

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"DoSort"
Resume PROC_EXIT

End Sub


Best of luck,

Bob Coward
CADS, Inc

800-366-0946
bcoward@mindspring.com
Back to top
Paul Richardson
Guest





Posted: Fri Apr 01, 2005 9:16 am    Post subject: Re: "member" equivalent Reply with quote

Nice, Thanks.

Bob, Do you have a sample implementing
the copyObjects method they way you
described below in "Making whole
drawing as a block". It's tweeking my
last brain cell. tks..
"bcoward" <nospam@address.withheld> wrote in message
news:3618710.1112326356563.JavaMail.jive@jiveforum2.autodesk.com...
Quote:
Scott,

Here is a class that compliments Paul's recommendation. Check out the
Exists Function as you Member equivilent.


' Class : CDictionary
' Description : This class demonstrates using the Dictionary object
'
' To use the Dictionary object, you mst create a Reference
' to the Windows Scripting Runtime file (SCRRUN.DLL)
'
' Comparison modes
Public Enum EnumCompareModes
dicBinary = 1
dicText = 2
End Enum

' Private variables to manage property values
Private m_objDictionary As Scripting.Dictionary
Private m_eCompareMode As EnumCompareModes
Private m_lngCount As Long

Private Sub Class_Initialize()
' Set initial values to defaults which may be overridden
' with property settings
'
On Error GoTo PROC_ERR

' Default to text compare
m_eCompareMode = dicBinary

' Create the object
Set m_objDictionary = New Dictionary

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Class_Initialize"
Resume PROC_EXIT

End Sub

Public Property Get CompareMode() As EnumCompareModes
' Returns: The current setting of the CompareMode property
'
CompareMode = m_eCompareMode

End Property

Public Property Let CompareMode(eValue As EnumCompareModes)
' eValue: Comparison mode as defined by the EnumCompareModes
' enumerated type.
'
m_eCompareMode = eValue

End Property

Public Property Get Count() As Long
' Returns: The number of objects in the dictionary
'
On Error GoTo PROC_ERR

' Update the count
m_lngCount = m_objDictionary.Count

Count = m_lngCount

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Count"
Resume PROC_EXIT

End Property

Public Property Get Dictionary() As Scripting.Dictionary
' Returns: A handle the current dictionary object
'
On Error GoTo PROC_ERR

Set Dictionary = m_objDictionary

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Dictionary"
Resume PROC_EXIT

End Property

Public Property Get Item(varKey As Variant) As Variant
' Returns: The item in the dictionary with the specified key
' Parameters: varKey - The key of the item
'
On Error GoTo PROC_ERR

If IsObject(m_objDictionary.Item(varKey)) Then
Set Item = m_objDictionary.Item(varKey)
Else
Item = m_objDictionary.Item(varKey)
End If

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Item: " & Err.Number & ". " & Err.Description, , _
"Item"
Resume PROC_EXIT

End Property

Public Property Get Items() As Variant
' Comments : Returns the Dictionary items as an array
' Parameters: None
' Returns : Array of keys
'
On Error GoTo PROC_ERR

Items = m_objDictionary.Items

PROC_EXIT:
Exit Property

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Items"
Resume PROC_EXIT

End Property

Public Property Get Key(varKey As Variant) As Variant
' Returns: The key in the dictionary with the specified key.
' Parameters: varKey - The key of the item
'
On Error GoTo PROC_ERR
If IsObject(m_objDictionary.Item(varKey).Key) Then
Set Key = m_objDictionary(varKey).Key
Else
Key = m_objDictionary(varKey).Key
End If

PROC_EXIT:
Exit Property

PROC_ERR:
MsgBox "Item: " & Err.Number & ". " & Err.Description, , _
"Key"
Resume PROC_EXIT

End Property

Public Property Get Keys() As Variant
' Comments : Returns the Dictionary keys as an array
' Parameters: None
' Returns : Array of keys
'
On Error GoTo PROC_ERR

Keys = m_objDictionary.Keys

PROC_EXIT:
Exit Property

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Keys"
Resume PROC_EXIT

End Property

Public Sub Add( _
varKey As Variant, _
varItem As Variant)
' Comments : Adds the specified item to the Dictionary
' Parameters: varKey - Unique key for the item. Keys are required
' for all items in the Dictionary.
' varItem - item value
' Returns : Nothing
'
On Error GoTo PROC_ERR

m_objDictionary.Add varKey, varItem

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Add"
Resume PROC_EXIT

End Sub

Public Function Exists(varKey As Variant) As Boolean
' Comments : Determines if the specified item exists in the dictionary
' Comparison is done according to the setting of the
' CompareMode property.
' Parameters: varKey - key of the item to find
' Returns : True if the item exists, False otherwise.
'
Dim lngCounter As Long
Dim aTmpKeys() As Variant

On Error GoTo PROC_ERR

Select Case m_eCompareMode
Case dicBinary
' Binary mode appears to work correctly, so we'll just set
' the dictionary object's property and let the DLL to the work
m_objDictionary.CompareMode = vbBinaryCompare
Exists = m_objDictionary.Exists(varKey)

Case dicText
' Text mode (case insenstive) doesn't work because the vbTextCompare
' constant documented in the VB 6 documentation doesn't compile.
' We work around this by doing our own (slow) comparison.

' First copy the keys to an array
aTmpKeys = m_objDictionary.Keys

' Loop through to see if it exists
For lngCounter = 0 To UBound(aTmpKeys)
If LCase(varKey) = LCase(aTmpKeys(lngCounter)) Then
Exists = True
' As soon as its found, bail out of the loop
Exit For
Else
Exists = False
End If
Next lngCounter

End Select

PROC_EXIT:
Exit Function

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Exists"
Resume PROC_EXIT

End Function

Public Sub Remove(varKey As Variant)
' Comments : Removes the specified item from the Dictionary
' Parameters: varKey - key of the item to remove
' Returns : Nothing
'
On Error GoTo PROC_ERR

m_objDictionary.Remove varKey

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Remove"
Resume PROC_EXIT

End Sub

Public Sub RemoveAll()
' Comments : Removes all items from the Dictionary
' Parameters: None
' Returns : Nothing
'
On Error GoTo PROC_ERR

m_objDictionary.RemoveAll

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"RemoveAll"
Resume PROC_EXIT

End Sub

Public Sub SortDictionary(fKey As Boolean)
' Comments : Sorts the Dictionary items
' Parameters: fKey - True to sort by Key, False to sort by Item
' Returns : Nothing
'
Dim lngCounter As Long
Dim avarColumn1() As Variant
Dim avarColumn2() As Variant
Dim avarTmp() As Variant

On Error GoTo PROC_ERR

If fKey Then
' Sort by key, so get the Keys into the first dim of the array
avarColumn1 = m_objDictionary.Keys
avarColumn2 = m_objDictionary.Items
Else
' Sort by item, so get the Items into the first dim of the array
avarColumn1 = m_objDictionary.Items
avarColumn2 = m_objDictionary.Keys
End If

' Grow the tmp array
ReDim avarTmp(0 To UBound(avarColumn1), 1) As Variant

' Create a single array
For lngCounter = 0 To UBound(avarColumn1)
avarTmp(lngCounter, 0) = avarColumn1(lngCounter)
avarTmp(lngCounter, 1) = avarColumn2(lngCounter)
Next lngCounter

' Sort the array
DoSort avarTmp

' Clear all keys/items from the dictionary
m_objDictionary.RemoveAll

' Get the local array back into the dictionary
For lngCounter = 0 To UBound(avarTmp)
If fKey Then
m_objDictionary.Add avarTmp(lngCounter, 0), avarTmp(lngCounter, 1)
Else
m_objDictionary.Add avarTmp(lngCounter, 1), avarTmp(lngCounter, 0)
End If
Next lngCounter

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"SortDictionary"
Resume PROC_EXIT

End Sub

Private Sub DoSort(avarIn() As Variant)
' Comments : Sorts the passed variant array
' Parameters: avarIn() - array of variants
' Returns : Nothing
'
Dim intLowBounds As Integer
Dim intHighBounds As Integer
Dim intX As Integer
Dim intY As Integer
Dim varTmp As Variant
Dim varTmp2 As Variant

On Error GoTo PROC_ERR

' Get the bounds of the array
intLowBounds = LBound(avarIn)
intHighBounds = UBound(avarIn)

' For each element in the array
For intX = intLowBounds To intHighBounds - 1

' for each element in the array
For intY = intX + 1 To intHighBounds

' If a value lower in the array is greater than a values higher in
the
' array, swap them
If avarIn(intX, 0) > avarIn(intY, 0) Then
varTmp = avarIn(intX, 0)
varTmp2 = avarIn(intX, 1)
avarIn(intX, 0) = avarIn(intY, 0)
avarIn(intX, 1) = avarIn(intY, 1)
avarIn(intY, 0) = varTmp
avarIn(intY, 1) = varTmp2
End If

Next intY

Next intX

PROC_EXIT:
Exit Sub

PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"DoSort"
Resume PROC_EXIT

End Sub


Best of luck,

Bob Coward
CADS, Inc

800-366-0946
bcoward@mindspring.com
Back to top
bcoward
Guest





Posted: Fri Apr 01, 2005 9:48 am    Post subject: Re: "member" equivalent Reply with quote

Paul,

I was just getting ready to wrap up for the night because I have to be in the field by 5:30am....rain and all

What I have been working on is that Custom Cursor thingy you asked about whereby the crosshairs reflect a scale relative to the drawings scale factor.

Tomorrow I'll put the copyobj stuff together, test and send it off. I don't expect to be in till late evening but I've mounted my laptop in my work van so I can jot code conveniently through the day.

On another note, I'm planning a trip to the Rockland, Maine project. Send me your brother's contact information, I'd like to start some dialog with him and possibly introduce to my team for future use....I'm presently carcassing the built-ins during my spare time and days off.

Tomorrow...til then

Bob Coward
CADS, Inc
Back to top
sdanis
Guest





Posted: Fri Apr 01, 2005 10:05 pm    Post subject: Re: "member" equivalent Reply with quote

Hey Guys, thanks for the input. I really appreciate it.
Bob you old dog, how's it going?
Coming to Maine Huh.,
Let me know when you're coming through Portland and we'll hook up.

Scott
Back to top
 
Post new topic   Reply to topic    CADForums.net Forum Index -> VBA All times are GMT
Page 1 of 1

 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum




Windows Server DSP VoIP Electronics New Topics
Powered by phpBB