| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PLM und ERP fest zusammengeschweißt - IDEAL-Werk , ein Anwenderbericht
|
Autor
|
Thema: Text von skizzierten Symbolen nachträglich verändern mittels VBA (2599 / mal gelesen)
|
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 15. Mai. 2017 10:34 <-- editieren / zitieren --> Unities abgeben:
Hallo ihr Lieben, ich bin gerade dabei über ein VBA-makro texte in skizzierte Symbole meiner Zeichnungsvorlage zu schreiben. Jetzt stehe ich vor dem Problem, dass ich es nicht hinbekomme, den Text von bereits existieren Textboxes zu verändern. unter der Andresse oSketchedSymbolDef.Sketch.TextBoxes(2).Text findet Inventor zwar den Eintrag und gibt mir den entsprechenden Wert aus, aber wie kann ich diesen verändern Danke für eure Hilfe Christian 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: 15. Mai. 2017 15:09 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Hallo Da musst einen kleinen Umweg gehen. Hab das mal kurz getestet, hat funktioniert. osketchsym ist natürlich dein Symbol und der erste wert des Aufrufs ist deine Textbox, die musst natürlich auch irgendwie anders definieren als .Item(1). Zweiter Wert ist der zu schreibende Text. Call osketchsym.SetPromptResultText(osketchsym.Definition.Sketch.TextBoxes.Item(1), "Hey") Mit freundlichen Grüßen Tacker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 16. Mai. 2017 09:16 <-- editieren / zitieren --> Unities abgeben:
|
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: 16. Mai. 2017 15:41 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Hallo, schau mal ob damit klar kommst Code:
Sub test() Dim oapp As Inventor.Application Dim odrawdoc As Inventor.DrawingDocument Dim oTbox As Object Dim oSketch As Inventor.SketchedSymbol Set oapp = Inventor.ThisApplication If oapp.ActiveDocument.Type = Inventor.kDocumentObject Then Set odrawdoc = oapp.ActiveDocument For Each oSketch In odrawdoc.ActiveSheet.SketchedSymbols If oSketch.Name = "Name des Skizzierten Symbols" Then For Each oTbox In oSketch.Definition.Sketch.TextBoxes If oTbox.Text = "Name der Textbox" Then 'NICHT des skizzierten Symbols!! Call oTitle.SetPromptResultText(oTbox, "Neuer Text") End If Next End If Next End If End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 16. Mai. 2017 16:22 <-- editieren / zitieren --> Unities abgeben:
|
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: 17. Mai. 2017 09:02 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
|
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 17. Mai. 2017 10:23 <-- editieren / zitieren --> Unities abgeben:
|
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: 17. Mai. 2017 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Hm, hab das jetzt getestet und hat funktioniert wie gewünscht. Probier den Code mal und schau dann ob der funktioniert. Code:
Sub test() Dim oapp As Inventor.Application Dim odrawdoc As Inventor.DrawingDocument Dim oTbox As Object Dim oSketch As Inventor.SketchedSymbol Set oapp = Inventor.ThisApplication If oapp.ActiveDocument.Type = Inventor.kDocumentObject Then Set odrawdoc = oapp.ActiveDocument For Each oSketch In odrawdoc.ActiveSheet.SketchedSymbols If oSketch.Name = "Kunde" Then For Each oTbox In oSketch.Definition.Sketch.[_TextBoxes] If oTbox.Text = "Kunden Nr. eingeben" Then Call oSketch.SetPromptResultText(oTbox, "112134") End If Next End If Next End If End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 17. Mai. 2017 10:58 <-- editieren / zitieren --> Unities abgeben:
|
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: 17. Mai. 2017 11:01 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Ja noch Microsoft Form 2.0 Object Library Microsoft Scripting Runtime Microsoft Shell Controls And Automation die dürften aber wenig mit dem Problem zu tun haben. Welche Inventor Version benutzt du denn? Getestet wurde in 2017 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 17. Mai. 2017 11:19 <-- editieren / zitieren --> Unities abgeben:
|
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 18. Mai. 2017 09:41 <-- editieren / zitieren --> Unities abgeben:
|
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: 18. Mai. 2017 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
|
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 18. Mai. 2017 11:01 <-- editieren / zitieren --> Unities abgeben:
|
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: 23. Mai. 2017 08:53 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Servus, hat leider bisschen länger gedauert. Das Problem lag darin dass der Text in der Definition unter Typ (ein Dropdownfeld in dem Feld Text bearbeiten) nicht auf "angeforderte Eingabe" stand. Dafür ist die Funktion SetPromptResultText da. Ist der Textbaustein nicht so definiert, kann Inventor da keinen Wert setzen deswegen der Fehler. Auf Anhieb hab ich nur die Eigenschaft "FormattedText" gefunden anhand derer man erkennen kann ob der Text so definiert wurde oder nicht um einen Fehler zu umgehen (Ist wahrscheinlich auch das einzige). Wenn du allerdings die Definition bearbeiten willst ist das eine andere Geschichte. Hab ich so noch nie gemacht (Symboldefintionen bearbeiten ist normalerweise ja keine repetetive Aufgabe), daher kann ich auf die Schnelle auch keine Hilfestellung geben. Wenn dich da aber eingelesen hast und noch Hilfe brauchst fragst einfach nochmal. Gruß Tacker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Charly Setter Moderator
Beiträge: 11981 Registriert: 28.05.2002 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: 23. Mai. 2017 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Warum greifst Du in deinen Symbolen nicht auf Properties von Modell oder ZEichnung zu, und änderst Diese dann mittels VBA. Ich gehe davon aus, das solche Daten nicht nur für die Zeichnung interessant sind, sondern auch z.B. fürs PPS. ------------------ Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen. Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 23. Mai. 2017 10:58 <-- editieren / zitieren --> Unities abgeben:
@Tacker Ja schade vllt weiß Autodesk selbst wie ich es machen kann - habs mal an den SUpport geleitet. @Charly Das geht leider nicht, da es sich im Summe über 1300 Symbole mit jeweils mindestens 3 Textfeldern handelt 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: 23. Mai. 2017 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
|
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 23. Mai. 2017 11:33 <-- editieren / zitieren --> Unities abgeben:
|
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: 23. Mai. 2017 11:59 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Würde mich interessieren welche Lösung Autodesk vorschlägt. Ich könnte übers Wochenende da zumindest einen Lösungsansatz entwickeln. Dass man keine Freitexte mehr verwenden soll für die Automatisierung ja gut, aber dafür dann fixe Symbole in unüberschaubarer Anzahl einzuführen ist meiner Meinung nach der falsche Weg. Sinnvoller wäre es die Symbole flexibel zu halten und dafür die zugeführten Texte (Per iPropertys, Eingabe (nicht händisch) etc.) automatisch zu generieren. Per Makro, Addin oder iLogic. Frage am Rande, die 1300 Symbole die in der Vorlage sind, sind ja auch in den Zeichnungen, wie aktualisiert ihr die? Oder müssen die nicht angepasst werden? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 23. Mai. 2017 12:56 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Zitat: Original erstellt von Zeichnerschlumpf:
ja stimmt - ist ne Symbolvorlagedatei weil bei uns keine Freitexte mehr verwendet werden sollen
Herzlichen Glühstrumpf.... Eine typische Chef-Idee Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 23. Mai. 2017 13:13 <-- editieren / zitieren --> Unities abgeben:
@Tacker Das funktioniert über eine Verlinkung der Zeichnungsvorlagedatei mit der Symbolvorlage. Zugriff erhälst du dann über den Reiter "Mit Anmerkung versehen" -> "Skizzensymbole einfügen" Dort kannst du dann anhand des Symbolnamens das gesuchte Symbol inkl. Voransicht dir anzeigen lassen. In deine richtige Zeichnung werden dann nur noch die wirklich verwendeten Symbole geladen und nicht alle 1300 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: 23. Mai. 2017 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
@Zeichnerschlumpf: woher die Symbole kommen ist mir schon klar, aber die werden doch nicht automatisch aktualisiert wenn sie in der Vorlage geändert werden, oder? Zumindest bei allem anderem was mir in Inventor bisher über den Weg gelaufen ist war es immer so, dass eine Datei sich nie von selbst aktualisiert hat ausgenommen 3D Daten (und selbst die sind zickig → DIVA) Was ich meinte war, dass da jetzt je nach Firmengröße ganz viele Zeichnungen rumschwirren müssten die veraltete Symbole beinhalten. Nicht zwingend die ganze Bibliothek, aber eben die auf der Zeichnung verwendeten → in der lokalen Datei abgespeichert. Und das zu beheben könnte ziemlich...spaßig werden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 23. Mai. 2017 13:40 <-- editieren / zitieren --> Unities abgeben:
|
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 23. Mai. 2017 14:44 <-- editieren / zitieren --> Unities abgeben:
Hier die Lösung zu meinem Problem, falls sie mal wieder gebraucht wird: Code:
Public Sub SymbolBearbeitung() ' Set a reference to the drawing document. ' This assumes a drawing document is active.Dim ID As String ID = "ADSK_Symbol" Dim odrawdoc As DrawingDocument Set odrawdoc = ThisApplication.ActiveDocument Dim oSketchedSymbolDef As SketchedSymbolDefinition If odrawdoc.SketchedSymbolDefinitions(ID) Is Nothing Then ' Create the new sketched symbol definition. ' Set oSketchedSymbolDef = oDrawDoc.SketchedSymbolDefinitions.Add(ID) Else Set oSketchedSymbolDef = odrawdoc.SketchedSymbolDefinitions(ID) End If Dim oSketch As DrawingSketch Call oSketchedSymbolDef.Edit(oSketch) 'MsgBox (oSketch.TextBoxes(1).Text) oSketch.TextBoxes(1).Text = "Hallo ADSK Welt!!" Call oSketchedSymbolDef.ExitEdit(True) End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |