(in-package :my-addon) (use-package :oli) (sd-defdialog 'am_read_dim_angle :variables '( (angle-dims-values) (angle_dims :selection *sd-anno-dimension-seltype* :multiple-items T :filter-function #'(lambda (a-dim) (if (equal (sd-am-inq-dim-type a-dim) :DIM_ANGLE) :ok :error)) :gui-value (when angle_dims (format nil "~A selected" (length angle_dims))) :after-input (collect-angles) ) ("- test section -") (show-all :push-action (progn (sd-show-console-window) (dolist (a-dim-v angle-dims-values) ;; ACHTUNG!!!! der value der dim ist in der UNIT der dim!!!! und nicht in system units! ;; da waere beim Aufsammeln also evtl. noch fein arbeit noetig ;; SD-AM-DIM-VALUES-STRUCT wird helfen (format T "~% ~8,3F" a-dim-v)) ;; (sd-rad-to-deg a-dim-v)) ) ) ) ;; end variables :local-functions '( (collect-angles () (progn (dolist (a-dim angle_dims) (pushnew (sd-am-inq-dim-value a-dim) angle-dims-values :test #'sd-num-equal-p) ) (setq angle-dims-values (sort angle-dims-values '<)) ) ) ) ;; end local functions :ok-action '(progn (pprint (nth 0 angle-dims-values)) ;; der kleinst Winkel (pprint (car (last angle-dims-values))) ;; der groesste Winkel (format T "~%~%und nun alles zusammen.. durchnummeriert...~%") (dotimes (i (length angle-dims-values)) ;; und nun alles zusammen.. durchnummeriert (format T " Winkelgroesse ~3D hat Mass: ~8,3F~%" i (nth i angle-dims-values)) ) ;; end dotimes ) ;; end ok-action ) ;; end dialog