| Verfasser | Bericht |
|---|
acronaut Administrator

|
Geschrieben: 6 Okt 2006 06:28 |
|
Ein sehr schönes Beispiel auf der Adobe Webseite, das eine der super Möglichkeiten zeigt, 3D-PDFs effektiv einzusetzen. Dieses Beispiel beruht auf dynamischen Formularen, die es ermöglichen über das selektieren von Teilen im 3D eine ersatzteilbestellung zusammen zu stellen.
Hier der Link:
http://www.acrobat3d.de/pdf/Adobe_Acrobat_3D_global-corp.pdf
|
Tomm Member
| Eintragen seit: | 28 Nov 2006 |
| Herkunft: | |
| Berichte: | 5 |
| Status: |
Offline
|
|
Geschrieben: 29 Nov 2006 08:26 |
|
Hallo,
eigentlich sollte man ja Teile selektieren können. Geht bei mir nicht! Schade.
Tomm
|
acronaut Administrator

|
Geschrieben: 6 Dez 2006 11:59 |
|
Hi,
erste Frage: Werden die Teile in nem anderen Shading Mode dargestellt?
zweite Frage: Ist unter "Bearbeiten > Grundeinstellungen > JavaScript" die Option "Acrobat JavaScript aktiveren" angeschalten?
Ansonsten würd mir jetzt erst mal auch nix mehr dazu einfallen.
Gruß,
Andreas Vogel
|
Tomm Member
| Eintragen seit: | 28 Nov 2006 |
| Herkunft: | |
| Berichte: | 5 |
| Status: |
Offline
|
|
Geschrieben: 8 Dez 2006 07:26 |
|
Hallo,
die ShadingModes werden gut dargestellt.
Javascript ist aktiviert.
Schwamm drüber.
Gruß Tom
|
Heiko Member
|
Geschrieben: 11 Apr 2007 12:11 |
|
Sehr geehrter Herr Vogel
das Beispiel zur Ersatzteilbestellung find ich sehr interessant.
Ich habe gesehen, dass die verschiedenen Produktdaten in einem
Array in der XML-Quelle eingetragen sind.
Meine Frage ist ob es auch möglich ist, diese Informationen aus einer Datenbank zu
holen? Für sieben Teile geht das natürlich schon wie im Beispiel augeführt problematisch wird es aber wenn mehr Teile die auch noch Änderungen unterzogen sind gehandhabt werden müssen.
Für Anregungen wäre ich sehr dankbar.
Mit freundlichen Grüßen
Heiko Winkler
|
Heiko Member
|
Geschrieben: 19 Apr 2007 13:04 |
|
Kann mir jemand erklären, wie in dem Beispiel die Anlage "Purchase Order.pdf"
geöffnet wird? Hab das komplette Ding auseinandergenommen und komm nicht drauf wie dieser Daniel Beardsley das macht.
Gruß Heiko
|
acronaut Administrator

