CADsite forum

AutoCAD => VBA => Topic gestart door: TheChris op do 23 04 2009, 11:19:19

Titel: InsertionPoint(0)
Bericht door: TheChris op do 23 04 2009, 11:19:19
Hey,

Wie kan mij helpen met de het volgende probleem, ik heb vanuit een functie een array van het type Variant gevuld met Acad objecten en Attributen van blocks. Het geen waar het in eerste instantie omging was dat ik die twee type gezamkelijk in één array de Textstring uitlezen, dat is dus gelukt, maar nu wil ik de X en Y as gegevens ook uitlezen. In de watches zie ik de X en Y as gegevens netjes staan voor beide objecten in de InsertionPoint(0) gegevens.

De array is gedeclareerd als Public DataArray(0 To 200) As Variant
En waarna DataArray(i).TextString prima werkt. Maar DataArray(i).InsertionPoint(0) niet, en ik heb al meerdere opties geprobeerd met InsertionPoint. Ze staan er maar hoe kan ik ze uitlezen is dus mijn vraag?

Gr Chris
Titel: Re: InsertionPoint(0)
Bericht door: HofCAD op ma 27 04 2009, 09:46:25
Beste Chris,

Heb je hier wat aan:
Sub SelectAttTekst()
  Dim grpcode(0 To 4) As Integer
  Dim datavalue(0 To 4) As Variant
  Dim VarAttribuut As AcadAttributeReference
  Dim ssetObj As AcadSelectionSet
  On Error Resume Next
  Set ssetObj = ThisDrawing.SelectionSets.Add("ss")
  On Error GoTo 0
  Set ssetObj = ThisDrawing.SelectionSets("ss")
  ssetObj.Clear
  grpcode(0) = -4: datavalue(0) = "<or"
  grpcode(1) = 0: datavalue(1) = "Insert"
  grpcode(2) = 0: datavalue(2) = "Text"
  grpcode(3) = 0: datavalue(3) = "Mtext"
  grpcode(4) = -4: datavalue(4) = "or>"
  ssetObj.SelectOnScreen grpcode, datavalue
  MsgBox ("Totaal aantal geselecteerde objecten: " & ssetObj.Count)
  For i = 0 To ssetObj.Count - 1
    Set entObj = ssetObj.Item(i)
    If entObj.ObjectName = "AcDbBlockReference" Then
    MsgBox ("Blok reference object gevonden: " & entObj.Name)
    InsP = entObj.InsertionPoint
    MsgBox "Het insertion point van het block is: " & InsP(0) & "; " & InsP(1) & "; " & InsP(2), _
    vbInformation, "HofCAD Example"
       If entObj.HasAttributes Then VarAttributen = entObj.GetAttributes
        For j = LBound(VarAttributen) To UBound(VarAttributen)
            Set VarAttribuut = VarAttributen(j)
            MsgBox ("VarAttribuut " & Str(j + 1) & " van" & Str(UBound(VarAttributen) + 1) & _
            " gevonden " & VarAttribuut.TagString & " met de waarde: " & VarAttribuut.TextString)
        Next j
    Else:
    If entObj.ObjectName = "AcDbText" Then
    MsgBox ("Tekst object gevonden: " & entObj.TextString)
    Else:
      MsgBox ("Mtekst object gevonden: " & entObj.TextString)
    End If
    End If
    Next i
End Sub


Met vriendelijke groet, HofCAD CSI.
Titel: Re: InsertionPoint(0)
Bericht door: TheChris op ma 27 04 2009, 10:34:16
Hoi,

Ik heb het middels opgelost doormiddel van het volgende:

inPoint = DataArray(i).insertionPoint  ' i  array teller 0 - 200 en Dim inPoint As Variant
X: " & inPoint(0) & " Y is: " & inPoint(1)