;********************************************************************************************* ; Dateiname : BasicTools.lsp ; Autor : Stephan Wörz ; Erstellt : seit 2008 ;-) ; geändert : ;********************************************************************************************* ; Beschreibung : - einige Grundsätzliche Funktionen ; ; Funktionsname Parameter SEL_ITEM Beschreibung ; ; SD_CheckWorkplane keine - prüft ob Arbeitsebene vorhanden ; ; UpdateGewindeflaechen part Teilobjekt - macht die rosaroten Gewindeflächen blau ; ; DeleteFaceColor part Teilobjekt - löscht die Flächenfarben eines Teils (außer reservierte) ; SetPartProps part Teilobjekt - setzt Teileigenschaften ; Teilefarbe Bsp: (setq Teilefarbe (sd-rgb-to-color 0.8,1,1)) ; Teiledichte Bsp: (setq Teiledichte 0.00785) ; Teiletransparen Bsp: (setq Teiletransparenz 0) ; ; GetMaterialProps part Teilobjekt - Teileigenschaften in Abhängigkeit der Attribute (PHOENIX/PDM) setzen ; DelExCol part Teilobjekt - setzt Exemplarfarbe auf "KEINE" ; SetPartEdgeColor part Teilobjekt - setzt Kanteneigenschaft "Farbe" auf "KEINE", Teileigenschaft "Kantenfarbe" auf schwarz ; ;********************************************************************************************* ; -------------------------------------------------------------------------------------------- ; ä Ì Ä Ø ö Î Ö Ú ü Ï Ü Û ß Þ ° ³ µ ó ; (Display (format nil "Name~20T: Stephan") ~20T >> Setzt Cursor in Spalte 20!! ; (Display (format nil "Name~%: Stephan") ~% >> Erzeugt Zeilenumbruch!!!!!! ; -------------------------------------------------------------------------------------------- ; Befehl für Toolbars erzeugen ; (sd-define-available-command "SolidDesigner" ; "SCHILLER" ; "Lochkreis" ; :ui-behavior :default ;UI Verhalten :relative :none ; :image ( Format NIL "~A/SD_Lochkreis.bmp" (MEI::GETENV "SCHILLERICONDIR")) ; :action '(OLI::SD-CALL-DIALOG "SD_Lochkreis") ;);;sd-define-available-command ; -------------------------------------------------------------------------------------------- ; ...so aufrufen: (BASICTOOLS::SetPartEdgeColor object) ;; Setzt die Teileigenschaft "Kantenfarbe" ; -------------------------------------------------------------------------------------------- (in-package :BASICTOOLS) (use-package :OLI) (setq SPZ 0) ;;Strebenprofilzähler ;(sd-hide-console-window) ;(sd-show-console-window) ;(setf si::*enter-break-handler* t) ;;; --- Goodie Recorder etwas erweitert laden! (sd-defdialog 'schiller-rec-start :dialog-title "Rec-Start" :dialog-control :sequential :ok-action '(progn (frame2:begin-recording (format nil "~A~A" (sd-inq-temp-dir) "/pesd.rec") :overwrite) ); end progn ); end rec-start (sd-defdialog 'schiller-rec-stop :dialog-title "Rec-Stop" :dialog-control :sequential :ok-action '(progn (frame2:end-recording "") ; Unsupported function (sd-call-cmds (EDIT (format nil "~A~A" (sd-inq-temp-dir) "/pesd.rec"))) ); end progn ); end rec-stop ;;**************************************************************************************************************** ;Prueft ob eine Arbeitsebene aktiv ist und nicht schreibgeschuetzt ; -> :ok wenn AE-vorhanden und nicht schreibgeschützt ; -> :error Fehlermeldung (defun SD_CheckWorkplane () (LET ((curr_wp (sd-inq-curr-wp))) (IF (and curr_wp (not (sd-inq-obj-contents-read-only-p curr_wp))) :ok ;else (values :error "Keine Arbeitsebene!") );;end_if );;end_let );;DEFUN SD_CheckWorkplane ;;**************************************************************************************************************** ;; Funktion zum Updaten der Gewindeflächen ;; macht die rosaroten Gewindeflächen blau (defun UpdateGewindeflaechen (Teil) (let (ThreadColor OldThreadFaces) (setq ThreadColor (sd-rgb-to-color (read-from-string "0.0,0.0,0.5"))) ;;Gewindefarbe setzen (setf OldThreadFaces nil) (sd-call-cmds (get_selection :focus_type *sd-face-seltype* :check_function #'SelectAlteGewindeflaechen :select :selected_part Teil :all_3d) :failure (setf OldThreadFaces nil) :success (setf OldThreadFaces *SD-ACTION-RESULT*) );;sd-call-cmds (dolist (Threadface OldThreadFaces) (sd-call-cmds (set_face_color Threadface ThreadColor)) );;dolist );;let );;UpdateGewindeflaechen ;; ------------------------------------------------------------------------------------------------------------------------------------------------- ;; ... das ist die >> :check_function << ;; auf alte (rosarote) Gewindeflächenfarbe prüfen (defun SelectAlteGewindeflaechen (face) (if (equal (sd-inq-face-color face) (gpnt3d 1.0 0.63137257099151611 0.60000002384185791)) :Ok :filter );;if );;SelectAlteGewindeflaechen ;;**************************************************************************************************************** ;; Funktion zum löschen von Flächenfarben (ausser: Passung, Gewinde, Hub, Sicherheitsbereich, Fräsen) (defun DeleteFaceColor (Teil) (setf FacesToClear nil) (sd-call-cmds (get_selection :focus_type *sd-face-seltype* :check_function #'SelectReserverdFaceColors :select :selected_part Teil :all_3d) :failure (setf FacesToClear nil) :success (setf FacesToClear *SD-ACTION-RESULT*) );;sd-call-cmds (dolist (SingleFace FacesToClear) (face_prop :the_face SingleFace :COLOR :OFF );;face_prop );;dolist );;DeleteFaceColor ;; ------------------------------------------------------------------------------------------------------------------------------------------------- ;; ... das ist die >> :check_function << ;; auf reservierte Flächenfarben prüfen (defun SelectReserverdFaceColors (FaceToCheck) (if (not (or ;; wenn Farbe nicht Passung, oder nicht Gewinde, ... >>> dann wird gelöscht! (equal (sd-inq-face-color FaceToCheck) (gpnt3d 0.50196081399917603 0.0 0.0 )) ;; Passung (equal (sd-inq-face-color FaceToCheck) (gpnt3d 0.0 0.0 0.50196081399917603 )) ;; Gewinde (equal (sd-inq-face-color FaceToCheck) (gpnt3d 0.0 1.0 0.0 )) ;; Hub (equal (sd-inq-face-color FaceToCheck) (gpnt3d 1.0 0.0 0.0 )) ;; Sicherheitsbereich (equal (sd-inq-face-color FaceToCheck) (gpnt3d 0.58039218187332153 0.58039218187332153 0.19607844948768616 )) ;; Fräsen (equal (sd-inq-face-color FaceToCheck) (gpnt3d 0.58823531866073608 0.58823531866073608 0.19607844948768616 )) ;; Fräsen (equal (sd-inq-face-color FaceToCheck) (gpnt3d 0.0 0.0 1 )) ;; Bedienelemete (equal (sd-inq-face-color FaceToCheck) (gpnt3d 0.0 0.0 1.0 )) ;; Steckanschlüsse (equal (sd-inq-face-color FaceToCheck) (gpnt3d 1.0 0.0 1.0 )) ;; Cabeling-Pins (equal (sd-inq-face-color FaceToCheck) (gpnt3d 0.89803928136825562 0.50196081399917603 0.0 )) ;; Service (equal (sd-inq-face-color FaceToCheck) (gpnt3d 0.0 1.0 1.0 )) ;; Absteckbohrungen (equal (sd-inq-face-color FaceToCheck) (gpnt3d 1.0 0.63137257099151611 0.60000002384185791 )) ;; alte "rosarote" Gewinde );;or );;not :Ok :filter );;if );;SelectReserverdFaceColors ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- ;;**************************************************************************************************************** ;; Löschen der Exemplarfarbe (defun DelExCol (Teil) (progn (part_prop :the_part Teil :COLOR :OFF ;:done ;; Exemplarfarbe :OFF = KEINE >> setzt auch Exemplarkantenfarbe zurück!! );;part_prop );;progn );;DelExCol ;;**************************************************************************************************************** (defun SetPartEdgeColor (Teil) ;;Kantenfarbe löschen (edge_3d_prop :the_edge (sd-call-cmds (get_selection :focus_type *sd-edge-3d-seltype* :select :selected_part Teil :all_3d)) :color :OFF ;4210752 );;edge_3d_prop ;; Kantenfarbe über die Teileeigenschaften setzen! (part_prop :the_part Teil :BASE_EDGE_COLOR 0 :done :EDGE_COLOR 0 :done );;part_prop );;SetEdgeColor ;;**************************************************************************************************************** (defun SetPartProps (Teil Teilefarbe Teiledichte Teiletransparenz) (if (sd-inq-obj-parent-contents-read-only-p Teil) ;; wenn Besitzer schreibgeschützt ;;Then... (progn (part_prop :the_part Teil :base_color Teilefarbe :Done :BASE_EDGE_COLOR 0 :Done :base_trans Teiletransparenz :base_density Teiledichte );;part_prop );;progn ;;Else.... (progn (part_prop :the_part Teil :base_color Teilefarbe :Done :COLOR :OFF ;:done ;; Exemplarfarbe :OFF = KEINE >> setzt auch Exemplarkantenfarbe zurück!! :BASE_EDGE_COLOR 0 :Done :base_trans Teiletransparenz :trans :none :base_density Teiledichte :density :off );;part_prop );;progn );;if );;SetPartProps ;;**************************************************************************************************************** (defun GetMaterialProps (Teil) ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- ; ;; Teilefarbe erstmal vom Teil holen (dieser Wert wird dann genommen falls Material nicht passt) (setq Teilefarbe (sd-rgb-to-color (sd-inq-part-color Teil :contents ))) ; (display (format nil "Teilefarbe : ~A" Teilefarbe)) ; ;; Teiledichte erstmal vom Teil holen (dieser Wert wird dann genommen falls Material nicht passt) (setq Teiledichte (sd-inq-part-density Teil :contents )) ; (display (format nil "Teiledichte : ~A" Teiledichte)) ; ;; Teiletransparenz erstmal vom Teil holen (dieser Wert wird dann genommen falls Material nicht passt) (setq Teiletransparenz (sd-inq-part-transparency Teil :contents )) ; (display (format nil "Teiletransparenz : ~A" Teiletransparenz)) ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- ;Attribut "Material" auslesen (if (or (not (sd-inq-item-attribute Teil "LESATECH_BOM_ATTR" :Lesa_HLZ_Werkstoff :attachment :contents)) (string= (sd-inq-item-attribute Teil "LESATECH_BOM_ATTR" :Lesa_HLZ_Werkstoff :attachment :contents) "") );;or (setq Material "KeinMaterial") (setq Material (sd-inq-item-attribute Teil "LESATECH_BOM_ATTR" :Lesa_HLZ_Werkstoff :attachment :contents)) );;if ; (display (format nil "Material : ~A" Material)) ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- ;; Prüfen ob WERKSTOFF einen Wert hat (if (not Material) () ;; wenn Material keinen Wert hat, dann auch nichts machen! (progn ;; Material auslesen und Teileigenschaften zuordnen (if (sd-string-match-pattern-p "*[aA]l*" Material) (progn ;; wenn Bedingung erfüllt passiert folgendes ;(display "ALU") (setq Teilefarbe (sd-rgb-to-color 0.6,0.6,0.6)) ;; Alu (setq Teiledichte 0.00275) (setq Teiletransparenz 0) );;progn );;if ;; §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ ;; Stähle (if (or (sd-string-match-pattern-p "[sS]t*" Material) (sd-string-match-pattern-p "[cC]*" Material) (sd-string-match-pattern-p "C 15*" Material) (sd-string-match-pattern-p "C 60*" Material) (sd-string-match-pattern-p "C1*" Material) (sd-string-match-pattern-p "C4*" Material) (sd-string-match-pattern-p "C6*" Material) (sd-string-match-pattern-p "X*" Material) (sd-string-match-pattern-p "Federsta*" Material) (sd-string-match-pattern-p "U St*" Material) (sd-string-match-pattern-p "USt*" Material) (sd-string-match-pattern-p "9SM*" Material) (sd-string-match-pattern-p "RSt*" Material) (sd-string-match-pattern-p "90M*" Material) (sd-string-match-pattern-p "9S" Material) ; (sd-string-match-pattern-p "*" Material) ; (sd-string-match-pattern-p "*" Material) );;or (progn ;; wenn Bedingung erfüllt passiert folgendes ; (display "Stahl") (setq Teilefarbe (sd-rgb-to-color 0.7,0.9,1)) ;; Stahl (setq Teiledichte 0.00785) ^ (setq Teiletransparenz 0) );;progn );;if ;; §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ ;; Edelstähle (if (or (sd-string-match-pattern-p "V2*" Material) (sd-string-match-pattern-p "V4*" Material) (sd-string-match-pattern-p "VA*" Material) (sd-string-match-pattern-p "1.43*" Material) (sd-string-match-pattern-p "Niro*" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) ; (sd-string-match-pattern-p "" Material) );;or (progn ;; wenn Bedingung erfüllt passiert folgendes ; (display "Edelstahl") (setq Teilefarbe (sd-rgb-to-color 0.8,1,1)) ;; Edelstahl (setq Teiledichte 0.00785) (setq Teiletransparenz 0) );;progn );;if ;; §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ ;; Hartmetalle (if (or (sd-string-match-pattern-p "Hartmet*" Material) (sd-string-match-pattern-p "P20*" Material) (sd-string-match-pattern-p "HM*" Material) );;or (progn ;; wenn Bedingung erfüllt passiert folgendes ; (display "Hartmetall") (setq Teilefarbe (sd-rgb-to-color 0.4,0.8,0.4)) ;; Hartmetall (setq Teiledichte 0.015) (setq Teiletransparenz 0) );;progn );;if ;; §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ ;;Kunststoffe (if (or (sd-string-match-pattern-p "PA*" Material) (sd-string-match-pattern-p "AB*" Material) (sd-string-match-pattern-p "Murtfeld*" Material) (sd-string-match-pattern-p "PVC*" Material) (sd-string-match-pattern-p "EPDM*" Material) (sd-string-match-pattern-p "FPM*" Material) (sd-string-match-pattern-p "Habasit*" Material) (sd-string-match-pattern-p "Kunststoff*" Material) (sd-string-match-pattern-p "PC*" Material) (sd-string-match-pattern-p "P[Ee]*" Material) (sd-string-match-pattern-p "PFA*" Material) (sd-string-match-pattern-p "PM*" Material) (sd-string-match-pattern-p "Pol*" Material) (sd-string-match-pattern-p "POM*" Material) (sd-string-match-pattern-p "PP*" Material) (sd-string-match-pattern-p "PS*" Material) (sd-string-match-pattern-p "PTFE*" Material) (sd-string-match-pattern-p "Murinit*" Material) (sd-string-match-pattern-p "Murtfeld*" Material) );;or (progn ;; wenn eine Bedingung erfüllt passiert folgendes ; (display "Kunststoff") (setq Teilefarbe (sd-rgb-to-color 1,0.8,0.6)) ;; Kunststoff (setq Teiledichte 0.0014) (setq Teiletransparenz 0) );;progn ();; wenn keine der Bedingungen erfüllt ist passiert nichts! );;if ;; §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ ;; NE-Metalle (if (or (sd-string-match-pattern-p "Cu*" Material) (sd-string-match-pattern-p "Cu*" Material) );;or (progn ;; wenn Bedingung erfüllt passiert folgendes ; (display "Hartmetall") (setq Teilefarbe (sd-rgb-to-color 0.4,0.8,0.4)) ;; NE-Metalle (setq Teiledichte 0.008) (setq Teiletransparenz 0) );;progn );;if ;; §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ ;; Gummi (if (or (sd-string-match-pattern-p "EPDM*" Material) (sd-string-match-pattern-p "Gummi*" Material) (sd-string-match-pattern-p "FKM*" Material) (sd-string-match-pattern-p "FPM*" Material) (sd-string-match-pattern-p "Moos*" Material) (sd-string-match-pattern-p "Naturkaut*" Material) (sd-string-match-pattern-p "*NBR*" Material) (sd-string-match-pattern-p "Silikon*" Material) (sd-string-match-pattern-p "Viton*" Material) (sd-string-match-pattern-p "Zellgummi*" Material) );;or (progn ;; wenn Bedingung erfüllt passiert folgendes ; (display "Hartmetall") (setq Teilefarbe (sd-rgb-to-color 0.10196079313755035,0.50196081399917603,0.10196079313755035)) ;; Gummi (setq Teiledichte 0.00113) (setq Teiletransparenz 0) );;progn );;if ;; §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ ;; Glas (if (or (sd-string-match-pattern-p "ESG*" Material) (sd-string-match-pattern-p "Boroslikat*" Material) (sd-string-match-pattern-p "Duran*" Material) (sd-string-match-pattern-p "Float*" Material) );;or (progn ;; wenn Bedingung erfüllt passiert folgendes ; (display "Hartmetall") (setq Teilefarbe (sd-rgb-to-color 1.0,0.80000007152557373,1.0)) ;; Glas (setq Teiledichte 0.0026) (setq Teiletransparenz nil) (setq Teiletransparenz 0.5) );;progn );;if ;; §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ ;; Macrolon (if (or (sd-string-match-pattern-p "PC*" Material) (sd-string-match-pattern-p "Plexi*" Material) (sd-string-match-pattern-p "PVC klar*" Material) );;or (progn ;; wenn Bedingung erfüllt passiert folgendes ; (display "Hartmetall") (setq Teilefarbe (sd-rgb-to-color 0.69803923368453979,1.0,1.0)) ;; Macrolon (setq Teiledichte 0.0012) (setq Teiletransparenz nil) (setq Teiletransparenz 0.5) );;progn );;if ;; §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ ;; Teileeigenschaften setzen (SetPartProps Teil Teilefarbe Teiledichte Teiletransparenz) );;progn );;if );;GetMaterialProps ;;**************************************************************************************************************** ;;; Funktion zum wählen aller Teile rekursiv in OBJECT ; (defun AllPartFromAssy (Assy) ; (setf AllParts (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :select :recursive :in_assembly Assy))) ; );;defun AllPartFromAssy ;;**************************************************************************************************************** ;; Datumsfunktion Tag.Monta.Jahr Stunden:Minuten (defun Sko_get_date_tag_monat_jahr_stunden_minuten () (let (x) (setf x (multiple-value-list (get-decoded-time))) (format nil "~a.~a.~a ~a:~a" (nth 3 x) (nth 4 x) (nth 5 x) (nth 2 x) (nth 1 x)) ) ) ;;**************************************************************************************************************** ;Liefert die Position eines Zeichens in einem String zurück ;siehe auch POS unter ME10 (DEFUN Sko_sd_string_pos (Text Zeichen) (LET ( (Z) ;Zaehler (L) ;Länge des Textes (R) ;Return-Wert ) );;LET (SETQ R NIL) (SETQ L (LENGTH Text)) (DO ( (Z 1 (+ Z 1)) ) ((> Z L)) (IF (SD-STRING= (subseq Text (- Z 1) Z) Zeichen) (PROGN (SETQ L 0);Damit die Schleife ein Ende findet (SETQ R Z) );;PROGN );;IF );end_do R );;DEFUN Sko_sd_string_pos ;;========================================================================== ;; Alle folgenden Funktionen dienen zum Umwandeln eines Strings in eine Zahl ;; Hauptfunktion (Sko_sd_tools_string_to_number String) ;Liefert den Zahlenwert eines einstelligen Strings ; Bsp "7" 7 | oder "0" 0 ; Bsp.: (Sko_sd_tools_get_val "5") 5 (DEFUN Sko_sd_tools_get_val (Z) (COND ((equal Z "0") 0) ((equal Z "1") 1) ((equal Z "2") 2) ((equal Z "3") 3) ((equal Z "4") 4) ((equal Z "5") 5) ((equal Z "6") 6) ((equal Z "7") 7) ((equal Z "8") 8) ((equal Z "9") 9) ) ) ;Liefert eine Liste mit zwei Werte ; der erste Wert ist eine Faktor für pos bzw. neg der zeite ; ist der String ohne Vorzeichen ; Bsp: (Sko_sd_tools_get_pos_neg_faktor "+25") (1 "25") ; Bsp: (Sko_sd_tools_get_pos_neg_faktor "-25") (-1 "25") ; Bsp: (Sko_sd_tools_get_pos_neg_faktor "25") (1 "25") (DEFUN Sko_sd_tools_get_pos_neg_faktor (S) (LET (L Z F)) (SETQ L (LENGTH S)) (IF (equal (subseq S 0 1) "-") ;then (PROGN (SETQ F -1) (SETQ S (subseq S 1 L)) ) ;else (IF (equal (subseq S 0 1) "+") (PROGN (SETQ F 1) (SETQ S (subseq S 1 L)) ) ;else (SETQ F 1) );end_if );end_if (LIST F S) ) ;; Macht aus einem einfachen String eine Zahl ;; Bsp (Sko_sd_tools_make_summe "25") 25 (DEFUN Sko_sd_tools_make_summe (St) (LET (Z L S)) (SETQ L (LENGTH St)) (SETQ S 0) (Do ( ( Z 1 (+ Z 1)) ) ((> Z L)) (SETQ S (+ (* (expt 10 (- L Z)) (Sko_sd_tools_get_val (subseq St (- Z 1) Z)) ) S)) ) S ) ;; Aus einem String wird eine Zahl ;; Bsp (Sko_sd_tools_string_to_number "25.35") 25.35 ;; Bsp (Sko_sd_tools_string_to_number "-0.35" -0.35 (DEFUN Sko_sd_tools_string_to_number (S) (LET ( Z ;Zähler Gz ;Ganzzahl Bz ;Bruchzahl Fa ;Faktor ) ) (SETQ Gz (FIRST (sd-string-split S "."))) ;Ergibt String (Ganzahl) (SETQ Bz (REST (sd-string-split S "."))) ;Ergibt Strig (Bruchzahl) (IF Gz ;then (PROGN (SETQ Fa (FIRST (Sko_sd_tools_get_pos_neg_faktor Gz))) (SETQ Gz (REST (Sko_sd_tools_get_pos_neg_faktor Gz))) ) ;else (PROGN (SETQ Fa (FIRST (Sko_sd_tools_get_pos_neg_faktor Bz))) (SETQ Gz (REST (Sko_sd_tools_get_pos_neg_faktor Bz))) ) );end_if ;(DISPLAY Fa) (SETQ Gz (FIRST Gz)) (SETQ Bz (FIRST Bz)) ;(DISPLAY (+ Gz Bz)) ;Ganzahlensumme bilden (SETQ Gz (Sko_sd_tools_make_summe Gz)) ;Bruchzahlensumme (SETQ Bz (Sko_sd_tools_make_summe Bz)) (SETQ Bz (/ Bz (expt 10 (LENGTH (sd-num-to-string Bz))))) (* (+ Gz Bz) Fa) ) ;;============================================================================ ;;globale Zaehler (defun GetStrebenprofilzaehler () (setq SPZ (+ SPZ 1)) ) ;;============================================================================ ;; Wandelt eine Liste mit Stringwerten in eine Liste mit Zahlenwerten ;; Bsp (Sko_sd_tools_string_liste_to_num_liste ("1" "2" "3") (1 2 3) (DEFUN Sko_sd_tools_string_liste_to_num_liste (Liste) (LET (Nl Al)) ;Neue Liste ;Alte Liste (LET (Z L )) ;Zaehler und Laenge (LET (W)) (SETQ L (LENGTH Liste)) (SETQ Nl NIL) (Do ( (Al Liste (REST Al)) ) ((ENDP Al) Nl) (SETQ W (Sko_sd_tools_string_to_number (sd-string-trim (FIRST Al))) ) (SETQ Nl (CONS W Nl)) ) (REVERSE Nl) ) ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- ; Befehl für Toolbars erzeugen ; Attribute updaten aller Toplevel Objekte (sd-define-available-command "SolidDesigner" "SC_Phoenix" "UPDATE TOPLEVEL" :ui-behavior :default ;UI Verhalten :relative :none :image ( Format NIL "~A/Zauberstab.bmp" (MEI::GETENV "SCHILLERICONDIR")) :action '(PX-UPDATE-ATTR-DLG :selection :all_at_top) );;sd-define-available-command ; --------------------------------------------------------------------------------------------