|
Geschrieben: 3 Mai 2007 21:28 |
|
Hallo Heiko,
sorry, dass eine Antwort so lange auf sich hat warten lassen.... (grad ziemlich viel zu tun)
Also erst einmal zu der ersten Frage. (Anbindung an Datenbank) Dies ist ebenfalls möglich. Wird dann über den sog. Lifecycle Designer oder auch Adobe Designer, der beim Acrobat dabei ist realisiert. Hier ist es möglich auch eine Anbindung an eine Datenbank zu realisieren. Noch interessanter wird es dann natürlich, wenn man einen Blick auf die Adobe Lifecycle Serverprodukte wirft. Hier ist dann noch wesentlich mehr möglich (automatisches befüllen eines PDFs und zurückspielen von Daten in/aus Backend Systemen). Das bedeutet aber gleichzeitig auch, dass es erheblich teurer wird.
Jetzt zur zweiten Frage. David Beardsley öffnet das Bestellformular auf folgendem Wege:
Hinter der Verknüpfung "Add Part to Order" liegt ein JavaScript mit folgendem Inhalt:
var partno = this.getField("SelectedPartNumber").value;
if(partno !== "")
{
var docname = "Purchase Order.pdf";
if (FindOpenDoc(docname) == null)
OpenFile("Untitled Object", docname);
executeCommandAfterDocIsOpened(docname, "AddPartToOrder('" + partno + "');", 0)
}
|
Hier wird erst einmal die Teilebezeichnung aus dem Feld "SelectedPartNumber" ausgelesen.
Dann wrd das Attachment "Purchase Order.pdf" geöffnet. Vorher jedoch wird abgefragt, ob ein derartiges Dokument nicht schon geöffnet ist (er will damit natürlich verhindern, dass bei jeder Teileselektion ein neues Bestellformular geöffnet wird). Das tatsächliche Öffnen passiert dann mit dem Befehl "OpenFile("UntitledObject", docname);" Wobei docname vorher als Variable mit dem eigentlichen Dateinamen versehen wurde. Wenn Sie das selbst nachvollziehen wollen, ist das jedoch ein wenig tricky, da es nicht einfach damit getan ist, das Dokument als Attachment anzuhängen. Dieses muss auf speziellem Wege ins PDF verbracht werden, da man dem Dokument ansonsten keinen eindeutigen Namen vergeben kann, der von der Seite der Programmierung her erkannt wird. Ein weit einfacherer Weg ist, das Bestell-PDF als externe Datei zur Verfügung zu stellen.
Und nun wird es nochmal ein bisschen spezieller. (hört sich aber schlimmer an, als es wirklich ist) Die hinter diesem Button liegenden Funktionen (FindOpenDoc, OpenFile, executeCommandAfterDocIsOpened) sind keine Befehle, die im Acrobat JavaScript bereits vordefiniert sind. Dies sind Funktionsaufrufe, die David nochmal separat programmiert hat (hier wird es wieder einfacher, da man diese genau einmal in einer Vorlage benötigt und der Rest geht dann zukünftig ziemlich schnell und einfach). Die Funktionen befinden sich in der Dokument Ebene, also nicht hinter einem Button. Zugriff darauf hast Du über "Erweitert" > "JavaScript" > "Dokument JavaScripts..."
Hoffe damit die Verwirrung ein wenig aufgeklärt zu haben...
Gruß,
Andreas Vogel
PS: Wenn Bedarf an einer derartigen Vorlage besteht freue ich mich jederzeit über eine Anfrage 
Letzte Änderung am 3 Mai 2007 21:53 von acronaut
|
Heiko Member
|
Geschrieben: 9 Mai 2007 09:53 |
|
Hallo Andreas
Die beiden Scripte welche du ansprichst sind (AddPartToOrder und Functions). Wie das gedacht ist, also das im einen Script die Funktionen "OpenFile" und "FindOpenDoc" erstellt werden und im anderen Script dann geprüft wird ob das Dokument geöffnet ist und der Inhalt von "SelectedPartNumber" über execute an das Formular gereicht wird, dass ist ja alles logisch.
Was ich aber nicht verstehe, ist dass wenn ich z.B. das Attachment lösche und dann aber wieder anhänge, die Verknüpfung nicht mehr gegeben ist.
Außerdem sollte man denken, dass man die Dateibezeichnung "Purchase Order.pdf" auch durch eine andere Dateibezeichnung ersetzen könnte und das neue Attachment dann geöffnet wird. Aber der JavaScript- Debugger benängelt dann immer das dieses "undifined object" nicht bekannt ist.
Hab aber jetzt eigentlich das Problem gelöst indem ich dem Bestellbutton die Action Gehe zu... und dann dein Trick auf das geöffnete Bestellformular zu verweisen, gelöst.
Also Danke nochmal für deine Mühen und bis dann
Gruß Heiko
|
acronaut Administrator

