;;--------------------------------------------------------------------------* ;; Modulbeschreibung: ;; Erstellt und löscht Rundung nach Geometrieregeln ;;--------------------------------------------------------------------------* ;; Dateiname: Kanten_zu_Rundung.lsp ;; Version : 1.4 ;; Datum : 17.03.2023 ;; Author : MiBr ;;--------------------------------------------------------------------------* ;; Als Grundlage diente das Tool Kanten.lsp von der Seite OSD.CAD.de ;;--------------------------------------------------------------------------* ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 65280 Grün ; 16776960 Gelb ; 16777215 Weiss ; 16711680 Rot ; 255 Blau ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (in-package :mibr) (use-package :oli) (sd-defdialog 'Kanten_zu_Rundung :dialog-title "Rundung nach Geometrieregel" :toolbox-button nil :after-initialization '(sd-disable-must-variable-check) ;Variablencheck der :ok-action deaktivieren!!! :start-variable 'mlaenge :variables '( (erstell_fa :title "Erstellen" :value-type :boolean :toggle-type :grouped-toggle :initial-value t :after-input (visible-buttons t nil t nil nil nil t nil t nil) :next-variable mlaenge ) (loesch_fa :title "Ändern" :value-type :boolean :toggle-type :grouped-toggle :initial-value nil :after-input (visible-buttons nil t nil t t t nil t nil t) :next-variable mflaeche ) ("Einstellungen") (fabstand :value-type :number :title "Radius" :initial-value 1 :prompt-text "Abstand eingeben" :proposals (0.5 1 2 3 4 5 10) ) ("Auswahl") (mlaenge :selection (*sd-arc-3d-seltype* *sd-circle-3d-seltype* *sd-line-3d-seltype*) :title "Referenz Kante" :prompt-text "Referenz Bogen auswählen" :after-input (setf klaenge (sd-call-cmds (measure_dist :edge_length mlaenge))) :initial-visible t :next-variable 'fkante ) (mflaeche :selection *sd-blend-3d-seltype* :title "Ref. Rundung" :prompt-text "Referenz Rundung auswählen" :after-input (setf kflaeche (sd-call-cmds (get_vol_prop :for_face mflaeche :area))) :initial-visible nil :next-variable 'FRadien ) (fkante :selection (*sd-arc-3d-seltype* *sd-circle-3d-seltype* *sd-line-3d-seltype*) :prompt-text "Kanten wählen" :title "Kanten wählen" :multiple-items t :initial-value nil :initial-visible t ) (fradien :selection *sd-blend-3d-seltype* :prompt-text "Rundungen wählen" :title "Rundungen wählen" :multiple-items t :initial-value nil :initial-visible nil ) (tol_mm :value-type :number :title "Toleranz [±mm]" :initial-value 0.0001 :prompt-text "± Toleranz der Kantenabweichtung angeben" :initial-visible t ) (tol_qmm :value-type :number :title "Toleranz [±mm²]" :initial-value 0.01 :prompt-text "± Toleranz der Flächenabweichtung angeben" :initial-visible nil ) ("-") (uebercol :title "Farbe ändern" :push-action (do_aendern 3) :toggle-type :grouped-toggle :initial-visible nil ) (ueberloe :title "Rundung löschen" :push-action (do_aendern 2) :toggle-type :grouped-toggle :initial-visible nil ) (ueberaen :title "Rundung ändern" :push-action (do_aendern 1) :toggle-type :wide-toggle :initial-visible nil ) (ueberers :title "Rundung erstellen" :push-action (do_ers) :toggle-type :wide-toggle :initial-visible t ) ;lokale variablen (klaenge) (kflaeche) ) ;end var :mutual-exclusion '(loesch_fa erstell_fa) :ok-action '(let (part_input) (when (or (and fradien mflaeche) (and mlaenge fkante)) (setf part_input (sd-display-warning (format nil "Eingaben wurden nicht ausgeführt!~%Zurück zum Dialog?") :title "Verundungen" :push-1 "Ja" :push-2 "Nein" :severity :low)) (if (eql part_input :yes) (sd-return-from-ok-action)) ) ) ;end let :help-action '(sd-display-message " Rundung nach Geometrieregel erstellen/löschen - Erstellt Rundung nach Referenzbögen mit gleicher Bogenlänge (± Toleranz mm) - Ändert/Löscht Rundung nach Referenzrundung mit gleicher Flächengröße (± Toleranz mm²) Viel Spaß beim Rundungen erstellen !!! Michael " :title "Kanten_zu_Fase.lsp" :push "Weiter") :local-functions '( (do_ers () (let (istlang die_kanten) (dolist (i fkante) (setf istlang (sd-call-cmds (measure_dist :edge_length i))) (when (and (< (- istlang tol_mm) klaenge ) (> (+ istlang tol_mm) klaenge)) (push i die_kanten) ) ) ;end dolist (when die_kanten (sd-call-cmds (add_blends die_kanten :const_rad fabstand :check))) (display (format nil "~a rundungen erstellt" (length die_kanten))) ) ;end let (sd-set-variable-status 'fkante :value nil) (sd-set-variable-status 'mlaenge :value nil) ) ;end do_ers (do_aendern (index) (let (istgross die_radien) (dolist (i fradien) (setf istgross (sd-call-cmds (get_vol_prop :for_face i :area ))) (when (and (< (- istgross tol_qmm) kflaeche) (> (+ istgross tol_qmm) kflaeche)) (push i die_radien) ) ) ;end dolist (when die_radien (cond ((= index 1) (sd-call-cmds (modify_blends die_radien :const_radius :new_radius fabstand :check)) (display (format nil "~a Verrundungen geändert" (length die_radien)))) ((= index 2) (sd-call-cmds (delete_blend die_radien :check)) (display (format nil "~a Verrundungen gelöscht" (length die_radien)))) ((= index 3) (sd-call-cmds (set_face_color die_radien 10066329)) (display (format nil "~a Verrundungen eingefärbt" (length die_radien)))) ) ) ) ;end let (sd-set-variable-status 'fradien :value nil) (sd-set-variable-status 'mflaeche :value nil) ) ;end do_aendern (visible-buttons (a b c d e f g h i j) (sd-set-variable-status 'mlaenge :visible a) (sd-set-variable-status 'mflaeche :visible b) (sd-set-variable-status 'ueberers :visible c) (sd-set-variable-status 'uebercol :visible d) (sd-set-variable-status 'ueberloe :visible e) (sd-set-variable-status 'ueberaen :visible f) (sd-set-variable-status 'fkante :visible g) (sd-set-variable-status 'fradien :visible h) (sd-set-variable-status 'tol_mm :visible i) (sd-set-variable-status 'tol_qmm :visible j) ) ;end visible-buttons ) ;end local ) ;end sd-def