Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Tabelle auslesen und Werte in andere Tabelle übertragen

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
  
NVIDIA RTX™ Virtual Workstation (vWS)
Autor Thema:  Tabelle auslesen und Werte in andere Tabelle übertragen (175 / mal gelesen)
Goose
Mitglied
Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik


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

Beiträge: 206
Registriert: 29.03.2007

IV2024 R2.1
CATIA V6 R2013x

erstellt am: 08. Apr. 2024 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


Tabelle.idw

 
Hallo zusammen,

mit diesem Code hab ich den Inhalt der Tabelle "Herstelldaten ...."
Spalte : / Reihe: ausgelesen.

Im Nachgang würde ich den Wert gerne in die Tabelle "Stirnrad" übertragen.
Kann mir jemand exemplarisch auflisten wie die hier funktionieren könnte!?
Danke und Gruß

Code:
Sub Tabelleauslesen()

  Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.ActiveDocument

Dim sheet1 As sheet
Set sheet1 = oDrawDoc.Sheets("Blatt:1")

Dim table As CustomTable
Set table = sheet1.CustomTables.Item(1)

' Zeilen- und Spaltenindizes beginnen bei 1
Dim rowNumber As Long
rowNumber = 4 ' Vierte Zeile
Dim columnNumber As Long
columnNumber = 3 ' Dritte Spalte

' Den Wert der Zelle in der angegebenen Zeile und Spalte abrufen
Dim cellValue As String
cellValue = table.Rows.Item(rowNumber).Item(columnNumber).value

Debug.Print cellValue
           
       
End Sub


[Diese Nachricht wurde von Goose am 08. Apr. 2024 editiert.]

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2444
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 08. Apr. 2024 14:23    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 Goose 10 Unities + Antwort hilfreich

Moin

Geht man davon aus, dass die Zieltabelle in der Realität auch die zweite Tabelle auf dem gleichen Blatt ist und die Spalten- und Zeilennummern gleich sind:

Code:

Sub Tabelleauslesen()

  Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.ActiveDocument

Dim sheet1 As sheet
Set sheet1 = oDrawDoc.Sheets("Blatt:1")

Dim table As CustomTable
Set table = sheet1.CustomTables.Item(1)

Dim ttable As CustomTable
Set ttable = sheet1.CustomTables.Item(2)

' Zeilen- und Spaltenindizes beginnen bei 1
Dim rowNumber As Long
rowNumber = 4 ' Vierte Zeile
Dim columnNumber As Long
columnNumber = 3 ' Dritte Spalte

' Den Wert der Zelle in der angegebenen Zeile und Spalte abrufen
'Dim cellValue As String
'cellValue = table.Rows.Item(rowNumber).Item(columnNumber).value

'Debug.Print cellValue
Dim i as integer
for i=rownumber to table.rows.count
    ttable.Rows.Item(i).Item(columnNumber).value = table.Rows.Item(i).Item(columnNumber).value
    i = i +1
next
      
End Sub


------------------
MfG
Ralf

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

Goose
Mitglied
Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik


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

Beiträge: 206
Registriert: 29.03.2007

IV2024 R2.1
CATIA V6 R2013x

erstellt am: 08. Apr. 2024 14:36    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

Die zweite Tabelle ist ein Skizziersymbol mit Textfeldern.
Unter SketchedSymbols hab ich  Name : "Stirnrad" : String gefunden aber noch nicht das Textfeld wo ich hin möchte

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2444
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 08. Apr. 2024 15:06    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 Goose 10 Unities + Antwort hilfreich

Moin

