试试这个:
- (defun KGA_Conv_Pickset_To_ObjectList (ss / i ret)
- (if ss
- (repeat (setq i (sslength ss))
- (setq ret (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) ret))
- )
- )
- )
- (defun c:PhaseBalance ( / ss numLst numMin numMax res trg)
- (if
- (and
- (princ "\nSelect source entities: ")
- (setq ss (ssget '((0 . "TEXT") (1 . "~*[~-.0-9]*") (1 . "~*`.*`.*") (1 . "~?*-*"))))
- (setq trg (car (entsel "\nSelect target entity: ")))
- (= "AcDbText" (vla-get-objectname (setq trg (vlax-ename->vla-object trg))))
- )
- (progn
- (setq numLst
- (mapcar
- '(lambda (obj) (read (vla-get-textstring obj)))
- (KGA_Conv_Pickset_To_ObjectList ss)
- )
- )
- (setq numMin (apply 'min numLst))
- (setq numMax (apply 'max numLst))
- ;; Formula: (Big - Small)/Big * 100 = X.X%
- (setq res (strcat (rtos (/ (- numMax numMin) numMax 0.01) 2 1) "%"))
- (princ (strcat "\nPhase Balance: " res))
- (vla-put-textstring trg res)
- )
- )
- (princ)
- )
|