(defun Pf_bend_allowance_din (&key sheet_thickness bend_angle bend_radius sheet_material tool_id &allow-other-keys ) ;____________________________________________________________________________ ; ; Diese Funktion berechnet den Einzugswert einer Biegung unter benutzung ; der DIN-Formel zur Berechnung des k-Faktors. ; Der K-Faktor beschreibt die Lage der neutralen Faser zwischen Innen- und ; AuÞenseite der Biegung. ; Aus dem K-Faktor, der Materialdicke, dem Winkel der Biegung und dem ; Biegeradius wird in einer Unterfunktion der Einzugswert berechnet und ; zurÏckgegeben. ; ; DIN ANSI Achtung: ; Der K-Faktor ist in der DIN-Formel ; _______ 2 1 anders definiert, als in der ANSI- ; / Formel. ; / .. 1 0,5 Der DIN-Wert entspricht dem doppelten ; / . ANSI-Wert (siehe Beispiel). ; / . __ 0 0 ; / . / ; | . | ; ; ; INPUT ; ===== ; sheet_thickness Material thickness [mm] ; bend_angle [deg] bend angle of bend (0 = no bend ) ; bend_radius [mm] bend radius of bend (0 = no bend ) ; sheet_material Material property list : ; syntax: ; (:shopname :tabname ; :rowkey ) ; syntax e.g. ; (:SHOPNAME "demoshop" :TABNAME "sheet_metals" ; :ROWKEY (:MATERIAL "UST 1203" :THICK 1.25)) ; ; ; RETURN ; ====== ; property list ( :allowance allowance-value ; if not given the ; ; system uses a ; ; fallback strategy ; :warning-headline message-string ; optional ; :error-type violation-type ; optional ; :error-message message_string ) ; optional ;___________________________________________________________________________ (declare (ignore sheet_material)) ; to keep compiler quite when compiling ; (display sheet_material) ; (display (nth 5 sheet_material)) (setf pf_material_list (nth 5 sheet_material)) (setf pf_material (nth 1 pf_material_list)) ; (setf pf_mat_list (sd-string-split pf_material " ")) ;; (display pf_material) (let* (R_t R_t_Kehrwert Offset Min-K-Factor Max-K-Factor ;; K_factor_echt K_factor Materialtyp return_values (shopname (getf sheet_material :shopname)) (tool-rowkey (or (getf tool_id :rowkey) ; if used as fallback formula (no tool_id) (list :RADIUS bend_radius))) (allowance-table (if tool_id (sha-get-db-entry tool_id :ALLOWANCE_TABLE) ; if used as fallback formula (no tool_id) (sha-get-shop-entry :shopname shopname :column :ALLOWANCE_TABLE))) (material-rowkey (getf sheet_material :rowkey)) (material-keys (sha-separate-plist material-rowkey)) (tool-keys (remove ':angle (sha-separate-plist tool-rowkey))) ) (setf R_t (/ bend_radius sheet_thickness)) (setf R_t_Kehrwert (/ sheet_thickness bend_radius)) ; Calculate k-factor according DIN ;***************************************************************************** ;** Allowance-Formel-Anpassung fÏr Buntmet./Stahl: ;***************************************************************************** (if (sd-string= pf_material "Buntmetall") (progn (setf Offset 0.65) (setf Min-K-Factor 0.66) (setf Max-K-Factor 1) (setf K_factor_echt (+ Offset (/ (log R_t 10) 2))) ) ) ;***************************************************************************** ;** Allowance-Formel-Anpassung fÏr Buntmet./Stahl: ;***************************************************************************** (if (sd-string= pf_material "Stahl") (progn (setf Offset 0.65) (setf Min-K-Factor 0.66) (setf Max-K-Factor 1) (setf K_factor_echt (+ Offset (/ (log R_t 10) 2))) ) ) ;***************************************************************************** ;** Allowance-Formel-Anpassung fÏr K-Materialien: ;***************************************************************************** (if (sd-string= pf_material "K-Materialien") (progn (setf Offset 0.65) (setf Min-K-Factor 0.66) (setf Max-K-Factor 1) (setf K_factor_echt (+ Offset (/ (log R_t 10) 2))) ) ) ;***************************************************************************** ;** Allowance-Formel-Anpassung fÏr Nirosta: ;***************************************************************************** (if (sd-string= pf_material "Nirosta") (progn (setf Offset 0.65) (setf Min-K-Factor 0.66) (setf Max-K-Factor 1) (setf K_factor_echt (+ Offset (/ (log R_t 10) 2))) ;;(setf K_factor_echt (+ Offset (/ (*(log R_t 10) (+ (/ R_t_Kehrwert 2.7) 0.5)) 2))) ) ) ;; (display (fix_mesg "Offset : {1}" (sd-num-to-string Offset 2) )) ;; (display (fix_mesg "Min-K-Factor : {1}" (sd-num-to-string Min-K-Factor 2) )) ;; (display (fix_mesg "Max-K-Factor : {1}" (sd-num-to-string Max-K-Factor 2) )) (if (< R_t 0.65 ) (if (and *Sh_global_dfm_checks* *Sh_local_dfm_checks*) (progn (setf return_values (list :warning-headline "WARNUNG: VerstoÞ gegen Fertigungsregel (DFM)." :error-type :DFM_rule_violation :error-message "VerhÌltnis Radius/Dicke sollte nicht kleiner als 0.65 sein." ) ) ) ) ) (if (> K_factor_echt Max-K-Factor) ;maximalen K-Faktor auf Max-K-Factor begrenzen (progn (setf K_factor Max-K-Factor) (progn (setf return_values (list :warning-headline "Info" :error-type :DFM_rule_violation :error-message (fix_mesg "DIN-K_factor ist grÎÞer als {1}, wird auf {1} gesetzt" (sd-num-to-string Max-K-Factor 2)) ) ) ) ) ) (if (< K_factor_echt Min-K-Factor) ;minimalen K-Faktor auf Min-K-Factor begrenzen (progn (setf K_factor Min-K-Factor) (progn (setf return_values (list :warning-headline "Info" :error-type :DFM_rule_violation :error-message (fix_mesg "DIN-K_factor ist kleiner als {1}, wird auf {1} gesetzt" (sd-num-to-string Min-K-Factor 2)) ) ) ) ) ) (if (and(>= K_factor_echt Min-K-Factor)(<= K_factor_echt Max-K-Factor)) (setf K_factor K_factor_echt) ) (progn (nconc return_values (list :error-message (fix_mesg "Offset : {1}" (sd-num-to-string Offset 2) ) :error-message (fix_mesg "Min-K-Factor : {1}" (sd-num-to-string Min-K-Factor 2) ) :error-message (fix_mesg "Max-K-Factor : {1}" (sd-num-to-string Max-K-Factor 2) ) ) ) ) ;; (display " ") ;; (display (fix_mesg "ermittelter K-Faktor (DIN) : {1}" (sd-num-to-string K_factor 4) )) ;; (display (fix_mesg "ermittelter K-Faktor (ANSI): {1}" (sd-num-to-string (/ K_factor 2) 4) )) ;; (display " ") ;; (display " ") ;********************************************************************* ; Calculate bend allowance and set global return value ; Pass open angle between bent lips instead bend angle (append return_values (list :allowance (Sh_calculate_bend_allowance_DIN sheet_thickness bend_radius (- 180 bend_angle) K_factor))) ;; (setf test ;; (append return_values (list :allowance ;; (Sh_calculate_bend_allowance_DIN sheet_thickness bend_radius ;; (- 180 bend_angle) K_factor) ;; :K_factor_echt K_factor_echt)) ;; ) ;; (display test) );end let ;; (display K_factor_echt) )