madonthemike Posted February 18, 2012 Posted February 18, 2012 Hi, I just wanted to know if anyone has written a lisp routine that will generate a 2x4 ceiling grid layout within a closed polyline ? I used to go about this using a custom hatch pattern (one for 2x2, one for 2x4 and so on). Quote
pBe Posted February 18, 2012 Posted February 18, 2012 Whats wrong with good 'ol Hatch with _USER Double Hporiginmode 5 Quote
David Bethel Posted February 18, 2012 Posted February 18, 2012 If you go by the old school rule that the main border tiles must be larger than 1\2 of the tile dimension, then some manual calculations and tweaking has to be done prior to hatching the border. Then the hatch must be moved to is proper location. This is from an old routine that makes the grid lines but doesn't trim the excess lines outside the border. It does automatically adjust the border tiles The direction is the 48" axis orientation "X" or "Y" [color=#8b4513];;; 2 X 4 Ceiling Tile Grid[/color] [color=#8b4513];;;ARG -> Border_Point_List Direction-X/Y[/color] [color=#8b4513];;;RET -> nil[/color] [b][color=BLACK]([/color][/b]defun ct-2x4 [b][color=FUCHSIA]([/color][/b]pl dir / nx xx ny xy xs ys xc yc xq yq xt yt xr yr i xa ya[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq nx [b][color=NAVY]([/color][/b]apply 'min [b][color=MAROON]([/color][/b]mapcar 'car pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] xx [b][color=NAVY]([/color][/b]apply 'max [b][color=MAROON]([/color][/b]mapcar 'car pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] ny [b][color=NAVY]([/color][/b]apply 'min [b][color=MAROON]([/color][/b]mapcar 'cadr pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] xy [b][color=NAVY]([/color][/b]apply 'max [b][color=MAROON]([/color][/b]mapcar 'cadr pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] xs [b][color=NAVY]([/color][/b]- xx nx[b][color=NAVY])[/color][/b] ys [b][color=NAVY]([/color][/b]- xy ny[b][color=NAVY])[/color][/b] xc [b][color=NAVY]([/color][/b]+ nx [b][color=MAROON]([/color][/b]* xs 0.5[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] yc [b][color=NAVY]([/color][/b]+ ny [b][color=MAROON]([/color][/b]* ys 0.5[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]= dir [color=#2f4f4f]"X"[/color][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq xt 48. yt 24.[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq xt 24. yt 48.[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq xq [b][color=NAVY]([/color][/b]fix [b][color=MAROON]([/color][/b]/ xs xt[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] xr [b][color=NAVY]([/color][/b]- xs [b][color=MAROON]([/color][/b]* xq xt[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] yq [b][color=NAVY]([/color][/b]fix [b][color=MAROON]([/color][/b]/ ys yt[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] yr [b][color=NAVY]([/color][/b]- ys [b][color=MAROON]([/color][/b]* yq yt[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]< xr [b][color=MAROON]([/color][/b]* xt 0.25[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq xc [b][color=MAROON]([/color][/b]+ xc [b][color=GREEN]([/color][/b]* xt 0.5[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] xa T[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq xa nil[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]< yr [b][color=MAROON]([/color][/b]* yt 0.25[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq yc [b][color=MAROON]([/color][/b]+ yc [b][color=GREEN]([/color][/b]* yt 0.5[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] ya T[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ya nil[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]list 10 nx yc 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]list 11 xx yc 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]<= [b][color=MAROON]([/color][/b]+ yc [b][color=GREEN]([/color][/b]* yt i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] xy[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 10 nx [b][color=BLUE]([/color][/b]+ yc [b][color=RED]([/color][/b]* yt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 11 xx [b][color=BLUE]([/color][/b]+ yc [b][color=RED]([/color][/b]* yt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]>= [b][color=MAROON]([/color][/b]- yc [b][color=GREEN]([/color][/b]* yt i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] ny[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 10 nx [b][color=BLUE]([/color][/b]- yc [b][color=RED]([/color][/b]* yt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 11 xx [b][color=BLUE]([/color][/b]- yc [b][color=RED]([/color][/b]* yt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]list 10 xc ny 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]list 11 xc xy 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]<= [b][color=MAROON]([/color][/b]+ xc [b][color=GREEN]([/color][/b]* xt i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] xx[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 10 [b][color=BLUE]([/color][/b]+ xc [b][color=RED]([/color][/b]* xt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] ny 0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 11 [b][color=BLUE]([/color][/b]+ xc [b][color=RED]([/color][/b]* xt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] xy 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]>= [b][color=MAROON]([/color][/b]- xc [b][color=GREEN]([/color][/b]* xt i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] nx[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 10 [b][color=BLUE]([/color][/b]- xc [b][color=RED]([/color][/b]* xt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] ny 0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 11 [b][color=BLUE]([/color][/b]- xc [b][color=RED]([/color][/b]* xt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] xy 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] Have fun! -David Quote
madonthemike Posted February 18, 2012 Author Posted February 18, 2012 If you go by the old school rule that the main border tiles must be larger than 1\2 of the tile dimension, then some manual calculations and tweaking has to be done prior to hatching the border. Then the hatch must be moved to is proper location. This is from an old routine that makes the grid lines but doesn't trim the excess lines outside the border. It does automatically adjust the border tiles The direction is the 48" axis orientation "X" or "Y" [color=#8b4513];;; 2 X 4 Ceiling Tile Grid[/color] [color=#8b4513];;;ARG -> Border_Point_List Direction-X/Y[/color] [color=#8b4513];;;RET -> nil[/color] [b][color=BLACK]([/color][/b]defun ct-2x4 [b][color=FUCHSIA]([/color][/b]pl dir / nx xx ny xy xs ys xc yc xq yq xt yt xr yr i xa ya[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq nx [b][color=NAVY]([/color][/b]apply 'min [b][color=MAROON]([/color][/b]mapcar 'car pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] xx [b][color=NAVY]([/color][/b]apply 'max [b][color=MAROON]([/color][/b]mapcar 'car pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] ny [b][color=NAVY]([/color][/b]apply 'min [b][color=MAROON]([/color][/b]mapcar 'cadr pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] xy [b][color=NAVY]([/color][/b]apply 'max [b][color=MAROON]([/color][/b]mapcar 'cadr pl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] xs [b][color=NAVY]([/color][/b]- xx nx[b][color=NAVY])[/color][/b] ys [b][color=NAVY]([/color][/b]- xy ny[b][color=NAVY])[/color][/b] xc [b][color=NAVY]([/color][/b]+ nx [b][color=MAROON]([/color][/b]* xs 0.5[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] yc [b][color=NAVY]([/color][/b]+ ny [b][color=MAROON]([/color][/b]* ys 0.5[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]= dir [color=#2f4f4f]"X"[/color][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq xt 48. yt 24.[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq xt 24. yt 48.[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq xq [b][color=NAVY]([/color][/b]fix [b][color=MAROON]([/color][/b]/ xs xt[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] xr [b][color=NAVY]([/color][/b]- xs [b][color=MAROON]([/color][/b]* xq xt[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] yq [b][color=NAVY]([/color][/b]fix [b][color=MAROON]([/color][/b]/ ys yt[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] yr [b][color=NAVY]([/color][/b]- ys [b][color=MAROON]([/color][/b]* yq yt[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]< xr [b][color=MAROON]([/color][/b]* xt 0.25[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq xc [b][color=MAROON]([/color][/b]+ xc [b][color=GREEN]([/color][/b]* xt 0.5[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] xa T[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq xa nil[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]< yr [b][color=MAROON]([/color][/b]* yt 0.25[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq yc [b][color=MAROON]([/color][/b]+ yc [b][color=GREEN]([/color][/b]* yt 0.5[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] ya T[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ya nil[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]list 10 nx yc 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]list 11 xx yc 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]<= [b][color=MAROON]([/color][/b]+ yc [b][color=GREEN]([/color][/b]* yt i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] xy[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 10 nx [b][color=BLUE]([/color][/b]+ yc [b][color=RED]([/color][/b]* yt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 11 xx [b][color=BLUE]([/color][/b]+ yc [b][color=RED]([/color][/b]* yt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]>= [b][color=MAROON]([/color][/b]- yc [b][color=GREEN]([/color][/b]* yt i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] ny[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 10 nx [b][color=BLUE]([/color][/b]- yc [b][color=RED]([/color][/b]* yt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 11 xx [b][color=BLUE]([/color][/b]- yc [b][color=RED]([/color][/b]* yt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]list 10 xc ny 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]list 11 xc xy 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]<= [b][color=MAROON]([/color][/b]+ xc [b][color=GREEN]([/color][/b]* xt i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] xx[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 10 [b][color=BLUE]([/color][/b]+ xc [b][color=RED]([/color][/b]* xt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] ny 0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 11 [b][color=BLUE]([/color][/b]+ xc [b][color=RED]([/color][/b]* xt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] xy 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]>= [b][color=MAROON]([/color][/b]- xc [b][color=GREEN]([/color][/b]* xt i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] nx[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 10 [b][color=BLUE]([/color][/b]- xc [b][color=RED]([/color][/b]* xt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] ny 0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list 11 [b][color=BLUE]([/color][/b]- xc [b][color=RED]([/color][/b]* xt i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] xy 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] Have fun! -David Thanks David, but im having trouble running it. so I copied the code and saved it as a lisp file, loaded it and then tried running it form the command line - but it just says command not foud. Quote
madonthemike Posted February 18, 2012 Author Posted February 18, 2012 The following error comes up: error: no function definition: PL Quote
tzframpton Posted February 18, 2012 Posted February 18, 2012 Whats wrong with good 'ol Hatch with_USER Double Hporiginmode 5 I'm with pBe, I always use a HATCH. So simple. I even have it as a Macro coming off the Tool Palettes so you literally click the boundary and bam, ceiling grid. Quote
madonthemike Posted February 19, 2012 Author Posted February 19, 2012 I'm with pBe, I always use a HATCH. So simple. I even have it as a Macro coming off the Tool Palettes so you literally click the boundary and bam, ceiling grid. I used to use hatch, only problem is that I couldn't specify the center point especially for irregularly shaped rooms, the other issue was that I had to burst/explode the hatch as the lighting fixture symbols do not snap to hatches. What I used to do is I had two pattern one 2x4 and the other 4x2 - and would use the one depending on the orientation i prefered. I guess I will have to go back to the hatch. Quote
tzframpton Posted February 19, 2012 Posted February 19, 2012 I used to use hatch, only problem is that I couldn't specify the center point especially for irregularly shaped roomsEasy fix. Just use the UCS command to rotate the user coordinate system to align the hatch with ease. Then you can use the Hatch Origin option to locate an exact origin so the ceiling grid is spot on.the other issue was that I had to burst/explode the hatch as the lighting fixture symbols do not snap to hatches. Use the OSNAPHATCH variable to enable snapping to Hatch Patterns. What I used to do is I had two pattern one 2x4 and the other 4x2 - and would use the one depending on the orientation i prefered. I guess I will have to go back to the hatch.If you utilize the Tool Palettes, you can have a library of light fixture blocks that when you insert them, they can be preset to whatever layer you want, and can be rotated upon the insertion point, as well as many other options that Tool Palettes give you. Quote
fixo Posted February 19, 2012 Posted February 19, 2012 Change to your suit ;; CG.lsp ;; || This routine draws ceiling grid inside the specified boundary || ;; fixo () 2009 * all rights released ;; 3/10/09 ;; edited 3/23/09 ;; edited 2/18/12 ;;=================================== code start =================================;; ;; make layer if this does not exist (defun _make_layer (lname col ltype lweight plotmode plotstyle desc / layer_obj pstyle) (if (not (tblsearch "LAYER" lname)) (progn (entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") (cons 2 lname) '(70 . 0) (cons 62 col) (cons 6 ltype) (cons 290 plotmode) (cons 370 lweight)));-3 ;; Create layer description and set plot style (setq layer_obj (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) lname) ) (if (not (eq "" desc)) (if (>= (atof (getvar "acadver")) 16.1) (progn (vla-put-description layer_obj desc) ) ) ) (vl-catch-all-apply (function (lambda () (if (= (getvar "pstylemode") 0) (vla-put-plotstylename layer_obj pstyle) ))) ) (vlax-release-object layer_obj) ) (princ (strcat "\n --- Layer " "\"" lname "\"" " already exist ---") ) ) ) (defun C:CG (/ *error* ang bd bdobj cell cl hatch hn osm pnt pt); CG - celing grid ;; error trapping function (defun *error* (msg) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (if hn (setvar 'HPNAME hn)) (if ht (setvar 'HPGAPTOL ht)) (if osm (setvar 'OSMODE osm)) (if cl (setvar 'CECOLOR cl)) (if cc (setvar 'CLAYER cc)) (setvar 'CMDECHO 1) (if msg (prompt (strcat "\n\t\t *** Error occured: ***\n" msg)) ) ) ;; convert radians to degrees (defun rtd (a) (* (/ a pi) 180) ) ;;========================= main part =======================;; (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (setq hn (getvar 'HPNAME)) (setq ht (getvar 'HPGAPTOL)) (setq osm (getvar 'OSMODE)) (setq cl (getvar 'CECOLOR)) (setq cc (getvar 'CLAYER)) (setvar 'OSMODE 0) (setvar 'CMDECHO 0) (_make_layer "A-CLNG-2x2" ;layer name 110 ;color index "Continuous" ;linetype -3 ;lineweight "Default" = -3 1 ; plottable "Very Light Grey" ;plot style (ignore if does not exist) "Ceiling Tile Pattern_ 12 x 12 Glued" ;layer description ) (setvar 'CLAYER "A-CLNG-2x2") (initget 6) (setq cell (getreal "\nEnter a tile size <4> : ")) (or cell (setq cell 4));---> change the default tile size you need (alert "The room boundary must be visible completely\non screen before you will pick a point inside") (setq pt (getpoint "\nSpecify the point inside the boundary near of the longest side: ")) (setvar 'OSMODE 128) (setq pnt (getpoint pt "\nSpecify the point perpendicularly to this side: ")) (setq ang (rtd (+ (/ pi 4) (angle pnt pt)))) (setvar 'CECOLOR "BYLAYER") (setvar 'HPGAPTOL 0.1) (setvar 'HPNAME "ANSI37") (if (not (vl-cmdf "._-hatch" pt "_P" "" cell ang "")) (progn (alert "Something wrong with creating hatch...") (exit) ) (vl-cmdf "._draworder" "_L" "" "_B" ) ) (setq hatch (entlast)) ;(command "._chprop" hatch "" "LA" "A-CLNG-2x2" "") ;;; (command "._explode" hatch);; uncomment this line if you want to explode the hatch (*error* nil) ) (prompt "\n --- Start command with \"CG\" or \"cg\" ---") (princ) (vl-load-com) (princ) ;;=================================== code end =================================;; ~'J'~ Quote
David Bethel Posted February 20, 2012 Posted February 20, 2012 Thanks David, but im having trouble running it. so I copied the code and saved it as a lisp file, loaded it and then tried running it form the command line - but it just says command not foud. This one isn't a command line call. You will need to supply the point list and direction parameter. (ct-2x4 '((-249.0 171.0 0.0) (-249.0 -201.0 0.0) (15.0 -201.0 0.0) (15.0 -132.0 0.0) (180.0 -132.0 0.0) (180.0 246.0 0.0) (-93.0 246.0 0.0) (-93.0 171.0 0.0) (-249.0 171.0 0.0)) "Y") The point list is from the attached dwg. -David CGRID.DWG Quote
BIGAL Posted February 21, 2012 Posted February 21, 2012 On the hatch path find NET in acad.pat copy it twice as 2x2 and 2x4 adjust the values so your pattern matches the sizes at 1:1 scale just makes it a bit easier to use changed net to 100x100 mm tiles so scale was easy for any size. *NET, Horizontal / vertical grid just change the .125 0, 0,0, 0,.125 90, 0,0, 0,.125 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.