Autor
|
Thema: Ansicht in 2D sperren (3474 mal gelesen)
|
ACC_kw Mitglied
Beiträge: 67 Registriert: 16.03.2006
|
erstellt am: 27. Mai. 2008 19:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! Ich weiß, daß ich vor kurzer Zeit eine ähnliche Frage gestellt habe. Ich habe aber nicht die Antwort erhalten die ich benötigt hätte. Daher habe ich meine Ansprüche gesenkt und möchte meine Frage neu formulieren. Ich habe bei einem Bauteil 2 Bearbeitungszustände: 1. Unbearbeitet 2. Gebohrt Diese Parameter lassen sich im 2D leicht einfügen. (siehe Bild) Wenn die Zeichenfolge.1=Unbearbeitet eingestellt ist springt die Bearbeitung auf "Unwahr". Wenn die Zeichenfolge.1=Gebohrt eingestellt ist springt die Bearbeitung auf "Wahr". Ich möchte eine Ansicht automatisch sperren wenn die Bearbeitung "Wahr" ist. Wie ist das am einfachsten möglich? Ich verwende die R17 service pack 3 Deutsch KWA - Lizenz (Knowledge Advisor 2 Product) wenn nötig vorhanden, weiß aber nicht wie man damit umgeht. Bitte um Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 27. Mai. 2008 20:58 <-- editieren / zitieren --> Unities abgeben: Nur für ACC_kw
Hallo ACC_kw, also zuerst einmal musst du dir zwei Parameter erstellen (das hast du ja schon gemacht). Der erste Parameter ist ein Parameter des Typs String und hat einen MultiValue (1. Gebohrt, 2. Ungebohrt). Der zweite ist ein Parameter des Typs Boolean (Wahr, Falsch). Jetzt musst du in den Knowledge Advisor wechseln und dir dort eine Rule erstellen (das verknüpft die beiden Parameter miteinander.) CODE KNOWLEDGE ADVISOR Code:
If Zeichenfolge.1 == "Gebohrt" { Bearbeitung = true '(bzw. Wahr) }If Zeichenfolge.1 == "Ungebohrt" { Bearbeitung = false ' (bzw. Falsch) }
Jetzt musst du im Knowledge Advisor eine Reaktion definieren. Und zwar wenn sich der Wert des Parameters Bearbeitung ändert, soll er folgende VB Code ausführen CODE Makro
Code:
Sub MainSet oDraw = CATIA.ActiveDocument Set oPara = oDraw.Parameters Set activePara = oPara.Item("TEST") Set oSheets = oDraw.Sheets Set oSheet = oSheets.Item("BLATT001") Set oViews = oSheet.Views Set oView = oViews.Item("Front view") If activePara.Value = "Wahr" Then oView.LockStatus = True ElseIf activePara.Value = "Falsch" Then oView.LockStatus = False End If End Sub
So funktioniert es einwandfrei und sehr sauber und stabil. Du kannst auch zusätzlich noch einen Check definieren der dem USER mitteilt, das der Lock.Status der View geändert wurde. PS: Den VB Qeulltext musst du noch auf deine Drawinbg anpassen. Die Zeile Set oSheet = oSheets.Item("BLATT001") kann man auch durch ...Item(1) ersetzen dadurch ist es egal welchen Namen das Blatt hat. Zusätzlich könnte man anstatt den View Name explizit anzugeben den USER die View selektieren lassen die CATIA locken soll....ABER dazu ist es schon zu spät und nach 12 Stunden arbeit und min. 10 CLICK OK TO TERMINATE heute ist bei mir der Akku leer EDIT: Nach einem weitern Versuch heute früh ist mir aufgefallen, das man die Sache mit der Selektion der View durch den User nicht durchführen kann. Das Problem an der Sache ist, das CATIA den Status = mySel.SelectElement2.... Befehl innerhalb einer Reaction nicht akzeptiert Ich hab dir auch mal ein kleines Beispiel zur Verdeutlichung angehängt DATEN SIND MIR R18 ERSTELLT WORDEN!!! ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin [Diese Nachricht wurde von denyo_1 am 28. Mai. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ACC_kw Mitglied
Beiträge: 67 Registriert: 16.03.2006
|
erstellt am: 28. Mai. 2008 14:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel! Vielen Dank für deine Mühe! Leider funktioniert es noch nicht. Ich habe wie du beschrieben hast den Quelltext auf meine Zeichnung geändert. Sub main
Set Drawing2 = CATIA.ActiveDocument Set Bearbeitung = Drawing2.Parameters Set activePara = Bearbeitung.Item("Bearbeitung") Set oSheets = Drawing2.Sheets Set Blatt = oSheets.Item("Blatt") Set oViews = Blatt.Views Set Vorderansicht = oViews.Item("Vorderansicht") If activePara.Value = "Wahr" Then Vorderansicht.LockStatus = true ElseIf activePara.Value = "Unwahr" Then Vorderansicht.LockStatus = false End If End sub Habe ich etwas falsch verstanden, oder habe ich ein Sprachenproblem. z.B.: Heißt Vorderansicht.LockStatus in der deutschen CATIA- Version anders? Der Haken von Hand ist, wie im Anhang ersichtlich, bei Ansicht sperren zu setzen. Die angehängte Zeichnung wäre sicher hilfreich gewesen, kann ich aber in der R17 nicht öffnen. Bitte um erneute Hilfe! mfg Willi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 28. Mai. 2008 15:50 <-- editieren / zitieren --> Unities abgeben: Nur für ACC_kw
Hallo, kannst du mir die Zeichnung mal zur verfügung stellen? Ev. liegt das Probelm in dieser Zeile Code:
If activePara.Value = "Wahr" Then Vorderansicht.LockStatus = true ElseIf activePara.Value = "Unwahr" Then Vorderansicht.LockStatus = false End If
Ich habe nur die englische Umgebung da, und deswegen programmier ich eigentlich nur mit true und false und nicht mit wahr und falsch. Stell mal das true auf wahr und das false auf falsch um und versuchs dann mal. Eine weitere Lösung bietet der Microsoft Visual Editor. Hier kannst du das Makro Schritt für Schritt ablaufen lassen. Hierbei kannst du schaun warum er dir die View nicht sperrt. Ich habs bei mir versucht und es läuft einwandfrei. Hab sagor noch das mit den zwei Checks versucht das den USER über den Lockstatus der View informiert und das geht auch. Also am besten einfach mal die aktuelle Zeichnung (von der du den Screenshot gemacht hast) reinstellen dann guck ich mal drüber und sagt dir bescheid. Sorry wegen der R18 aber hab keine andere Version installiert ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ACC_kw Mitglied
Beiträge: 67 Registriert: 16.03.2006
|
erstellt am: 28. Mai. 2008 16:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel! Die Regel mit der ich die Bearbeitung auf wahr und unwahr setze funktioniert mit true and false. Die Zeichnung im Anhang: Der Inhalt des Parts ist nur ein Würfel mit einer Ansicht im 2D um die Reaktion zu testen. Die Screenshots wurden von dieser Zeichnung gemacht. P.S. Gibt es eine Art Wörterbuch in dem erklärt ist wie ich zu den Begriffen wie z.B. *.LockStatus oder ähnliches komme? Wie kann ich mit dem Microsoft Visual Editor das Makro Schritt für Schritt ablaufen lassen? mfg Willi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 28. Mai. 2008 19:38 <-- editieren / zitieren --> Unities abgeben: Nur für ACC_kw
Zum Wörterbuch: Ein Wörterbuch gibt es dazu nicht. Aber die Automation.chm Datei in deinem Installationverzeichniss (dort wo auch die CNEXT.exe liegt). Dort sind alle Refernzen von CATIA V5 Objekten angegeben (Hilfedatei für Programmierer). Zum Microsoft Visual Basic Editor: Den Editor starten über Tools -> Macros -> Microsft Visual Editor. Anschließend das Script in ein leeres Modul kopieren (ev. ein neues über Einfügen -> Modul einfügen). ACHTUNG, das Script in VBE muss mit Sub CATMain() anfangen und nicht mit Sub main. Jetzt brauchst du die Symbolleiste Debuggen. (Microsoft_Visual_Editor). Dort kann man dann mit dem 6ten Button das Makro Schritt für Schritt ablaufen lassen. Wenn du einen Rechtsklick auf eine Variable zB auf oView (etc.) machst und dort eine Überwachung einstellst, siehst du die Eigenschaften die für das entsprechende Objekt verfügbar sind (unter anderem auch den .LockStatus) Zum Problem mit der Drawing: Du hast quasi alles richtig gamcht bis auf eins. Ein deiner Reaction hast du keine Quelle angegeben sondern nur das VB Macro. CATIA weiß jetzt nicht wann er die Action (VB Macrp) ausführen muss. Schau dir mal mein Bild (Reaktion_1) an. Im oberen Teil (Sources) steht bei dir nichts... Lösung: Einfach einen Doppelklick auf die Reaktion. Anschließend im Strukturbaum den Parameter Bearbeitung auswählen. Dieser wird nun unter Sources aufgeführt. Wenn sich nun der Wert des Paramters von True auf False bzw. von False auf True ändert wird das Makro ausgeführt. WICHTIG: Du darfst das Makro nicht umschreiben (habe gesehen das du überall die oView, oDraw, oSheets, etc. geändert hast). Das darfst du nicht. Das funktioniert egal welchen Namen deinen Zeichnung bzw. die View hat. Ein ganz kurze Erklärung wie das funktioniert. Zuerst wird dem Objekt oDraw das aktive Dokument zugewiesen. Anschließend wie die Kollektion alles Blätter zugänglich gemacht. Dann wird das dem Object Sheet das Drawing Sheet mit dem Namen Blatt zugewiesen. Das wiederrrum enthält eine Kollektion Views. Diese wiederrum enthält die Vorderansicht. ALSO: Kopiere dieses Makro und ändere nur den fett makrierten Text von Front view in Vorderansicht und dann funst alles ;-) Code:
Sub mainSet oDraw = CATIA.ActiveDocument Set Parameters = oDraw.Parameters Set activePara = Parameters.Item("Bearbeitung") Set oSheets = oDraw.Sheets Set oSheet = oSheets.Item("Blatt") Set oViews = oSheet.Views Set oView = oViews.Item("Front view") If activePara.Value = "Wahr" Then oView.LockStatus = true ElseIf activePara.Value = "Falsch" Then oView.LockStatus = false End If End sub
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ACC_kw Mitglied
Beiträge: 67 Registriert: 16.03.2006
|
erstellt am: 28. Mai. 2008 20:54 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel! Hat super funktioniert!!! Die Ansicht hat sich am Anfang nur gesperrt und nicht wieder entsperrt. Ich habe die Wörter "Wahr" und "Unwahr" verwendet, statt "Wahr" und "Falsch" Toller Hinweis, daß ein Makro mit einem Befehl erst gestartet werden muß. Ich bin mit dieser Lösung und Wissenszuwachs sehr glücklich! DANKE für die Geduld und der genauen Beschreibung! mfg Willi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 29. Mai. 2008 07:07 <-- editieren / zitieren --> Unities abgeben: Nur für ACC_kw
Hallo Willi, kein Problem, dafür ist ja dieser Forum da ("Hier werden sie geholfen!") Das mit dem Unfahr und Falsch ist mir gestern auch noch aufgefallen, habs aber dann wieder vergessen. ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|