|
Geschrieben: 10 Mai 2007 20:37 |
|
Hallo Heiko,
ja, das mit den Attachments und dem Aufrufen dieser ist tatsächlich alles andere als banal. Du kannst dem Attachment, wenn du es händisch einfügst keinen wirklichen Namen vergeben. Das geht nur, wenn du es über ein z.B. VisualBasic tool von aussen reinschiebst. Dann kannst Du diesen Namen vergeben. Auf diesen Namen bezieht sich dann auch die Bezeichnung für den Aufruf der Datei. Ansonsten ist der Name des Attachments nur leer, oder "undefined" oder so. Da hilft es leider auch nichts, wenn Du dem Attachment im PDF noch nen Namen vergibst. Von daher am besten die Datei extern legen und dann von dortaus öffnen. Das geht komischerweise problemlos.
Gruß,
Andi
Letzte Änderung am 10 Mai 2007 20:56 von acronaut
|
Hendrik82 Member

|
Geschrieben: 24 Mai 2007 16:11 |
|
Hallo,
liegt hinter dem 3D-Modell ein eingebettetes Java-Script? Falls ja, kann ich es mir dann anzeigen lassen?
|
acronaut Administrator

|
Geschrieben: 30 Mai 2007 18:19 |
|
Hi Hendrik,
die schnelle Antwort ist: Ja, Nein
Ja, hinter dem 3D liegt ein JavaScript und nein, man kann es leider nicht mehr anzeigen, wenn es mal drin steckt. Aber schau mal hier nach, da kommst Du vielleicht schon ein wenig auf die Idee, die dahinter steckt.
http://www.acronaut.de/forum8/57.html
Gruß,
Andi
|
Kaju Member
| Eintragen seit: | 26 Sep 2007 |
| Herkunft: | |
| Berichte: | 2 |
| Status: |
Offline
|
|
Geschrieben: 18 Feb 2008 15:19 |
|
Hallo,
ich hab ähnlich wie in oben genanntem Beispiel eine 3D-Ersatzteilliste erstellt. Das heißt ich hab ein PDF mit einem 3D-Modell. Wenn ich auf ein Teil im Modell klicke werden mir auf der Seite verschiedene Informationen zu dem ausgewähltem Teil angezeigt. Soweit funktioniert alles ganz gut.
Um Informationen zu einem Teil zu bekommen muss ich jedoch (wenn ich die Datei neu geöffnet hab) immer zweimal in das Modell klicken bis ich die Infos bekommen. Wenn ich einmal von einem Teil die Infos bekommen hab klappts auch bei den anderen. Habt ihr ne Idee an was das liegen könnt? Das 3D-Modell ist aktiviert sobald die Seite geöffnet ist.
Gibt es außerdem die Möglichkeit ein Teil aus dem Modell per JS auszuwählen bzw. die Auswahl auch wieder aufzuheben?
Grüße
|
acronaut Administrator

|
Geschrieben: 18 Feb 2008 15:51 |
|
Hi,
also das problem beim ersten Teil kenn ich auch.Passiert mir allerdings normalerweis enur dann, wenn ich zu schnell klicke. Ich denke, es liegt daran, dass der Acrobat das JavaScript erst durchgeht, nachdem die Szene vollkommen geladen ist. Das kann allerdings ein klein wneig länger dauern, als man es "mit dem Auge" mitbekommt.
Auszugehen ist ja aber eigentlich davon, dass der Kunde erst mal das Teil dreht und erst dann etwas auswählt. Daher habe ich mir da noch nie größere gedanken drüber gemacht.
Zum selektieren/deselektieren: Soweit ich es jetzt im kopf habe, ist ein deselektieren nicht möglich. Jedoch kannst Du die normale Auswahlfunktion komplett deaktivieren und eben mit der JavaScript Funktion overriden:
| runtime.overrideSelection = true; |
Und dann kannst Du einfach über das Einfärben eines Bauteils oder das Ändern des Rendermodus die Selektfunktion selbst abbilden.
Ein Bauteil einfach von "außen" hervorzuheben ist über JavaScript auch relativ einfach:
getAnnots3D(0)[0].context3D.scene.meshes.getByName("Bauteilname in Anführungszeichen"). material. diffuseColor. set(R,G,B); //R,G,B jeweils zwischen 0 und 1;
oder:
getAnnots3D(0)[0].context3D.scene.meshes.getByName("Bauteilname in Anführungszeichen"). renderMode = illustration; |
Hoffe Dir damit geholfen zu haben.
Gruß,
Andreas Vogel
|
basho84 Member

