Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Attribut-Eingabeaufforderung auslesen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Attribut-Eingabeaufforderung auslesen (1523 mal gelesen)
WolfgangSCH
Mitglied



Sehen Sie sich das Profil von WolfgangSCH an!   Senden Sie eine Private Message an WolfgangSCH  Schreiben Sie einen Gästebucheintrag für WolfgangSCH

Beiträge: 145
Registriert: 01.10.2002

AutoCAD 2021 64-bit
Windows 10 64-bit Home Premium
AMD Phenom II X6 1055T, 2,8GHz, 8GB RAM

erstellt am: 20. Jan. 2004 10:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,
ich benötige dringend Hilfe bei folgendem Problem:
Ich wähle mir aus einer DWG Blöcke (Block-Referenzen) aus und schreibe diese in einen Auswahlsatz. Aus diesem Auswahlsatz lese ich nun die Attribute (TextString + TagString) in eine Listenansicht (ListView). Ich benötige zur genaueren Unterscheidung der Attribute jedoch noch die Eingabeaufforderung (PromptString). Kann ich aus Block-Referenzen überhaupt die Eingabeaufforderung auslesen? Wie kann das Problem gelöst werden?

Hier ein Auszug aus dem Code:

    For Each ent In sset                                                    If ent.EntityName = "AcDbBlockReference" Then                          BlFound = True
            If ent.HasAttributes Then
                AttFound = True
                BlName = ent.Name                                  ' Blockname
                AttArray = ent.GetAttributes                        ' Array mit Attributen werden eingelesen
                AnzAttr = UBound(AttArray)                          ' Attribut-Anzahl
                For Count = LBound(AttArray) To UBound(AttArray)    ' Elemente aus AttArray werden in Listenansicht eingelesen
                    If StrComp(AttArray(Count).EntityName, "AcDbAttribute", 1) = 0 Then
                        AttTagString = AttArray(Count).TagString
                        AttTextString = AttArray(Count).TextString
                        Set listView = frmAttBearb.LvAttribute.ListItems.Add()
                        listView.Text = AttTagString
                        listView.SubItems(1) = AttTextString
                        listView.SubItems(3) = BlName
                    End If
                Next Count
            End If
        End If
    Next ent

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

m99ds
Mitglied
Elektroplaner


Sehen Sie sich das Profil von m99ds an!   Senden Sie eine Private Message an m99ds  Schreiben Sie einen Gästebucheintrag für m99ds

Beiträge: 18
Registriert: 29.10.2003

AutoCAD 2000I

erstellt am: 20. Jan. 2004 16:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für WolfgangSCH 10 Unities + Antwort hilfreich

Du musst den Block (Acadblock) nehmen, dort die Attributes auslesen. Dort bekommst du die Eingabeaufforderung her.

Public Property Get Eingabeaufforderung() As String
    On Error GoTo Fehler
    Dim BLK As AcadBlock
    Set BLK = thisdrawing.Blocks(Blockname)
    If BLK Is Nothing Then Exit Function
    Dim iX As Integer, Nr As Integer
    For iX = 0 To BLK.Count
        If BLK.Item(iX).ObjectName = "AcDbAttributeDefinition" Then
            Nr = Nr + 1
            If Nr = AttNr Then
                Dim ATT As AcadAttribute
                Set ATT = BLK.Item(iX)
                Eingabeaufforderung = ATT.Promptstring
                Exit Property
            End If
        End If
    Next
    Exit Property
Fehler:
    MsgBox "Fehler bei der Ermittlung der Eingabeausfforderung für das Attribut (" & AttNr & ") aus dem Block (" & Me.BlockRef.Name & ")" _
    & vbCrLf & vbCrLf & Err.Description, vbCritical
    Err.Clear
End Property

Ich hoffe es hilft

------------------
Marco

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

WolfgangSCH
Mitglied



Sehen Sie sich das Profil von WolfgangSCH an!   Senden Sie eine Private Message an WolfgangSCH  Schreiben Sie einen Gästebucheintrag für WolfgangSCH

Beiträge: 145
Registriert: 01.10.2002

erstellt am: 20. Jan. 2004 16:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank für Deine schnelle Hilfe.

Gruß

Wolfgang

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz