乐筑天下

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

[编程交流] 块插入Lisp

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 14:59:08 | 显示全部楼层 |阅读模式
我目前在一家橱柜公司工作,该公司提供使用250000多个不同区块的图纸。我想看看是否有人写了一个lisp程序,将使插入这些说块容易得多。。。
 
目前,我刚刚使用AutoCAD insert命令,然后浏览以找到存储不同类型橱柜样式的正确文件夹,然后查找特定的块名。我以前在一家有同样设置的内阁公司工作过,但他们会输入一个命令,它会弹出一个菜单,我可以在那里输入块的名称,无论它在哪个文件夹中,它都会插入。
 
有超过250000个街区,我真的不能用托盘来拉,因为我不知道从哪里开始。。。。
 
任何帮助都将不胜感激,对不起,我对lisp编程了解不多,但正在努力学习。
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-5 15:09:43 | 显示全部楼层
看看Toolpac中的符号管理器,
http://dotsoft.com/toolpac.htm
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 15:10:07 | 显示全部楼层
这是一个非常有趣的附加程序,我可能可以尝试。。。我不确定这会有多好,看看除了名字和图片之外,我真的不知道这些块,我可以试着把它弄乱。有并没有Autolisp代码可以用来处理我拥有的多个文件夹和块?
 
我目前操作了一个有人发给我的lisp文件,该文件向我展示了如何使用命令插入块,我开始对更多的文件柜执行此操作,但对于250000多个块,这将花费太长时间。。。。
 
  1. (defun c: xxxxxxx ()
  2. (setq insertpt1 (getpoint "\nPick Lower Left Corner of the cabinet: "))
  3. (command "_insert" "G:\\DRAFTERS\\Casework\\yyyyyyy.dwg" insertpt1 "" "" "")
  4. (princ)
  5. )

此代码仅定义一个块。。。。我希望不必更改命令名(xxxxxxx)来访问整个块文件夹,然后在第二个窗口中键入块名(yyyyyyy)以插入它。。。。。
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 15:20:02 | 显示全部楼层
您可以尝试这样的操作,但所有块都需要位于AutoCAD的支持路径中
 
  1. (defun c:xxxx ( / strBlockName insertpt1)
  2. (setq strBlockName (getstring "\nEnter Block Name: "))
  3. (setq insertpt1 (getpoint "\nPick Lower Left Corner of the cabinet: "))
  4. (if (and insertpt1 (findfile (strcat strBlockName ".dwg")))
  5.    (command "_insert" strBlockName insertpt1 "" "" "")
  6.    (prompt "\nBlock not found in support path! ")
  7. )
  8. (princ)
  9. )
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 15:23:34 | 显示全部楼层
谢天谢地,有人能帮我。。。。谢谢你,mtaussie。我一直在看一本Visual Lisp编程书,这本书是我从一位老同事那里收到的。今天我将尝试处理DCL文件,以及如何使用我已有的Lisp代码使其工作,但您提供的这段代码非常有效。谢谢你的大力帮助。
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 15:27:37 | 显示全部楼层
谢谢您的回答,但是保存在支持路径中的文件有任何条件吗?
支持路径的位置是什么?
 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:34:58 | 显示全部楼层
我认为你是从错误的方向来处理这个问题的,这听起来就像你只是在每个组合中使用一个块,例如2x4 3x4等等。如果你花一点时间研究动态块,会更好。你可以有一个具有特定风格但多种变化的块,只需简单地调整,在最简单的一个正方形上,单击它,输入长度和宽度。另一种方法是看嘴唇画橱柜,这些可以是一个图书馆的几个不同的风格,再问问题和它画。画一些复杂的东西可能只需要回答8个问题,第9个问题是你想要它在哪里。
 
在这里搜索David Bethel,看看他的一些图像设备是全3d绘制的,只是回答问题。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:39:31 | 显示全部楼层
看看这个,它会画一个简单的表,任何大小,它只是一个例子,它可以扩展到一个完整的切割列表维度等等。我真的认为如果你有那么多障碍,你就做错了。即使你必须付费,自动化也会很快节省数千美元。这里有很多人能够提供一些免费赠品和价格,以严重降低您对250,00标准DWG的依赖性和节省时间的准确性等。
 
  1. (defun drawlegs (pt1 legL legw /  )
  2. (setq pt2 (polar pt1 0.0 legL))
  3. (setq pt3 (polar pt2 (/ pi 2.0) legw))
  4. (setq pt4 (polar pt3 pi legL))
  5. (command "pline" pt1 pt2 pt3 pt4 "C")
  6. )
  7. (defun c:tab-legs ( / l w pt thk l1 H)
  8. (setq oldsnap (getvar 'osmode))
  9. (setvar 'osmode 0)
  10. (setq l (getdist "Enter L"))
  11. (setq w (getdist "Enter W"))
  12. (setq thk (getdist "enter thickness"))
  13. (setq H (getdist "Enter height"))
  14. (setq l1 (getdist "Enter leg size"))
  15. (setq pt (getpoint "Pick start point"))
  16. (drawlegs pt l w)
  17. (command "extrude" "last" "" thk)
  18. (command "move" "L" "" (list 0.0 0.0 0.0) (list 0.0 0.0 H))
  19. (drawlegs pt l1 l1)
  20. (command "extrude" "last" "" H)
  21. (setq pt (polar pt 0.0 (- l l1)))
  22. (drawlegs pt l1 l1)
  23. (command "extrude" "last" "" H)
  24. (setq pt (polar pt (* pi 0.5) (- w l1)))
  25. (drawlegs pt l1 l1)
  26. (command "extrude" "last" "" H)
  27. (setq pt (polar pt pi (- l l1)))
  28. (drawlegs pt l1 l1)
  29. (command "extrude" "last" "" H)
  30. (command "-vpoint" '(1 1 1 ))
  31. (setvar 'osmode oldsnap)
  32. )
  33. (C:legs)

 
PS刚刚看了一眼,我们的图书馆区域等有777个DWG,其中一些太旧了。我们在当前菜单中有363个dwg图像,比我们使用的其他图像多一些。
 
张贴几个基本相同但大小不同的方块,我们可以评论一下提问尺寸问题有多难。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 15:47:47 | 显示全部楼层
我完全同意比格尔的观点,清理和合并积木是一条路。。。250000块。。。pfff他们到底怎么会有这么多人。至少在获得某种视觉概述方面可能会给你一些帮助:http://www.cadtutor.net/forum/showthread.php?95094-RlxPaste&highlight=RlxPaste
这不是一个非常智能的insert-util,但通过使用add-folder按钮,您至少可以看到自己在处理什么。这是一个古老的,所以希望它仍然有效。。。
 
 
gr.Rlx
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:49:23 | 显示全部楼层
你也可以试试这样的。。但同意250000个街区是疯狂的。
  1. (defun c:foo (/ p d)
  2. (cond        ((and (setq d (getfiled        "\nPick a block to insert: "
  3.                         (if (findfile "G:\\DRAFTERS\\Casework")
  4.                           "G:\\DRAFTERS\\Casework"
  5.                           (getvar 'dwgprefix)
  6.                         )
  7.                         "dwg"
  8.                         8
  9.               )
  10.       )
  11.       (setq p (getpoint "\nPick Lower Left Corner of the cabinet: "))
  12. )
  13. (command "_.insert" d p "" "" "")
  14. )
  15. )
  16. (princ)
  17. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 00:47 , Processed in 2.604554 second(s), 73 queries .

© 2020-2025 乐筑天下

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