| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: Ellipse im Makro (676 mal gelesen)
|
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 12. Mai. 2004 12:24 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich habe ein Problem mit der Ellipsenerstellung innerhalb eines Makros. Sobald der entsprechende Befehl (egal, ob Ell_vvp oder Ell_car) gegeben wird, scheint die Makroausführung zu stoppen und die Punkte werden abgefragt, als hätte ich den Befehl in ME10 direkt aufgerufen. Die von mir im Makro übergebenen Punkte werden ignoriert. In der Onlinehilfe heisst es, dass der Ellipsenbefehl ein Makro aufruft, das einen Ellipsenähnlichen Spline erstellt. Könnte das damit zusammenhängen? Der Befehl dazu sieht bei mir so aus: ELL_VVP (P0+PNT_XY (DK1/2) 0) (P0+PNT_XY (-1*(DK1/2)) 0) (P0+PNT_XY 0 LTE) Mit "Trace" verfolgt, kommt an der Stelle dieses: Ell_vvp END FOLLOW OFF INQ_ENV 3 LET Old_no_viewport_catch_range ( INQ 3 ) 0 CATCH NO_VIEWPORT_RANGE 0 LOOP INQ_ENV 6 LET Scale ( INQ 3 ) 0.0174532925199433 Dann wird die Eingabe der Punkte erwartet... Wäre super, wenn mir jemand helfen könnte. Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dittrich Mitglied SysAdmin
Beiträge: 388 Registriert: 06.06.2000 Wenn es nicht geht, probier was anderes, vielleicht geht es dann auch nicht.
|
erstellt am: 12. Mai. 2004 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Wenn für eine Makro keine Übergabeparameter definiert sind und dann in einer LOOP mit READ explizierte Werte abgefragt werden, geht es so nicht. Dann verwende die eigentliche Splinefunktion z.B. BSPLINE, der frisst beliebig viele Punkte per Parameter. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rhoffmann Mitglied Techniker
Beiträge: 58 Registriert: 22.01.2003
|
erstellt am: 12. Mai. 2004 13:39 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Hallo Tom, in Deiner Schreibweise der Formel muss der Fehler stecken. Wenn ich Ell_vvp 0,0 1000,0 450,200 END eintippe, zeichnet mir ME10 die Ellipse. Beachte, dass der Befehl mit END abgeschlossen werden muss. MfG Robert
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dittrich Mitglied SysAdmin
Beiträge: 388 Registriert: 06.06.2000 Wenn es nicht geht, probier was anderes, vielleicht geht es dann auch nicht.
|
erstellt am: 12. Mai. 2004 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
|
rhoffmann Mitglied Techniker
Beiträge: 58 Registriert: 22.01.2003
|
erstellt am: 12. Mai. 2004 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
|
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 12. Mai. 2004 14:29 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von rhoffmann:
in Deiner Schreibweise der Formel muss der Fehler stecken. Wenn ich Ell_vvp 0,0 1000,0 450,200 END eintippe, zeichnet mir ME10 die Ellipse. Beachte, dass der Befehl mit END abgeschlossen werden muss.
Danke für die Antworten. Die Anweisung END stand bei mir in der nächsten Zeile. Spielt aber keine Rolle. Wenn ich den Befehl eintippe, funktioniert es auch. Die gleiche Zeile im Makro bewirkt aber nach wie vor das beschriebene Verhalten. Es scheint tatsächlich so zu sein, dass der Befehl per Makro nicht verwertbar ist. Es sei denn, ich habe da noch anderswo einen Bock drin...? Viele Grüße Tom
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
barbarossa Mitglied Konstrukteur
Beiträge: 273 Registriert: 21.02.2003 ProE 20 ProE 2000i ProE 2001 ProE WF2 M130 ProE WF3 M170 ProE WF4 M210 Creo 2.0 Catia V5 R19 NX 5 ME10 7.0 AutoCAD Mechanical 2007 (blutiger Anfänger) Office 2003
|
erstellt am: 12. Mai. 2004 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
|
rhoffmann Mitglied Techniker
Beiträge: 58 Registriert: 22.01.2003
|
erstellt am: 12. Mai. 2004 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Hallo Tom, ich habe mir mal das Original Macro angesehen. In der Schleife wird nach Auftreten eines Fehlers das Macro _durch sich selbst_ wieder aufgerufen. Dadurch kennt das Macro beim zweiten Aufruf deine Parameter nicht mehr. Lege die Fehlerprüfung ausserhalb dieses Macros, oder, wenn Du sicher bist, dass gültige Werte übergeben werden, kommentier die rekursiven Aufrufe aus. MfG Robert
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 12. Mai. 2004 16:16 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von rhoffmann: Hallo Tom,ich habe mir mal das Original Macro angesehen. In der Schleife wird nach Auftreten eines Fehlers das Macro _durch sich selbst_ wieder aufgerufen. Dadurch kennt das Macro beim zweiten Aufruf deine Parameter nicht mehr. Lege die Fehlerprüfung ausserhalb dieses Macros, oder, wenn Du sicher bist, dass gültige Werte übergeben werden, kommentier die rekursiven Aufrufe aus. MfG Robert
Danke für die Mühe. Funzt das Ganze denn bei dir aus einem eigenen Makro heraus? Immerhin habe ich vorhin mal die Werte übergeben, die in der direkten Eingabe funktioniert haben und bin trotzdem nicht weitergekommen. Ich habe mir jetzt, wie hier empfohlen, geholfen indem ich das Problem über einen Spline gelöst habe. Dabei hat sich eine weitere Frage ergeben: Da ich nur das halbe Element brauche, trenne ich den Spline und lösche die Hälfte weg. Dazu bediene ich mich der Definitionspunkte des Splines, da ich weitere nicht kenne. Nun können in der Zeichnung an der Stelle aber weitere Elemente liegen, z. B. Mittellinien. Und die hat er beim Test wohl auch ausgerechnet ausgewählt. Wie kann ich denn die "dahinter liegenden" Elemente erreichen? Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rhoffmann Mitglied Techniker
Beiträge: 58 Registriert: 22.01.2003
|
erstellt am: 12. Mai. 2004 17:35 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Hallo Tom, Das Macro hat Probleme mit negativen Zahlen ( Wurzel aus -xx ) Untenstehendes Macro habe ich getestet. Es läuft bei mir. Zu Deiner zweiten Frage schau mal nach INQ_SELECTED_ELEM in der Hilfe. Damit kannst Du alle Elemente durchlaufen. MfG Robert ##############################################################
DEFINE my_Ell_vvp PARAMETER Ver_pnt1 PARAMETER Ver_pnt2 PARAMETER Per_pnt LOCAL Cen_pnt LOCAL Axis_angle LOCAL Min_radius LOCAL Maj_radius LOCAL Loc_angle LOCAL Dis LOCAL Old_no_viewport_catch_range LOCAL Scale LOCAL Step FOLLOW OFF INQ_ENV 3 LET Old_no_viewport_catch_range (INQ 3) CATCH NO_VIEWPORT_RANGE 0 LOOP INQ_ENV 6 LET Scale (INQ 3) LET Cen_pnt ((Ver_pnt1+Ver_pnt2)/2) IF (LEN (Per_pnt - Cen_pnt)<LEN (Ver_pnt2 - Cen_pnt)) LET Maj_radius (LEN (Ver_pnt2 - Cen_pnt)) LET Axis_angle (ANG (Ver_pnt2 - Cen_pnt)) LET Per_pnt (ROT (Per_pnt - Cen_pnt) (- Axis_angle)) LET Dis (SQR Maj_radius - SQR X_OF Per_pnt) IF (Dis<=0) CANCEL END_IF LET Min_radius (Maj_radius*Y_OF Per_pnt/SQRT Dis) ELSE LET Min_radius (LEN (Ver_pnt2 - Cen_pnt)) LET Axis_angle (ANG (Ver_pnt2 - Cen_pnt)+((PI/2)/Scale)) LET Per_pnt (ROT (Per_pnt - Cen_pnt) (- Axis_angle)) LET Dis (SQR Min_radius - SQR Y_OF Per_pnt) IF (Dis<=0) CANCEL END_IF LET Maj_radius (Min_radius*X_OF Per_pnt/SQRT Dis) END_IF BSPLINE CLOSED ORDER 3 LET Step 0 REPEAT LET Loc_angle (Step*PI/18) LET Loc_angle (Loc_angle/Scale) (Cen_pnt+ROT PNT_XY (Maj_radius*COS Loc_angle) (Min_radius*SIN Loc_angle) Axis_angle) LET Step (Step+1) UNTIL (Step>=36) END END END_LOOP CATCH NO_VIEWPORT_RANGE Old_no_viewport_catch_range END_DEFINE DEFINE Test LOCAL Vp1 LOCAL Vp2 LOCAL Vp3 LET Vp1 (PNT_XY 0 0) LET Vp2 (PNT_XY 1000 0) LET Vp3 (PNT_XY 400 350) my_Ell_vvp Vp1 Vp2 Vp3 END END_DEFINE
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 13. Mai. 2004 08:22 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von rhoffmann: Hallo Tom,Das Macro hat Probleme mit negativen Zahlen ( Wurzel aus -xx )
Ach so. Das erklärt's natürlich. Ist aber unpraktisch, weil ich dann umrechnen muss und einen anderen Ellipsenbefehl nutzen oder ich verschiebe die Ellipse hn und wieder zurück. Wie dem auch sei. Ich hab's jetzt hingekriegt, allerdings die Sache mit dem Schneiden nur von hinten durch die Brust ins Auge. Gefällt mir nicht. Ich habe immer noch das Problem mit dem Wählen des richtigen Elementes. Ich habe versucht nach dem Aufruf SPLIT vor Eingabe des Wahlpunktes ein SELECT (BSPLINES) einzuschieben, was aber großzügig ignoriert wurde. Und mit INQ_NEXT_ELEM komme ich nicht klar. Ich kann dann zwar sie Eigenschaften des nächsten Elemenetes abgreifen, aber wie kann ich aus 3 übereinanderliegenden Elementen das auswählen, das dem gewünschten Typ entspricht? Mein verzweifelter Versuch, mit LOOP heranzukommen, ist kläglich gescheitert. *gg* Ich möchte einfach von dem erzeugten Spline (oder der Ellipse) eine Hälfte weglöschen. Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
anneB Mitglied CAD Applikationsbetreuer
Beiträge: 22 Registriert: 07.04.2004
|
erstellt am: 13. Mai. 2004 13:04 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Hallo, wenn du ein Element, das du in einem Macro erzeugst wieder ansprechen möchstest, dann weis dem Element doch einen bestimmtes Info zu. So kannst du die Auswahl auf das Info einschränken. Du kannst das Inf, wenn es seinen Zweck erfüllt hat ja wieder löschen. ------------------ Gruß Anne Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 13. Mai. 2004 15:14 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von anneB: Hallo, wenn du ein Element, das du in einem Macro erzeugst wieder ansprechen möchstest, dann weis dem Element doch einen bestimmtes Info zu. So kannst du die Auswahl auf das Info einschränken. Du kannst das Inf, wenn es seinen Zweck erfüllt hat ja wieder löschen.
Hallo! Das hört sich gut an, aber habe ich beim Zuweisen der Info nicht das gleich Auswahlproblem? Oder kann ich direkt beim Erzeugen des Elementes die Info anhängen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Maschinenbaukonstrukteur Werkzeugkonstruktion (m/w/d) | Der Unternehmensverbund battenfeld-cincinnati ist einer der weltweit führenden Anbieter von Extrusionsanlagen und -systemen für die Produktion von Rohren, Platten, Folien, Profilen und Granulat aus Kunststoff sowie Holz-Kunststoff-Verbundstoffen und beschäftigt in Deutschland, Österreich, den USA und China insgesamt mehr als 600 Mitarbeitende. Für die battenfeld-cincinnati Germany GmbH sind an den Standorten Bad Oeynhausen und Kempen ca.... | Anzeige ansehen | Konstruktion, Visualisierung |
|
awi Mitglied Programmierer
Beiträge: 275 Registriert: 11.11.2001 awinformatik - individuallösungen rund um me10. - pc-steuerungen.
|
erstellt am: 13. Mai. 2004 17:19 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
hi tom mit add_elem_info kannst du deinem soeben gezeichneten element eine info anhängen oder aber du eröffnest zuerst einen info mit add_current_info und zeichnest danach elemente, texte oder bemassungen, erhalten auch diese deine info plus die die sonst schon vom system definiert sind. nicht vergessen nachträglich mit delete_current_info die info zu löschen sonst bekommen all deine weiteren elemente die info. gruss aus finsterhennen ------------------ awi André Weidmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |