Autor
|
Thema: Position auswählen (1754 mal gelesen)
|
spikey jr. Mitglied Konstrukteur
Beiträge: 20 Registriert: 15.03.2007
|
erstellt am: 05. Aug. 2009 16:20 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Vielleicht könnt ihr mir weiterhelfen. Ich füge über ein Makro eine Komponente in eine Zeichnung ein. Es handelt sich dabei um einen virtuellen Fremdsachnummern-Aufkleber. Im Hintergrund befindet sich eine Tiff-Datei(Fremdzeichnung). Und da es sich um sehr viele Fremdzeichnungen handelt, die wir ins System überführen möchten, würde ich das ganze gerne automatiseren. Natürlich sollte dieser "Aufkleber" an eine leere Stelle gesetzt werden. Am Besten ginge das, wenn das Makro unterbrochen wird und der User auf eine geeignete Stelle auf der Zeichnung klickt, an der dann der Aufkleber eingefügt wird. Hier der Code, wie ich den Aufkleber einfüge (Position X,Y)
Code:
Set drwDocument = CATIA.ActiveDocument Set DrwSheets = drwDocument.Sheets Set DrwSheet = DrwSheets.ActiveSheet Set DrwViews = DrwSheet.Views Set DrwView = DrwViews.Add("Test") Set KatalogDocument = CATIA.Documents.Read("C:\2D_Aufkleber\2D-Aufkelber.CATDrawing") Set KatalogSheets = KatalogDocument.Sheets Set KatalogSheet = KatalogSheets.Item("Schriftfeld") Set KatalogViews = KatalogSheet.Views Set KatalogView = KatalogViews.Item("Schriftfeld fuer Fremdzeichnungen") Set KatalogComponents = DrwView.Components Set KatalogComponent = KatalogComponents.Add(KatalogView, X, Y)
KatalogComponent.Explode KatalogComponents.Remove("Schriftfeld fuer Fremdzeichnungen.1")
Hoffentlich fällt Euch dazu was ein. Ein herzliches Dankeschön im vorraus! Spikey
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 06. Aug. 2009 08:13 <-- editieren / zitieren --> Unities abgeben: Nur für spikey jr.
Hallo Spikey, versuche mal mit folgender Funktion einen beliebigen Punkt auszuwählen: Function Indicate2D ( iMessage As String, ioDocumentWindowLocation As SAFEARRAY(VARIANT)) As String grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 06. Aug. 2009 08:15 <-- editieren / zitieren --> Unities abgeben: Nur für spikey jr.
Hallo Spikey, also mit CATIA Boradmitteln geht sowas nicht. Du musst dann wohl oder übel auf CATvba umsteigen. Hier könntest du es mir einer API (GetCursorPos aus der "user32" Library) machen. Das Poblem wir aber bei dir sein wie genau du dein Script stoppen willst um die interaktion des Anwender abzuwarten. Eine Idee ist eine UserForm zu erstellen (diese wird mit dem Script geladen ABER nicht angezeigt). Auf der Userform fügst du einen Timer hinzu. Der Timer sollte ein Interval von 10ms haben und natürlich ticken. D.h. bei jedem Tick (also alle 10ms) kannst du die Position des Mauszeigers global (also auf dem Desktop auslesen). Jetzt musst du nur noch auf das Klick-Ereigniss der Maus reagieren können. Das geht wiederrum mit einer API (GetAsyncKeyState as der "user32" Library). Mit dieser API kannst du die Maus "überwachen" und bei einem Mausklick reagieren. Zum Ablauf: 1. Du lädst dein Script und die UserForm (im Load-Ereignis blendest du die Form aus (wenn du das im Load machst wird sie gar nicht eingeblendet) 2. An der Stelle deines Scriptes an dem der User interagieren soll, lässt du den Timer anfangen zu laufen. 3. Jetzt brauchst du eine Abfrage ob CATIA gerade die aktive Application ist (das könntest du über die PocessID herausfinden). 4. Wenn ja zeigst du noch eine MsgBox an das der User klicken soll. 5. Jetzt sollte dein Script stehen (du bist ja zum starten des Timers in die aus deiner CATMain in die UserForm Class gesprungen), er wartet ja auf den Mausklick im CATIA Fenster (ACHTUNG hier ist eine Schwierigkeit den Bereich des Klick-Ereignisses festzulegen (nur innerhalb einer Zeichnung!) 6. Klickt der Anwender nun innerhalb einer Zeichnung mit der Maus, kannst du über die GetCursorPos die Position abfragen und als Long an die Funktion zum Einfügen der Komponente weitergeben Du siehst so einfach ist es nicht. Es sollte aber alles möglich sein. Ich hab hier mal auf die schnelle ein kleines Beispielprogramm (in VB.NET) gemacht. Hier ist jedoch das Auslesen der Cosurposition und das Starten des Timers wesentlich einfacher ;-) Das Programm erfasst IMMER die aktuelle Mausposition. bei einem Klick mit der linken Maustaste wird diese Position erfasst und bis zum nächsten Klick angezeigt. Projektdaten (für Vb.NET) könnte ich auf wunsch hier reinstellen aber es soll ja wie gesegt nur ein kleines Beispiel sein und in CATVba geht es so und so anders (siehe oben mit der "GetCursorPos"-API) ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 06. Aug. 2009 08:16 <-- editieren / zitieren --> Unities abgeben: Nur für spikey jr.
|
spikey jr. Mitglied Konstrukteur
Beiträge: 20 Registriert: 15.03.2007
|
erstellt am: 06. Aug. 2009 10:19 <-- editieren / zitieren --> Unities abgeben:
Das ist genial-Danke! Hier mein Code: Code:
Dim Status Dim Position(1) CATIA.ActiveWindow.ActiveViewer.Reframe 'Fit in Page Status = drawingDocument1.Indicate2D ("Punkt wählen",Position) if (Status = "Cancel") then MsgBox "Aufkleber kann nicht eingefügt werden" Exit Sub End if PositionAufkleber(0) = Position(0) PositionAufkleber(1) = Position(1)
[Diese Nachricht wurde von spikey jr. am 06. Aug. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 06. Aug. 2009 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für spikey jr.
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|