Ah ja, jetzt wo du es sagst...
Wie oft kommt diese Übertragung vor? Bei einer einfachen Lösung würde ich die Itemnummern der Textboxen (zu finden unter SketchedSymbolDefinition.Sketch.TextBoxes) in der richtigen Reihenfolge in ein Array "aItems" schreiben. Quasi eine hart codierte Zuordnung welche Tabellenzelle in welches Textfeld soll. Arrays beginnen bei 0, aber wir schreiben ab Feld 3. Das davor leere Felder sind, ist egal. Die ignorieren wir beim Auslesen ebenso.
Sähe dann so aus:
aItems(0) = 0
aItems(1) = 0
aItems(2) = 0
aItems(3) = 0
aItems(4) = "Itemnummer der TextBox Modul"
aItems(5) = "Itemnummer der TextBox Zähnezahl"
aItems(6) = "Itemnummer der TextBox Bezugsprofil"
...usw.

In der Schleife For i=3 to table.Rows.Count holen wir die Itemnummer über aItems(i) und schreiben die angeforderte Eingabe über SketchedSymbol.SetPromptResultText(SketchedSymbol.Definition.Sketch.TextBoxes(aItems(i)), table.Rows.Item(i).Item(columnNumber).value).

Die kompiziertere Methode wäre jeder Textbox ein Attribut mit dem Zeilennamen aus der Quelltabelle (die müssen dann immer gleich sein) zu geben und den AttributeManager zu benutzen, um die jeweilige TextBox zu finden. Danach wieder mit SetPromptTextResult den Inhalt schreiben.

------------------
MfG
Ralf

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2444
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 08. Apr. 2024 22:20    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 Goose 10 Unities + Antwort hilfreich

Moin

Mal als Beispiel ein Entwurf. Mir ist gegen Ende der Liste nicht mehr klar welcher Wert der Tabelle zu welchem Feld im Symbol gehört. Ich habe daher mal nach Gutdünken die Felder soweit möglich zugeordnet. Kann gut sein, dass das nicht passt.
Du musst, in irgendeiner Form eine Relation zwischen Tabellenzelle und Symbolfeld definieren. Wenn die Tabellenzeilen komplett andere Namen haben, leer sind oder auch mal ganz fehlen, wird es schwierig.

Code:

Option Explicit

Private Sub Transfer()

Dim aItems(38) As String
aItems(1) = 178 '--- MO Modul
aItems(2) = 179 '--- ZZ Zähnezahl
aItems(3) = 180 '--- BZPV Bezugsprofil Verzahnung
aItems(4) = 181 '--- EGW Eingrifsswinkel
aItems(5) = 182 '--- SW Schrägungswinkel
aItems(6) = 183 '--- FR Flankenrichtung
aItems(7) = 184 '--- TD Teilkreisdurchmesser
aItems(8) = 185 '--- GD Grundkreisdurchmesser
aItems(9) = 186 '--- PVF Profilverschiebunsgfaktor
aItems(10) = 187 '--- ZH Zahnhöhe
aItems(11) = 188 '--- KA Kopfhöhenänderung
aItems(12) = 189 ' -- Fußkreisdurchmesser
aItems(13) = 190 ' -- Fußnutzkreisdurchmesser
aItems(14) = 191 ' -- Fußformkreis
aItems(15) = 192 '--- VQ Verzahnungsqualität
aItems(16) = 193 '--- PG Prüfgruppe
'aItems(17) = 194 '--- ZD1 Zahndicke
aItems(18) = 195 '--- ZDA1 Zahndicke oberes Abmaß
aItems(19) = 196 '--- ZDA2 Zahndicke unteres Abmaß
aItems(17) = 197 '--- ZDS Zahndickensehne
aItems(20) = 198 '--- ZDSH Höhe über der Sehne
aItems(21) = 199 '--- MZZ Messzähnezahl
aItems(22) = 200 '--- ZWG Zahnweite Größtmaß
aItems(23) = 201 '--- ZWK Zahnweite Kleinstmaß
aItems(25) = 202 '--- DPG Diam. Prüfmaß - Größtmaß
aItems(26) = 203 '--- DPK Diam. Prüfmaß - Kleinstmaß
aItems(24) = 204 '--- MRD Messrollendurchmesser
'aItems(28) = 205 '--- ZFWA Zweiflanken Wälzabstand
aItems(27) = 206 '--- VDFS1 Verdreh.-Flankenspiel min.
aItems(28) = 207 '--- VDFS2 Verdreh.-Flankenspiel max.
aItems(32) = 208 '--- SNR Sachnummer Gegenrad
aItems(32) = 209 '--- Zähnezahl Gegenrad
aItems(29) = 210 '--- AAG Achsabstand im Gehäuse
'aItems(34) = 211 '--- AAT Achsabstandtoleranz
aItems(30) = 212 '--- LA Wälzlänge LA
aItems(31) = 213 '--- LF Wälzlänge LF
'aItems(37) = 214 '--- GA Wälzlänge ga
aItems(33) = 215 '--- EA ergänzende Angaben