| Eintragen seit: | 15 Mai 2008 |
| Herkunft: | Deutschland |
| Berichte: | 25 |
| Status: |
Offline
|
|
Geschrieben: 20 Mai 2008 11:25 |
|
acronaut schrieb: Das tatsächliche Öffnen passiert dann mit dem Befehl "OpenFile("UntitledObject", docname);" Wobei docname vorher als Variable mit dem eigentlichen Dateinamen versehen wurde. Wenn Sie das selbst nachvollziehen wollen, ist das jedoch ein wenig tricky, da es nicht einfach damit getan ist, das Dokument als Attachment anzuhängen. Dieses muss auf speziellem Wege ins PDF verbracht werden, da man dem Dokument ansonsten keinen eindeutigen Namen vergeben kann, der von der Seite der Programmierung her erkannt wird. Ein weit einfacherer Weg ist, das Bestell-PDF als externe Datei zur Verfügung zu stellen.
...da man diese genau einmal in einer Vorlage benötigt und der Rest geht dann zukünftig ziemlich schnell und einfach)...
PS: Wenn Bedarf an einer derartigen Vorlage besteht freue ich mich jederzeit über eine Anfrage 
Hallo Andreas,
kannst Du bitte eine Vorlage für das "Dokument JavaScript" posten?
Ich möchte nämlich genau das Beispiel von "Adobe_Acrobat_3D_global-corp.pdf " erstellen und die Funktion "Add part to Order" komplett zum Laufen bringen.
Leider komme ich bei der Übergabe vom Formularfeldwert des jeweils ausgewählten 3D-Objekts an das Formularfeld im Bestellformular nicht weiter. 
Idealerweise möchte ich die Version mit dem eingefügten Attachment analog zum "Adobe_Acrobat_3D_global-corp.pdf "-Beispiel nachbilden. Es soll also automatisch das Bestellformular geöffnet und das selektierte Bauteil inkl. Bestellnummer hinzugefügt werden.
Vielen Dank schon mal für Deine Antwort!
Letzte Änderung am 20 Mai 2008 11:33 von basho84
|
basho84 Member

| Eintragen seit: | 15 Mai 2008 |
| Herkunft: | Deutschland |
| Berichte: | 25 |
| Status: |
Offline
|
|
Geschrieben: 28 Mai 2008 15:14 |
|
ok, die Dokumentenskripte hatte ich übersehen, die kann man ja einsehen, sowie die Skript des Buttons "AddPartToOrder".
Habe das Beispiel von "Adobe_Acrobat_3D_global-corp.pdf" teilweise nachgebaut.
Das Hauptdokument mit der Teileauswahl aus de 3D-Modell funktioniert prima.
Habe dann mittels dem Tool von Andreas Vogel (PDF Attachment Tool) die Anlage "Purchase Order.pdf" angehangen. Dies stammt aus dem Beispiel "Adobe_Acrobat_3D_global-corp.pdf". Die versteckten Felder "AddItemField" und "TempDate" habe ich sichtbar gemacht, um zu prüfen, ob der Klick auf den selbst erstellten "AddToOrder"-Button funktioniert.
Wenn ich die Anlage manuell öffne wird nun endlich der Wert vom Hauptdokument zur Anlage per
oDoc.xfa.form.form1.purchaseOrder.header.AddItemField.rawValue = partno; 
Folgendes funktioniert noch nicht:
- Die Anlage wird nicht nach dem Klicken automatisch geöffnet, dies sollte doch eigentlich die Funktion
OpenFile("UntitledObjekt", docname);
erfolgen!? 
- es erfolgt kein Eintrag mehr in die dynamische Tabelle der Bestellung
Wie Funktioniert das automatische Öffnen der Anlage per Java Script? (Habe ja die Methode mit dem VB-Tool von Andreas Vogel gewählt!?)
Warum erfolgt der dynamische Eintrag in der Original "Purchase Order" nicht mehr?
Letzte Änderung am 29 Mai 2008 17:24 von basho84
|
|
|