Jump to content

LISP for ceiling grid layout


Recommended Posts

Posted

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).

Posted

Whats wrong with good 'ol Hatch with

_USER

Double

Hporiginmode 5

Posted

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

Posted
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.

Posted

The following error comes up:

 

error: no function definition: PL

Posted
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. :)

Posted
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.

Posted
I used to use hatch, only problem is that I couldn't specify the center point especially for irregularly shaped rooms
Easy 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.
Posted

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'~

Posted
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

Posted

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

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...