乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 66|回复: 10

[编程交流] 天花板网格布局的LISP

[复制链接]

6

主题

20

帖子

14

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:15:55 | 显示全部楼层 |阅读模式
你好
 
我只是想知道是否有人编写了lisp例程,可以在闭合多段线内生成2x4天花板网格布局?
 
我过去经常使用自定义填充图案(一个用于2x2,一个用于2x4,等等)。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:22:51 | 显示全部楼层
good’ol Hatch有什么问题
_用户
双重的
HP原始模式5
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 08:32:40 | 显示全部楼层
如果您遵循老派规则,即主边框平铺必须大于平铺尺寸的1\2,则必须在填充边框之前进行一些手动计算和调整。然后必须将舱口移到适当位置。
 
这来自一个旧的例程,该例程生成网格线,但不修剪边界外多余的线。它会自动调整边框平铺
 
方向为48“轴方向“X”或“Y”
 
  1. [color=#8b4513];;; 2 X 4 Ceiling Tile Grid[/color]
  2. [color=#8b4513];;;ARG -> Border_Point_List Direction-X/Y[/color]
  3. [color=#8b4513];;;RET -> nil[/color]
  4. [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
  5.                       xt yt xr yr i xa ya[b][color=FUCHSIA])[/color][/b]
  6. [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]
  7.        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]
  8.        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]
  9.        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]
  10.        xs [b][color=NAVY]([/color][/b]- xx nx[b][color=NAVY])[/color][/b]
  11.        ys [b][color=NAVY]([/color][/b]- xy ny[b][color=NAVY])[/color][/b]
  12.        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]
  13.        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]
  14. [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]= dir [color=#2f4f4f]"X"[/color][b][color=NAVY])[/color][/b]
  15.      [b][color=NAVY]([/color][/b]setq xt 48. yt 24.[b][color=NAVY])[/color][/b]
  16.      [b][color=NAVY]([/color][/b]setq xt 24. yt 48.[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  17. [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]
  18.        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]
  19. [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]
  20. [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]
  21. [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b]
  22. [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]
  23.                 [b][color=MAROON]([/color][/b]list 10 nx yc 0[b][color=MAROON])[/color][/b]
  24.                 [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]
  25. [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b]
  26. [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]
  27.         [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]
  28.                        [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]
  29.                        [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]
  30.         [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]
  31. [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b]
  32. [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]
  33.         [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]
  34.                        [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]
  35.                        [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]
  36.         [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]
  37. [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]
  38.                 [b][color=MAROON]([/color][/b]list 10 xc ny 0[b][color=MAROON])[/color][/b]
  39.                 [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]
  40. [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b]
  41. [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]
  42.         [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]
  43.                        [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]
  44.                        [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]
  45.         [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]
  46. [b][color=FUCHSIA]([/color][/b]setq i 1[b][color=FUCHSIA])[/color][/b]
  47. [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]
  48.         [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]
  49.                        [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]
  50.                        [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]
  51.         [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]
  52. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
玩得开心-大卫
回复

使用道具 举报

6

主题

20

帖子

14

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:34:39 | 显示全部楼层
 
谢谢你,大卫,但我运行它有困难。所以我复制了代码并将其保存为lisp文件,加载它,然后尝试从命令行运行它——但它只是说command not foud。
回复

使用道具 举报

6

主题

20

帖子

14

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:43:12 | 显示全部楼层
出现以下错误:
 
错误:无函数定义:PL
回复

使用道具 举报

49

主题

1246

帖子

1210

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2022-7-6 08:51:12 | 显示全部楼层
我是pBe的,我总是用舱口。这么简单。我甚至把它作为一个宏从工具选项板上取下来,所以你可以直接点击边界和bam,天花板网格。
回复

使用道具 举报

6

主题

20

帖子

14

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:53:14 | 显示全部楼层
 
我以前使用hatch,唯一的问题是我无法指定中心点,尤其是对于形状不规则的房间,另一个问题是我必须爆裂/分解图案填充,因为照明设备符号无法捕捉到图案填充。
我以前做的是我有两种模式,一种是2x4,另一种是4x2,我会根据我喜欢的方向来选择。我想我必须回到舱口。
回复

使用道具 举报

49

主题

1246

帖子

1210

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2022-7-6 08:58:03 | 显示全部楼层
轻松修复。只需使用UCS命令旋转用户坐标系即可轻松对齐图案填充。然后,可以使用“图案填充原点”选项定位精确的原点,以便天花板网格位于正确的位置。使用OSNAPHATCH变量可以捕捉填充图案。如果使用工具选项板,您可以拥有一个灯具块库,当您插入它们时,可以将其预设为所需的任何图层,并可以在插入点上旋转,以及工具选项板提供的许多其他选项。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 09:07:43 | 显示全部楼层
换上你的西装
  1. ;; CG.lsp
  2. ;; || This routine draws ceiling grid inside the specified boundary ||
  3. ;; fixo () 2009 * all rights released
  4. ;; 3/10/09
  5. ;; edited 3/23/09
  6. ;; edited 2/18/12
  7. ;;=================================== code start =================================;;
  8. ;; make layer if this does not exist
  9. (defun _make_layer (lname
  10. col
  11. ltype
  12. lweight
  13. plotmode
  14. plotstyle
  15. desc
  16. /
  17. layer_obj
  18. pstyle)
  19. (if (not (tblsearch "LAYER" lname))
  20. (progn
  21. (entmake
  22. (list '(0 . "LAYER")
  23. '(100 . "AcDbSymbolTableRecord")
  24. '(100 . "AcDbLayerTableRecord")
  25. (cons 2 lname)
  26. '(70 . 0)
  27. (cons 62 col)
  28. (cons 6 ltype)
  29. (cons 290 plotmode)
  30. (cons 370 lweight)));-3
  31. ;; Create layer description and set plot style
  32. (setq layer_obj (vla-item
  33. (vla-get-layers
  34. (vla-get-activedocument (vlax-get-acad-object)))
  35. lname)
  36. )
  37. (if (not (eq "" desc))
  38. (if (>= (atof (getvar "acadver")) 16.1)
  39. (progn
  40. (vla-put-description layer_obj desc)
  41. )
  42. )
  43. )
  44. (vl-catch-all-apply
  45. (function (lambda ()
  46. (if (= (getvar "pstylemode") 0)
  47. (vla-put-plotstylename layer_obj pstyle)
  48. )))
  49. )
  50. (vlax-release-object layer_obj)
  51. )
  52. (princ (strcat "\n --- Layer " """ lname """ " already exist ---")
  53. )
  54. )
  55. )
  56. (defun C:CG (/ *error* ang bd bdobj cell cl hatch hn osm pnt pt); CG - celing grid
  57. ;; error trapping function
  58. (defun *error* (msg)
  59. (vla-endundomark
  60. (vla-get-activedocument (vlax-get-acad-object)))
  61. (if hn
  62. (setvar 'HPNAME hn))
  63. (if ht
  64. (setvar 'HPGAPTOL ht))
  65. (if osm
  66. (setvar 'OSMODE osm))
  67. (if cl
  68. (setvar 'CECOLOR cl))
  69. (if cc
  70. (setvar 'CLAYER cc))
  71. (setvar 'CMDECHO 1)
  72. (if msg
  73. (prompt (strcat "\n\t\t *** Error occured: ***\n" msg))
  74. )
  75. )
  76. ;; convert radians to degrees
  77. (defun rtd (a)
  78. (* (/ a pi) 180)
  79. )
  80. ;;========================= main part =======================;;
  81. (vla-endundomark
  82. (vla-get-activedocument (vlax-get-acad-object)))
  83. (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  84. (setq hn (getvar 'HPNAME))
  85. (setq ht (getvar 'HPGAPTOL))
  86. (setq osm (getvar 'OSMODE))
  87. (setq cl (getvar 'CECOLOR))
  88. (setq cc (getvar 'CLAYER))
  89. (setvar 'OSMODE 0)
  90. (setvar 'CMDECHO 0)
  91. (_make_layer "A-CLNG-2x2" ;layer name
  92. 110 ;color index
  93. "Continuous" ;linetype
  94. -3 ;lineweight "Default" = -3
  95. 1 ; plottable
  96. "Very Light Grey" ;plot style (ignore if does not exist)
  97. "Ceiling Tile Pattern_ 12 x 12 Glued" ;layer description
  98. )
  99. (setvar 'CLAYER "A-CLNG-2x2")
  100. (initget 6)
  101. (setq cell (getreal "\nEnter a tile size <4> : "))
  102. (or cell (setq cell 4));---> change the default tile size you need
  103. (alert "The room boundary must be visible completely\non screen before you will pick a point inside")
  104. (setq pt (getpoint "\nSpecify the point inside the boundary near of the longest side: "))
  105. (setvar 'OSMODE 128)
  106. (setq pnt (getpoint pt "\nSpecify the point perpendicularly to this side: "))
  107. (setq ang (rtd (+ (/ pi 4) (angle pnt pt))))
  108. (setvar 'CECOLOR "BYLAYER")
  109. (setvar 'HPGAPTOL 0.1)
  110. (setvar 'HPNAME "ANSI37")
  111. (if (not
  112. (vl-cmdf "._-hatch" pt "_P" "" cell ang ""))
  113. (progn
  114. (alert "Something wrong with creating hatch...")
  115. (exit)
  116. )
  117. (vl-cmdf "._draworder" "_L" "" "_B" )
  118. )
  119. (setq hatch (entlast))
  120. ;(command "._chprop" hatch "" "LA" "A-CLNG-2x2" "")
  121. ;;; (command "._explode" hatch);; uncomment this line if you want to explode the hatch
  122. (*error* nil)
  123. )
  124. (prompt "\n --- Start command with "CG" or "cg" ---")
  125. (princ)
  126. (vl-load-com)
  127. (princ)
  128. ;;=================================== code end =================================;;

 
~'J'~
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 09:12:48 | 显示全部楼层
 
这不是命令行调用。您需要提供点列表和方向参数。
 
  1. (ct-2x4 '((-249.0 171.0 0.0)
  2.          (-249.0 -201.0 0.0)
  3.          (15.0 -201.0 0.0)
  4.          (15.0 -132.0 0.0)
  5.          (180.0 -132.0 0.0)
  6.          (180.0 246.0 0.0)
  7.          (-93.0 246.0 0.0)
  8.          (-93.0 171.0 0.0)
  9.          (-249.0 171.0 0.0))
  10. "Y")

 
点列表来自附着的dwg。
 
-大卫
CGRID。图纸
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 08:44 , Processed in 0.440277 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表