Autor
|
Thema: Linie einfärben (890 mal gelesen)
|
PeterSilie84 Mitglied
Beiträge: 9 Registriert: 14.07.2008
|
erstellt am: 23. Jul. 2008 11:01 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte gerne eine Linie die eine bestimmte Länge hat z.B. über einen Check oder einer Rule einfärben. Sobald die Linie ein bestimmtes Maß überschreitet, wird sie z.B. rot dargestellt. Ich besitze zwar das Buch "Makroprogrammierung mit Visual Basic Skript", allerdings konnte ich bisher keine geeignete Funktion dafür finden. Im Idealfall wäre die Erstellung im Knowledge Advisor und würde ohne Makros auskommen. Das Ganze sollte natürlich parametrisch sein und bei einer Änderung der Linienlänge neu berechnet werden. Ich habe bisher noch wenig Erfahrung mit Programmierung in CATIA V5. Kann jemand helfen? Grüße, Peter. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 23. Jul. 2008 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für PeterSilie84
Hallo Peter, soweit ich weiß, kann man die Farbe eines Elementes nicht über eine Formel oder Check verändern, weil es für die Farbe keinen Parameter gibt. Da muss man ein Macro machen. Vielleicht hilft der Makrorekorder. Mit Makros kenne ich mich zuwenig aus, um weiterzuhelfen. Gruß Mörchen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 23. Jul. 2008 19:21 <-- editieren / zitieren --> Unities abgeben: Nur für PeterSilie84
Hallo Peter, es geht schon auch ohne Makros. Mache z.B. ein Reaction auf Update der Linie und füge da als Kode folgendes ein:
Code: if length(`Geometrical Set.1\Line.1` )>100mm { `Geometrical Set.1\Line.1` ->SetAttributeString("Color","#ff0000") } else { `Geometrical Set.1\Line.1` ->SetAttributeString("Color","#ffffff") }
Habe es auch erst vor kurzem dazugelernt.Gruß, Zoltan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PeterSilie84 Mitglied
Beiträge: 9 Registriert: 14.07.2008
|
erstellt am: 24. Jul. 2008 13:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Zoltan, danke für den Tipp mit der Reaction! Das funktioniert soweit ganz gut. Ich wollte deinen Code noch erweitern und habe folgendes probiert: Die Linie soll zwischen den Längen 50mm und 100mm gelb sein, ist sie länger als 100mm wird sie rot und bei allen anderen Längen, bzw. wenn sie kleiner als 50mm ist, wird sie grün eingefärbt. Leider kenn ich mich zu wenig mit Codes aus, deshalb will das Ganze noch nicht so richtig laufen. Mein Code sieht bisher so aus: Code: ------------------------------------------------------------------------------------------------------------------------------------------ if length(`Geometrical Set.1\Line.1` )>100mm { `Geometrical Set.1\Line.1` ->SetAttributeString("Color","#ff0000") } if length(`Geometrical Set.1\Line.1`)>50mm { `Geometrical Set.1\Line.1` ->SetAttributeString("Color","#ffff00") } if length(`Geometrical Set.1\Line.1`)<50mm { `Geometrical Set.1\Line.1` ->SetAttributeString("Color","#00ff00") } ----------------------------------------------------------------------------------------------------------------------------------------- Das Problem ist dass die Linie nicht rot wird wenn sie über 100mm lang ist, da der Code besagt dass sie schon gelb ist wenn sie über 50mm lang ist! Weißt du vielleicht weiter? Wie funktioniert das mit den Operatoren "<=" "and" "or" ">=" ? Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 24. Jul. 2008 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für PeterSilie84
Hallo Peter, mit and (or) geht das so: if length(`Geometrical Set.1\Line.1` )>=100mm and length(`Geometrical Set.1\Line.1` )<100mm {Anweisung} also den Parameter wiederholen. Ansonsten musst Du mit if, else if und else arbeiten: Das Programm überprüft zunächst, ob die 1. Bedingung erfüllt ist (if...) und führt gegebenenfalls die dazugehörige Anweisung aus und überspringt die anschließenden else if-Klauseln. Trifft die erste Bedingung nicht zu, wird kontrolliert, ob die 2. Bedingung passt (else if...) und dann die 2. Anweisung ausgeführt wird. Falls die 2. Bedingung auch nicht erfüllt wird, geht es weiter zur nächsten Bedingung und so weiter, bis die zutreffende Bedingung gefunden ist. Trifft keine der Bedingungen zu, die hinter den Schlüsselwörtern „if“ und „else if“ aufgeführt sind, wird die letzte Anweisung (nach „else...“ ) abgearbeitet. Gruß Mörchen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PeterSilie84 Mitglied
Beiträge: 9 Registriert: 14.07.2008
|
erstellt am: 24. Jul. 2008 13:48 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank! Das war genau die Information die mir noch fehlte! Für die die es interessiert ist das der Code: ________________________________________________________________________________________________________ if length(`Geometrical Set.1\Line.1` )>=100mm { `Geometrical Set.1\Line.1` ->SetAttributeString("Color","#ff0000") } else if length(`Geometrical Set.1\Line.1` )>=50mm and length(`Geometrical Set.1\Line.1` )<100mm { `Geometrical Set.1\Line.1` ->SetAttributeString("Color","#ffff00") } else { `Geometrical Set.1\Line.1` ->SetAttributeString("Color","#00ff00") } ________________________________________________________________________________________________________ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|