Dim oApp As Inventor.Application
Set oApp = ThisApplication

Dim oDrawDoc As DrawingDocument
Set oDrawDoc = oApp.ActiveDocument

Dim oSkS As SketchedSymbol
For Each oSkS In oDrawDoc.ActiveSheet.SketchedSymbols
    If oSkS.Name = "Stirnrad" Then Exit For
Next

If oSkS Is Nothing Then Exit Sub

Dim sheet1 As Sheet
Set sheet1 = oDrawDoc.Sheets("Blatt:1")

Dim table As CustomTable
Set table = sheet1.CustomTables.Item(1)

' Zeilen- und Spaltenindizes beginnen bei 1
Dim columnNumber As Long
columnNumber = 3 ' Dritte Spalte
Dim columnNumber2 As Long
columnNumber2 = 4 ' Dritte Spalte

Dim sValue As String
Dim oTB As TextBox
Dim i As Integer
Dim j As Integer
j = 1

For i = 1 To table.Rows.Count
    'Spalte 3
    sValue = table.Rows.Item(i).Item(columnNumber).Value
    Set oTB = oSkS.Definition.Sketch.TextBoxes(aItems(j))
    j = j + 1
    Call oSkS.SetPromptResultText(oTB, sValue)
    'Spalte 4
    '- nur wenn in der Zelle etwas drin steht
    '- ggf. xxx o.ä. für keinen Wert
    sValue = ""
    sValue = table.Rows.Item(i).Item(columnNumber2).Value
    If Not sValue = "" Then
        Set oTB = oSkS.Definition.Sketch.TextBoxes(aItems(j))
        j = j + 1
        Call oSkS.SetPromptResultText(oTB, sValue)
    End If
Next

End Sub


------------------
MfG
Ralf

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

Goose
Mitglied
Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik


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

Beiträge: 206
Registriert: 29.03.2007

IV2024 R2.1
CATIA V6 R2013x

erstellt am: 09. Apr. 2024 07:57    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 die „fertige Arbeit“.
Die Zeilennamen der Quelltabelle sind immer gleich. Daher werde ich mal versuchen ob ich die von Dir angesprochene „kompliziertere Methode“ umgesetzt bekomme.
Unities sind raus

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2444
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 09. Apr. 2024 08:46    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 Goose 10 Unities + Antwort hilfreich

Moin

Wenn du mit Attributen experimentieren willst, schau mal ob sich der AttributeHelper (Link) noch installieren lässt. Damit kann man sehr gut Attribute sehen, erstellen, ändern und löschen. Inventor selbst bietet keine GUI dafür.
Wenn die Namen in der Quelltabelle immer gleich sind, kann man die als Attribut in die jeweilige TextBox schreiben. Damit hättest du eine eindeutige Zuordnung. Dann wären auch die Probleme der abweichenden Reihenfolge und leeren/fehlenden Einträge erledigt.

------------------
MfG
Ralf

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

Goose
Mitglied
Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik


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

Beiträge: 206
Registriert: 29.03.2007

IV2024 R2.1
CATIA V6 R2013x

erstellt am: 10. Apr. 2024 13:49    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

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