| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX | | | | PGT GmbH nutzt Anwendungsbandbreite von NX (NX) |
Autor
|
Thema: Was its GRIP??? (1681 mal gelesen)
|
Lars Ehrenmitglied V.I.P. h.c.
Beiträge: 4319 Registriert: 23.10.2000
|
erstellt am: 08. Jul. 2002 12:53 <-- editieren / zitieren --> Unities abgeben:
Hallo, mir ist jetzt schon öfters GRIP über den Weg gelaufen. Kann mir jemand sagen was das ist? Was man damit machen kann und was ich dazu brauche? ist dafür Zusatzsoftware notwendig? Danke für die Tips Viele Grüße aus dem sonnigen Sachsen. Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
konradw Mitglied CAD Key User
Beiträge: 981 Registriert: 07.03.2000 NX12
|
erstellt am: 09. Jul. 2002 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für Lars
Hi Lars! Um dieses Feature zu verwenden brauchst Du eine GRIP Lizenz. GRIP ist eine Programmiersprache, die vorhandene UG Funktionen abruft und diese in z.B. Schleifen setzt. So lassen sich bestimmte Funktionen in eine zusammenfassen. Dadurch laesst sich viel Zeit einsparen. Mit USER FUNCTION lassen sich z.B. voellig neue Befehle entwickeln. Ist allerdings viel aufwendiger zu programmieren. (C/C++) Man unterscheidet auch zwischen externen und internen Aufruf des Programms. Die einfachste Methode fuer einen normalen User ist ein MACRO zu schreiben. Nachteil ist, dass immer wieder das gleiche von einen exakten Startpunkt aus wiederholt wird. Kein Eingriff moeglich.
------------------ Gruss, Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lars Ehrenmitglied V.I.P. h.c.
Beiträge: 4319 Registriert: 23.10.2000
|
erstellt am: 09. Jul. 2002 14:33 <-- editieren / zitieren --> Unities abgeben:
Hallo, aha... könnte man damit auch folgendes erschlagen? In einer Baugruppe sollen jede Menge Bohrungen von englischen auf deutsche Gewinde um gebogen werden. Man müßte also jede einzelne Bohrung anfassen und bearbeiten. Schöner wäre es aber, wenn man daher gehen könnte und über einen Knopfdruck die Bohrungen ändern könnte. Danke für die Hilfe... Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
konradw Mitglied CAD Key User
Beiträge: 981 Registriert: 07.03.2000 NX12
|
erstellt am: 09. Jul. 2002 15:04 <-- editieren / zitieren --> Unities abgeben: Nur für Lars
Zitat: Original erstellt von Lars: Hallo,aha... könnte man damit auch folgendes erschlagen? In einer Baugruppe sollen jede Menge Bohrungen von englischen auf deutsche Gewinde um gebogen werden. Man müßte also jede einzelne Bohrung anfassen und bearbeiten. Schöner wäre es aber, wenn man daher gehen könnte und über einen Knopfdruck die Bohrungen ändern könnte. Danke für die Hilfe... Lars
Ja das waere ein Beispiel dafuer, jedoch lohnt sich der programmier Aufwand dafuer? Ich glaube eher nicht, oder kommt das Problem in 1000 Parts vor?
------------------ Gruss, Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lars Ehrenmitglied V.I.P. h.c.
Beiträge: 4319 Registriert: 23.10.2000
|
erstellt am: 10. Jul. 2002 08:18 <-- editieren / zitieren --> Unities abgeben:
Also 1000 Parts sind es in dem Fall wahrscheinlich eher weniger, aber 100 mit Sicherheit. Diese Teile enthalten sehr viele Bohrungen. Gibt es irgendwo die Möglich sich mal anzuschauen wie so ein Gripprogramm aussieht? Dank Dir für die Antwort Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bosch300 Mitglied
Beiträge: 87 Registriert: 06.01.2002
|
erstellt am: 10. Jul. 2002 09:10 <-- editieren / zitieren --> Unities abgeben: Nur für Lars
|
konradw Mitglied CAD Key User
Beiträge: 981 Registriert: 07.03.2000 NX12
|
erstellt am: 10. Jul. 2002 09:16 <-- editieren / zitieren --> Unities abgeben: Nur für Lars
Zitat: Original erstellt von Lars: Also 1000 Parts sind es in dem Fall wahrscheinlich eher weniger, aber 100 mit Sicherheit. Diese Teile enthalten sehr viele Bohrungen. Gibt es irgendwo die Möglich sich mal anzuschauen wie so ein Gripprogramm aussieht? Dank Dir für die Antwort Lars
Wenn Du die Lizenz erwirbst gibts ein Handbuch dazu. Schau auch mal hier im Forum nach, es wurden schon des oefteren Problemroutinen gepostet. Trotzdem bin ich der Meinung, dass man es sich nur aneignen sollte wenn auch genuegend Nutzen dabei rausspringt. Es gibt Leute die sowas schreiben, die verlangen aber eine Menge Geld dafuer. ------------------ Gruss, Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
konradw Mitglied CAD Key User
Beiträge: 981 Registriert: 07.03.2000 NX12
|
erstellt am: 10. Jul. 2002 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für Lars
GRIP Arguments Example The following is the example GRIP program. $$ $$ GRIP calling User Function sample program $$ $$ This program uses GRIP interaction to gather the information $$ needed to create a simple hole. It then passes this data to an $$ internal UG/Open API program which creates the simple $$ hole and reports back errors. $$ $$ This interaction prompts for the specification of: $$ IDENT : the face on which the hole is created, $$ and an optional through face. $$ PARAM : the diameter, depth, angle, and absolute position of the $$ hole. $$ $$ The direction of the hole is always perpendicular to the face. $$ $$ Declarations gripsw / declrv entity / hfaces(2) number / poswcs(3), posabs(3), dirwcs(3), dirabs(3), facdat(20),$ usresp number / dianum, depnum, angnum string / diastr(132), depstr(132), angstr(132), errstr(132) $$ Initialize defaults step0: dianum = 0.25 depnum = 0.25 angnum = 0.00 poswcs(1) = 0.00 poswcs(2) = 0.00 poswcs(3) = 0.00 $$ Select the placement face step1: hfaces(1) = &nulent hfaces(2) = &nulent mask / 71 ident / 'Select Placement Face [,Thru Face]', hfaces, usresp jump / halt:, halt:, usresp $$ Specify the simple hole parameters step2: param / 'Specify Simple Hole Parameters', $ 'Diameter = ', dianum, $ 'Depth = ', depnum, $ 'Angle = ', angnum, $ 'Position(xc) = ', poswcs(1), $ 'Position(yc) = ', poswcs(2), $ 'Position(zc) = ', poswcs(3), usresp jump / step1:, halt:, usresp $$ Convert data and determine the hole direction step3: posabs = map / poswcs, from, &wcs, to, &abs diastr = fstr(dianum) depstr = fstr(depnum) angstr = fstr(angnum) facdat = spropf( hfaces(1), 0.5, 0.5 ) dirwcs(1) = -facdat(16) dirwcs(2) = -facdat(17) dirwcs(3) = -facdat(18) dirwcs = poswcs + dirwcs dirabs = map / dirwcs, from, &wcs, to, &abs dirabs = dirabs - posabs $$ Create the simple hole step4: errstr = 'Unknown error.' grargs / posabs, dirabs, diastr, depstr, angstr, hfaces, errstr xspawn / ufun, 'demo_grip_call_ufun' $$ Inform user of any errors step5: ifthen / errstr <> 'No error.' eject / print print / 'The hole was not added to the face.' print / ' Reason: ' + errstr endif $$ Done halt: halt Beispiel aus der Anleitung UG... ------------------ Gruss, Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
konradw Mitglied CAD Key User
Beiträge: 981 Registriert: 07.03.2000 NX12
|
erstellt am: 10. Jul. 2002 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für Lars
GRIP Arguments Example The following is the example GRIP program. $$ $$ GRIP calling User Function sample program $$ $$ This program uses GRIP interaction to gather the information $$ needed to create a simple hole. It then passes this data to an $$ internal UG/Open API program which creates the simple $$ hole and reports back errors. $$ $$ This interaction prompts for the specification of: $$ IDENT : the face on which the hole is created, $$ and an optional through face. $$ PARAM : the diameter, depth, angle, and absolute position of the $$ hole. $$ $$ The direction of the hole is always perpendicular to the face. $$ $$ Declarations gripsw / declrv entity / hfaces(2) number / poswcs(3), posabs(3), dirwcs(3), dirabs(3), facdat(20),$ usresp number / dianum, depnum, angnum string / diastr(132), depstr(132), angstr(132), errstr(132) $$ Initialize defaults step0: dianum = 0.25 depnum = 0.25 angnum = 0.00 poswcs(1) = 0.00 poswcs(2) = 0.00 poswcs(3) = 0.00 $$ Select the placement face step1: hfaces(1) = &nulent hfaces(2) = &nulent mask / 71 ident / 'Select Placement Face [,Thru Face]', hfaces, usresp jump / halt:, halt:, usresp $$ Specify the simple hole parameters step2: param / 'Specify Simple Hole Parameters', $ 'Diameter = ', dianum, $ 'Depth = ', depnum, $ 'Angle = ', angnum, $ 'Position(xc) = ', poswcs(1), $ 'Position(yc) = ', poswcs(2), $ 'Position(zc) = ', poswcs(3), usresp jump / step1:, halt:, usresp $$ Convert data and determine the hole direction step3: posabs = map / poswcs, from, &wcs, to, &abs diastr = fstr(dianum) depstr = fstr(depnum) angstr = fstr(angnum) facdat = spropf( hfaces(1), 0.5, 0.5 ) dirwcs(1) = -facdat(16) dirwcs(2) = -facdat(17) dirwcs(3) = -facdat(18) dirwcs = poswcs + dirwcs dirabs = map / dirwcs, from, &wcs, to, &abs dirabs = dirabs - posabs $$ Create the simple hole step4: errstr = 'Unknown error.' grargs / posabs, dirabs, diastr, depstr, angstr, hfaces, errstr xspawn / ufun, 'demo_grip_call_ufun' $$ Inform user of any errors step5: ifthen / errstr <> 'No error.' eject / print print / 'The hole was not added to the face.' print / ' Reason: ' + errstr endif $$ Done halt: halt Beispiel aus der Anleitung UG... ------------------ Gruss, Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
konradw Mitglied CAD Key User
Beiträge: 981 Registriert: 07.03.2000 NX12
|
erstellt am: 10. Jul. 2002 09:25 <-- editieren / zitieren --> Unities abgeben: Nur für Lars
C User Function Example The following is the example User Function program. You invoke this program from a GRIP program and then receive from it the data required to create a simple hole. This program returns a string indicating any errors that may occur. #include <stdio.h> #include <string.h> #include <uf.h> #include <uf_modl.h> #define GRIP_ARG_COUNT 7 extern void ufusr (char *param, int *retcod, int param_len) { /* Declarations */ tag_t hole_faces[2], hole_feature; double hole_position[3], hole_direction[3]; char hole_diameter[133], hole_depth[133]; char hole_angle[133], error_string[133]; UF_args_t grip_arg_list[GRIP_ARG_COUNT]; int error_status; /* Define the argument list for GRIP calling User Function */ grip_arg_list[0].type = UF_TYPE_DOUBLE_ARRAY; grip_arg_list[0].length = 3; grip_arg_list[0].address = hole_position; grip_arg_list[1].type = UF_TYPE_DOUBLE_ARRAY; grip_arg_list[1].length = 3; grip_arg_list[1].address = hole_direction; grip_arg_list[2].type = UF_TYPE_CHAR; grip_arg_list[2].length = 0; grip_arg_list[2].address = hole_diameter; grip_arg_list[3].type = UF_TYPE_CHAR; grip_arg_list[3].length = 0; grip_arg_list[3].address = hole_depth; grip_arg_list[4].type = UF_TYPE_CHAR; grip_arg_list[4].length = 0; grip_arg_list[4].address = hole_angle; grip_arg_list[5].type = UF_TYPE_TAG_T_ARRAY; grip_arg_list[5].length = 2; grip_arg_list[5].address = hole_faces; grip_arg_list[6].type = UF_TYPE_CHAR; grip_arg_list[6].length = 0; grip_arg_list[6].address = error_string; /* Initialize User Function */ UF_initialize(); /* Update the local arguments with the contents from the GRIP variables */ error_status = UF_ask_grip_args (GRIP_ARG_COUNT, grip_arg_list); if (error_status != 0) { UF_get_fail_message (error_status, error_string); fprintf (stderr, "UF_ask_grip_args failed due to: %s\n", error_string); return; } /* Create the simple hole */ error_status = UF_MODL_create_simple_hole (hole_position, hole_direction, hole_diameter, hole_depth, hole_angle, hole_faces[0], hole_faces[1], &hole_feature); if (error_status != 0) UF_get_fail_message (error_status, error_string); else strcpy (error_string, "No error."); /* Update the GRIP arguments with the contents from the local variables */ error_status = UF_set_grip_args (GRIP_ARG_COUNT, grip_arg_list); if (error_status != 0) { UF_get_fail_message (error_status, error_string); fprintf (stderr, "UF_set_grip_args failed due to: %s\n", error_string); return; } /* Terminate User Function */ UF_terminate(); } ------------------ Gruss, Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flyer Mitglied
Beiträge: 48 Registriert: 10.07.2002
|
erstellt am: 10. Jul. 2002 12:51 <-- editieren / zitieren --> Unities abgeben: Nur für Lars
Hallo, Hallo was hier aber ein wenig untergegangen ist, dass es um die bearbeitung von komplexen formelementen geht und nicht einfach nur um das setzen einer bohrung. Ich kenne keinen weg unter GRIP, mit dem einfach ein gewinde editiert werden kann. Welche edit-funktionen oder GPA's sollen das sein - ohne die bohrung komplett neu aufzubauen - was dann doch ein wenig arbeit bedeutet oder ? auch die verknuepfungen gehen verloren oder ? das editieren in dem angesprochenen fall ist eine klare sache fuer user functions. - grip ist hier das falsche mittel !!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
konradw Mitglied CAD Key User
Beiträge: 981 Registriert: 07.03.2000 NX12
|
erstellt am: 10. Jul. 2002 13:01 <-- editieren / zitieren --> Unities abgeben: Nur für Lars
Zitat: Original erstellt von flyer: Hallo, Hallowas hier aber ein wenig untergegangen ist, dass es um die bearbeitung von komplexen formelementen geht und nicht einfach nur um das setzen einer bohrung. Ich kenne keinen weg unter GRIP, mit dem einfach ein gewinde editiert werden kann. Welche edit-funktionen oder GPA's sollen das sein - ohne die bohrung komplett neu aufzubauen - was dann doch ein wenig arbeit bedeutet oder ? auch die verknuepfungen gehen verloren oder ? das editieren in dem angesprochenen fall ist eine klare sache fuer user functions. - grip ist hier das falsche mittel !!!!
So tief bin ich da leider nicht drinne, wie gesagt bin auf der Konstruktions Seite nicht Programmierer... Aber auch wenn nur mit User Function dieses moeglich ist, ist es allemal viel zu aufwendig.
------------------ Gruss, Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lars Ehrenmitglied V.I.P. h.c.
Beiträge: 4319 Registriert: 23.10.2000
|
erstellt am: 10. Jul. 2002 14:08 <-- editieren / zitieren --> Unities abgeben:
Ich danke euch für die Zahlreichen Postings. Grip ist also was zusätzliches für UG, was ich kaufen muß und mein UG kann ich dann anpassen und Macros und ähnliches hinzuschreiben... Was sind denn dann user functions? Sind das auch wieder extrakosten oder ist das "GRIP-Light" Ich sehe schon wir werden die Bohrungen wohl vorerst doch von Hand ändern... Grüße Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
konradw Mitglied CAD Key User
Beiträge: 981 Registriert: 07.03.2000 NX12
|
erstellt am: 10. Jul. 2002 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für Lars
Zitat: Original erstellt von Lars: Ich danke euch für die Zahlreichen Postings. Grip ist also was zusätzliches für UG, was ich kaufen muß und mein UG kann ich dann anpassen und Macros und ähnliches hinzuschreiben... Was sind denn dann user functions? Sind das auch wieder extrakosten oder ist das "GRIP-Light"Ich sehe schon wir werden die Bohrungen wohl vorerst doch von Hand ändern... Grüße Lars
User Function ist die Advanced Sprache, also etwas schwieriger zu programmieren. Damit wurden alle Befehle in UG programmiert. (C/C++) Es ist eine Objektorientierte Sprache. Reihenfolge wo die erste die einfachste ist, aber auch am wenigsten kann. 1. MACRO 2. GRIP 3. USER FUNCTION
------------------ Gruss, Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|