fcfcadd 发表于 2022-7-6 11:40:04

我们试图实现的是能够插入属性块,在命令提示符下键入属性值,然后让它提示“插入另一行是否?”如果回答“是”,则它会在最后一个拾取点正下方1/4”处再次插入块,并能够在命令提示下再次填充属性,其中一个属性按先前输入的顺序排列,如果否,则lisp结束,依此类推。我们被难住了。

alanjt 发表于 2022-7-6 11:45:42

我非常愿意帮忙,但你必须事先告诉我所有的信息。给我贴块,告诉我哪个属性需要连续。我把一些东西放在一起,但我需要进行顺序修改。如果你今晚能发出去,我会在睡觉前发。明天我会很忙(准备60%的提交),所以我不知道什么时候可以开始。

fcfcadd 发表于 2022-7-6 11:49:13

这是我们正在使用的属性块。MK标签是我们需要的序列标签。
除了我已经解释的,如果你需要任何其他信息,请告诉我。
 
http://file:///N:/ACAD/STD/BOM.dwg

alanjt 发表于 2022-7-6 11:52:15

你的链接有问题。只需上传文件。

fcfcadd 发表于 2022-7-6 11:53:18

如果这不起作用,请告诉我。
物料清单。图纸
物料清单。图纸

alanjt 发表于 2022-7-6 11:56:31

用增量更新了一分钟。试试这个。
 
(定义c:BOM(/BlockName LayerName pt lst);;连续插入“BOM”块(必需)和标签属性;;块将放置在“BORDER01”层上(如果不存在则创建);;用户还可以选择将下一个块1/4“放置在先前放置的块下方;;Alan J.Thomspon,05.18.10(vl load com)(setq BlockName“BOM”LayerName“BORDER01”)(或*BOM:Inc*(setq*BOM:Inc*1))(如果(或(findfile(strcat BlockName.dwg))(tblsearch“block”BlockName)(警报(strcat“block:\”“BlockName”\“找不到!”)(progn(或(tblsearch“layer”)“LayerName”(vla add(vla get layers(cond(*AcadDoc*))((setq*AcadDoc*(vla get activedocument(vlax get acad object)))))LayerName)(initget 6)(setq*BOM:Inc*(cond((getint(strcat“\n”MK\”增量:)))(*BOM:Inc*)))(while(and(if lst(setq pt(initget 0“Exit”)pt(cond((getpoint“\n指定插入点或[退出])

fcfcadd 发表于 2022-7-6 12:01:49

明白了
命令:bom
 
使数字递增:
 
指定插入点:OOPS的endp:自动错误。文件服务器错误
 
我在Autocad 2005中工作

alanjt 发表于 2022-7-6 12:04:31

对我来说效果很好。你能给我寄一张示例图吗?

fcfcadd 发表于 2022-7-6 12:06:05

这是我们开始使用的模板文件。块位于图纸空间中图纸的右上角。
 
图纸3.dwg
图纸3.dwg

alanjt 发表于 2022-7-6 12:09:28

好的,我没有测试它,如果块不在图纸中。现在就试试(上面更新了)。
页: 1 [2]
查看完整版本: 如何循环此例程