| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| 4 Punkte, die Sie über CAD-Dateiformate wissen müssen |
Autor
|
Thema: Schriftfeld (Inventor 2018) mit Daten aus Excel-Datei füllen (2577 mal gelesen)
|
Sikis Mitglied
Beiträge: 8 Registriert: 05.02.2018 Inventor 2018
|
erstellt am: 05. Feb. 2018 14:32 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Kann mir ”Jemand” helfen ein Schriftfeld (Inventor 2018) mit Daten aus einer Excel-Datei zu füllen? Stelle mir das so vor: 1. Zeichnung geöffnet mit leerem Schriftfeld außer der Zeichnungsnummer, die ist eingetragen. 2. Excel-Datei liegt auf z.B. „C:\Users\Desktop\...test.xls ; mit allen relevanten Daten 3. Über eine Regel in Inventor den Datei-Explorer öffnen, Excel-Datei auswählen, und die Daten aus der Excel Datei in das Schriftfeld automatisch übertragen. Die Spalten/Reihe Identifikation wird anhand der vorgegebenen Zeichnungsnummer gesteuert. Z.B. „Zeichnungsnummer 0815“ = suche/gehe in Reihe/Spalte 0815 und fülle Feld „B01_Designed“ mit „SR“ Dabei ist … • der Inhalt der Excel-Datei von Projekt zu Projekt verschieden und wird vom Kunden vorgegeben. • Total ca. 25 Felder die gefüllt werden müssen • die Excel-Datei enthält nicht die Namen der Felder die im Zeichnungsrahmen (Titel-Block) beschrieben sind, zB. „B01_Designed“ im Titelblock ist in Excel die Zelle „L13“ Danke im Vorraus!
------------------ S.R. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tacker Mitglied TZ, Tech. MB, Softwareentwickler
Beiträge: 175 Registriert: 23.09.2010 IV 2017 Pro i7-7700K 4x4.2GHz 32GB DDR4-2400 GTX 1060 6GB DDR5
|
erstellt am: 05. Feb. 2018 16:59 <-- editieren / zitieren --> Unities abgeben: Nur für Sikis
|
Sikis Mitglied
Beiträge: 8 Registriert: 05.02.2018 Inventor 2018
|
erstellt am: 06. Feb. 2018 07:28 <-- editieren / zitieren --> Unities abgeben:
|
Fischkopp Mitglied
Beiträge: 375 Registriert: 23.02.2004 Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.<P>Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw)
|
erstellt am: 06. Feb. 2018 23:16 <-- editieren / zitieren --> Unities abgeben: Nur für Sikis
Zitat: Original erstellt von Sikis: Guten Morgen, danke ein guter Anfang. Habe heut Nacht mich mit VB schon etwas beschäftigt.i = GoExcel.FindRow () etc. SR
Viel Spass.... Ich würde mir erst einmal einenSchriftkopf basteln, der die Daten aus (benutzerdefinierten) iProperties bezieht. DIe Properties kannst Du nämlich recht einfach mit den XLS-Daten füllen, ohne in der DAtenstruktur des Schriftfeldes suchen zu müssen, z.B. nach dem Feldnamen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tacker Mitglied TZ, Tech. MB, Softwareentwickler
Beiträge: 175 Registriert: 23.09.2010 IV 2017 Pro i7-7700K 4x4.2GHz 32GB DDR4-2400 GTX 1060 6GB DDR5
|
erstellt am: 07. Feb. 2018 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für Sikis
Moin , Also soll es iLogic sein. Fischkopps Empfehlung kann ich nur unterstützen, das macht das deutlich einfacher. Hier noch ein Artikel dazu: https://www.cadlinecommunity.co.uk/hc/en-us/articles/201789402-Inventor-Automatically-Add-iProperties-for-BIM-with-iLogic Hinweis: Wenn du die Properties mit deiner iLogic-Regel gefüllt hast, wird es höchstwahrscheinlich sein, dass dir das Ergebnis nicht sofort angezeigt wird. Also dein Text nicht sofort im Schriftfeld erscheint. Das könnte mit diesen beiden Zeilen kein Problem mehr sein: RuleParametersOutput() InventorVb.DocumentUpdate() Sollte es der Fall sein, dass du sowieso nicht sofort das Ergebnis angezeigt brauchst (weil du noch weiter arbeitest und auf ein automatisches Update von Inventor warten kannst), dann kannst den gesamten Hinweis ignorieren. Solltest du allerdings die Zeichnung direkt weiter bearbeiten wollen, beispielsweise: iLogic-Regel immer beim Schließen einer Zeichnung ausführen und mit der Regel zusätzlich automatisch ein PDF erstellen, dann wirst Inventor zu einem Update zwingen müssen. Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sikis Mitglied
Beiträge: 8 Registriert: 05.02.2018 Inventor 2018
|
erstellt am: 09. Feb. 2018 08:41 <-- editieren / zitieren --> Unities abgeben:
So, hab's fast geschafft! nur noch ein Problem. Die Excel Datei vom Kunden enthält Eine Spalet mit Datum, das so aussieht 2018-01-01. Wenn ich darauf zugreife/auslese bekomme ich das zurück: als string bekomme ich 43101 als Date bekomme ich 00:00:00 als Decimal bekomme ich 43101 Ich schaffe es einfach nicht das Datum in Form von 2018-01-01 in mein ipropertie zu übertragen der code sieht so aus: 'die Excel Datei auswählen Dim oFileDlg As Inventor.FileDialog = Nothing InventorVb.Application.CreateFileDialog(oFileDlg) 'oFileDlg.Filter = "Inventor Files (*.iam;*.ipt)|*.iam;*.ipt|All Files (*.*)|*.*" 'oFileDlg.Filter = "XML Files (*.xml)|*.xml" 'oFileDlg.Filter = "Text Files (*.txt;*.csv)|*.txt;*.csv" 'oFileDlg.Filter = "SAT Files (*.sat)|*.sat" 'oFileDlg.Filter = "IGES Files (*.igs)|*.igs" 'oFileDlg.Filter = "Step Files (*.stp)|*.stp" oFileDlg.Filter = "Excel Files (*.xls;*.xlsx)|*.xls;*.xlsx" oFileDlg.DialogTitle ="Välj den Excel file du ska jobba med" oFileDlg.InitialDirectory = ThisDoc.Path oFileDlg.CancelError = True On Error Resume Next oFileDlg.ShowOpen() If Err.Number <> 0 Then MessageBox.Show("File not chosen.", "Dialog Cancellation") ElseIf oFileDlg.FileName <> "" Then selectedfile = oFileDlg.FileName MessageBox.Show("File " & selectedfile & " was selected.", "Dialog Selection Made") End If GoExcel.Open(selectedfile, "DrwDoc list") GoExcel.TitleRow = 7 MatchRow = GoExcel.FindRow(selectedfile, "DrwDoc list", "B16", "=", InputBox("Skriv in ritnings nummer enligt Kundens önskemål", "Feld 'B16' = Rit-Nr.", "Hur ska ritning döpas")) iProperties.Value("Custom", "B16_DRAWING_NO")= GoExcel.CurrentRowValue("B16") 'wenn nicht gefunden msgBox und beep If MatchRow = - 1 Then Beep MessageBox.Show("...ritnings nummern som du har angivit!", "Hittar inte den... ") Else MessageBox.Show("...som du har skrivit in.BRA!", "Jag har hittad den ritnings nummer... ") End If ' hier beginnt mein problem!!! Dim Zelle7 As Date Zelle7 = GoExcel.CurrentRowValue("B07") MessageBox.Show(Zelle7,"Title") iProperties.Value("Custom", "B07_DATE" ) = Zelle7 Zelle16 = GoExcel.CurrentRowValue("B16") MessageBox.Show(Zelle16, "Title") iProperties.Value("Custom", "B16_DRAWING_NO") = Zelle16 GoExcel.Save GoExcel.Close iLogicForm.Show("Title Block") ThisDoc.Save Dim objSPVoice, colVoices objSPVoice = CreateObject("SAPI.SpVoice") objSPVoice.Speak ("Bra yobad, doookdig") ------------------ S.R. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sikis Mitglied
Beiträge: 8 Registriert: 05.02.2018 Inventor 2018
|
erstellt am: 09. Feb. 2018 08:48 <-- editieren / zitieren --> Unities abgeben:
Nachtrag: ... die MsgBoxen habe ich zur Kontrolle eingefügt, nicht zwingend notwendig. ... auch die Sprachausgabe ist nur ein gimmick. Und natürlich lese ich noch mehr Zellen aus aus meiner Excel Datei. Nur hier im Beispiel die zwei mit Zeichnungsnummer und das Datum. ------------------ S.R. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lothar Boekels Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau und CAD-Trainer
Beiträge: 3823 Registriert: 15.02.2001 DELL Precision 7520 Win10Pro-64 Inventor mit Vault Professional 2024 --------------------- Während man es aufschiebt, verrinnt das Leben. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.)
|
erstellt am: 09. Feb. 2018 09:43 <-- editieren / zitieren --> Unities abgeben: Nur für Sikis
Hallo Sikis, die Datumsgeschichte ist eigentlich ganz einfach: wenn Du den Text '2018-01-01 einliest, dann kann Excel mit der Funktion Datwert(Text) das in das Datumsformat konvertieren. Das wird Excel-intern als serielle Zahl dargestellt hier '43101. Diese Zelle mit dem gewünschten Datumsformat versehen und gut is. HTH
------------------ mit freundlichem Gruß aus der Burggemeinde Brüggen Lothar Boekels Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lothar Boekels Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau und CAD-Trainer
Beiträge: 3823 Registriert: 15.02.2001 DELL Precision 7520 Win10Pro-64 Inventor mit Vault Professional 2024 --------------------- Während man es aufschiebt, verrinnt das Leben. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.)
|
erstellt am: 09. Feb. 2018 09:50 <-- editieren / zitieren --> Unities abgeben: Nur für Sikis
|
Sikis Mitglied
Beiträge: 8 Registriert: 05.02.2018 Inventor 2018
|
erstellt am: 09. Feb. 2018 09:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Lothar das ist mir schon klar. Aber, ich will nicht am Excel-Formular rumfummeln sonder nur die Daten auslesen. Das Excel-Scheet ist von meinem Kunden und da hab ich nichts dran zu "rühren". Gruss SR ------------------ S.R. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lothar Boekels Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau und CAD-Trainer
Beiträge: 3823 Registriert: 15.02.2001 DELL Precision 7520 Win10Pro-64 Inventor mit Vault Professional 2024 --------------------- Während man es aufschiebt, verrinnt das Leben. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.)
|
erstellt am: 09. Feb. 2018 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für Sikis
|
Lothar Boekels Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau und CAD-Trainer
Beiträge: 3823 Registriert: 15.02.2001 DELL Precision 7520 Win10Pro-64 Inventor mit Vault Professional 2024 --------------------- Während man es aufschiebt, verrinnt das Leben. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.)
|
erstellt am: 09. Feb. 2018 11:19 <-- editieren / zitieren --> Unities abgeben: Nur für Sikis
|
Sikis Mitglied
Beiträge: 8 Registriert: 05.02.2018 Inventor 2018
|
erstellt am: 09. Feb. 2018 14:49 <-- editieren / zitieren --> Unities abgeben:
Das war die Lösung! Super, Danke!! Dim iDatum As Integer iDatum = GoExcel.CurrentRowValue("B07") Dim dDatum As Date dDatum = Date.FromOADate(iDatum) 'MessageBox.Show(dDatum, "Title") iProperties.Value("Custom", "B07_DATE") = dDatum ------------------ S.R. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |