Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Pro ENGINEER
  JLink: Elemente in Drawings hinzufügen

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
Autor Thema:  JLink: Elemente in Drawings hinzufügen (326 mal gelesen)
s.kaiser
Mitglied
Associate Technologist


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

Beiträge: 43
Registriert: 31.07.2007

ProE WF2
P4 3Ghz
1gb ram
WinXp
Java SDK1.4.2.12

erstellt am: 20. Aug. 2007 18:40    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

Abend Community,

ich versuche zur Zeit einem bestehenden Drawing eine Notiz/einen String hinzuzufügen. Dies versuche ich zu realisieren, indem ich
folgendes im Programm abarbeite:

------------

drawing.SetCurrentSheetNumber(1);

DetailText dText = pfcDetail.DetailText_Create("TestString");

DetailTexts texts = DetailTexts.create();

texts.insert(0, dText);

DetailTextLine textLine = pfcDetail.DetailTextLine_Create(texts);

DetailTextLines textLines = DetailTextLines.create();

textLines.insert(0, textLine);

Point3D text = Point3D.create();
text.set(0, 60.0);
text.set(1, 60.0);
text.set(2, 0.0);

FreeAttachment position = pfcDetail.FreeAttachment_Create(text);

// attachment structure
DetailLeaders allAttachments = pfcDetail.DetailLeaders_Create();

allAttachments.SetItemAttachment(position);

// note description
DetailNoteInstructions instrs = pfcDetail.DetailNoteInstructions_Create(textLines);

instrs.SetLeader(allAttachments);
instrs.SetHorizontal(HorizontalJustification.H_JUSTIFY_CENTER);
instrs.SetVertical(VerticalJustification.V_JUSTIFY_MIDDLE);

drawing.CreateDetailItem(instrs);

drawing.RegenerateSheet(1);

drawing.Display();

--------------------------

Das Problem hierbei ist allerdings, dass weder die regenerierung ausgeführt wird, noch wird die Drawing anschließend angezeigt.

Deshalb meine Frage, weiß jemand Rat? Woran liegt es, dass ich meine Drawings nicht aktualisieren kann? Mache ich vielleicht etwas grundsätzliches Falsch?

Vielen Dank für eure Unterstützung.

P.s.: Wie kann man eigentlich auf Textelemente in einer Drawing zugreifen, um diese zu löschen bzw. zu editieren?
Beispiel, ich hab einen Textblock mit folgender Bezeichnung: ID127Notes und möchte auf diesen zugreifen.

------------------
Geht nicht, gibt's nicht!

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

JLinker
Mitglied
CAD Administrator / Konstrukteur


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

Beiträge: 36
Registriert: 10.03.2007

ProE Wildfire 2.0 M270 /3.0 M090
Intralink 3.4 M040
PDMLink 9.0 F000<P>HP xw4400
NVIDIA QuadroFX 1500
NVIDIA Treiber 84.80
WinXP SP2

erstellt am: 21. Aug. 2007 06:53    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 s.kaiser 10 Unities + Antwort hilfreich

Hallo,


versuch statt der Zeile mit:

Code:

drawing.CreateDetailItem(instrs);

folgendes:

Code:

DetailNoteItem note = (DetailNoteItem)drawing.CreateDetailItem(instrs);
note.show();

Damit sollte das Regenerieren nicht mehr notwendig sein.

Gruß,
Günther

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

s.kaiser
Mitglied
Associate Technologist


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

Beiträge: 43
Registriert: 31.07.2007

ProE WF2
P4 3Ghz
1gb ram
WinXp
Java SDK1.4.2.12

erstellt am: 21. Aug. 2007 09:15    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

Erst einmal vielen Dank für den Tipp, jedoch bleibt das Problem weiterhin bestehen:

Es wird mir weder eine änderung im DrawingSheet angezeigt noch scheint er überhaupt etwas wirklich hinzuzüfügen.

Ich hab allerdings gerade herausgefunden, wenn ich das programm ein zweites mal durchlaufen lasse, dass er mir dann den String anzeigt    

Da kann ja irgendetwas nicht ganz stimmen

------------------
Geht nicht, gibt's nicht!

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: 21. Aug. 2007 10: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 s.kaiser 10 Unities + Antwort hilfreich

1. Mögleicherweise musst Du deine Notiz einem View oder dem sogenannten Backgroundview zuordnen
siehe in dem Beispiel über das Erzeugen einer Notiz an eine Fläche in der Dokumentaion die Zeile  position.SetView (dwgView);

2. Auf vorhandene Notizen kann man mit  GetInstructions (boolean GiveParametersAsNames) zugreifen

3. Warum machst Du nicht alles im Modell.
  Du änderst Maße im Modell und  dann änderst du Parameter, die auf der Zeichnung in Notizen gezeigt werden

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

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

JLinker
Mitglied
CAD Administrator / Konstrukteur


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

Beiträge: 36
Registriert: 10.03.2007

ProE Wildfire 2.0 M270 /3.0 M090
Intralink 3.4 M040
PDMLink 9.0 F000<P>HP xw4400
NVIDIA QuadroFX 1500
NVIDIA Treiber 84.80
WinXP SP2

erstellt am: 21. Aug. 2007 11: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 Nur für s.kaiser 10 Unities + Antwort hilfreich

Könnte es sein, dass die Notizen da ist aber nicht angezeigt wird. Hast du schon mal nach der Ausführung deines Programms das Blatt mit Anischt > Aktualisieren > Aktuelles Blatt neu regeneriert?

Ich hab noch mal in meinem Programm nachgesehen und ich mach nach dem Absetzen der Notiz noch folgendes:

Code:

Window curWin = pfcGlobal.GetProESession().GetCurrentWindow();
curWin.Repaint();
drw.Regenerate();


Gruß,
Günther

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

s.kaiser
Mitglied
Associate Technologist


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

Beiträge: 43
Registriert: 31.07.2007

ProE WF2
P4 3Ghz
1gb ram
WinXp
Java SDK1.4.2.12

erstellt am: 21. Aug. 2007 12:23    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

also irgendwie hilft das alles nicht so recht weiter. Ich skizziere noch einmal den Programmablauf, vielleicht lässt sich daraus ja erschließen wo mein Fehler liegt:

Ausgangspunkt:
vorhandenes Modell dazugehöriges Drw

1 erstelle Kopie des Modells und der Drw
2 beziehe die Kopie des Modell
3 ändere die Bemaßung des kopierten modells
4 regeneriere dieses Modell
5 beziehe das dazugehörige Drw
6 füge eine Notiz hinzu

------------------
Geht nicht, gibt's nicht!

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: 21. Aug. 2007 12:52    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 s.kaiser 10 Unities + Antwort hilfreich

Ausgangspunkt:
vorhandenes Modell dazugehöriges Drw

1 erstelle Kopie des Modells und der Drw
2 beziehe die Kopie des Modell
3 ändere die Bemaßung des kopierten modells
3b ändere Parameter im Modell (z.B. Farbe)
4 regeneriere dieses Modell
5 beziehe das dazugehörige Drw
6 füge eine Notiz hinzu entfällt
6b alle Notizen, die die Modelparamter abbilden werden aktualisiert (Die Notiz stellt den Wert des Parameters mit z.B &Farbe dar
Damit brauchst Du keine neuen Notizen auf der Zeichnung erstellen

Die Funktionalität der Parameter in Pro/E ist Dir Bekannt?

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

[Diese Nachricht wurde von anagl am 21. Aug. 2007 editiert.]

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

JLinker
Mitglied
CAD Administrator / Konstrukteur


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

Beiträge: 36
Registriert: 10.03.2007

ProE Wildfire 2.0 M270 /3.0 M090
Intralink 3.4 M040
PDMLink 9.0 F000<P>HP xw4400
NVIDIA QuadroFX 1500
NVIDIA Treiber 84.80
WinXP SP2

erstellt am: 21. Aug. 2007 14:13    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 s.kaiser 10 Unities + Antwort hilfreich

Also bei mir funktioniert der folgende Code:

Code:

Model model = curSession.GetCurrentModel();
Drawing drawing = (Drawing)model;
                   
drawing.SetCurrentSheetNumber(1);

DetailText dText = pfcDetail.DetailText_Create("TestString");
DetailTexts texts = DetailTexts.create();
texts.insert(0, dText);
DetailTextLine textLine = pfcDetail.DetailTextLine_Create(texts);
DetailTextLines textLines = DetailTextLines.create();
textLines.insert(0, textLine);

Point3D text = Point3D.create();
text.set(0, 60.0);
text.set(1, 60.0);
text.set(2, 0.0);

FreeAttachment position = pfcDetail.FreeAttachment_Create(text);

// attachment structure
DetailLeaders allAttachments = pfcDetail.DetailLeaders_Create();
allAttachments.SetItemAttachment(position);

// note description
DetailNoteInstructions instrs = pfcDetail.DetailNoteInstructions_Create(textLines);

instrs.SetLeader(allAttachments);
instrs.SetHorizontal(HorizontalJustification.H_JUSTIFY_CENTER);
instrs.SetVertical(VerticalJustification.V_JUSTIFY_MIDDLE);

DetailNoteItem dni = (DetailNoteItem)drawing.CreateDetailItem(instrs);
dni.Show();

drawing.RegenerateSheet(1);

drawing.Display();


Einzige Ergänzung ist der Aufruf der Show() Methode auf das DeteilNoteItem. Die Notiz wird links neben der linken unteren Ecke des Zeichnungsbereichs erzeugt (außerhalb des Blattbereichs). Getestet hab ich den Code im asynchronen Modus.


Gruß,
Günther

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

s.kaiser
Mitglied
Associate Technologist


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

Beiträge: 43
Registriert: 31.07.2007

ProE WF2
P4 3Ghz
1gb ram
WinXp
Java SDK1.4.2.12

erstellt am: 21. Aug. 2007 16:32    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

Dieser Code läuft bei mir auch Ich habe in diesem Zusammenhang auch meinen Fehler gefunden. Es scheint so zu sein, dass ich wirklich erst das jeweilige Drawing öffnen muss, damit es läuft. Also indem ich Model model = curSession.GetCurrentModel(); verwenden.

Ich hatte versucht ein model, das während der abarbeitung meines programms läuft in diese funktion reinzuladen. Das hat nicht ganz funktioniert.
Model model = modelDrw;

Jetzt teile ich das programm einfach in zwei parts ein. Dann muss man halt, die jeweilige Zeichnung noch einmal öffnen.

Aber vielen Dank für die Info 

Gruß Basti

------------------
Geht nicht, gibt's nicht!

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