乐筑天下

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

[编程交流] 3dSolid函数

[复制链接]

41

主题

120

帖子

84

银币

后起之秀

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

铜币
200
发表于 2022-7-5 15:21:57 | 显示全部楼层 |阅读模式
你好
你认为有可能吗

                               
登录/注册后可看大图


                               
登录/注册后可看大图

162202z2gaj2jsqjr2m0bq.jpg
162204rraipbnxba8xfr0i.jpg
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 15:33:19 | 显示全部楼层
这是可能的,但它需要大量的编码。。。当创建_B1时,我建议您将每个层宽度的扩展数据放入_B1,以便在稍后执行_B2时,它会创建与从_B1获得的层完全相同的层。。。当减去得到洞时,你需要分解B1,分解B2,减去每一层,最后重新定义B1。。。所以这是可以做到的,但你需要编码(如果你需要的话)。。。顺便说一句,我使用普通的三维实体作为层-从来没有创建块的需要。。。因此,手动减去每个层比其他一些方法更有用,如所述。。。除此之外,您只需要提供要减去的部分的更大层宽度,因此即使不需要扩展数据-您记得那些数字100200300-也不可能有数百万个。。。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:38:16 | 显示全部楼层
为什么不在创建实体的过程中创建实体并插入孔,然后使用lisp制作3个对象的块?你为什么要分两步做呢?在创建过程中,只需使用elev函数来堆叠实体。如果这3个实体的倍数大小不同,则可以更快地查看动态块。
 
  1. Ask a b c
  2. length height
  3. e d
  4. length height
  5. make 3 solids save block1
  6. subtract plug
  7. make plug 3 solids save block2

这需要重复2x3实体的功能等,只是一个开始。非常粗糙的应该使用defuns,然后可以堆叠尽可能多或尽可能少等。注意创建2个块,因此可能需要插入才能看到结果。
  1. (defun c:test ( / pt1 pt2 pt3 l h e d l1 h2 ent1 ent2 ent3 ent21 ent22 ent23)
  2. (setq a 100 b 120 c 200)
  3. (setq pt1 (getpoint "point"))
  4. (setq L (getdist pt1 "length"))
  5. (setq h (getdist pt1 "Height"))
  6. (setq e (getdist pt1 "Offset e"))
  7. (setq d (getdist pt1 "Offset d"))
  8. (setq L2 (getreal "Length 2"))
  9. (setq h2 (getreal "Height 2"))
  10. (command "rectang" pt1 (list (+ (car pt1) L) (+ (cadr pt1 ) h)))
  11. (command "zoom" "e")
  12. (command "extrude" "l" "" a)
  13. (setq ent1 (entlast))
  14. (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) ))
  15. (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2) ))
  16. (command "rectang" pt2 pt3)
  17. (command "extrude" "l" "" a)
  18. (setq ent12 (entlast))
  19. (command "subtract" ent1 "" ent12 "")
  20. ; 2nd layer
  21. (setq pt1 (list (car pt1)(cadr pt1) a))
  22. (command "rectang" pt1 (list (+ (car pt1) L) (+ (cadr pt1) h) a))
  23. (command "extrude" "l" "" b)
  24. (setq ent2 (entlast))
  25. (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) a))
  26. (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2) a))
  27. (command "rectang" pt2 pt3)
  28. (command "extrude" "l" "" b)
  29. (setq ent22 (entlast))
  30. (command "subtract" ent2 "" ent22 "")
  31. ; 3rd layer
  32. (setq pt1 (list (car pt1)(cadr pt1) (+ a b)))
  33. (command "rectang" pt1 (list (+ (car pt1) L) (+ (cadr pt1) h) (+ a b)))
  34. (command "extrude" "l" "" c)
  35. (setq ent3 (entlast))
  36. (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) (+ a b)))
  37. (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2) (+ a b)))
  38. (command "rectang" pt2 pt3)
  39. (command "extrude" "l" "" c)
  40. (setq ent32(entlast))
  41. (command "subtract" ent3 "" ent32 "")
  42. ; block part
  43. (command "-block" "BIGAL"  (list (car pt1)(cadr pt1) 0.0) ent1 ent2 ent3 "")
  44. ; now create plugs
  45. ; like above 3 times
  46. ; put pt1 back to z=0
  47. (setq pt1 (list (car pt1)(cadr pt1) 0.0))
  48. (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) ))
  49. (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2)))
  50. (command "rectang" pt2 pt3)
  51. (command "extrude" "l" "" a)
  52. (setq ent21 (entlast))
  53. (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) a))
  54. (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2) a))
  55. (command "rectang" pt2 pt3)
  56. (command "extrude" "l" "" b)
  57. (setq ent22 (entlast))
  58. (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) (+ a b)))
  59. (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2) (+ a b)))
  60. (command "rectang" pt2 pt3)
  61. (command "extrude" "l" "" c)
  62. (setq ent23 (entlast))
  63. (command "-block" "BIGAL2"  (list (car pt1)(cadr pt1) 0.0) ent21 ent22 ent23 "")
  64. (command "Insert" "bigal" pt1 1 1 0)
  65. )
  66. (c:test)
回复

使用道具 举报

41

主题

120

帖子

84

银币

后起之秀

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

铜币
200
发表于 2022-7-5 15:45:42 | 显示全部楼层
您好,我使用两步,因为它不总是长方体。
我想创建形状数据库以进行切割\添加
 
谢谢你的初始代码。您可以消除命令功能吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:56:53 | 显示全部楼层
我不理解消除命令功能。你想把它作为剧本吗?形状可以是任何你想要的,只要写一个pline例程,最后一个点很接近。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:01:48 | 显示全部楼层
 
下面是一个如何不使用命令调用减去实体/面域的示例。
回复

使用道具 举报

41

主题

120

帖子

84

银币

后起之秀

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

铜币
200
发表于 2022-7-5 16:13:13 | 显示全部楼层
你好
请看视频(0:25)
https://www.youtube.com/watch?v=iXk1FEP3T7M1
我不知道什么解决方案是好的,但我想类似的解决方案。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:19:28 | 显示全部楼层
这与Revit和Autocad使用对象的思维方式完全不同。
 
Autocad只能看到墙上的孔
162205o9mtlfum1ps1tpzm.jpg
回复

使用道具 举报

41

主题

120

帖子

84

银币

后起之秀

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

铜币
200
发表于 2022-7-5 16:22:03 | 显示全部楼层
你好,比格尔
是的,我知道这不是revit
但我的意思和你给我看的一模一样。
我只想在一个单独的文件中定义孔。
我只希望能够将它们插入revit。
谢谢你对这个话题感兴趣
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 03:11 , Processed in 0.568039 second(s), 84 queries .

© 2020-2025 乐筑天下

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