只是为了好玩。。。
也许是编写“angtodms”函数的另一种方法:
- (defun ang->dms ( ang prc )
- ( (lambda ( f / s p )
- (setq s (angtos ang 1 (+ prc 4))
- p (vl-string-position 100 s)
- )
- (strcat (substr s 1 p) "°" (f (substr s (+ 2 p)) '(39 46)))
- )
- (lambda ( a b / p )
- (cond
- ( (null b) a)
- ( (setq p (vl-string-position (car b) a))
- (strcat (substr (strcat "00" (substr a 1 (1+ p))) (1+ p)) (f (substr a (+ p 2)) (cdr b)))
- )
- ( (f a (cdr b)))
- )
- )
- )
- )
如果度值的两个前导零是可接受的,则上述值可能会变为:
- (defun ang->dms ( ang prc )
- ( (lambda ( f ) (vl-string-translate "d" "°" (f (angtos ang 1 (+ prc 4)) '(100 39 46))))
- (lambda ( a b / p )
- (cond
- ( (null b) a)
- ( (setq p (vl-string-position (car b) a))
- (strcat (substr (strcat "00" (substr a 1 (1+ p))) (1+ p)) (f (substr a (+ p 2)) (cdr b)))
- )
- ( (f a (cdr b)))
- )
- )
- )
- )
|