Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Pro ENGINEER
  Jlink: Variantenparameter in generisches Modell übernehmen?

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 Creo
  
Effiziente Migration nach PTC Windchill: Software Factory stellt Migration Factory für komplexe Transformationsprojekte vor, eine Pressemitteilung
Autor Thema:  Jlink: Variantenparameter in generisches Modell übernehmen? (1654 mal gelesen)
magic_halli
Mitglied



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

Beiträge: 361
Registriert: 03.07.2006

WF2 M210 / WF3 M110
Linux Fedora C4
WinXP Pro
Java 1.6.0_06

erstellt am: 09. Jan. 2008 13:12    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

Hi,

ich habe ein generisches Model geöffnet. Jetzt habe ich mittels Jlink eine Variante des gen.Models, aufgrund bestimmter Berechnungen, erhalten... d.h. ich habe den Variantenname vorliegen.
Ich möchte nun das generische Modell in meiner Baugruppe durch diese eine Variante ersetzen. Dazu habe ich mir überlegt, dass ich "einfach" alle Parameterwerte aus der Familientabelle von der Variante ins generische Modell einsetze.

Somit wäre doch dann in meiner Baugruppe statt dem gen.Modell die eine Variante verbaut und sichtbar, oder?
Wenn nicht, wie könnte ich sonst mein Vorhaben lösen (mit Jlink)? (ich suche eigentlich noch einen geeigneten Ansatz    )

Danke und Gruß.

PS: Es gibt doch die Funktion "Ersetzen" in ProE, wo ich quasi ein gen.Teil durch eine Variante ersetzen kann... das will ich eigentlich mit Jlink realisieren - also automatisch ausführen lassen. Gibts hierfür Jlink-Methoden???

[Diese Nachricht wurde von magic_halli am 09. Jan. 2008 editiert.]

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

anagl
Ehrenmitglied V.I.P. h.c.
 


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

Beiträge: 4566
Registriert: 28.05.2001

CREO2 M140
PDMLink 10.2 M020
HW diverse
Das Schreiben bei CAD.de ist freiwillig und kein Muss !!!!!

erstellt am: 09. Jan. 2008 13:18    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 Nur für magic_halli 10 Unities + Antwort hilfreich

In der Baugruppe ersetzen siehe  nachfolgenden Auszug aus der Doku

Example Code: Replacing Instances
The following example code contains a single static utility method. This method takes an assembly for an argument. It searches through the assembly for all components that are instances of the model "bolt". It then replaces all such occurrences with a different instance of bolt.

import com.ptc.cipjava.*;
import com.ptc.pfc.pfcGlobal.pfcGlobal;
import com.ptc.pfc.pfcSession.Session;
import com.ptc.pfc.pfcModel.*;
import com.ptc.pfc.pfcSolid.Solid;
import com.ptc.pfc.pfcFeature.*;
import com.ptc.pfc.pfcComponentFeat.*;
import com.ptc.pfc.pfcFamily.FamilyTableRow;
import com.ptc.pfc.pfcBase.*;
import com.ptc.pfc.pfcSelect.*;
import com.ptc.pfc.pfcModelItem.*;
import com.ptc.pfc.pfcAssembly.*;

public class pfcComponentFeatExamples {

     /**
      * replaceBolts automatically replaces all occurrences of the
      * bolt "phillips7_8" with a new instance "slot7_8".  It uses
      * the methods available in the ComponentFeat class, including
      * CreateModelReplace (), which creates a replacement operation
      * for a component, and GetModelDescr (), which returns the model
      * descr corresponding to a particular component feature.
      */
    
     public static void replaceBolts (com.ptc.pfc.pfcAssembly.Assembly
                                      assembly)
     {
          Session session = null;    //The Pro/E session object
          Solid bolt = null;         // The bolt solid model
          FamilyTableRow row = null; // The family table row corresponding
                                     // to the new instance
          Solid newBolt;             // The new bolt instance
          Features components;       //List of components in the assembly
          ComponentFeat component;
          ModelDescriptor desc;      // Component model descriptor
          CompModelReplace replace;
          FeatureOperations replaceOps;
          String oldInstance = "PHILLIPS7_8";
          String newInstance = "SLOT7_8";
          try {
               session = pfcGlobal.GetProESession();
               bolt = (Solid)session.GetModel ("BOLT", ModelType.MDL_PART);
          }
          catch (jxthrowable x)
          {
               System.out.println ("Caught exception: "+x);
               x.printStackTrace();
               return;
          }
          try {
               row = bolt.GetRow (newInstance); 
               newBolt = (Solid)row.CreateInstance();
               replaceOps = FeatureOperations.create();
               components = assembly.ListFeaturesByType (Boolean.FALSE,
                                         FeatureType.FEATTYPE_COMPONENT);
               for (int ii = 0; ii < components.getarraysize(); ii++)
               {
                    component = (ComponentFeat)components.get(ii);
                    desc = component.GetModelDescr();
                    if (desc.GetInstanceName().equals(oldInstance))
                    {
                         replace = component.CreateReplaceOp (newBolt);
                         replaceOps.insert(0, replace);
                    }
               }
               assembly.ExecuteFeatureOps (replaceOps, null);
          }
          catch (jxthrowable x)
          {
               System.out.println ("Caught exception: "+x);
               x.printStackTrace();
               return;
          }
     return;
     }
}

HTH

------------------
Servus   
Alois      Keine Mouseover-Werbung zwischen den Zeilen!!!!

[Diese Nachricht wurde von anagl am 09. Jan. 2008 editiert.]

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

magic_halli
Mitglied



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

Beiträge: 361
Registriert: 03.07.2006

WF2 M210 / WF3 M110
Linux Fedora C4
WinXP Pro
Java 1.6.0_06

erstellt am: 09. Jan. 2008 15:01    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

Hi,

danke erstmal. Leider hat sich ergeben, dass ich es so nicht machen kann!
Nach Rücksprache mit Chef hat dieser gemeint, es müssen die Werte der einzelnen FamTab-Zellen dieser einen Variante in die Paramterliste eingetragen werden (wegen Zeichnungsregenerierung!). Nun gut...

Jetzt ist mir aber eines nicht ganz klar:
Wie kann ich von einer mir bekannte Variante (entspricht einer FamTab-Zeile) alle FamTab-Spalten durchlaufen???
Hier mal ein kleiner Ansatz, wo ich dann aber nicht klarkommen, den Bezug von spezieller Zeile und den zugehörigen Spalten herzustellen:

Code:

FamilyMember mem = (Solid)model;
FamilyTableRow row = mem.GetRow(sErgebnisVariante); //Zeile der Variante
FamilyTableColumns columns = mem.ListColumns(); //Spalten

//jede Spalte der einen Zeile durchgehen
for(int i=0;i<columns.getarraysize();i++){
String sSpaltenname = ???
double dValue = ???
}


Mh, irgendwie hab ich mich gedanklich verrannt... kann mir jemand auf die Sprünge helfen?

Danke.

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

anagl
Ehrenmitglied V.I.P. h.c.
 


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

Beiträge: 4566
Registriert: 28.05.2001

CREO2 M140
PDMLink 10.2 M020
HW diverse
Das Schreiben bei CAD.de ist freiwillig und kein Muss !!!!!

erstellt am: 09. Jan. 2008 15:17    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 Nur für magic_halli 10 Unities + Antwort hilfreich

Wie wäre es mit (Auszug aus Doku)

SetCell

void SetCell (FamilyTableColumn Column, FamilyTableRow Row, ParamValue Value) 

    Sets the value of the specified cell in the family table.

See Also:
FamilyMember.GetCell(FamilyTableColumn, FamilyTableRow), pfcModelItem.CreateIntParamValue(int), pfcModelItem.CreateDoubleParamValue(double), pfcModelItem.CreateStringParamValue(String), pfcModelItem.CreateBoolParamValue(boolean)
Manual References:
Manual Reference 1, Manual Reference 2
Parameters:
Column
The column where the cell is located.
Row
The row where the cell is located.
Value
The new cell value. 

------------------
Servus
Alois      Keine Mouseover-Werbung zwischen den Zeilen!!!!

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

magic_halli
Mitglied



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

Beiträge: 361
Registriert: 03.07.2006

WF2 M210 / WF3 M110
Linux Fedora C4
WinXP Pro
Java 1.6.0_06

erstellt am: 09. Jan. 2008 15:29    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

Mh, also ich brauche ja die Cell´s für jede Spalte in der speziellen FamTab-Zeile!
FamilyMember.GetCell(FamilyTableColumn, FamilyTableRow) wäre dann ja auch das Richtige?! Die FamilyTableRow (Zeile) habe ich ja auch bereits:
Code:

FamilyMember mem = (Solid)model;
FamilyTableRow row = mem.GetRow(sErgebnisVariante); //Zeile der Variante


Mir ist aber nur unklar, wie ich jede einzelne FamilyTableColumn (Spalte) dieser Zeile anspreche!!!

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

magic_halli
Mitglied



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

Beiträge: 361
Registriert: 03.07.2006

WF2 M210 / WF3 M110
Linux Fedora C4
WinXP Pro
Java 1.6.0_06

erstellt am: 09. Jan. 2008 15:50    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

Ich habs hinbekommen! 

So kann ich jeden einzelnen Cell-Value EINER Zeile ermitteln:

Code:

FamilyMember mem = (Solid)model;
FamilyTableRow row = mem.GetRow(sErgebnisVariante); //Zeile der Variante
FamilyTableColumns columns = mem.ListColumns(); //Spalten
FamilyTableColumn column;

//jede Spalte der einen Zeile durchgehen
for(int i=0;i<columns.getarraysize();i++){
    column = columns.get(i);
    //jeweiliger Cell-Value
    ParamValue pValue = mem.GetCell(column, row);
}

Gruß


PS: Ich hatte doch einen kleinen Knoten im Denkvorgang... 

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)2024 CAD.de | Impressum | Datenschutz