Autor
|
Thema: Abfrage Linienfarbe mittels Python (1942 mal gelesen)
|
Begocidi Mitglied Maschinenbauer
Beiträge: 12 Registriert: 19.05.2015
|
erstellt am: 19. Mai. 2015 19:49 <-- editieren / zitieren --> Unities abgeben:
Guten Tag , gibt es eine Möglichkeit mittels Python zu prüfen welche Linienfarbe in einer Zeichnung verwendet wurde und gegebenenfalls zu ändern ? Es soll verhindert werden das Linien mit der Farbe Orange (wie selektierte Linien) in einem Modell auftauchen. Besten Dank im voraus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 19. Mai. 2015 21:55 <-- editieren / zitieren --> Unities abgeben: Nur für Begocidi
Hallo Begocidi, Du musst zuerst die Linien auswählen(selektieren), anschliessend die Linienfarbe VisProperties/GetRealColor bzw. GetVisibleColor auslesen und vergleichen. Tschau, Joe PS: Technische Zeichnungen müssen nicht farbig sein; PPS: Gelb ist auch schlecht, sprich nicht lesbar; Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Begocidi Mitglied Maschinenbauer
Beiträge: 12 Registriert: 19.05.2015
|
erstellt am: 20. Mai. 2015 13:55 <-- editieren / zitieren --> Unities abgeben:
|
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 20. Mai. 2015 18:30 <-- editieren / zitieren --> Unities abgeben: Nur für Begocidi
Noch ein paar Fragen vorher: - nur Linien(Lines) oder auch Curves? - 2D oder 3D? Du kannst auch direkt nach den Elementen mit der Farbe suchen, zB (in VB): Code:
Dim oSel ' As Selection Dim n As Integer Set oSel = CATIA.ActiveDocument.Selection oSel.Clear oSel.Add (drVw) 'Ansicht auswählen 'elemente suchen oSel.Search "Drafting.'Generated Item'.Color=Orange;all" 'search within selected view
Ausserdem: Orange als Farbe im 3D zu verwenden ist eigentlich ein NoNo. Den Grund hast Du schon genannt. Tschau, Joe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Begocidi Mitglied Maschinenbauer
Beiträge: 12 Registriert: 19.05.2015
|
erstellt am: 20. Mai. 2015 19:25 <-- editieren / zitieren --> Unities abgeben:
|
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 20. Mai. 2015 22:01 <-- editieren / zitieren --> Unities abgeben: Nur für Begocidi
Das wundert mich nicht. ich hab den Code aus einem bestehenden Makro kopiert und ergänzt. Die Deklaration dazu lautet: Dim drVw ' As DrawingView Nachdem Du aber 3D-Geometrie prüfen willst, müsste der Suchstring in etwa(ungeprüft) so ausschauen: oSel.Search "Color=Orange;all" Die DrawingView hab ich nur als Beispiel zuerst in die selektion genommen. Die Zeile passt aber für 3D nicht und muss entfallen. Aus Deinen bisherigen Fragen schliesse ich, dass Du noch nicht viele Makros geschrieben hast. Stichworte für die Suche im Forum: - Selection, VisProperties, GetRealColor; Um den exakten Suchstring zu finden, zeichnest du am einfachsten eine Suche mit dem Makro-Rekorder auf(Catia/Tools/Makro/Start-Recording..). Der Suchstring steht danach im Skript. Tschau, Joe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Begocidi Mitglied Maschinenbauer
Beiträge: 12 Registriert: 19.05.2015
|
erstellt am: 21. Mai. 2015 16:29 <-- editieren / zitieren --> Unities abgeben:
Vielen dank für die Hilfe . Ich habe in einer Studienarbeit unter anderem die Aufgabe ein Tool mittels Python zu entwickeln das Catia Modelle auf bestimmte "Verstösse" oder Verbesserungen hin untersuchen soll. Die Farbauswahl zu untersuchen war mein erster Gedanke. In Sachen Makro Programmierung bin ich leider noch sehr unwissend. Falls jemand weitere Vorschläge für NoGos in der Konstruktion mit Catia hat auf die hin ich das Python Tool erweitern kann wäre ich sehr Dankbar ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 21. Mai. 2015 17:12 <-- editieren / zitieren --> Unities abgeben: Nur für Begocidi
|
Begocidi Mitglied Maschinenbauer
Beiträge: 12 Registriert: 19.05.2015
|
erstellt am: 30. Mai. 2015 20:01 <-- editieren / zitieren --> Unities abgeben:
Jetzt versuche ich mittels Python abzufragen ob im sketch Verrundungen verwendet wurden da die Verrundungen von Körperkanten am Solid generiert werden sollten und nicht im sketch... Gäbe es die Möglichkeit den gesamten Strukturbaum mit diesem Kriterium zu durchsuchen und eventuelle Funde auszugeben ? Gruss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 30. Mai. 2015 20:21 <-- editieren / zitieren --> Unities abgeben: Nur für Begocidi
Servus Das stelle ich mir schwieg vor. Wie willst du eine Verrundung in der Skizze erkennen? Alle Kreisbögen? Macht IHMO keinen Sinn. Alle Kreisbögen mit zwei Tangentailübergängen zu andern geometrischen Elementen? Ist diese Bedingung hinreichend? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Begocidi Mitglied Maschinenbauer
Beiträge: 12 Registriert: 19.05.2015
|
erstellt am: 30. Mai. 2015 20:23 <-- editieren / zitieren --> Unities abgeben:
Alle Kreisbögen mit zwei Tangentailübergängen zu andern geometrischen Elementen wäre eine gute möglichkeit zur abfrage , damit könnte es klappen Danke ! nur wie setze ich das in Python um ? Gruss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 30. Mai. 2015 20:27 <-- editieren / zitieren --> Unities abgeben: Nur für Begocidi
--Bernd war wieder schneller-- Schwierig. Soweit ich weiss, sind runde Konturen (große Radien) zulässig. ' ~ .Sketch.GeometricElements.Item(n).GeometricType' kennt keinen Typ 'Verrundung' sondern nur 'catGeoTypeCircle2D'. Die einzige Unterscheidungsmöglichkeit ist also der Wert des Radius. Ob es reicht alle Radien <20mm (zB) als Verrundung anzunehmen, kann ich nicht sagen. Ausserdem: Konturradien können auch tangentiale Übergänge haben. Tschau, Joe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Begocidi Mitglied Maschinenbauer
Beiträge: 12 Registriert: 19.05.2015
|
erstellt am: 24. Jun. 2015 17:31 <-- editieren / zitieren --> Unities abgeben:
ich bins nochmal... es ist mir bereits gelungen den strukturbaum in python einzulesen somit können strukturelle untersuchungen des baums vorgenommen werden. was mir jetzt noch immer nicht gelungen ist , ist ein suchlauf der ein modell auf verwendete farben untersucht. z.b. müsste ich alle elemente , linien , parts .. einer bestimmten farbe ausgeben ... die verbindung mit catia über den comport ist kein problem nur die notwendige anweisung des suchlaufs und die ausgabe eines fundes ist mir ein rätsel ... über hilfe wäre ich sehr dankbar !
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Jun. 2015 18:09 <-- editieren / zitieren --> Unities abgeben: Nur für Begocidi
Servus Für sowas bietet sich die Suche an (Bearbeiten -> suchen) zB Code: 'alles mit der Farbe (255,128,0) suchen selection1.Search "Color='(255,128,0)',all" 'alle Drahtgeometrie mit der Farbe (255,128,0) suchen selection1.Search "CATGmoSearch.Wireframe.Color='(255,128,0)',all"
Ich empfehle dir mit der Suche etwas rumspielen. Den fertigen Suchstring kannst du dann per Makroaufzeichung aufnehmen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Begocidi Mitglied Maschinenbauer
Beiträge: 12 Registriert: 19.05.2015
|
erstellt am: 24. Jun. 2015 19:01 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort , das habe ich bereits ausprobiert nur wie ändere ich den code ab das er in python läuft ? über vba läuft alles prächtig, leider ist die vorgabe eine abfrage über python zu erstellen Dim partDocument1 As Document Set partDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = partDocument1.Selection selection1.Search "Color='(255,255,0)',all"
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Begocidi Mitglied Maschinenbauer
Beiträge: 12 Registriert: 19.05.2015
|
erstellt am: 25. Jun. 2015 13:01 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Jun. 2015 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für Begocidi
Servus Du kannst zB mit einer Schleife die Selektion abarbeiten zB (in VBA): Code: for i = 1 to oSelection.Count Set oObject = oSelection.item(i).value 'das eigednlcihe Objekt zb die Linie, diese hat dann weiter Eigenschaften (zB auch Name) StrName = oSelection.value(i).Name next
Näheres dazu: Doku, Fachbuch und Forensuche (ggf erst mal alles in VB(A) ausprobieren und dann nach Python übersetzen) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Begocidi Mitglied Maschinenbauer
Beiträge: 12 Registriert: 19.05.2015
|
erstellt am: 25. Jun. 2015 13:43 <-- editieren / zitieren --> Unities abgeben:
Danke ! Genau da liegt mein Problem den VBA Code in einen für Python funktionsfähigen Code umzuwandeln das ich eine Ausgabe erhalte Meine Suche ergab bisher leider keine hilfreichen Informationen .... Es gibt viel Infos über die Steuerung von Catia mittels Python aber leider nicht wie ich Infos/Eigenschaften speziell wie mein Problem die Farbgebung in Python anzeigen kann ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |