kclanton 发表于 2022-7-6 10:59:56

需要重复Wblo的帮助

我需要一些关于lisp例程的帮助来创建我的库的wblocks。
我有一个图形(主图形),其中包含5000个“可能”块的实体。实体已经准备好进行WBlock了,但是,由于我要通过几个步骤来创建每个实体,我认为lisp例程可以帮助加快这个过程。首先,每个“将是”块下面都有一段文本,指示实际的块文件名应该是什么。这段文本不包括在wblock本身中-它只是一个标签,以确保文件名正确。为了手动锁定,我通常使用ddedit选择文本,并在提示输入文件名时执行ctrl+c和ctrl+v组合键。基本上,我想让lisp例程完成以下所有步骤。
 
提示输入中心点-用作子块的插入点,并将ucs原点设置为同一点,以便单个子块位于新文件中的0,0,0处。
 
我使用以下代码获取每个wblock的插入点:
(命令“UCS”“O”“center”(setq insertpt(getpoint“\nSet 0,0,0原点和块的插入点”))
 
获取实体下方文本的值(对于wblock文件名)
 
-Wblock到d:\块\“文本字符串中的值”
(路径本身可以硬编码,或者……最好在例程开始时提示“文件夹位置”)
 
选择要wblock的实体(窗口)
如果文件名存在,则提示覆盖或输入新文件名
 
在当前0,0,0(同一点)处将新创建的块插入到“主图形”中
 
重复-提示下一个wblock插入点。。。
 
*********
 
任何帮助都将不胜感激!!

SteveK 发表于 2022-7-6 11:04:27

像这样的?

kclanton 发表于 2022-7-6 11:08:05

谢谢你的回复。
这是一个方便的例行程序,但它不做我需要的。导出块。lsp正在我的主图形中查找现有块。我在图纸中没有任何方块。。。我只是准备好了原始实体,以便进行WBlock。

SteveK 发表于 2022-7-6 11:12:25

对不起,我没看懂。这怎么样?
请注意,如果块已经存在,它将不会继续(如果存在块,是否总是要替换它?)

kclanton 发表于 2022-7-6 11:13:54

它工作得很好!比我提出的粗糙代码好多了。在执行wblock命令之前,是否有方法将UCS原点设置为与“pt”相同的点?我试着使用
 
(setvar "ucsorg" pt)但它表示“变量设置被拒绝”。
我也试过:
将新原点设置到同一点,但例程随后立即停止。
 
此外,wblocks被保存到“我的文档”文件夹中。有没有办法让我选择wblocks应该保存在哪里?。。。如果没有,我可以在做完后把它们搬走。
 
如果存在块,我不一定要覆盖它。如果我复制了“块名文本”,最好能得到提示。
 
最后,有没有办法循环或保持例程运行,这样我就可以连续wblock?
 
这太棒了!非常感谢你的帮助。

flowerrobot 发表于 2022-7-6 11:16:51

你在说这个吗
 
3

kclanton 发表于 2022-7-6 11:20:37

我需要将ucs原点移动到与每个wblock(pt)的插入点拾取的同一点。这样,在创建的每个新文件中,对象的插入点实际上位于0,0,0。

SteveK 发表于 2022-7-6 11:25:21

我会说赛斯(flowerrobot)是对的,尽管也许我没有跟随。。。
 
我只是把if改成了一段时间,这样它就可以继续为你循环。
 
我还添加了一个文件夹变量Dir,您可以更改它,它将成为保存块的路径。
或者,如果希望目录与图形相同,请使用:
怎么样?

kclanton 发表于 2022-7-6 11:28:50

你太棒了!也感谢赛斯。
这正是我想要的。我确实在(progn)之后添加了以下内容
你刚刚度过了我的一周!!

SteveK 发表于 2022-7-6 11:32:41

啊,干得好。顺便说一句,你可以删除progn和相关的括号,while循环不需要它。
很高兴这是你的一周
页: [1] 2
查看完整版本: 需要重复Wblo的帮助