| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: Parameterteil erstellen für SD-Power Normteilkatalog (3987 mal gelesen)
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 07. Dez. 2007 11:50 <-- editieren / zitieren --> Unities abgeben:
Hallo, bin absoluter LISP-Einsteiger. Kennt jemand ein gutes Tutorial, wie man ein Lisp-Makro für ein Parameterteil (z.B. Schraube) erstellt? Wo muss ich die Datei (Lisp-Makro) hinspeichern damit sie aufgerufen wird, sobald ich meine Schraube im Normteilkatalog wähle? Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
highway45 Moderator Bastler mit Diplom
Beiträge: 6331 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 07. Dez. 2007 12:06 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Wie ein Makro zum Erzeugen eines Teils aussehen könnte, siehst du z.B. hier für Federn, mit entsprechenden Änderungen kann man das auch für andere Geometrie verwenden. Über das Starten von Makros findest du auch Hilfe auf dieser Seite. Die Einbindung in SolidPower ist etwas komplexer, dein Systemhändler kann da aber sicher weiterhelfen. ------------------ CoCreate: Hilfeseite I FAQ I Forum Euromold Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 07. Dez. 2007 14:09 <-- editieren / zitieren --> Unities abgeben:
|
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 07. Dez. 2007 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
In der Online-Hilfe findest du unter "Hilfethemen"-"Dokumentation für fortgeschrittene Benutzer"-"Integration-Kit" eine englischsprachige Doku zu allen LISP-basierenden Funktionen. Die für den User über die UI zugänglichen Commands (z.B. fürs Extrudieren) sind mit der Eingabe Code: (sd-online-reference)
in der Eingabezeile anzusehen, da gibts dann einen Eintrag in der Toolbox, der eine Tabelle mit diesen Commands aufruft.------------------ 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 |
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 07. Dez. 2007 16:36 <-- editieren / zitieren --> Unities abgeben:
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 10. Dez. 2007 12:44 <-- editieren / zitieren --> Unities abgeben:
Ich möchte ein Rotationsteil erstellen. Weiß jemand warum dieser Befehl bei mir nicht funktioniert? Ich hab die Vermutung das es mit measure_axis_3d_sa zusammenhängt... (TURN :PART teilename :WP "/PROFILE-WP" :ROTATION_ANGLE 360 :AXIS (measure_axis_3d_sa :y) :KEEP_WP :NO) Normales extrudieren funktioniert einwandfrei... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 10. Dez. 2007 13:24 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Da reicht: Code:
(TURN :PART teilename :WP "/PROFILE-WP" :ROTATION_ANGLE 360 :AXIS :Y :KEEP_WP :NO)
oder auch:
Code:
(TURN :PART teilename :WP "/PROFILE-WP" :ROTATION_ANGLE 360 :AXIS :V :KEEP_WP :NO)
Der Bezug auf die Arbeitsebenen-Achse ist m.E. sogar vorzuziehen, weil man damit unabhägig von der Lage der AE im Raum ist------------------ 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 |
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 10. Dez. 2007 14:13 <-- editieren / zitieren --> Unities abgeben:
|
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 10. Dez. 2007 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
highway45 Moderator Bastler mit Diplom
Beiträge: 6331 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 10. Dez. 2007 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Das ist aber eine normale Fehlermeldung, daß der Winkel nicht 0° sein darf oder größer als 360° Walter's String funktioniert bei mir. [PS]Geht bei mir auch mit anderen Winkeln in Grad korrekt. Übrigens: der erste Beitrag oben ist gar nicht von mir, den hat Walter geschrieben, als wir uns auf der EuroMold einen PC geteilt haben und ich noch eingeloggt war [Diese Nachricht wurde von highway45 am 10. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
Beiträge: 713 Registriert: 07.08.2003 Corei7 3770K, Win7-64, 16GB PNY Quadro 2000K CoCreate Modeling 18.10 CoCreate Drafting 18.10 CoCreate ModelManager 18.10
|
erstellt am: 10. Dez. 2007 19:29 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Zitat: Original erstellt von highway45: Walter's String funktioniert bei mir. [PS]Geht bei mir auch mit anderen Winkeln in Grad korrekt.
Hallo Matthias, ich glaube das liegt daran, dass du die Befehlsfolge in die Eingabezeile eingibst. Innerhalb eines LISP-Programms muss man aber interne Einheiten (mm, rad, g) verwenden. ------------------ Gruß aus dem Salzkammergut
Thomas Hollerweger [Diese Nachricht wurde von holt am 10. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 10. Dez. 2007 19:55 <-- editieren / zitieren --> Unities abgeben:
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 11. Dez. 2007 10:57 <-- editieren / zitieren --> Unities abgeben:
Jetzt hänge ich schonwieder. Vielleicht könnt ihr mir helfen. Ich habe mit polygon eine "skizze" auf einer Workplane erzeugt. Angenommen es wäre ein Viereck. Mit welchem Befehl kann ich nun eine Ecke abrunden? Mit "fillet" oder "blend". Ich kriegs irgendwie nicht hin... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 11. Dez. 2007 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 11. Dez. 2007 11:45 <-- editieren / zitieren --> Unities abgeben:
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 11. Dez. 2007 12:44 <-- editieren / zitieren --> Unities abgeben:
Ich verstehe diese Sprache nicht... Ich will meine Workplane so drehen, dass ihre Normale in Richtung Z zeigt... Wo mache ich einen Fehler? Code: (create_workplane :new :name "AE1") (position_wp "/AE1" :rotation :axis :y :rotation_angle 1.570796)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 11. Dez. 2007 12:50 <-- editieren / zitieren --> Unities abgeben:
|
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 11. Dez. 2007 12:55 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 11. Dez. 2007 14:26 <-- editieren / zitieren --> Unities abgeben:
Hi Wolfgang, ich hab mir schon viele Deiner Makros angesehen und einiges draus gelernt. Es verwirrt mich nur immer das in Deinen Makros alles durch Dialoge eingestellt wird. Z.B. Fläche wählen. Das geht ja bei mir nicht, weil ich das Teil mit dem SD-Power Normteilkatalog lade... Nun hab ich noch eine letzte Frage. Ich kann nun mein Teil (Distanzhalter) laden und alles. Nur wie kann ich jetzt noch Gewindeflächen erzeugen? Vor allem, wie mache ich dem Programm klar WELCHE Fläche ich zu einer Gewindefläche definieren will? Gibt es da einen Befehl für? Du löst das in einem Deiner Makros mit "sd-define-thread" aber so wie ich das verstanden habe ist das ein Dialog bei dem man die Fläche dann per Maus wählen kann/muss oder? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 11. Dez. 2007 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Die Fläche {SEL_ITEM} bekommst du mit get_selection an einem 3D-Punkt, von dem du durch dein Makro weisst, dass er auf dieser Fläche liegt. Dazu transformierst du - ganz einfach - einen Punkt auf deiner AE von derem lokalen System aus globale (aber Achtung: 3D! deshalb mit allen 3 Koordinaten, und zwar x, y und z statt nur u und v). Wie so was aussehen könnte, ist weitgehend im Makro zum Kegelpositionieren zu sehen, auch die Verwendung von get_selectionRespekt jedenfalls für den mutigen Sprung ins kalte Wasser Und jetzt ------------------ 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 |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 11. Dez. 2007 21:02 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 11. Dez. 2007 21:28 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Zitat: Original erstellt von Peach303: Hi Wolfgang, ich hab mir schon viele Deiner Makros angesehen und einiges draus gelernt.
oh.. danke.. Zitat: Es verwirrt mich nur immer das in Deinen Makros alles durch Dialoge eingestellt wird. Z.B. Fläche wählen. Das geht ja bei mir nicht, weil ich das Teil mit dem SD-Power Normteilkatalog lade...
dann gaebe es da noch get_selection, ebenfalls eine Integrationkit funktion. Ich habe mich nun noch nie so sehr mit SolidPower Normteilkatalog befasst, geschweige denn da mal ein Teil hinein gefuzzelt ('die Östereicher' mögen mir verzeihen!) [Gewindeflächen]
Zitat: Du löst das in einem Deiner Makros mit "sd-define-thread" aber so wie ich das verstanden habe ist das ein Dialog bei dem man die Fläche dann per Maus wählen kann/muss oder?
sd-define-thread IST die funktion, die Du suchst. Guck mal in den integration Kit index. Du meinst sicher [ (sd-defdialog 'thread_extension ] Nun, da ist nur ein Dialog drum rum, um alle Informationen interactive aufzusammeln, um die oli funktion sd-define-thread zu füttern. thread_extension ist eigentlich NUR ein Beispiel fuer die Anwendung der IKIT-Funktion. Hat sich aber zu einem beliebten eigenstaendigem Tool entwickelt. Daher vielleicht die etwas ungluecklich Verunsicherung in der Begriffswelt. Also sd-defdialog 'thread_extension == interactive nurztbarer dialog fuer die beispielhafte Anwendung der integration kit funktionen: * sd-define-thread * sd-inq-thread * sd-destroy-thread Natürlich koennen die 3 funktionen auch vollkommen allein genutzt werten. Das Machiningtool macht nix anderes als sd-define-thread aufzurufen. Du musst die zu markierende Fläche eben als sel_item in der hand haben um damit sd-define-thread zu füttern. Du kannst dir aber mit (get_selection .... :select 3D-PUNKT) jenes sel-item auch besorgen.
Code: (setf thread-face (sd-call-cmds (get_selection :focus_type *sd-cylinder-seltype* :select :in_part (sd-inq-curr-part) x,y,z)))
Nur mal so ganz grob, als Denkanstoss, hab's nur hingeschrieben, nicht ausgeführt! --------------- thread_extension bzw die Datei thread_func_lsp.html ist in *JEDER* online Hilfe vom OSDM drin und hat sich auch immer mal wieder 'verändert'. -- Kommt mir jetzt keiner mit SD8.5 oder so!!!
------------------ Seamonkey Firefox Thunderbird Seamonkey auf deutsch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 12. Dez. 2007 10:12 <-- editieren / zitieren --> Unities abgeben:
Hi, kann sich das einer von euch nochmal anschauen? Irgendwie funzt das nicht (auch nach langem Probieren...) Sollte doch alles passen? Code:
;Gewindeflächen erzeugen (setf F1 (sd-call-cmds (get_selection :focus_type *sd-cylinder-seltype* :select :in_part (sd-inq-curr-part) 1.5,0,1))) (sd-define-thread F1 :nominal-diameter M :core-diameter (- M (* Fase 2)) :thread-type :OUTER :thread-unit :METRIC :thread-color 1.0,0.0,0.0 :include-chamfer NIL :thread-direction 0.0,0.0,-1.0 )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 12. Dez. 2007 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 12. Dez. 2007 10:21 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 12. Dez. 2007 11:48 <-- editieren / zitieren --> Unities abgeben:
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 12. Dez. 2007 15:26 <-- editieren / zitieren --> Unities abgeben:
Ich verstehe die Welt nicht mehr! Jetzt geht garnix mehr... Sonst habe ich immer an meiner C:/datei.lsp rumgebastelt und sie nach dem speichern mit (load "C:/datei.lsp") geladen. Und urplötzlich kommen Fehlermeldungen! Obwohl ich nur ein "print" durch ein "display" ersetzt hab... Wenn ich das Teil mit SD-Power laden will: "the function "distanzhalter_erstellen" is undefined" Wenn ich die lsp-datei laden will: "distanzhalter_erstellen kann nicht exportiert werden wegen Namenskonflikt!" HÄ??? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 12. Dez. 2007 16:28 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 12. Dez. 2007 19:28 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 12. Dez. 2007 19:49 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Zitat: Original erstellt von Peach303: Sollte doch alles passen?
sieht nach Theorie und Praxis aus 1) Was sagt denn ein trace? ==>> (trace oli::sd-define-thread) ==>> (trace my-package::deine-funktion-auch) ====>> Ausgabe in der Konsole, diese Ausgabe mal hier zur Verfügung stellen (txt file)
tracen ist eine der Standardmethoden zum LISP debuggen. 2) Wird denn die fläche ROT? JA? nein? 3) Bist Du denn sicher das du die richtige Face erwischst? 4) Was kommt raus wenn du diese vermeintlich definierte Fläche mit thread_extensions ausliest? 5) Was kommt raus, wenn Du hinter deinen oben genannten Code-Schnipsel noch folgendes einbaust: ==>> (pprint (sd-inq-thread F1)) ====>> Ausgabe in der Konsole, diese Ausgabe mal hier zur Verfügung stellen (txt file) sd-define-thread hat eine fuelle von verschiedenen return werten im Fehlerfall. z.B :parent-of-face-read-only
Deswegen: ohne einen trace sag ich nix! ein besonderes augenmerk würde ich mal auf die :thread-direction werfen. ------------------------ Peach303, ein Name waere nett. Und die OSDM-version Nummer in der SystemInfo ist eigentlich schon ein Pflichtanteil. ------------------------ 6) warum willst Du überhaupt auf die Hilfe-Taste F1 Gewindeschneiden?? ------------------ Seamonkey Firefox Thunderbird Seamonkey auf deutsch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 13. Dez. 2007 10:10 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 13. Dez. 2007 11:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Walter, hallo Wolfgang, also, ich arbeite hier mit der Version 13.20B. Zitat: Peach303, ein Name waere nett.
Ich heiße Daniel Ich denke ich poste hier jetzt als erstes mal meinen Code: Code:
;;************************************************* ;;************************************************* ;;* ;;* Eigene parametr. Normteile ;;* ;;************************************************* ;;*************************************************(in-package :custom) (use-package :OLI) (use-package :TS-STRINGS) (use-package :TS-CATALOG-LADEN) (use-package :TS-CATALOG-MODUL) (export '(disthalt2_erst)) ;;************************************************* ;;* ;;* Distanzhalter - mit Schraube und Gewinde ;;* ;;*************************************************
(defun disthalt2_erst ( M SW L P1 P2) (let ( (teilename) (SW_A) ;äusserer Durchmesser des Sechskants (L_Schraub) ;Länge der Schraube (L_Gew) ;Länge des Gewindes (Fase) (Rundung) (GP1) (GP2) (GP3) (GP4) (GP5) (GP6) (GP7) (GP8) (GP9) (GP10) (SP1) (SP2) (SP3) (SP4) (SP5) (SP6) (F1) (F2) (FP) ) (setf M (read-from-string M)) (setf SW (read-from-string SW)) (setf L (read-from-string L)) (setf P1 (read-from-string P1)) (setf P2 (read-from-string P2)) (setf teilename (ts-catalog-get-rel-pathname (format nil "Distanzhalter_M~a_~a." M L))) ;Berechnen der Variablen (when (= M 2) (setf SW_A 4.6188) (setf Fase 0.245)) (when (= M 2.5) (setf SW_A 5.7735) (setf Fase 0.275)) (when (= M 3) (setf SW_A 5.7735) (setf Fase 0.305)) (when (= M 4) (setf SW_A 8.0829) (setf Fase 0.43)) (when (= M 5) (setf SW_A 9.2376) (setf Fase 0.49)) (setf Rundung (- SW_A SW)) (setf L_Schraub P1) (setf L_Gew P2) (when (<= L 10) (setf L_Schraub 4)) (when (<= L 10) (setf L_Gew 4)) ;Grundkörper erzeugen (create_workplane :new :name "AE1") (position_wp "/AE1" :rotate :axis :y :rotation_angle (/ pi 2)) (setf GP1 (make-gpnt2d :x (* L_Schraub -1.00) :y 0 )) (setf GP2 (make-gpnt2d :x (* L_Schraub -1.00) :y (- (/ M 2) Fase) )) (setf GP3 (make-gpnt2d :x (+ (* L_Schraub -1.00) Fase) :y (/ M 2) )) (setf GP4 (make-gpnt2d :x 0 :y (/ M 2) )) (setf GP5 (make-gpnt2d :x 0 :y (/ SW_A 2) )) (setf GP6 (make-gpnt2d :x L :y (/ SW_A 2) )) (setf GP7 (make-gpnt2d :x L :y (/ M 2) )) (setf GP8 (make-gpnt2d :x (- L Fase) :y (- (/ M 2) Fase) )) (setf GP9 (make-gpnt2d :x (- L L_Gew) :y (- (/ M 2) Fase) )) (setf GP10 (make-gpnt2d :x (- (- L L_Gew) 0.5) :y 0 )) (polygon GP1 oints GP2 GP3 GP4 GP5 GP6 GP7 GP8 GP9 GP10 GP1) (fillet :create :fillet_radius Rundung GP5 GP6) (turn :PART teilename :WP "/AE1" :AXIS :U :KEEP_WP :NO) ;Sechskant erzeugen (create_workplane :new :name "AE2") (setf SP1 (make-gpnt2d :x (* (/ SW 2) -1.00) :y (* (/ SW_A 2) 0.50) )) (setf SP2 (make-gpnt2d :x 0 :y (/ SW_A 2) )) (setf SP3 (make-gpnt2d :x (/ SW 2) :y (* (/ SW_A 2) 0.50) )) (setf SP4 (make-gpnt2d :x (/ SW 2) :y (* (/ SW_A 2) -0.50) )) (setf SP5 (make-gpnt2d :x 0 :y (* (/ SW_A 2) -1.00) )) (setf SP6 (make-gpnt2d :x (* (/ SW 2) -1.00) :y (* (/ SW_A 2) -0.50) )) (polygon SP1 oints SP2 SP3 SP4 SP5 SP6 SP1) (circle :cen_rad 0,0 (+ (/ SW_A 2) 1)) (extrude art "/6k_loesch" :distance (* L -1.00)) (delete_3d :workplane "/AE2") (subtract_3d :blanks teilename :tools "/6k_loesch" :keep_tool :no) ;Gewindeflächen erzeugen #| (setf FP (make-gpnt3d :x (/ M 2) :y 0.0 :z 2.9)) (setf F1 (sd-call-cmds (get_selection :focus_type *sd-cylinder-seltype* :single_selection :select :in_part teilename FP))) (sd-define-thread F1 :nominal-diameter M :core-diameter (- M (* Fase 2)) :thread-type :OUTER :thread-unit :METRIC :thread-color 1.0,0.0,0.0 :include-chamfer NIL :thread-direction 0.0,0.0,-1.0 ) |# );let )
Ich hab ein Bild angehängt, das zeigt was dabei aktuell rauskommt. Die Funktion "disthalt2_erst" hieß ursprünglich "disthalt1_erst". Ich habe ihren Namen geändert, weil beim laden aus dem Normteilkatalog immer die Fehlermeldung kam: "Function disthalt1_erst is undefined". Ein Bild mit der Fehlermeldung hab ich angehängt. Seit dem ich die Funktion umbenannt habe, gehts wieder... Fragt sich nur wie lange... Zu Wolfgangs Fragen: 1) Ich habe nun die #| |# rausgenommen und das trace so bei mir eingebaut (hoffe das es richtig ist): Code:
;Gewindeflächen erzeugen (setf FP (make-gpnt3d :x (/ M 2) :y 0.0 :z 2.9)) (setf F1 (sd-call-cmds (get_selection :focus_type *sd-cylinder-seltype* :single_selection :select :in_part teilename FP))) (sd-define-thread F1 :nominal-diameter M :core-diameter (- M (* Fase 2)) :thread-type :OUTER :thread-unit :METRIC :thread-color 1.0,0.0,0.0 :include-chamfer NIL :thread-direction 0.0,0.0,-1.0 ) (trace oli::sd-define-thread)
Es kommt eine Fehlermeldung "Einzelauswahl nötig". Dieser Fehler ist auch neu und war vorher nicht... In der Konsole kommt folgende Meldung: "The Function SD-MODULE-ACTIVE-P is not traced." Zu: (trace my-package::deine-funktion-auch). Ich habe kein Package?! Vielleicht verstehe ich auch nicht was du meinst?! 2) Leider wird die Fläche nicht rot... 3) Leider bin ich mir nicht sicher welche Face ich erwische, weil es keine Reaktion gibt. Es passiert einfach nix... Dennoch sollte es die Richtige sein! 4) Leider kann ich weder in der sd-online-reference, noch im main index oder im Commands Reference Manual der Integration Kit Hilfe etwas über den Befehl "thread_extensions" finden. Wie soll ich ihn einbauen? 5) Die Meldung die hier kommt ist wieder: "The Function SD-MODULE-ACTIVE-P is not traced." 6) Sorry wenn ich euch mit meiner Unwissenheit auf die Nerven gehe, aber die Anleitung zu dem ganzen Thema und die Sprache im Allgemeinen sind einfach zum in die Tonne klopfen... Gruß Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 13. Dez. 2007 11:16 <-- 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: 13. Dez. 2007 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 13. Dez. 2007 21:39 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Zitat: Original erstellt von Peach303: Hallo Walter, hallo Wolfgang,
Hallo Daniel! Zitat: also, ich arbeite hier mit der Version 13.20B.
Ok. wenn du das naechste mal hier antwortest schreibst Du beim Verfassen des Beitrags mal in das Fenster "System-Info / Zusatztext:" genau die 13.30B hinein. Dann kommt das das nächte mal von selbst. siehe auch: http://ww3.cad.de/foren/ubb/Forum29/HTML/002692.shtml Zitat: Ich denke ich poste hier jetzt als erstes mal meinen Code:
gut Idee! Als lisp einsteiger hast Du dir auch gleich was recht ordenliches vorgenommen! Aber das wird schon! :-) bist ja nicht alleene.
Code:
den funktionierendne Teil habe ich mal wegkürzt den rest ändern wie folgt: ;Gewindeflächen erzeugen (setf FP (make-gpnt3d :x (/ M 2) :y 0.0 :z 2.9)) (setf F1 (sd-call-cmds (get_selection :focus_type *sd-cylinder-seltype* :single_selection :select :in_part teilename FP))) (pprint "was haben wir denn nun als F1?") (pprint F1) ;; damit wir sehen das wir auch was gescheites in der hand haben ;; was da raus kommt, hier bereichten! (sd-define-thread (first F1) :nominal-diameter M :core-diameter (- M (* Fase 2)) :thread-type :OUTER :thread-unit :METRIC :thread-color 1.0,0.0,0.0 :include-chamfer NIL :thread-direction 0.0,0.0,-1.0 ) );let ) ;; ende Deiner funktion ;; nun schalten wir zum schluss noch direkt 2..3 traces ein (bis es denn funktioniert: (trace oli::sd-define-thread) (trace disthalt2_erst)
Zitat: Ich hab ein Bild angehängt, das zeigt was dabei aktuell rauskommt.
fein. Sieht doch schon mal sehr gut aus das Teil. Du bist LispAnfänger? Zitat: 1) Ich habe nun die #| |# rausgenommen und das trace so bei mir eingebaut (hoffe das es richtig ist):
nichjt ganz, aber siehe oben.. Den trace muss man (irgendwann) VOR dem aufruf einer funktion einschalten und bei bedarf dann später auch wieder ausschalten.
Zitat: In der Konsole kommt folgende Meldung: "The Function SD-MODULE-ACTIVE-P is not traced."
das kommt bei der Library recht hauefig. Da wird ein trace ausgeschaltet obwohl er nie eingeschaltet wurde. Sowas sollte im Produkt nicht passieren. Kannst'de einfach irgnorieren. Ist nicht Dein Problem und auch nicht meins. Zitat: 4) Leider kann ich weder in der sd-online-reference, noch im main index oder im Commands Reference Manual der Integration Kit Hilfe etwas über den Befehl "thread_extensions" finden. Wie soll ich ihn einbauen?
Das ist auch keine 'feste' funktion des Integration Kits sondern nur ein Beispiel.Suche im Main index mal nach sd-define-thread, ganz unten an der beschreibung steht: An example application is listed *here*. Klicke auf HERE. und dann liegt der dialog thread_extension in seiner ganzen schönheit vor Dir. Kopiere alles, und schubs es in eine neue LISP datei in einem Editor Deiner Wahl (ich empfehle dir NotePad++, das kann auch SolidDesigner LISP bunt machen, wie, sag ich Dir später, wenn Du willst). Dann lädst du diese Lisp datei und hast einen Eintrag in der Toolbox. Zitat: 5) Die Meldung die hier kommt ist wieder: "The Function SD-MODULE-ACTIVE-P is not traced."
siehe oben. ja die kommt verd...t häufig. Weiss nicht was das soll. Zitat: Sorry wenn ich euch mit meiner Unwissenheit auf die Nerven gehe, aber die Anleitung zu dem ganzen Thema und die Sprache im Allgemeinen sind einfach zum in die Tonne klopfen...
nun ja. Bei (alten Sprache wie) Latein würde ich das wohl ähnlich sehen So, genug getippt. ------------------ Seamonkey Firefox Thunderbird Seamonkey auf deutsch [Diese Nachricht wurde von der_Wolfgang am 13. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 13. Dez. 2007 23:38 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Ich habe mir nen test dialog drum geschrieben da ich die PartLibray nicht habe. raus kommt:
Code:
1> (CUSTOM:dISTHALT2_ERST "5" "10" "58" "10" "30")("der punkt" 2.5,0.0,2.8999999999999999) 2> (GET_SELECTION :FOCUS_TYPE 246775488 :SINGLE_SELECTION :SELECT :IN_PART "/mypart" 2.5,0.0,2.8999999999999999) 2.5,0.0,2.8999999999999999 #S(ELAN::SEL_ITEM ELAN::PATH (#S(ELAN::NPARCEL DSM::SIMPLE-ENTITY-PTR 132277008) #S(ELAN::NPARCEL DSM::SIMPLE-ENTITY-PTR 292174784)) TYPE 132279632 ELAN::ITEM #S(ELAN::NPART3 DSM::SIMPLE-ENTITY-PTR 292174784)) "was haben wir denn nun als F1?" NIL 2> (OLI:SD-DEFINE-THREAD NIL :NOMINAL-DIAMETER 5 :CORE-DIAMETER 4.0199999999999996 :THREAD-TYPE :OUTER :THREAD-UNIT :METRIC :THREAD-COLOR 1.0,0.0,0.0 :INCLUDE-CHAMFER NIL :THREAD-DIRECTION 0.0,0.0,-1.0) <2 (OLI:SD-DEFINE-THREAD NIL :PARAMETER-NOT-COMPLETE) <1 (CUSTOM:dISTHALT2_ERST NIL :PARAMETER-NOT-COMPLETE)
da entsteht ein merküridges gebilde. (see Bild). Ausserdem sehe ich 'unterweg' ein senkrecht zum rest stehenden Zylinder. Und schluss endlich liegt der Punkt, mit dem Du die fläche erwischen willst nicht da wo Du ihn brauchst. Das die Z-Koordinate diese punktes hardcodiert ist, kommt mr eh komisch vor.ein Satz gescheiter aufruf parameter waer auch nicht schlecht. Habe da meine Kristallkugel zu heftig zu raten ziehen muessen. ------------------ Seamonkey Firefox Thunderbird Seamonkey auf deutsch [Diese Nachricht wurde von der_Wolfgang am 13. Dez. 2007 editiert.] [Diese Nachricht wurde von der_Wolfgang am 13. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 13. Dez. 2007 23:51 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 14. Dez. 2007 10:04 <-- editieren / zitieren --> Unities abgeben:
Hallo, erstmal vielen Dank für die Hilfe! Also ich hab nun den Codeteil durch deinen ersetzt. Und in der Konsole kommt folgende Ausgabe: The function SD-MODULE-ACTIVE-P is not traced. 1> (DISTHALT2_ERST "4.0" "7.0" "40.0" "10.0" "10.0") mehr leider nicht... Der macht wohl kein trace für sd-define-thread oder? Wenigstens kapier ich nun wie das mit dem trace funktioniert. Den trace schalte ich durch (load "C:/parateile.lsp") ein richtig? Die Fehlermeldung "Einzelauswahl erforderlich" kommt immernoch! Zitat: da entsteht ein merküridges gebilde. (see Bild). ein Satz gescheiter aufruf parameter waer auch nicht schlecht. Habe da meine Kristallkugel zu heftig zu raten ziehen muessen.
Hoppala!? Ah Ok! Ich denke das liegt tatsächlich an den Aufrufparametern. Der wert für die Schlüsselweite (SW) wird durch meine Tabelle (beim auswählen des Teils) übergeben und der äußerste Durchmesser des Sechskants wird durch den Gewindedurchmesser bestimmt. Blöd eigentlich aber es funzt ja wenn man die Auswahltabelle hat... Parameter die funktionieren müssten wären: 1. M = 4.0 Gewindedurchmesser 2. SW = 7.0 Schlüsselweite 3. L = 40.0 Länge 4. P1 = 10.0 Gewindelänge Außengewinde 5. P2 = 10.0 Gewindetiefe Innengewinde Zitat: Und schluss endlich liegt der Punkt, mit dem Du die fläche erwischen willst nicht da wo Du ihn brauchst.
Eigentlich müsste es stimmen!? Siehe Skizze (Anhang) kann man sich den Punkt anzeigen lassen, nachdem die Schraube erstellt wurde (also im 3D)? Zitat: Das die Z-Koordinate diese punktes hardcodiert ist, kommt mr eh komisch vor.
Naja den Wert 2.9 hab ich genommen weil kein Gewinde kürzer als 3mm ist... Hab auch schon 1 versucht usw... Ich werde jetzt mal auf den Punkt FP (Flächenauswählpunkt) eine WP erzeugen und eine Kugel um den Punkt drehen, damit ich den Punkt sehen kann.
Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 14. Dez. 2007 10:30 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 14. Dez. 2007 10:51 <-- editieren / zitieren --> Unities abgeben:
Hier ist der Auswahlpunkt. Siehe Bild. Sollte eigentlich auch mathematisch perfekt auf der Fläche liegen... Hm, ab :in_part durch :selected_part getauscht. Dann kommt Fehlermeldung:
LISP-Fehler: #S(SEL_ITEM ELAN::PATH (#S(ELAN::NPARCEL DSM::SIMPLE-ENTITY-PTR 157611344) #S(ELAN::NPARCEL DSM::SIMPLE-ENTITY-PTR 280394272)) TYPE ...) is not of type LIST. [Diese Nachricht wurde von Peach303 am 14. Dez. 2007 editiert.] [Diese Nachricht wurde von Peach303 am 14. Dez. 2007 editiert.] 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: 14. Dez. 2007 16:29 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Hi, diese Makros sind für die SolidLibrary geschrieben, aber die wichtigen Teile wie das Suchen nach der Gewindefläche kannst du einfach kopieren und in dein Makro integrieren.
------------------ Gruß, Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 14. Dez. 2007 20:55 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
Zitat: Original erstellt von Peach303: Hm, ab :in_part durch :selected_part getauscht. Dann kommt Fehlermeldung: LISP-Fehler: #S(SEL_ITEM ELAN::PATH (#S(ELAN::NPARCEL DSM::SIMPLE-ENTITY-PTR 157611344) #S(ELAN::NPARCEL DSM::SIMPLE-ENTITY-PTR 280394272)) TYPE ...) is not of type LIST.
Hallo Daniel, es it unabdingbar das Du, wenn man schon so tief bei Dir einsteigt, bei solchen Details mehr und bessere Informationen lieferst! Das mit dem Trace funktioniert bei Dir immer noch nicht. Dies ist aber ein reines Verstaendnis problem Deinerseits. Aber mit den dann zurückgelieferten Infos ist es extrem schwierig und (fuer mich) auch Zeitaufwendig weiter zu helfen. Also das Problem was ich gestern abend hatte hat sich schon geleost. Mein Testdialog (der einfach nur deine funktion mit 6 parametern versorgt hat) hat Deine Funktion Ohne ein SD-call-cmds drum rum aufgerufen. Deswegen ist die eine Workplane lediglich um ~1.6° gedreht worden (nemmlich pi/2) statt um 90°. Nunja.. ich habe halt die ganzen Sachen von der Partlibrary nicht da. Dadurch ist dann das sechskant 'etwas schräg' abgezogen worden. Und Zufallig gabs dann auf dem Punkt auch keine Fläche für das Gewinde. Wenn Du das mit dem Trace gebacken bekommst, wirst Du auch sehen warum sd-define-thread nicht tut. Zusammen mit de Docu dazu siehst Du dann hoffentlich was fehlt. Wenn Du so Annahmen wie 'kein Gewinde ist kürzer als 3mm' triffst und dewswegen diese 2.9 fuer +Z nimmst, dann würde ich das dringend als Kommentar reinschreiben. In 1 Jahr weisst du das nämlich selbst nicht mehr so genau. Spätestens wenn du mal die Tabelle mit den Massen fuer das Teil im Jahre 2009 erweiterst, läufst Du Gefahr solche Annnahmen zu unterlaufen und dann rumst es nur und Du must den Source code haar klein untersuchen. Also bei mir funzt das Teil nun wunder bar. ------------------ Seamonkey Firefox Thunderbird Seamonkey auf deutsch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 17. Dez. 2007 21:47 <-- editieren / zitieren --> Unities abgeben: Nur für Peach303
|
Peach303 Mitglied Konstrukteur
Beiträge: 41 Registriert: 05.07.2006 OSD 13.20B
|
erstellt am: 21. Dez. 2007 13:53 <-- editieren / zitieren --> Unities abgeben:
|