| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Instanz Child list (1345 mal gelesen)
|
thomas167 Mitglied Ingenieur
Beiträge: 42 Registriert: 20.05.2008
|
erstellt am: 01. Apr. 2009 15:37 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine Frage zu der Instanziierung von den Elementen einer Child List in KF. Ich möchte alle Instanzen einer Child list einzeln ansprechen. Es gibt die Funktion: (instance) H1: First (Geometrie ; wobei Geometrie: die Child list ist. Wenn die Liste nun mehr als 3 Inhalte hat klappt dies nicht mehr, da nur first, second, third und last mit dieser Funktion anwedbar sind. also keine Zahlen und keine nth Funktion. Weiß jemand Rat, wie ich die Instanzen weiter nutzen kann. Ich möchte bestimmte Childs aus der liste, wenn Sie bestimmte Bedingungen erfüllen, unterdrücken (supress?). Weiß jemand bitte Rat? Sonnige Grüße Thomas [Diese Nachricht wurde von thomas167 am 01. Apr. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thomas167 Mitglied Ingenieur
Beiträge: 42 Registriert: 20.05.2008
|
erstellt am: 07. Apr. 2009 08:19 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe mir ein paar Gedanken gemacht, wie ich eine ChildList anspreche. Vielleicht kann mir jemand noch einen Tipp geben: Die ChildList, die ich erstelle, bekommt eine bestimmte Anzahl von Childs. Abhängig von dieser Zahl möchte ich jedes Child ansprechen. Dafür habe ich mir eine Liste erstellt: (list) ListeDerChilds: loop{ for $i from 1 to (AnzahlDerChilds); for $y is ($i); for $name is "ChildPfadUndName" + $y +"body:"; collect $name; }; Ich möchte eine Liste die etwa aussieht wie z.B. Baugruppe:Block_1:body: Baugruppe:Block_2:body: Baugruppe:Block_3:body: ...usw. hierbei soll die nummer für jede Stelle in der Liste, die ensteht um ein zunehmen, damit jedes Child angesprochen wird. Dummerweise bekomme ich keine Zahl in die Liste hinein. kann mnir jemand helfen? Schönen Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AntonCAD Mitglied Konstrukteur
Beiträge: 19 Registriert: 12.09.2007 HP Z400 WIN 7 64bit NX 7.5.5.4 MP01
|
erstellt am: 08. Apr. 2009 14:09 <-- editieren / zitieren --> Unities abgeben: Nur für thomas167
Hallo Thomas, um eine Zahl zu einem String hinzufügen zu können, mußt Du diese erst mit FORMAT erst in ein String umwandeln. Die vierte Zeile müsste wie folgt aussehen. for $y is FORMAT("%d", $i); Hoffe eine Hilfe gewesen zu sein ------------------ Gruß Anton Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thomas167 Mitglied Ingenieur
Beiträge: 42 Registriert: 20.05.2008
|
erstellt am: 09. Apr. 2009 10:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Anton! Vielen Dank für deine Antort, das war genau das was ich gesucht habe! 10Points for You!!! Das Doofe ist nur, die erstellte Liste hat die Form: Baugruppe:Klotz_1:Body: in Form eines Strings Wenn ich dieses Body manuell anspreche, erscheint mir als Value body{ug_body}. Wenn ich nun die Liste einfüge, erscheint ein Error, da dann ein String einegfügt wird. D.h. ich bekomme, der Zeichenfolge nach, genau die Liste der Childs, die ich ansprechen möchte, aber KF erkennt diese nicht als Childs an. Weiß du da vielleicht auch was? ich wünsche allen Frohe Ostern!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thomas167 Mitglied Ingenieur
Beiträge: 42 Registriert: 20.05.2008
|
erstellt am: 16. Apr. 2009 11:46 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich suche einen Fehler in dem folgedenden Abschnitt. Es wird geprüft, ob Bauteile sich überschneiden (Abfrage: ) und dann die Child List (Reihe) mit dem Zielkörper zu vereinen. Es wird weder eine Fehlermeldung angezeigt noch sehe ich ein Fehler. (method modifiable) Vereinigen: @{ $a<<loop{ for $i from 1 to length( Reihe: ); #Liste der Children collect nth($i, Reihe: ); }; $b<< Fertig:Body: ; # der Zielbody $c<<loop { for $z from 1 to length(Abfrage: ); collect If ( nth($z,Abfrage: ) = true ) Then ( ug_Boolean(nth($z,Abfrage: ), Fertig:Body: )) Else ( Nulldesign ); }; }; [Diese Nachricht wurde von thomas167 am 16. Apr. 2009 editiert.] [Diese Nachricht wurde von thomas167 am 16. Apr. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AntonCAD Mitglied Konstrukteur
Beiträge: 19 Registriert: 12.09.2007 HP Z400 WIN 7 64bit NX 7.5.5.4 MP01
|
erstellt am: 20. Apr. 2009 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für thomas167
Hallo Thomas, zu deiner Frage vom 09. April, vieleicht kannst Du einmal versuchen über den Befehl REF auf die einzelnen Childs zuzugreifen. Anbei ein sehr vereinfachtes Beispiel: (Child List) Koerper: { #eine Liste von Koerpern, zum spielen Class, ug_block; quantity, 5; Length, 5; Width, 5; Height, 5; Origin, Point(child:index:*10 ,child:index:*2,0); }; Und so kann ich die Höhe des zweiten Blocks abfragen: (Number Modifiable) hoehe_abfragen: ref( nth(2,koerper: ), height ); Zu deiner Frage vom 16. April, vieleicht solltest Du im Befehl UG_Boolean als erstes den Zielkoerper aufführen.
------------------ Gruß Anton [Diese Nachricht wurde von AntonCAD am 20. Apr. 2009 editiert.] [Diese Nachricht wurde von AntonCAD am 20. Apr. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Entwicklungsingenieur Abgasanlagen (m/w/d) | MITTELSTÄNDISCH ? PRAGMATISCH ? LEIDENSCHAFTLICH ACONEXT ist Kompetenz in Technologieberatung, IT und Engineering. Gemeinsam arbeiten wir an den technischen Innovationen von morgen. Mit Leidenschaft für Technik und Technologie entwickeln wir mit unseren rund 700 Mitarbeiterinnen & Mitarbeitern neue Produktgenerationen für die Automobil- und Luftfahrtindustrie. Wir sind am Markt etabliert, langfristige Projekte und Geschäftsbeziehungen zeichnen uns aus.... | Anzeige ansehen | Entwicklung |
|
thomas167 Mitglied Ingenieur
Beiträge: 42 Registriert: 20.05.2008
|
erstellt am: 23. Apr. 2009 11:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Anton! vielen Dank für deine Antwort! Ich habe die Liste der Körper manuell erstellt, rufe sie aber mit demselbem Prinzip (nth) auf wie du es zeigst. Das mit der boolean Funktion hab ich auch hinbekommen die schleife sieht etwa so aus: ... for $i in bodys:; for $y from 1 to length(bodys: ); append{ ug_createInstance( class, ug_boolean, ...... unite target, (zielkörper: ), tool, (nth($y, bodys: ); )};}; die angedeutete Funktion klappt super. Leider ist sie von der Geometrie des Zielkörpers abhängig. D.h. bei komplexen Geometrien kommt eine Fehlermeldung mit dieser Schleife. Es wäre keine komplette Interference vorhanden (ich frage vorher mit der funktion predict boolean ob diese vorhanden ist..)wenn ich die körper einzeln manuell miteinander vereine, funktionert es. Ich hab aber leider keine Ahnung woran das liegt... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|