Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  POS_DYNAMIC zeigt keinen Dialog

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 PTC CREO
Autor Thema:  POS_DYNAMIC zeigt keinen Dialog (1175 mal gelesen)
lisp-loser
Mitglied
Ingenieur


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

Beiträge: 33
Registriert: 09.09.2005

erstellt am: 31. Jul. 2008 13: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

Aloha,

die Sonne brennt, das Hirn schmilzt und ein neues Problem stellt sich der Person vor der Tastatur :-)

Die Aufgabe:
Ein Befehl, der ein benanntes PKG-File in ein neues Fenster läd, den Copiloten aufruft, der die Positionierung ermöglicht und anschließend das Fenster wieder schließt.

Der Schnellschuss:

Code:

(defun COMMON-LISP-USER::MY_LOADPKG
  (create_vp
    :corner_1 (make-gpnt2d :x 0 :y 0)
    :corner_2 (make-gpnt2d :x 600 :y 600)
    :name "Positionieren"
  )
  (load-cluster-load-mode :LOAD-DUP-AS-NEW)
  (load_package "x:/test.pkg")
  (POS_DYNAMIC)
  (when (sd-inq-vp-exists-p "Positionieren")
    (delete_vp "Positionieren")
  )
)

Problem:
Der Code läuft durch. Fenster auf, Teil wird geladen, Fenster zu und kein Copilot in Sicht. Wo ist mein Denkfehler?

Gruß

  lisp_loser

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 31. Jul. 2008 13:43    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 lisp-loser 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von lisp-loser:
Der Code läuft durch. [...] Wo ist mein Denkfehler?

Du beschreibst das Problem schon sehr treffend: Der Code läuft einfach durch - es gibt schlicht keine Stelle darin, in der Du auf Eingaben des Anwenders wartest.

Claus

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/

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

lisp-loser
Mitglied
Ingenieur


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

Beiträge: 33
Registriert: 09.09.2005

erstellt am: 31. Jul. 2008 13:54    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 hätte gedacht, dass POS_DYNAMIC genau diese Eingabe erzwingt?! Wie erzeugt man denn einen interaktiven Copiloten?

fragt sich

  lisp_loser

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 31. Jul. 2008 16:03    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 lisp-loser 10 Unities + Antwort hilfreich

POS_DYNAMIC, ohne Klammern in der Kommandozeile eingegeben, wird interaktiv. Die voll qualifizierte Variante (POS_DYNAMIC) startet und beendet sich sofort ohne Interaktion.

Sowas schreibt man wohl am besten gleich als Dialog, denke ich.

Claus

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/

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

lisp-loser
Mitglied
Ingenieur


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

Beiträge: 33
Registriert: 09.09.2005

erstellt am: 31. Jul. 2008 19:06    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

Ok, dann müsste ich meine Fenster-Löschbefehle am Ende der Funktion entfernen und dort ein
(sd-call-dialog  "MY-POS_DYNAMIC") einfügen.

Dieser Dialog müsste dann POS_DYNAMIC z.B. als Pushbutton aufrufen und wenn ich fertig mit Positionieren bin, mit Klick auf OK mein Fenster löschen.

Das muss doch eleganter gehen! (zumal ich nicht glaube, dass wenn ein Dialog geöffnet ist, ein anderer sich daneben öffnen kann)

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

Markus Kuehl
Mitglied



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

Beiträge: 165
Registriert: 22.06.2001

erstellt am: 01. Aug. 2008 08:00    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 lisp-loser 10 Unities + Antwort hilfreich

Hallo,

wenn Du darauf verzichten kannst, den Viewport nach dem Positionieren zu loeschen, dann kann Du als letzte Zeile von Deiner Funktion folgendes schreiben:

  (oli:sd-put-buffer "pos_dynamic").

Damit landest Du im CoPiloten. Nach dem Positionieren bleibt allerdings Dein neuer Viewport stehen und muss per Hand geloescht werden.

Eine ideale Loesung ist wesentlich aufwendiger und dazu muesstest Du einen sd-defdialog schreiben mit einer position-part Variablen (etc.).

Gruss,
Markus

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

lisp-loser
Mitglied
Ingenieur


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

Beiträge: 33
Registriert: 09.09.2005

Varicad Linux 2019-1.03, Ubuntu 16.04

erstellt am: 01. Aug. 2008 08:55    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

@Markus Kuehl:

danke für den Hinweis. sd-put-buffer und sd-call-dialog scheinen in ihrer Wirkung gleichwertig zu sein. Eigentlich wäre ich schon an der idealen Lösung interessiert, allerdings gestaltet sich die Suche nach dem "wie" als schwierig. "position-part" ist wieder so ein Stichwort, wo ich dann gleich mal versuche, was drüber zu finden :-)

@all:
Ich werfe aber mal noch zwei andere Gedanken ein und stelle die Frage, ob sowas funktionieren könnte:

Gibt es sowas wie Call-Back oder Buche-Event Funktionen? Also, man schreibt die Fensterlösch-Funktion und sagt, wenn das Event "CoPilot-Dialog wurde gelöscht" kommt, dann führe meine Funktion aus.

In der Online-Referenz steht, dass POS_DYNAMIC eine "terminate" Action ist und einen "sequential dialog" hat:
Genaues Zitat: " 1. Input (CALL-DYNAMO) :value-type :STRING calls subaction DYNAMO"
Wenn ich mir die Doku zum sd-def-dialog anschaue (4.2.3), kommt dir der Gedanke, dass man einen sequential Dialog doch an einen bestehenden Dialog anheften könnte . Bisherige Versuche führten allerdings noch zu keiner Lösung.

Ich bin weiter an Feedback interessiert :-)

Viele Grüße

  lisp_loser

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

lisp-loser
Mitglied
Ingenieur


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

Beiträge: 33
Registriert: 09.09.2005

erstellt am: 01. Aug. 2008 12:21    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

here we go:

(in-package  :custom) 
(use-package :OLI) 
 

  sd-defdialog 'MY-LOADPKG-DIALOG 
  :dialog-title "Paket laden" 
  :variables 
  '( 
    (Positionieren 
      :value-type     :list 
      :title          "Position" 
      :subaction-name DYNAMO 
    ) 
  ) 
  :ok-action '(cleaning) 
  :local-functions  
    '( 
      (cleaning () 
        (when (sd-inq-vp-exists-p "Positionieren") 
          (delete_vp "Positionieren") 
        ) 
      ) 
    ) 

 
(defun COMMON-LISP-USER::MY_LOADPKG  
  (create_vp 
    :corner_1 (make-gpnt2d :x 0 :y 0) 
    :corner_2 (make-gpnt2d :x 600 :y 600) 
    :name "Positionieren" 
  ) 
  (load-cluster-load-mode :LOAD-DUP-AS-NEW) 
  (load_package "x:/test.pkg") 
  (sd-call-dialog 'MY-LOADPKG-DIALOG) 

 
 
So, jetzt muss ich mal sehen, wie ich die Teile aus dem PKG-File vorselektiere und dem Dynamo übergebe.

Bye

lisp_loser

[Diese Nachricht wurde von lisp-loser am 06. Aug. 2008 editiert.]

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

lisp-loser
Mitglied
Ingenieur


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

Beiträge: 33
Registriert: 09.09.2005

Varicad Linux 2019-1.03, Ubuntu 16.04

erstellt am: 01. Aug. 2008 15:28    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

Bevor es ins Wochenende geht, noch etwas Input.
In der Zwischenzeit bin ich in der Doku auf Kapitel "4.1.6.3 Positioning Parts and Workplanes" gestoßen, was wohl der Realisierung des PKG-Lade-Befehls im Modeller 2008 entspricht.
Durch Definition der Dialog-Variablen POSITIONING  osition-part a_part wird der Copilot aufgerufen ohne dass irgendwelche DYNAMO-Tricks notwendig sind.

Allerdings reagiert das Teil doch recht empfindlich auf Sel_Items, die nicht einem einzelnen Part entsprechen. Da ist der PKG-Load-Befehl unempfindlich. Da wird alles positioniert, was gerade geladen wurde.

Hat schon mal jemand mit  osition-part ähnlichs programmiert, so dass ich davon was lernen könnte?

Schönes Wochenende

  lisp-loser

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