forked from ebecheto/Skill
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathareaBox.il
53 lines (47 loc) · 1.38 KB
/
areaBox.il
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
;; copyleft ebecheto
defun( areaBox (bBox)
let( (X0 Y0 X1 Y1 )
X0 = xCoord(lowerLeft(bBox))
X1 = xCoord(upperRight(bBox))
Y0 = yCoord(lowerLeft(bBox))
Y1 = yCoord(upperRight(bBox))
(X1-X0)*(Y1-Y0)
))
; grid=0.0625;schGetEnv("symSnapSpacing")
; round(yup/grid)*grid)
defun(fixZeroBox (bBox @optional (step 0.25)(grid nil))
let( (X0 Y0 X1 Y1)
unless(grid grid=0.0625)
X0=caar(bBox)
Y0=cadar(bBox)
X1=caadr(bBox)
Y1=cadadr(bBox)
xs=if(X0==X1 list(X0 round((X0+step)/grid)*grid) X0:X1)
ys=if(Y0==Y1 list(Y0 round((Y0+step)/grid)*grid) Y0:Y1)
apply('mapcar 'list list(xs ys))
))
;; defun(fixZeroBox (bBox @optional (ratio 1.1)(grid nil))
;; let( (X0 Y0 X1 Y1)
;; unless(grid grid=0.0625)
;; X0=caar(bBox)
;; Y0=cadar(bBox)
;; X1=caadr(bBox)
;; Y1=cadadr(bBox)
;; xs=if(X0==X1 list(X0 round(X0*ratio/grid)*grid) X0:X1)
;; ys=if(Y0==Y1 list(Y0 round(Y0*ratio/grid)*grid) Y0:Y1)
;; apply('mapcar 'list list(xs ys))
;; ))
;; bBox='((-0.5625 -0.875) (-0.5625 0.0))
;; fixZeroBox(bBox) ;=>((-0.5625 -0.875) (-0.625 0.0));<= mieux avec round/grid
;; defun(fixZeroBox (bBox @optional (ratio 1.1)(grid nil))
;; let( (X0 Y0 X1 Y1)
;; X0=caar(bBox)
;; Y0=cadar(bBox)
;; X1=caadr(bBox)
;; Y1=cadadr(bBox)
;; xs=if(X0==X1 list(X0 X0*ratio) X0:X1)
;; ys=if(Y0==Y1 list(Y0 Y0*ratio) Y0:Y1)
;; apply('mapcar 'list list(xs ys))
;; ))
;; bBox='((-0.5625 -0.875) (-0.5625 0.0))
;; fixZeroBox(bBox);=> ((-0.5625 -0.875) (-0.61875 0.0))