Op het scherm klik ik met de muis op een attribuut.
Wat ik nu wil is dit attribuut kunnen editten. Als ik de gegevens van het block opvraag krijg ik wel een lijst met attributes,maar weet niet welke ik geselecteerd heb. Weet hier iemand raad? Ik heb de volgende code.
Dim ssetObj As AcadSelectionSet
Dim grpcode(0 To 1) As Integer
Dim datavalue(0 To 1) As Variant
Dim b As AcadBlockReference 'Toegevoegd voor Att
Dim attribuut As AcadAttributeReference 'Toegevoegd voor Att
grpcode(1) = 0: datavalue(1) = "Insert"
Set ssetObj = ThisDrawing.SelectionSets.Add("AlleTeksten")
ssetObj.SelectOnScreen grpcode, datavalue
For Each b In ssetObj ' Haal attributen op
If b.HasAttributes Then attributen = b.GetAttributes
For i = LBound(attributen) To UBound(attributen)
Set attribuut = attributen(i)
‘ ?????
Next i
Next b
Veel simpeler:
dubbekklikken op de attribute :!:
Oke dat was mij bekend. ;-),
Wat ik wil is een routine in VBA maken die een attribute edit om er berekeningen op los te laten en weer terug te schrijven.
Wat mij niet lukt is middels selectonscreen een attribuut te selecteren. Het blok wordt geselecteerd. Zo weet ik nooit welke attribuut ik wil aanpassen.
Heb je nog meer tips ;-)
Groet, Martin
Als je op de tekst (attribute) klikt kun je het punt (coords) van aanklikken vergelijken met de coords van de attributes.
Bedankt voor het antwoord.
Het probleem met het opvragen van de coordinaten is dat dit niet overeen zal komen met het insertionpoint van de attribute omdat overal op de tekst geklikt kan worden.
In lisp de tag gebruiken om de juiste attribute te selecteren
De attributen en de lisp moeten dan wel op elkaar zijn toegesneden
Ik wil dit oplossen in VBA. Het moet toch ook zonder lisp kunnen?
http://www.afralisp.net/vba/attabvba.htm
Mijn vba kennis is maar heel klein
Maar volgens mij kan je wel wat met bovenstaand voorbeeld.
Ik heb de routine gedownload en gestart.
Dit is echter een manier van uitlezen. Ik kan de attributes wel uitlezen (zie boven).
Het probleem zit hem in het fijt dat ik 1 attribute niet los kan aanklikken, om vervolgens te editten en weer weg te schrijven.
Je kan met de code de attributen ook aanpassen
wijzig maar eens 1 van de waarde en klik op ok