Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  KF Geometrie ändern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  KF Geometrie ändern (1775 mal gelesen)

Ex-Mitglied

erstellt am: 21. Mai. 2011 21:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo nxler,

wenn man Geometrie mit "adopt existing object" in den KF-Navigator holt, habe ich angenommen, dass man diese dort modifizieren kann.
Konkret habe ich eine Linie (welche durch 2 Punkte erzeugt wurde) in KF geholt. Nun möchte ich gern den Start und Endpunkt in Abhängigkeit einer Bedingung ändern.
z.B. Wenn Bedinung wahr, dann nimm Startpunkt 1, sonst Startpunkt 2
Irgendwie finde ich kein Attribut, wo ich da ansezten könnte bzw. muss ich neue Attribute erzeugen. Zugegeben, ich habe bisher wenig Kenntnisse in KF, vielleicht hat jemand einen Tipp.

Danke
motard

Bito00
Mitglied
Dipl.-Ing. Triebwerkstechnik


Sehen Sie sich das Profil von Bito00 an!   Senden Sie eine Private Message an Bito00  Schreiben Sie einen Gästebucheintrag für Bito00

Beiträge: 85
Registriert: 27.12.2010

Quadcore i7
Geforce GT670
32GB Ram
UG NX9

erstellt am: 26. Mai. 2011 11:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Moin motard,

also ich sage gleich mal vorab, ich habe bisher zwar schon ein wenig mit KF gearbeitet aber direkt Kurven gesteuert habe ich noch nicht. Allerdings weiß ich, dass wenn du B-Splines in UG zeichnest und in KF übernimmst, kannst du die Kontrollpunkte über eine externe .dfa Datei steuern. Ich könnte mir vorstellen, dass so etwas auch mit normalen Kurven geht. Und je nachdem wie das Ergebnis deiner Bedingung aussieht könntest du eine entsprechende .dfa Datei nutzen.

Gruß
Bito

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 27. Mai. 2011 13:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo motard,

in Sachen KF gibt's hier offensichtlich wenig Experten. Daher die Frage, ob Du es nicht mit einem Journal versuchen willst ?
Da gibt's mehr Know How, Einarbeitung ist allerdings auch hier notwendig.

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 27. Mai. 2011 18:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Michael,

von Journal habe ich noch nichts gehört, was meinst du damit?
Die Einbindung von externen Programme? Die schreibt man dann mit welcher Sprache und braucht sicher auch wieder nx-spezifischen Befehle?

danke
motard

MAhrens
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von MAhrens an!   Senden Sie eine Private Message an MAhrens  Schreiben Sie einen Gästebucheintrag für MAhrens

Beiträge: 528
Registriert: 17.11.2000

SAP,TC8.3,NX7.5,T4S

erstellt am: 27. Mai. 2011 22:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo NX'ler,

ich halte beide Szenarien für möglich, wobei das Open NX (z.B. Visual Basic Journal) sicherlich die flexibelste und leistungsfähigste Umgebung scheint. Trotzdem würde ich in Deinem Falle zu einer KF Regel raten, das diese sehr einfach bei Geometrieänderungen mit abgefragt werden, während ein Journal nur nach einem gesonderten Journal Aufruf Ändderungen vornimmt. Sicherlich kann man auch in einem Journal einen Ereignis / Event Handler einbauen. Dass halte ich aber in Deinem Fall für "Mit Kanonen auf Spatzen schießen".

Siehe mal in der NX Automation Hilfe unter KF. Dort gitb es ein kleine "Door" / "Room" Tutorial als Einstieg in KF. In jdem Fall, ob KF oder Journal ist grundlegende Porgrammierkenne notwendig. Wobei der Anspruch im VB sicherlich viel höher ist. Das KF scheint zwar im ersten Eindruck etwas hölzern, ist aber für komplexere geometrische Abhängigkeiten, die nicht mehr mit dem Expression Editor erzeugt werden können, genau die richtige Lösung.

In deinem Fall musst Du das Objekt in die KF Umgebung "adoptieren". Zusätzlich solltest Du nun ein "Child" vom Typ "NX_expression" einfügen, damit Deine KF Umgebung eine einfachn Parameter für die "Expressions" Umgebung erzeugen kann. Nun musst du die verschiedenen KF Attribute der beiden KF Objekte in Bezieheungen bringen (Nutze einfach die rechte Mausfunktion "Referenz" ím KF Navigator). Dort kann mna auch sehr einfache "Wenn... Dann..." Bedingungen einfügen. Beachte, dass Du häufig für geometrische Änderungen aber auch "Point" und "Vector" KD Typen brauchst.

Als Beispiel mal eine KF Klasse, mit der man einen Block erzeugen kann, dessen Eckdaten dann für eine OpenFOAM Beschreibung angezeigt werden können:

#! NX/KF 5.0
Defclass: GEA_OpenFOAM_Block (%ui_comp);
#+
This is use to create a block with definitions for OpenFOAM Blockmesh.
#-

#  nx_application attributes
(String) application_name:  "OpenFOAM Block";
(Boolean) use_slaves?:  TRUE;
(Name) Apply_state: Edit;

(list) DialogItems:
{
block_center:,
XparametersGroup:,
YparametersGroup:,
ZparametersGroup:,
blockmesh_info:;
# trans:;
};

(string) Title: "Create OpenFOAM Block";
(string) cue: "Create a Block";

(child) block_center:
{
class, %ui_comp_point;
Sensitivity, true;
Point, point(0,0,0);
LabelString, "Block center";
GwifType, 0;
};

(child) XparametersGroup:
{
class, %ui_comp_group;
Title, "X Parameters";
Column, 1;
Members,
{
x_grid:,
x_pos:,
x_neg:
};
Group, true;
};

(child) YparametersGroup:
{
class, %ui_comp_group;
Title, "Y Parameters";
Column, 1;
Members,
{
y_grid:,
y_pos:,
y_neg:
};
Group, true;
};

(child) ZparametersGroup:
{
class, %ui_comp_group;
Title, "Z Parameters";
Column, 1;
Members,
{
z_grid:,
z_pos:,
z_neg:
};
Group, true;
};

(child) BlockMeshGroup:
{
class, %ui_comp_group;
Title, "Blockmesh";
Members,
{
blockmesh_string:;
};
Group, true
};

(child) x_grid:
{
class, %ui_comp_expression;
Title, "X Grid Size";
value, 5;
};

(child) x_pos:
{
class, %ui_comp_integer;
Title, "X Offset (+)";
value, 5;
};

(child) x_neg:
{
class, %ui_comp_integer;
Title, "X Offset (-)";
value, 5;
}; 

(child) y_grid:
{
class, %ui_comp_expression;
Title, "Y Grid Size";
value, 5;
};

(child) y_pos:
{
class, %ui_comp_integer;
Title, "Y Offset (+)";
value, 5;
};

(child) y_neg:
{
class, %ui_comp_integer;
Title, "Y Offset (-)";
value, 5;
};

(child) z_grid:
{
class, %ui_comp_expression;
Title, "Z Grid Size";
value, 5;
};

(child) z_pos:
{
class, %ui_comp_integer;
Title, "Z Offset (+)";
value, 5;
};

(child) z_neg:
{
class, %ui_comp_integer;
Title, "Z Offset (-)";
value, 5;
};

#(child) trans:
#{
# class, %ui_comp_integer;
# Title, "translucency";
# value, 20;
#};

(child) blockmesh_info:
{
        class,  %ui_comp_button;
        Title,  "OpenFOAM blockmesh description";
};

#(Method Integer) OnInitialize Instance $instance) @{
#    if ($instance = trans: ) then @{
#        #%ui_comp_setCacheValue(self:, Size:, uiSize:, Value);#
# ug_vd_si_set_translucency(body:, trans:value: );
# }
#  #else if ($instance = uiLoc: ) then @{
#    #    %ui_comp_setCacheValue(self:, Loc:, uiLoc:, Point); }
#    else doNothing;
#    0;
#};


#Update Mechanism for UI blocks (Action Listeners)
(Method uncached Integer) Update Instance $instance)
@{
if ($instance = blockmesh_info then
@{
ug_printvalues("This is the description of the block in the OpenFOAM" +"~n"+
"blockmesh format. Copy the segment below into the" +"~n"+
"related blockmesh dictionary file to the" +"~n"+
"constant\polymesh" +"~n"+
"sub folder of your OpenFOAM case directory" +"~n"+
"***************************************************" +"~n"+
"convertToMeters 1;" +"~n"+
"" +"~n"+
"vertices" +"~n"+
"(" +"~n"+
"  (" + format("%8.3f",LocalX(BLOCK rigin * 0.001) +
" "    + format("%8.3f",LocalY(BLOCK rigin * 0.001) +
" "    + format("%8.3f",LocalZ(BLOCK rigin * 0.001) + ")" +"~n" +
"  (" + format("%8.3f",LocalX(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , 0 , 0) ) * 0.001) +
" "    + format("%8.3f",LocalY(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , 0 , 0) ) * 0.001) +
" "    + format("%8.3f",LocalZ(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , 0 , 0) ) * 0.001) + ")" +"~n"+
"  (" + format("%8.3f",LocalX(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , 0) ) * 0.001) +
" "    + format("%8.3f",LocalY(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , 0) ) * 0.001) +
" "    + format("%8.3f",LocalZ(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , 0) ) * 0.001) + ")" +"~n"+
"  (" + format("%8.3f",LocalX(BLOCK rigin: + vector( 0 , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , 0) ) * 0.001) +
" "    + format("%8.3f",LocalY(BLOCK rigin: + vector( 0 , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , 0) ) * 0.001) +
" "    + format("%8.3f",LocalZ(BLOCK rigin: + vector( 0 , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , 0) ) * 0.001) + ")" +"~n" +
"  (" + format("%8.3f",LocalX(BLOCK rigin: + vector( 0 , 0 , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) +
" "    + format("%8.3f",LocalY(BLOCK rigin: + vector( 0 , 0 , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) +
" "    + format("%8.3f",LocalZ(BLOCK rigin: + vector( 0 , 0 , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) + ")" +"~n"+
"  (" + format("%8.3f",LocalX(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , 0 , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) +
" "    + format("%8.3f",LocalY(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , 0 , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) +
" "    + format("%8.3f",LocalZ(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , 0 , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) + ")" +"~n"+
"  (" + format("%8.3f",LocalX(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) +
" "    + format("%8.3f",LocalY(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) +
" "    + format("%8.3f",LocalZ(BLOCK rigin: + vector( x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value: , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) + ")" +"~n"+
"  (" + format("%8.3f",LocalX(BLOCK rigin: + vector( x_pos:value: * 0 , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) +
" "    + format("%8.3f",LocalY(BLOCK rigin: + vector( x_pos:value: * 0 , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) +
" "    + format("%8.3f",LocalZ(BLOCK rigin: + vector( x_pos:value: * 0 , y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value: , z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value: ) ) * 0.001) + ")" +"~n"+
");" +"~n"+
"" +"~n"+
"blocks" +"~n"+
"(" +"~n"+
"  hex ( 0 1 2 3 4 5 6 7) (" +
format("%d", x_pos:value: + x_neg:value +
" " + format("%d", y_pos:value: + y_neg:value +
" " + format("%d", z_pos:value: + z_neg:value +
") simpleGrading (1 1 1)" +"~n"+
");" +"~n"+
"***************************************************" +"~n"
);
}
#else if ($instance = trans then
#@{
## ug_printvalues("This is the description of the block in the OpenFOAM");
# ug_vd_si_set_translucency(block:, trans:value: );
#}
  else doNothing;
  0;
};

(Child) BLOCK:
{
Class, nx_block;
Length, x_pos:value: * x_grid:value: + x_neg:value: * x_grid:value:;
Width, y_pos:value: * y_grid:value: + y_neg:value: * y_grid:value:;
Height, z_pos:value: * z_grid:value: + z_neg:value: * z_grid:value:;
origin, block_center oint: + vector(x_neg:value: * x_grid:value: * (-1), y_neg:value: * y_grid:value: * (-1), z_neg:value: * z_grid:value: * (-1));
orientation, {x_axis,Vector(1,0,0),y_axis,Vector(0,1,0)};
Boolean_Type, create;
Target, nx_null();
Suppressed, FALSE;
Name, "OpenFOAM Block";
};

(Child) body:
{
  Class,        ug_body;
  Feature,      { block: };
  Layer,        1;
  Color,        ug_askClosestColor(green);
};

Gruß

Matthias

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 01. Jun. 2011 02:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

hallo mathias und co,
danke, werde die hilfe anschauen, habe noch paar quellen gefunden mit den ich "üben" kann,
kann mir kurz einer die logik erklären, warum in features und objekte unterschieden wird,
bzw. was hostpointer sind?
...ist mir beim Schreiben von Bedingungen aufgefallen, das ich Objekte nicht direkt nutzen kann sondern mit ug_ref_object arbeiten muss... vielleicht kann jeman dazu was erzählen 
gute nacht
motard



Entwicklungsingenieur*in (m/w/d)

Die Kunsthochschule für Medien Köln fordert die interdisziplinäre Auseinandersetzung mit den medialen Künsten. Sie bietet ein anspruchsvolles Projektstudium "Mediale Künste" mit Diplomabschluss an. Künstlerische Praxis, verbunden mit der Aneignung medientechnischer und theoretischer Kompetenzen, hat Priorität und wird durch vielfältige Aufgaben in Technik und Verwaltung unterstützt.

Das Interface Labor gehört zu dem Bereich der Labore und Werkstätten der Hochschule....

Anzeige ansehenEntwicklung
MAhrens
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von MAhrens an!   Senden Sie eine Private Message an MAhrens  Schreiben Sie einen Gästebucheintrag für MAhrens

Beiträge: 528
Registriert: 17.11.2000

SAP,TC8.3,NX7.5,T4S

erstellt am: 18. Jun. 2011 08:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo motard,

da die NIXE Features kennt, die zu mehreren resultierenden Geometrieobjekten führen können, unterscheidet die Software strikt zwischen Objekten und Features.

Gruß

Matthias

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz