Autor
|
Thema: Bohrungsbedingungen (2001 mal gelesen)
|
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 04. Jan. 2016 13:49 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, wir bearbeiten nun schon seit Wochen ein Master-Modul in CAD (Catia) und hängen jetzt an einer programmierbaren Bedingung fest und kommen nicht weiter. Bauteil (vereinfacht): - Kreis mit d = 140mm und Wandstärke t = 2 mm - 2 feste Bohrungen im Kreis mit d = 20mm Die Teilaufgabenstellung bei der wir nicht weiter kommen ist folgende: - Erstelle ein Bohrmuster - stelle sicher, dass dieses Bohrmuster im Randbereich keine Teilbohrungen erstellt - stelle sicher, dass diese Teilbohrungen auch nicht bei den bereits vorhandenen festen Bohrungen auftreten. Unsere Lösung: - zur Sicherstellung keiner Teilbohrungen im Randbereich funktioniert das hier einwandfrei: int((Aussen-Durchmesser/2mm) / (Abstand-Bohrung/1mm)) --> Aussen-Durchmesser und Abstand-Bohrung sind Parameter allerdings schaffen wir es nicht, dass keine Teilbohrungen an den inneren festen Bohrungen entstehen. Die Idee ist es, einen "Bereich" (evtl. Boundary) zu schaffen mit der Bedingung: if (Bohrung trifft festen Kreis) then {keine Bohrung}, aber unsere Bemühungen (siehe unten) funktionieren leider nicht ;/ if (PartBody\RectPattern.1 ==`Geometrical Set.5\Boundary.2` ) {PartBody\RectPattern.1\Activity = false} else {PartBody\RectPattern.1\Activity = true} Es treten Fehlermeldungen auf und das teilweise funktionierede Skript löscht direkt das ganze Muster. Könntet ihr weiterhelfen? Vielen Dank schon einmal im Voraus !!!! 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: 04. Jan. 2016 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für AudiDaniel
|
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 04. Jan. 2016 14:16 <-- editieren / zitieren --> Unities abgeben:
|
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 04. Jan. 2016 15:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, wir haben uns die verlinkten Seiten gerade angesehen. Tatsächlich handelt es sich um die identische Aufgabenstellung. Allerdings "darf" die Lösung des Problems nicht derart kompliziert sein. Wir haben maximal 1,5 Zeitstunden "programmiert" und uns nur die trivialsten Dinge angesehen. Kannst du dir vorstellen, dass es auch eine "einfachere Lösung" (if Bedingung then Befehl) gibt? Natürlich nicht in einem Einzeile, aber ohne zeilenweise definitionen und Schleifen. Vielen Dank! 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: 04. Jan. 2016 15:22 <-- editieren / zitieren --> Unities abgeben: Nur für AudiDaniel
Servus Wenn wirklich ein voll parametrisches Modell herauskommen soll, bei dem die Bohrungen abhängig von den Eingaben (zB Fläche, Störfläche, ..) gemustert werden sollen geht das nicht einfach. Ich befürchte ihr habt zu viel in die Aufgabenstellung hinein interpretiert (zu komplex, zu aufwändig, zu wenig Grundlagen vorhanden) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 04. Jan. 2016 16:07 <-- editieren / zitieren --> Unities abgeben:
Hättest du hierfür denn eine Idee? Den Rest müssen wir nochmals abklären. if (Variable >=9mm) {extrude(PartBody\Sketch.23,`Absolute Axis System\Origin\Z`,2mm,0mm,add)} Er gibt einen Fehler beim letzten Parameter an. Weder add, noch fill oder andere Befehle funktionieren hier. Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 04. Jan. 2016 17:05 <-- editieren / zitieren --> Unities abgeben:
Wir haben die Funktion soweit abgeändert, dass keine Fehlermeldungen mehr kommen. Sie sieht jetzt wie folgt aus: if (Variable >9mm) {extrude(PartBody\Sketch.23,direction(`xy plane`) ,100mm,100mm,true)} Dennoch wird nichts extrodiert. Woran kann es liegen? Danke! 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: 04. Jan. 2016 17:11 <-- editieren / zitieren --> Unities abgeben: Nur für AudiDaniel
Servus Schon mal in Doku geschaut welcher Parametertyp die einzelne Parameter haben? extrude (Curve, Direction, length1: Length, length2: Length, orientation: Boolean):Dann passt wohl nur true oder false. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 04. Jan. 2016 17:12 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Jan. 2016 17:17 <-- editieren / zitieren --> Unities abgeben: Nur für AudiDaniel
Servus Welcher Variable (zB Typ Fläche) ist die Formel zugewiesen? Wies sieht das ganze aus? Was hab ihr genau vor? Ist eine Formel oder eine Regel? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 04. Jan. 2016 17:27 <-- editieren / zitieren --> Unities abgeben:
Wir versuchen das Problem zu umgehen in dem wir ... alle Bohrungen zunächst zulassen und dann im nächsten Schritt die "Teilbohrungen" wieder "füllen" möchten. Hierzu haben wir Rules und Reactions erstellt um den Kreis, der vorab ausgeschnitten wurde, wieder zu füllen. Um es vorab nicht allzu sehr zu verkomplizieren, haben wir einfach die Bedingungen mit der Variablen gesetzt. Das Bohrloch soll also wieder gefüllt werden, wenn die Variable größer 9 mm wird. Wenn das erfolgreich ist, möchten wir eine Bedingung aufstellen, die besagt, dass die Bohrlöcher wieder gefüllt werden sollen, wenn eine Teilbohrung entstanden ist. In die Rules / Reactions haben wir folgendes eingegeben: if (Variable >9mm) {extrude(PartBody\Sketch.23,direction(`xy plane`) ,100mm,100mm,true)}
else {extrude(PartBody\Sketch.23,direction(`xy plane`) ,100mm,100mm,false)} Wir haben Rules und Reactions und die Option true und false verwendet, damit es auf jeden Fall funktioniert und wollten dem Programm keine Möglichkeit mehr lassen, die Extrodierung zu umgehen, aber er erstellt die Extrodierung nicht.
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: 04. Jan. 2016 18:05 <-- editieren / zitieren --> Unities abgeben: Nur für AudiDaniel
Servus Damit der Extrude (= Fläche) ausgeführt bzw dargestellt wird muss das über eine Formel einem Parameter des Typs "Fläche" zugeordnet werden. Habt ihr eure Vorgehensweise mal manuell getestet? IHMO wird das so nicht funktionieren. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 05. Jan. 2016 16:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, wir haben das Problem mittlerweile etwas eingrenzen können, bräuchten aber nochmals deinen Rat: Folgendes Problem: Wir haben eine kreisrunde Oberfläche, auf der 2 große Bohrungen angebracht sind. Zudem haben wir viele kleinere Bohrungen auf dieser Oberfläche mittels pattern erzeugt. An der Grenze zu den 2 größeren Bohrungen kommt es zu geschnittenen Bohrungen. Diese gilt es zu verhindern. Um die 2 großen Bohrungen haben wir daher einen Circle gelegt und mit fill die kleineren, geschnittenen Bohrungen teilweise gefüllt. Jetzt bräuchten wir einen Befehl, der eine Kurve, aus den Bohrungen und des circles, generiert um damit auch den Rest zu füllen. Kannst du uns hier weiterhelfen? P.S.: Am Außenrand haben wir es, wie du auf dem Foto sehen kannst, hinbekommen. Vielen Dank und Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 05. Jan. 2016 17:37 <-- editieren / zitieren --> Unities abgeben:
|
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 05. Jan. 2016 18:26 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, sobald man eine Lösung gefunden hat, treten leider neue Probleme auf. Wir müssten das komplette geometrical.set mit einer Rule ausblenden. Bei Objekten im Part.Body ging es zumeist mit ...\Activity = false. Hiermit kommen wir aber momentan nicht weiter. Hat jemand eine Idee, wie man das Ausblenden von einem geometrical.set über eine Rule steuern kann? Danke! 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: 05. Jan. 2016 18:40 <-- editieren / zitieren --> Unities abgeben: Nur für AudiDaniel
Servus Schon mal mit .Show probiert? Code: `Geometrisches Set.2`.Show = false
Schau dir mal den "Objektbrowser" (im Regeleditor 4 Icon von rechts oben). Da siehst du das für Eigenschaften/Methoden die Objekte haben (ggf dann noch F1 drücken und in der Doku nachschauen). Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 11. Jan. 2016 14:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, vielen Dank! Dein Tipp hat einwandfrei funktioniert. Es lag an der Großschreibung Wir sind über das Wochenende auch ein gutes Stück weitergekommen, hängen allerdings jetzt an den Regeln. Einen Warnhinweis haben wir bereits eingerichtet. Er warnt den Benutzer jetzt, wenn der Abstand von Bohrung zu Bohrung geringer ist als der Bohrungsdurchmesser. Allerdings warnt er nur und unterbindet die Ausführung nicht. Hast du hier eine Idee, wie wir es realisieren könnten? Wir dachten an eine Rule wie beispielsweise: if (Bohrungsabstand < Bohrungsdurchmesser*1,4) {Unterbinde die Ausführung} Jedoch fehlt uns hierfür der dazugehörige Befehl. Kannst du helfen? Vielen DAnk! 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: 11. Jan. 2016 16:02 <-- editieren / zitieren --> Unities abgeben: Nur für AudiDaniel
Servus Daniel Wie sieht euer Modell aus? Könnt ihr nicht einfach die Bohrung/Muster deaktivieren (sie dein erster Post)? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AudiDaniel Mitglied Student
Beiträge: 12 Registriert: 04.01.2016 Windows 7, 64 bit 16GB RAM Intel Xeon CPU, 3 GHz CATIA V6R2013
|
erstellt am: 01. Feb. 2016 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, mittlerweile sieht es ganz gut aus. Bohrungen sind erstellt und auch die meisten anderen Anforderungen aus der Aufgabenstellung konnten wir nach wochenlanger Arbeit endlich erfüllen. An einer Sache hängen wir allerdings immer noch und bräuchten nochmals deine Hilfe: Bei uns kommt es bei der Änderung von Parametern hier und da immer noch zu Fehlern. Wir würden diese gerne mit Bedingungen unterbinden. Das einfachste Beispiel ist folgendes: Wir haben auf einer Linie mehrere Bohrungen. Den Durchmesser sowie den Abstand zueinander kann man mittels Parameter steuern. Wenn man jetzt den Bohrungsdurchmesser gleich dem Abstand setzt, kommt es (logischerweise) zu Fehlern. Dafür haben wir folgende Rule erstell, die wir aber einfach nicht zum laufen bekommen. RULE: if (Abstand == Bohrungsduchmesser) {Abstand = Abstand + 0,5 mm} Mir ist klar, dass wir damit eine Schleife produzieren, aber mit unseren stümperhaften Schleifenansätzen kommen wir auch nicht weiter:
while (Abstand == Bohrungsduchmesser) do if (Abstand == Bohrungsduchmesser) {Abstand = Abstand + 0,5 mm}
oder do while (Abstand == Bohrungsduchmesser) if (Abstand == Bohrungsduchmesser) {Bohrungsduchmesser = Bohrungsduchmesser-0,5mm} Für unseren zweiten Lösungsansatz, einfach das AutoUpdate abzubrechen, wenn eine von uns definierte Bedingung auftritt, scheiterte auch daran, dass wir keinen Befehl kennen um das Update zu unterdrücken. Wir dachten an etwas, das in etwa so aussehen sollte: if (Abstand == Bohrungsduchmesser) {Autoupdate.cancel} ... am Besten noch mit dem Rückgängigmachen der letzten Schritte. Hier fehlt uns einfach schlicht weg das KnowHow. Könntest du hier bitte nochmals weiterhelfen. Vielen Dank! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |