| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: Events abfangen (1191 mal gelesen)
|
freak-tom Mitglied PDM-/CAD-Admin
 
 Beiträge: 347 Registriert: 07.03.2006
|
erstellt am: 12. Mrz. 2007 10:53 <-- editieren / zitieren --> Unities abgeben:         
Hallo Forumuser, kann man irgendwie Events abfangen also z.b. den Speichern Event, ohne in jede einzelne Datei ein Macro schreiben zu müssen? Also im Anwendungsprojekt nicht im Dokumentprojekt? MfG Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
 
 Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 12. Mrz. 2007 13:43 <-- editieren / zitieren --> Unities abgeben:          Nur für freak-tom
Hallo Tom, das geht mit einem Klassenmodul. Public WithEvents oAE As ApplicationEvents Public oapp As Application Public Sub Class_Initialize() Set oapp = ThisApplication Set oAE = oapp.ApplicationEvents End Sub Public Sub oAE_OnSaveDocument(ByVal odoc As Document, ByVal BeforeOrAfter As EventTimingEnum, ByVal Context As NameValueMap, HandlingCode As HandlingCodeEnum) xxxxxxxxxx end sub Einziges Problem dabei ist das Initialisieren, das muß angestoßen werden, z.B. per Button. Nach Fehlern muß das Initialisieren evtl nochmal gemacht werden. Ein Add-In, das beim Speichern eine bestimmtes Modul im Anwendugnsprojekt aufruft wäre da eine gute Lösung. Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ccKeyLargo Mitglied Verfahrensentwickler

 Beiträge: 32 Registriert: 15.01.2007
|
erstellt am: 13. Mrz. 2007 15:39 <-- editieren / zitieren --> Unities abgeben:          Nur für freak-tom
Hallo Reinhard, ich würde das was Tom frägt auch gerne realisiren, aber ich verstehe Deine Erklärung nicht ganz. Ich habe eine Subroutine, die ich ausführen möchte, sobald ein neues Dokument erstellt wird. Dies soll unabhänglg vom Dokument sein - muss also ins Anwendungsprojekt. Ich habe mir ein neues Klassenmodul erstellt mit folgendem Inhalt: Public WithEvents oAE As ApplicationEvents Public oapp As Application Public Sub Class_Initialize() Set oapp = ThisApplication Set oAE = oapp.ApplicationEvents End Sub Public Sub oAE_OnNewDocument(ByVal DocumentObject As Document, ByVal BeforeOrAfter As EventTimingEnum, ByVal Context As NameValueMap, ByRef HandlingCode As HandlingCodeEnum) MsgBox ("Hello") End Sub ______________________________________
Nur frage ich mich, wie nun die Methode "OnNewDocument" mit Applikation "Inventor" kommuniziert? Ich habe mir eine kleine Sub geschrieben, die die Methode "Class_Initialize()" aufruft, um zu testen ob hier der Zusammenhang ist. => Hat aber nicht funktioniert. Wie schreibe ich also meine Funktion, sodass diese beim erstellen eines neuen Dokumentes abgearbeitet wird? Oder geht das wirklich nur mit einem AddIn? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
 
 Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 14. Mrz. 2007 07:46 <-- editieren / zitieren --> Unities abgeben:          Nur für freak-tom
Also bei mir gehts. Code:
Private myClass As EventClassPublic Sub EventStart() Set myClass = New EventClass End Sub
in ein normales Modul und mit einem Button auf die Oberfläche ziehen. Wenn du das Modul aufrufst und danach ein neus Dokument ertellst, sollte dein "Hellol World" erscheinen.Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
freak-tom Mitglied PDM-/CAD-Admin
 
 Beiträge: 347 Registriert: 07.03.2006
|
erstellt am: 14. Mrz. 2007 07:53 <-- editieren / zitieren --> Unities abgeben:         
|
ccKeyLargo Mitglied Verfahrensentwickler

 Beiträge: 32 Registriert: 15.01.2007 Pentium 4 3,4 GHz 2.00 GB RAM Graphik: NVIDIA Quadro FX 1400 Software: AutoCAD 2007, ADT 2007, Mechanical 2007, Inventor 10 - 2008
|
erstellt am: 14. Mrz. 2007 08:33 <-- editieren / zitieren --> Unities abgeben:          Nur für freak-tom
Hallo Reinhard, mein Code sieht nun so aus: Modul1: Private myClass As EventClass Public Sub EventStart() Set myClass = New EventClass End Sub ______________________ Klassenmodul EventClass: Public WithEvents oAE As ApplicationEvents Public oapp As Application Public Sub Class_Initialize() Set oapp = ThisApplication Set oAE = oapp.ApplicationEvents End Sub Public Sub oAE_OnNewDocument(ByVal DocumentObject As Document, ByVal BeforeOrAfter As EventTimingEnum, ByVal Context As NameValueMap, ByRef HandlingCode As HandlingCodeEnum) MsgBox ("Hello") End Sub _______________________ Das Makro "EventStart" habe ich mir als Button in die Toolbar gezogen. Beim drücken wird auch die Klasse initialisiert. Wenn ich direkt im Code bin, werden beim Debuggen auch die Instanzen lokal angezeigt. Der Überwachungsbereich jedoch sagt zu jeder Zeit, er würde "myClass" nicht kennen. (auch wenn ich myClass als public deklariere nicht) Funktioniert also leider noch nicht. Fehlt mir noch was? Ich schätze, ich muss den Code wohl doch in ein Dokumentprojekt und dort in jedes Template schreiben... Danke für Deine Antworten! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler

 Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 14. Mrz. 2007 08:49 <-- editieren / zitieren --> Unities abgeben:          Nur für freak-tom
Zitat: Original erstellt von ccKeyLargo: Ich schätze, ich muss den Code wohl doch in ein Dokumentprojekt und dort in jedes Template schreiben...
Das würde ich nicht tun. Es kann leicht Ärger bei der Migration von Daten geben. ------------------ Grüße Igor FX64 Software Solutions HMI ~ 16.-20. April 2007 ~ CAD.de Halle 17, Stand F60 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
freak-tom Mitglied PDM-/CAD-Admin
 
 Beiträge: 347 Registriert: 07.03.2006
|
erstellt am: 14. Mrz. 2007 08:50 <-- editieren / zitieren --> Unities abgeben:         
|
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler

 Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 14. Mrz. 2007 08:58 <-- editieren / zitieren --> Unities abgeben:          Nur für freak-tom
|
ccKeyLargo Mitglied Verfahrensentwickler

 Beiträge: 32 Registriert: 15.01.2007
|
erstellt am: 14. Mrz. 2007 09:51 <-- editieren / zitieren --> Unities abgeben:          Nur für freak-tom
Hallo, ich muss meine Aussage von vorhin korrigieren. Der Event wird ausgelöst. Mein Fehler war, dass ich vor der Deklaration von "myClass" noch eine andere Sub stehen hatte. Der Compiler hat mich nicht gewarnt, also dachte ich, es sei egal. Beispiel von oben funktioniert also!!! =>Zu dem eigentlichen Problem: Ja, dann wird wohl wiedermal ein AddIn das cleverste sein... Danke für die Antworten!
Eigentlich bin ich mit meinem eigentlichen Problem nun ganz schön weit abgedrifftet. Ich möchte eigentlich nur, dass automatisch beim erstellen eines neuen Projektes die Inhaltscenter Dateien im Projektpfad abgelegt werden. Es würde mir auch genügen, einen Eintrag bei den "Standard Inhaltscenter Dateien" zu machen, aber das klappt nicht wenn dort nur als Pfad steht: ".\ContentCenterFiles". Inventor ändert es dann in "\.\ContentCenterFiles" und speichert die Inhaltscenterdateien unter "Eigene Dateien" und nicht im Projektlaufwerk. Also muss ich das wohl mit meinem Code ändern und dafür ein AddIn erstellen.... Oder hat jemand eine andere Idee? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |