Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Tab bzw. Ansicht für Zugriff auf AcadTable wechseln

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
  
PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
Autor Thema:  Tab bzw. Ansicht für Zugriff auf AcadTable wechseln (1591 mal gelesen)
pistolpete1
Mitglied
Student


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

Beiträge: 102
Registriert: 06.01.2007

erstellt am: 11. Jan. 2008 17: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


AcadTable.jpg

 
Hallo Forum!
Zu dem Zeitpunkt wo ich mein Makro ausführe befinde ich mich in "Model". Im "Tab" (ich nenne es jetzt einfach so  "a2_hoch" befindet sich eine AcadTable, deren Zelleninhalte ich auslesen will.

Bei den Beispielen habe ich bereits was mit AcadTable gefunden, aber jetzt weiß ich nicht ob ich vom Tab "Model" aus auf die AcadTable zugreifen kann oder ob ich da umschalten muss / SelectionSet...?

Wie mache ich das am besten?
Liebe Grüße Peter

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

AutoCAD ACA 2024
Solidworks 2022 Sp5
Enterprise PDM 2022 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell Precision 3660
Intel Core i9-12900K
32 GB Arbeitsspeicher
2x Dell U2415

erstellt am: 11. Jan. 2008 18:27    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 pistolpete1 10 Unities + Antwort hilfreich

Hi Peter,

die Layouts sind in den Blöcken in der Zeichnung aufgeführt.
Mit ThisDrawing.Blocks.Item(i).Layout.Name bekommst du den Namen des Layouts bzw. des Modellbereichs. Daher solltest du diese Auflistung durchlaufen, bis du das passende Layout gefunden hast.
Dann kommst du über ThisDrawing.Blocks.Item(i).Item(h) an die einzelnen Elemente. diese List kannst du dann auch durchlaufen, bis du das Tabellenobjekt gefunden hast.

Gruß, Carsten

[Diese Nachricht wurde von Carsten1210 am 11. Jan. 2008 editiert.]

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

pistolpete1
Mitglied
Student


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

Beiträge: 102
Registriert: 06.01.2007

erstellt am: 24. Jan. 2008 10:29    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 Carsten,

vielen Dank für deine detaillierte Antwort. Ich habe es gleich ausprobiert und folgende Probleme:

-> Wie bekomme ich die Anzahl der Blöcke für die äußere Schleife?
Ich habe es mit ThisDrawing.Blocks.Count versucht, aber die Anzahl kann nicht stimmen (60).

-> Wenn ich mit Item(1) das Objekt hole, bekomme ich genau den Block in dem sich die Tabelle befindet.

Anschließend versuche ich mit der inneren Schleife wieder über die Elemente zu iterieren, bekomme aber wieder einen Fehler:
"Runtime Error 5: Invalid Procedure Call Or Argument"


Code:

Sub TestTable()

    Dim i As Integer
    Dim h As Integer
    Dim o As AcadObject
   
    For i = 0 To ThisDrawing.blocks.count
        If ThisDrawing.blocks.Item(i).Name = "a0_quer" Then
            For h = 0 To ThisDrawing.blocks.Item(i).count
                Set o = ThisDrawing.blocks.Item(i).Item(h)
                If TypeOf o Is AcadTable Then
                    MsgBox "TABLE"
                End If
            Next h
        End If
    Next i
   
End Sub


Ich bitte dich wiede einmal, mir zu helfen!

Liebe Grüße
Peter

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

pistolpete1
Mitglied
Student


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

Beiträge: 102
Registriert: 06.01.2007

erstellt am: 24. Jan. 2008 12:42    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

Sehe gerade, dass ich im Beispiel einen Fehler habe, aber es geht trotzdem nicht.

If ThisDrawing.blocks.Item(i).Layout.Name = "a0_quer"


Liebe Grüße,
Peter

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

pistolpete1
Mitglied
Student


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

Beiträge: 102
Registriert: 06.01.2007

erstellt am: 27. Jan. 2008 18:50    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

Wenn ich diesen Code probiere, kommt einmal die Messagebox, da der richtige Block erreicht wurde, aber dann kommt ein Fehler:
Code:

For i = 0 To ThisDrawing.blocks.count
      If ThisDrawing.blocks.Item(i).Layout.Name = "a0_quer" Then
            MsgBox "block gefunden"
      End If
Next i


Fehler im Anschluss (da der Blockcount 60 ist ...):

run-time error '-2145320891 (80210045)':
the property is not available in current state


Lg Peter

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 28. Jan. 2008 18:37    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 pistolpete1 10 Unities + Antwort hilfreich

Hallo Peter,

wenn du in der Schleife arbeitest dann nur bis count -1

Code:
For i = 0 To ThisDrawing.blocks.count -1
      If ThisDrawing.blocks.Item(i).Layout.Name = "a0_quer" Then
            MsgBox "block gefunden"
      End If
Next i


Der Index fängt bei 0 an aber es werden alle gezählt.

Eine andere Variante wäre doch über die Layouts zu gehen.

Code:
Sub Layouts()

    Dim myLayout As AcadLayout
    Dim LayoutBlockDef As AcadBlock
    Dim Entity As AcadEntity
   
    On Error Resume Next
    Set myLayout = ThisDrawing.Layouts("Layout1")
    If Err.Number = 0 Then
        On Error GoTo 0
        ' Layout vorhanden
        Set LayoutBlockDef = myLayout.Block
        For Each Entity In LayoutBlockDef
            Debug.Print Entity.ObjectName
        Next
    Else
        MsgBox "Gesuchtes Layout ist nicht vorhanden"
    End If
   
End Sub



Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht. 
www.ib-stelberg.de

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

pistolpete1
Mitglied
Student


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

Beiträge: 102
Registriert: 06.01.2007

erstellt am: 29. Jan. 2008 11:12    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


table.jpg

 
Hallo Wilfried!

Danke das funktioniert - nun finde ich das Layout und bekomme die Auflistung aller Objekte. Ich dachte eines davon müsste "AcadTable" sein, in meiner Auflistung sind aber nur:

AcDbViewport
AcDbLine
AcDbLine
AcDbLine
AcDbLine
AcDbPolyline
AcDbPolyline
AcDbViewport
AcDbLine
AcDbLine
AcDbBlockReference

Im Anhang ist ein ScreenShot der Tabelle, vlt. kannst du daraus erkennen, welches Objekt das ist.

Vielen Dank,
Lg Peter

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 29. Jan. 2008 11:26    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 pistolpete1 10 Unities + Antwort hilfreich

Hallo Peter,

es sieht aus wie eine Tabelle, muss aber keine sein.
In deiner Auflistung der Objekttypen wird eine Blockreferenz aufgeführt.
Ist es ein Block ?
Markiere das Ding doch mal und schaue nach den Eigenschaften.
Wenn es ein Block ist dann zerlege ihn in den Ursprung.
Vielleicht kommt dann erst die Tabelle
Wenn es eine Tabelle ist, wird in der Auflistung auch AcDbTable ausgegeben.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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

pistolpete1
Mitglied
Student


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

Beiträge: 102
Registriert: 06.01.2007

erstellt am: 29. Jan. 2008 20:55    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


Musterplan.zip

 
Hallo Wilfried,

ich glaube, dass es ein Block ist, aber ich werde nicht schlau, wie ich den weiterzerlegen könnte. Ich habe den abgespeckten Plan bzw. nur die Tabelle im Anhang. Ich wäre dir sehr verbunden, wenn du einen Blick darauf werfen könntest!!!

Liebe Grüße
Peter

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

AutoCAD ACA 2024
Solidworks 2022 Sp5
Enterprise PDM 2022 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell Precision 3660
Intel Core i9-12900K
32 GB Arbeitsspeicher
2x Dell U2415

erstellt am: 29. Jan. 2008 21:51    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 pistolpete1 10 Unities + Antwort hilfreich

Hi Peter,

Deine Tabelle besteht aus Linien und Texten und ist kein Objekt vom Typ "AcDbTable". Daher kannst du auch nicht auf das AcDbTable-Objekt zugreifen.

Gruß, Carsten

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

pistolpete1
Mitglied
Student


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

Beiträge: 102
Registriert: 06.01.2007

erstellt am: 31. Jan. 2008 17:58    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 Carsten

vielen Dank für die Information - Das muss ich dann wohl ändern lassen, denn wenn es eine Tabelle ist, stellt das auslesen der Werte auch keine Problem mehr dar (zumindest laut Hilfe).

Liebe Grüße
Peter

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

pistolpete1
Mitglied
Student


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

Beiträge: 102
Registriert: 06.01.2007

erstellt am: 26. Apr. 2008 12:56    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


Forum.zip

 
Hallo!

Soviel ich weiß setzt sich die Tabelle jetzt aus Blöcken mit dem Namen "SchachtlisteZeile" zusammen (pro Zeile ein solcher Block). Ein Element darin heißt zB POS.
Die Blöcke kann man ja mittels SSet suchen, oder? Aber wie funktioniert der Zugriff auf einen Block innerhalb des Blocks (zB POS)?

Ich habe den Plan im Anhang. Ich wäre sehr dankbar, wenn sich jemand die Mühe machen würde und mir zeigt, wie ich die Blöcke suchen bzw. auf die einzelnen Elemente zugreifen kann!

Vielen Dank,
Lg Peter

PS: Tabelle befindet sich im "Tab" "1.0mx1.4m_hoch"!

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 01. Mai. 2008 18:43    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 pistolpete1 10 Unities + Antwort hilfreich

Hallo Peter,

Wie Du im Eigenschaftsfenster sehen kannst hat der Block wirklich den Namen "SchachtlisteZeile" und in den Attributen stehen die zugehörigen Werte.

Beispiele zum Auslesen der Werte findest Du im Forum viele, zum Beispiel hier

Du mußt im Block das Attribut mit .TagString = "POS" suchen, im .TextString findest Du dann Deinen gesuchten Wert.

Grüße,
Klaus

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)2025 CAD.de | Impressum | Datenschutz