TuttoCAD Forum

TuttoCAD Forum
[ Home | Registrati | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Album Fotografico | Download | | Cerca | FAQ ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 1 - TuttoCAD Software
 Programmazione CAD
 Funzione SelectAtPoint
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

TOTONNO
Nuovo Arrivato



3 Messaggi

Inserito il - 08 marzo 2011 : 15:44:30  Mostra Profilo Invia a TOTONNO un Messaggio Privato  Rispondi Quotando


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.
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 0,26 secondi.