V I S U A L I Z Z A D I S C U S S I O N E |
TOTONNO |
Inserito il - 08 marzo 2011 : 15:44:30
Salve a tutti... Cercavo aiuto per eseguire correttamente la funzione SelectAtPoint.
Utilizzavo il seguente codice per estrarre gli attributi di un blocco avente nome 'blockName' Funzione che scrissi con vb6 e utilizzavo con autocad map 2009. La funzione è all'interno di un programma esterno ad autocad e funzionava correttamente.
'Function CreateSelectionSet(Optional ssName As String = "sset") As AcadSelectionSet 'Dim ss As AcadSelectionSet 'On Error Resume Next 'Set ss = acadDoc.SelectionSets(ssName)
'If Err Then Set ss = acadDoc.SelectionSets.Add(ssName) 'ss.Clear 'Set CreateSelectionSet = ss 'End Function
' rende il valore dell'attributo del blocco 'Function GetAttVal(blockName As String, attributeName As String, pt() As Double) As Variant 'Dim fType(0) As Integer 'Dim fData(0) As Variant
'Dim blkTmp As AcadBlockReference
'Dim j As Integer 'Dim tol As Double
'Set sss = CreateSelectionSet 'fType(0) = 2 'fData(0) = blockName
'sss.SelectAtPoint pt, fType, fData
'If sss.Count = 1 Then 'Set blkTmp = sss.Item(I) 'If blkTmp.HasAttributes Then 'atts = blkTmp.GetAttributes 'for j = LBound(atts) To UBound(atts) 'If LCase(atts(j).TagString) = LCase(attributeName) Then 'GetAttVal = atts(j).TextString 'End If 'Next 'End If 'End If 'Set sss = Nothing 'Set blkTmp = Nothing 'End Function
ORA ho necessiata di riscriverla con Visual Studio e utilizzando autocad 2011. Ho fatto qualche piccola modifica per la dichiarazione delle variabili ed è questo il codice:
' rende il valore dell'attributo del blocco Function GetAttVal(ByVal blockName As String, ByVal attributeName As String, ByVal pt() As Double) As Object Dim fType As Integer Dim fData As Object
Dim blkTmp As Autodesk.AutoCAD.Interop.Common.AcadBlockReference Dim j As Integer Dim I As Integer
Dim sss = CreateSelectionSet() fType = 2 fData = blockName
sss.SelectAtPoint(pt, fType, fData)
If sss.Count = 1 Then blkTmp = sss.Item(I)
If blkTmp.HasAttribute Then Dim atts = blkTmp.GetAttributegs For j = LBound(atts) To UBound(atts) If LCase(atts(j).TagString) = LCase(attributeName) Then GetAttVal = atts(j).TextString Else End If Next End If
End If sss = Nothing blkTmp = Nothing
End Function
Il problema che da l'errore 5 Argomento filter type non valido nella funzione SelectAtPoint. Dovè l'errore ?? Grazie a tutti. |
|
|