| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Revision Tabelle auslesen (1295 mal gelesen)
|
Canadabear Mitglied Konstrukteur
Beiträge: 919 Registriert: 30.06.2010
|
erstellt am: 05. Nov. 2014 14:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich moechte gerne die Revisiontabelle eine Zeichnungsdatei auslesen und dann auch aendern (Zeilen loeschen, aendern und hinzufuegen). hat irgendjemand einen Beispielcode fuer mich wie ich die Tabelle ueber VB.NET anspreche. danke schon mal Gruss Ray ------------------ Barbarus hic ego sum, quia non intellegor ulli! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 Inventor 20xx, Visual Studio Express
|
erstellt am: 05. Nov. 2014 17:33 <-- editieren / zitieren --> Unities abgeben: Nur für Canadabear
|
Canadabear Mitglied Konstrukteur
Beiträge: 919 Registriert: 30.06.2010
|
erstellt am: 05. Nov. 2014 19:05 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CAD-Huebner: Hier stehen nach erster Durchsicht brauchbare Codeschnipsel - oder hattest du die schon durchsucht?
ja, aber die wenigen die sich auf die Tabelle in der Zeichnung beziehen funktionieren bei mir zum Teil nicht ------------------ Barbarus hic ego sum, quia non intellegor ulli! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 06. Nov. 2014 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für Canadabear
Hallo In der API-Hilfe ist doch ein Beispiel drin. Funktioniert das auch nicht? Code: Public Sub RevisionTableQuery() ' Set a reference to the drawing document. ' This assumes a drawing document is active. Dim oDrawDoc As DrawingDocument Set oDrawDoc = ThisApplication.ActiveDocument ' Set a reference to the first revision table on the active sheet. ' This assumes that a revision table is on the active sheet. Dim oRevTable As RevisionTable Set oRevTable = oDrawDoc.ActiveSheet.RevisionTables.Item(1) ' Iterate through the contents of the revision table. Dim i As Long For i = 1 To oRevTable.RevisionTableRows.Count ' Get the current row. Dim oRow As RevisionTableRow Set oRow = oRevTable.RevisionTableRows.Item(i) ' Iterate through each column in the row. Dim j As Long For j = 1 To oRevTable.RevisionTableColumns.Count ' Get the current cell. Dim oCell As RevisionTableCell Set oCell = oRow.Item(j) ' Display the value of the current cell. Debug.Print "Row: " & i & ", Column: " & oRevTable.RevisionTableColumns.Item(j).Title _ & " = "; oCell.Text Next Next End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Canadabear Mitglied Konstrukteur
Beiträge: 919 Registriert: 30.06.2010
|
erstellt am: 06. Nov. 2014 14:44 <-- editieren / zitieren --> Unities abgeben:
Danke fuer den Tipp. Ich arbeite mit VB.net 2013 und der Teil meines Programms mit dem Problem sieht wie folgt aus: Code: ... Dim oCurrentDoc As ApprenticeServerDrawingDocument Dim RevTable As Inventor.RevisionTables... i = 2 Dim oRow As RevisionTableRow Do If Trim(Excel_Sheets(3).Cells(i, 1).Value) = "" Then Exit Do End If temp_str = (Left(Excel_Sheets(3).Cells(i, 1).Value, Len(Excel_Sheets(3).Cells(i, 1).Value) - 3) & "idw") oCurrentDoc = oApprenticeServer.Open(temp_str) 'MsgBox(oCurrentDoc.FullDocumentName) RevTable = oCurrentDoc.Sheets(1).RevisionTables.Item(1) If RevTable.RevisionTableRows.Count > 0 Then For j = 1 To RevTable.RevisionTableRows.Count oRow = RevTable.RevisionTableRows.Item(j) For k = 1 To RevTable.RevisionTableColumns.Count Excel_Sheets(3).Cells(i + j - 1, 3 + k).Value = oRow.Item(k).Text Next If j > 1 Then Excel_Sheets(3).Rows(i).insert(Shift:=-4121, CopyOrigin:=0) End If Next For j = 1 To RevTable.RevisionTableRows.Count Excel_Sheets(3).Rows(i + j - 1).value = Str(j) Next i = i + j - 1 End If oCurrentDoc.Close() i = i + 1 Loop
... das Programm steigt immer bei der Zeile: Code: RevTable = oCurrentDoc.Sheets(1).RevisionTables.Item(1)
mit einer Fehlermeldung aus. in dem vorgeschlagenen Code ist Code: ActiveSheet
statt Code: Sheets(1)
verwendet. anscheinend kennt Apprentice Code: ActiveSheet
nicht Wie kann ich also die Objectvariable RevTable richtig zuweisen. Gruss Ray ------------------ Barbarus hic ego sum, quia non intellegor ulli! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 07. Nov. 2014 19:47 <-- editieren / zitieren --> Unities abgeben: Nur für Canadabear
Hallo Kannst du einfach mal testen aus der Zeile Code: RevTable = oCurrentDoc.Sheets.Item(1).RevisionTables.Item(1)
zu machen. Beziehungsweise die Zeile mal in zwei Einzelschritte zu zerlegen. Code: Dim oSheet as Sheet oSheet=oCurrentDoc.Sheets.Item(1)RevTable = oSheet.RevisionTables.Item(1)
Ich bin mir immer unsicher was über Apprentice erreichbar ist und was nicht. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Canadabear Mitglied Konstrukteur
Beiträge: 919 Registriert: 30.06.2010
|
erstellt am: 07. Nov. 2014 21:47 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habs probiert, aber das Programm steigt immer bei der Zuweisung von RevTable aus. Beim eintippen des Codes schlaegt VB.Net die Funktionen sogar vor, aber beim laufen kommt dann die Fehlermeldung das diese Funktionen nicht implementiert sind. ------------------ Barbarus hic ego sum, quia non intellegor ulli! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 07. Nov. 2014 21:56 <-- editieren / zitieren --> Unities abgeben: Nur für Canadabear
|
Canadabear Mitglied Konstrukteur
Beiträge: 919 Registriert: 30.06.2010
|
erstellt am: 07. Nov. 2014 22:12 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von rkauskh: HalloNot implemented sagt's eigentlich schon. Apprentice bietet keinen Zugriff auf die Revisionstabelle.
Das kanns doch nicht sein, wieso unterdrueckt Autodesk einige Funktionen in Apprentice? Ist schon frustrieren wenn man etwas Programmieren will was sehr viel Zeit sparen kann und dann ist es wegen einer einfachen Funktion die anscheinend von Autodesk unterdrueckt wird nicht moeglich *grrrrrrrrrrrrrrrrrrrrrrrr* ------------------ Barbarus hic ego sum, quia non intellegor ulli! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 08. Nov. 2014 11:32 <-- editieren / zitieren --> Unities abgeben: Nur für Canadabear
Hallo Autodesk unterdrückt da gar nichts. Der ApprenticeServer besitzt keine Fähigkeit auf Geometrieinformationen zuzugreifen. Sonst wäre er ein vollständiger Inventor. Dann wäre er aber nicht mehr so schnell, klein und garantiert auch nicht mehr kostenlos. Das wird gern übersehen, der ApprenticeServer kann unabhängig genutzt werden. Es ist keine Inventorlizenz notwendig. In deinem Fall könnte man es mit einer unsichtbar geöffneten Inventorinstanz probieren. Der User starrt derweil auf einen animierten Statusbalken und wartet halt ein bißchen. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Canadabear Mitglied Konstrukteur
Beiträge: 919 Registriert: 30.06.2010
|
erstellt am: 09. Nov. 2014 18:28 <-- editieren / zitieren --> Unities abgeben:
Danke fuer den Tipp, ich werd mal sehen wie ich das umsetzen kann. Ich finde das die Revision Tabelle keine Geometrie ist, sie ist das gleiche wie die Stueckliste oder die iProperties. Mir war auch noch nicht bekannt das der Teil von Inventor den man in Visual Studio Importieren muss frei ist. Gruss Ray ------------------ Barbarus hic ego sum, quia non intellegor ulli! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Canadabear Mitglied Konstrukteur
Beiträge: 919 Registriert: 30.06.2010 Inventor 2020 / 2022 SolidWorks 2020
|
erstellt am: 14. Nov. 2014 14:30 <-- editieren / zitieren --> Unities abgeben:
Hallo, Update: das auslesen der Revisionstabelle klappt jetzt. Muss jetzt nur noch das Schreiben der Revisionstabelle programmieren. Gruss Ray ------------------ Barbarus hic ego sum, quia non intellegor ulli! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |