Code:
(in-package :Teo)
(use-package :OLI)
(sd-hide-console-window)
(sd-show-console-window)
(setf si::*enter-break-handler* t)
(sd-defdialog 'SD_TEST_5
:Dialog-title "Bohrungsdurchmesser Ìndern"
:toolbox-button nil
:variables
'(
(Bauteil :value-type :Part
:Prompt-text "Teil angeben"
:title "Teil"
:modifies nil
:next-variable 'kante
);;baugruppen
(Zylinderflaeche :selection (*sd-cylinder-seltype*) ;(*sd-edge-3d-seltype*)
:Prompt-text "Kreiskante zur definition der zu bearbeitenden Bohrungen angeben"
:title "KreisflÌche waehlen"
:multiple-items nil
:after-input (setf OLD_DIA (* 2(sd-circle-radius (sd-inq-geo-props Zylinderflaeche :Dest-space :local ))))
);;Zylinderflaeche
(OLD_DIA :value-type :Display-only
:Display-units :length
);;OLD_DIA
(NEW_DIA :value-type :number
:Prompt-text "neuen Bohrungsdurchmesser angeben"
);;NEW_DIA
);;variables
:Ok-action
'(ChangeDiameter Bauteil OLD_DIA NEW_DIA)
);;sd-defdialog
;;; Funktion zum wählen aller Zylindrischen Flächen im gewählten Teil
(defun CylindricalFaces (Teil)
(setf AllCylindricalFaces (sd-call-cmds (get_selection
:focus_type *sd-cylinder-seltype*
:select
:in_part Teil
);;get_selection
);;sd-call-cmds
);;setf
);;defun CylindricalFaces
(defun ChangeDiameter (Teil OLD_DIA NEW_DIA)
(setf counter 0)
(dolist (FlaecheToProceed (CylindricalFaces Teil))
(if (= OLD_DIA (* 2(sd-circle-radius (sd-inq-geo-props FlaecheToProceed :Dest-space :local ))))
;;Then
(progn
(setf counter (+ counter 1))
(NewChangeRad
; :check_fix :On
; :keep_tangent :yes
; :blend_auto :no
; :update_rels :yes
:faces FlaecheToProceed
(/ NEW_DIA 2)
);;NewChangeRad
);;progn
;;else
()
);;if
);;dolist
(display (format nil "Gesamtzahl Zylindrischer Flächen : ~A" (length (CylindricalFaces Teil))))
(display (format nil "~A Bohrungen wurden geändert" counter))
);;defun
; (trace ChangeDiameter)
; (trace CylindricalFaces)