Skilled Warrior 发表于 2022-7-5 14:59:08

块插入Lisp

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

rkmcswain 发表于 2022-7-5 15:09:43

看看Toolpac中的符号管理器,
http://dotsoft.com/toolpac.htm

Skilled Warrior 发表于 2022-7-5 15:10:07

这是一个非常有趣的附加程序,我可能可以尝试。。。我不确定这会有多好,看看除了名字和图片之外,我真的不知道这些块,我可以试着把它弄乱。有并没有Autolisp代码可以用来处理我拥有的多个文件夹和块?
 
我目前操作了一个有人发给我的lisp文件,该文件向我展示了如何使用命令插入块,我开始对更多的文件柜执行此操作,但对于250000多个块,这将花费太长时间。。。。
 

(defun c: xxxxxxx ()
(setq insertpt1 (getpoint "\nPick Lower Left Corner of the cabinet: "))
(command "_insert" "G:\\DRAFTERS\\Casework\\yyyyyyy.dwg" insertpt1 "" "" "")
(princ)
)

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

mtaussie 发表于 2022-7-5 15:20:02

您可以尝试这样的操作,但所有块都需要位于AutoCAD的支持路径中
 
(defun c:xxxx ( / strBlockName insertpt1)
(setq strBlockName (getstring "\nEnter Block Name: "))
(setq insertpt1 (getpoint "\nPick Lower Left Corner of the cabinet: "))
(if (and insertpt1 (findfile (strcat strBlockName ".dwg")))
   (command "_insert" strBlockName insertpt1 "" "" "")
   (prompt "\nBlock not found in support path! ")
)
(princ)
)

Skilled Warrior 发表于 2022-7-5 15:23:34

谢天谢地,有人能帮我。。。。谢谢你,mtaussie。我一直在看一本Visual Lisp编程书,这本书是我从一位老同事那里收到的。今天我将尝试处理DCL文件,以及如何使用我已有的Lisp代码使其工作,但您提供的这段代码非常有效。谢谢你的大力帮助。

KARDOLITO89 发表于 2022-7-5 15:27:37

谢谢您的回答,但是保存在支持路径中的文件有任何条件吗?
支持路径的位置是什么?
 

BIGAL 发表于 2022-7-5 15:34:58

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

BIGAL 发表于 2022-7-5 15:39:31

看看这个,它会画一个简单的表,任何大小,它只是一个例子,它可以扩展到一个完整的切割列表维度等等。我真的认为如果你有那么多障碍,你就做错了。即使你必须付费,自动化也会很快节省数千美元。这里有很多人能够提供一些免费赠品和价格,以严重降低您对250,00标准DWG的依赖性和节省时间的准确性等。
 

(defun drawlegs (pt1 legL legw /)
(setq pt2 (polar pt1 0.0 legL))
(setq pt3 (polar pt2 (/ pi 2.0) legw))
(setq pt4 (polar pt3 pi legL))
(command "pline" pt1 pt2 pt3 pt4 "C")
)
(defun c:tab-legs ( / l w pt thk l1 H)
(setq oldsnap (getvar 'osmode))
(setvar 'osmode 0)
(setq l (getdist "Enter L"))
(setq w (getdist "Enter W"))
(setq thk (getdist "enter thickness"))
(setq H (getdist "Enter height"))
(setq l1 (getdist "Enter leg size"))
(setq pt (getpoint "Pick start point"))
(drawlegs pt l w)
(command "extrude" "last" "" thk)
(command "move" "L" "" (list 0.0 0.0 0.0) (list 0.0 0.0 H))
(drawlegs pt l1 l1)
(command "extrude" "last" "" H)
(setq pt (polar pt 0.0 (- l l1)))
(drawlegs pt l1 l1)
(command "extrude" "last" "" H)
(setq pt (polar pt (* pi 0.5) (- w l1)))
(drawlegs pt l1 l1)
(command "extrude" "last" "" H)
(setq pt (polar pt pi (- l l1)))
(drawlegs pt l1 l1)
(command "extrude" "last" "" H)
(command "-vpoint" '(1 1 1 ))
(setvar 'osmode oldsnap)
)
(C:legs)

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

rlx 发表于 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

ronjonp 发表于 2022-7-5 15:49:23

你也可以试试这样的。。但同意250000个街区是疯狂的。
(defun c:foo (/ p d)
(cond        ((and (setq d (getfiled        "\nPick a block to insert: "
                        (if (findfile "G:\\DRAFTERS\\Casework")
                          "G:\\DRAFTERS\\Casework"
                          (getvar 'dwgprefix)
                        )
                        "dwg"
                        8
              )
      )
      (setq p (getpoint "\nPick Lower Left Corner of the cabinet: "))
)
(command "_.insert" d p "" "" "")
)
)
(princ)
)
页: [1] 2
查看完整版本: 块插入Lisp