| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
| Club Car gewinnt mit Creo Simulation Live, eine Pressemitteilung
|
Autor
|
Thema: Mein erstes Lisp ! (4444 mal gelesen)
|
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 28. Mai. 2008 12:39 <-- editieren / zitieren --> Unities abgeben:
" einfach mal versuchen" hab ich mir gestern zu Herzen genommen und mich durchs I-Kit gekämpft. Meine "Erfindung" ist ein auf Knopfdruck erzeugter Hilfsbolzen, den man zum Positionieren von kompliziert geformten Teilen zur Hilfe nehmen kann. Oder zum Verschieben eines Teils in den positiven Raum. Oder einfach als Anfangsteil, um mal eben etwas zu testen oder zeigen. Es gibt einmal die Möglichkeit, den Bolzen irgendwo zu platzieren (Ursprung, Richtung) oder direkt im Nullpunkt in Z-Richtung. Jetzt hab ich nur noch ein Problem: nach Drücken auf "Bolzen im Nullpunkt" bleibt das Menu noch offen (push-action). Gibt es vielleicht einen Befehl, der das Fenster schließt, wie :done oder :cancel oder so ? Nur ein kleiner Denkanstoß würde mir schon reichen, will ja was lernen ------------------ CoCreate: Hilfeseite I FAQ I Hilfreiche Links Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2164 Registriert: 12.12.2000
|
erstellt am: 28. Mai. 2008 17:57 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
|
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 28. Mai. 2008 18:41 <-- editieren / zitieren --> Unities abgeben:
Ich wollte das eigentlich auch so haben, daß "Nullpunkt" einfach die Werte an "ok-action" übergibt. Hab ich aber nicht hinbekommen und dann fand ich das auch gut, daß der Bolzen im Nullwert mit nur einem Klick da war. Aber der doppelte Code ist natürlich schon blöd. Vielen Dank Walter ! So hab ich erstmal eine Richtung, in die ich weitertüfteln kann.
------------------ CoCreate: Hilfeseite I FAQ I Hilfreiche Links Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
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: 28. Mai. 2008 19:03 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
|
Walter Geppert Moderator Frank und Frei
Beiträge: 2164 Registriert: 12.12.2000
|
erstellt am: 28. Mai. 2008 19:03 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
Du kannst ja default-Werte für URSPRUNG und RICHTUNG vorgeben (und NULLPUNKT am Anfang auch auf T setzen). Dann brauchst du normalerweise nur OK klicken, nur wenn du was anderes willst, hakst du NULLPUNKT aus, setzt damit die beiden anderen Werte auf NIL und kannst dann eingeben was du brauchst. Das ist aber auch nur eine weitere von vielen Möglichkeiten. Man kann einen Dialog mit (sd-disable-must-variable-check) auch so definieren, dass nicht alle Variablen vor OK eingegeben werden müssen, dafür mus die OK-action dann wider wasserdicht gemacht werden. ------------------ meine LISP-Makros sind auf osd.cad.de Disclaimer Grüße aus Wien Walter DC4 Technisches Büro GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 28. Mai. 2008 19:12 <-- editieren / zitieren --> Unities abgeben:
|
der_Wolfgang Moderator Tastenhauer
Beiträge: 2232 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 28. Mai. 2008 21:39 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
|
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 29. Mai. 2008 10:29 <-- editieren / zitieren --> Unities abgeben:
Für (sd-accept-dialog) bin ich wohl noch zu doof... Walter's ersten Vorschlag finde ich vom Handling am Besten. Dann kann man gleich lostoben, denn das Setzen im Nullpunkt kommt eher weniger vor, da kann man dann ruhig einmal mehr drücken. Daher habe ich das jetzt so gemacht, daß der Knopf die Werte setzt. Aber ich bekomme einfach nicht die Richtung hinein (mit initial-value übrigens auch nicht). (setq URSPRUNG 0,0,0) wird angenommen, aber (setq RICHTUNG 0,0,1) nicht. Es kommt die Meldung "0,0,1 is not of type LIST". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PeterO Mitglied Admin
Beiträge: 101 Registriert: 14.01.2003 Windows XP Modeling 15.50A Drafting 15.50A UI3 ModelManager 15.50A
|
erstellt am: 29. Mai. 2008 10:38 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
Hallo Matthias, du kannst die Variablen auch mit :expand-shrink deaktivieren bzw. aktivieren. Ich habe das ganze mal in dein Makro eingebaut. ;http://osd.cad.de (in-package :test-package) (use-package :OLI) (sd-defdialog 'hilfsbolzen_erzeugen :dialog-title "3D Hilfsbolzen"
:help-action '(sd-display-message "Der Hilfsbolzen dient als Hilfe bei der Positionierung von kompliziert geformten Bauteilen. Zum Beispiel zur Ausrichtung von Gussteilen.") :variables '( (PARAMETERS :expand-shrink (URSPRUNG RICHTUNG) :expand-shrink-toggle-type :toggle-pair :initial-value t ;:expand-token :with_U-R :expand-title "Pkt u. R" ;:shrink-token :without_U-R :shrink-title "Nullpunkt") (URSPRUNG :title "Ursprung" :value-type oint-3d) (RICHTUNG :title "Richtung" :value-type :measure-direction) );;variables k-action '(hilfsbolzen) :local-functions '( (hilfsbolzen () (if URSPRUNG (sd-call-cmds (create_workplane :new t_dir rigin URSPRUNG :normal RICHTUNG)) (sd-call-cmds (create_workplane :new t_dir rigin 0,0,0 :normal 0,0,1)) );;if (sd-call-cmds (c_line_inf :horizontal 0)) (sd-call-cmds (c_line_inf :vertical 0)) (sd-call-cmds (c_circle :cen_dia 0,0 30)) (sd-call-cmds (geometry_mode :real)) (sd-call-cmds (line :vertical 0,0 10)) (sd-call-cmds (line :horizontal 0,0 10)) (sd-call-cmds (arc :3_pos 0,10 10,0 -10,0)) (sd-call-cmds (extrude art "/Hilfsbolzen" :distance 50 :keep_profile :no)) (if URSPRUNG (sd-call-cmds (part_prop "/Hilfsbolzen" :base_density 0.0001 :base_color 10276015 :done :base_trans :semi)) (sd-call-cmds (part_prop "/Hilfsbolzen" :base_density 0.0001 :base_color 9414861 :done :base_trans :semi)) );;if );;hilfsbolzen );;local-functions );;sd-defdialog
------------------ Gruß, Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 29. Mai. 2008 11:12 <-- editieren / zitieren --> Unities abgeben:
|
Walter Geppert Moderator Frank und Frei
Beiträge: 2164 Registriert: 12.12.2000
|
erstellt am: 29. Mai. 2008 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
|
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 29. Mai. 2008 12:30 <-- editieren / zitieren --> Unities abgeben:
Auch da brauch ich wohl noch etwas Nachhilfe... Hab's gefunden, danke dir ! So, jetzt laßt mich mal verhungern, muß das doch alleine hinkriegen ---------------- [editiert] (setq RICHTUNG (list 0,0,1)) [Diese Nachricht wurde von highway45 am 03. Jun. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
Beiträge: 2232 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 29. Mai. 2008 22:49 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
|
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 02. Jun. 2008 19:00 <-- editieren / zitieren --> Unities abgeben:
|
Walter Geppert Moderator Frank und Frei
Beiträge: 2164 Registriert: 12.12.2000
|
erstellt am: 03. Jun. 2008 10:44 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
|
edgar Mitglied Dipl. Ing. Maschinenbau
Beiträge: 386 Registriert: 06.06.2001 ME10 8.7F OSDM 11.50A OSDD 11.5 HPUX 10.20 C3600
|
erstellt am: 03. Jun. 2008 12:12 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
|
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 03. Jun. 2008 12:48 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
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: 03. Jun. 2008 13:07 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
|
Walter Geppert Moderator Frank und Frei
Beiträge: 2164 Registriert: 12.12.2000
|
erstellt am: 03. Jun. 2008 13:49 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
|
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 03. Jun. 2008 14:03 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
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: 03. Jun. 2008 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
Packages lösen folgendes Problem:
- Programmierer P1 denkt sich eine tolle neue Funktion aus und nennt sie (tolle-neue-funktion)
- Programmierer P2 tut dasselbe
- Anwender A braucht beide tollen Funktionen und versucht sie in der gleichen Instanz von CoCreate Modeling zu benutzen.
Man sieht gleich: Der Funktionsname alleine ist nicht eindeutig. Das Problem gibt's in allen Programmiersprachen, und fast überall gibt es eine ähnliche Lösung: "Namespaces" (Namensräume). In Lisp sagt man "Packages" dazu. Im obigen Szenario löst man den Konflikt wie folgt auf:
- Programmierer P1 schreibt (tolle-neue-funktion), legt sie im Package "p1" an und macht sie mittels (export) nach aussen sichtbar.
- Programmierer P2 schreibt (tolle-neue-Funktion) im Package p2.
- Anwender A kann beide Funktionen laden und wahlweise als (p1:tolle-neue-funktion) oder (p2:tolle-neue-funktion) rufen.
So schwierig? Claus
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
highway45 Moderator Bastler mit Diplom
Beiträge: 6378 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 03. Jun. 2008 17:46 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
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: 03. Jun. 2008 19:17 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
|
der_Wolfgang Moderator Tastenhauer
Beiträge: 2232 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 03. Jun. 2008 22:18 <-- editieren / zitieren --> Unities abgeben: Nur für highway45
Zitat: Original erstellt von clausb:
Im obigen Szenario löst man den Konflikt wie folgt auf:
- Programmierer P1 schreibt (tolle-neue-funktion), legt sie im Package "p1" an und macht sie mittels (export) nach aussen sichtbar.
- Programmierer P2 schreibt (tolle-neue-Funktion) im Package p2.
- Anwender A kann beide Funktionen laden und wahlweise als (p1:tolle-neue-funktion) oder (p2:tolle-neue-funktion) rufen.
So schwierig?
jein, wenn P2 tolle-neue-funktion *nicht* exportiert, kann A sie nicht aufrufen wie Du es geschrieben hast. Am besten änderst du Dein Posting (wäre mein Vorschlag) Zitat: nach aussen sichtbar.
dennocht brauchts ein (use-package :p1) bei Anwender A im (in-package :user-a), weil *er* muss entscheiden, was er sehen will. Ich fürchte da hast du nun etwas arch verkzt.. ------------------ ● Seamonkey Firefox Thunderbird Seamonkey auf deutsch ● OSD Hilfeseite (de) / help page (en) ● [Diese Nachricht wurde von der_Wolfgang am 03. Jun. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |