从列表中插入块
早上好我是AutoLISP的新手,现在还不太熟悉它。
我正在尝试制作一个LISP,它将在Excel中制作的列表中的指定坐标处插入大约1500个块(或者可以转换为txt)。excel列表将具有X、Y坐标、旋转角度和2或3个属性。
这个LISP不会被长时间使用,它主要是为了在构建过程中完成一个大的插入以进行编辑,所以我只需要将其用于功能目的。如果有人能更好地指导我如何将列表中的信息提取到LISP中,这是我遇到的主要问题。
谢谢你的帮助! 如果数据来自Excel工作表,则使用脚本将块添加到AutoCAD图形可能更容易。例如,假设您的Excel文件看起来像下面的示例,数据位于B列到G列。
https://dl.dropboxusercontent.com/u/18135203/Script1.JPG
使用Excel连接函数在单元格A2中输入以下内容,以创建添加块的命令。如前所述,重要的是要使用空格来强制命令在执行时转到下一个参数。请注意,1之前有一个空格(表示比例),后面有两个空格。由于Enter不能包含在此序列中,我们将使用@@@作为其占位符。
https://dl.dropboxusercontent.com/u/18135203/Script2.JPG
使用“向下填充”为所有数据创建插入命令。
将A列从第2行复制到最后一行(在我的示例中为A4单元格)到剪贴板。
打开MS Word并粘贴为文本。
使用Replace并将文本@@替换为^p。这会将第二个属性值放置在新行上,为命令提供Enter输入。
将文件另存为。txt文件。
将文件扩展名更改为。scr。文件名应该类似于:filename。可控硅
在AutoCAD中,输入脚本命令并选择。scr文件。这应该在指定的位置和角度添加多个块。 您可以使用此例程从文本文件中获取信息。其中A.txt是文件,L是结果列表。项目的L类型为字符串。
(setq L nil
file (open "A.txt" "r"))
(while (setq line (read-line file))
(setq line (mapcar 'vl-princ-to-string (read (strcat "(" line ")")))
L (append L (list line)))
)
(close file)
Irm也可以将属性括在引号“Apples”“Banannas”中,而不是添加单词step。粘贴到Word需要确保保存为文本文件。scr文件扩展名,Word可以添加隐藏字符。
解释得很清楚,做得好。 BIGAL,文本字符串:
-插入MyBlock 12.34,20.5 1 30“苹果”“香蕉”
将“Apples”“Bananas”分配给MyBlock的第一个属性。应该使用什么语法在两个值之间获得Enter键,以便将Apple分配给第一个属性,将Banana分配给第二个属性?我对^ p的替换添加了执行此操作的返回键。不必做替代品会更干净。非常感谢。 Irm,
这就是我一直在寻找的方法。我曾经有过类似的想法,用不同的y坐标绘制多段线,并将x增加一个单位(5英尺),然后我会将该列表粘贴到命令行中。这种补救方法肯定会为我节省大量的时间来完成这项任务。
非常感谢! 或者使用autolisp语法:
Irm,
我需要^p周围的空间吗?我还没有让它完全发挥作用,但它正在出现。
大卫,
我该如何使用你的这个序列?我还不太熟悉autolisp。我抄下了序列,并在脚本中运行它。这是正确的方法吗?我得到一个提示:“需要点或选项关键字。”后跟“指定插入点或[基点/比例/X/Y/Z/旋转]: 最简单的方法是:
只需将列“I”复制到AutoCAD命令行即可
或:
[列表]
[*]将列“I”复制到记事本或任何真正的ASCII编辑器中
[*]将新文件保存到已知位置(c:\acad\insb.lsp)
[*]在这种情况下,文件名和扩展名并不重要
[*]在AutoCAD命令行类型处(加载“c:/acad/insb.lsp”)
[/列表]
注意,文件位置使用“/”vs DOS标准。(AutoLsip需要)
此外,块/插入属性数量必须完全匹配。在同一个帖子中,我发布了MyBlock1有(3)MyBlock2有MyBlock3有(2)。
有一些解决方法,但听起来这对你来说并不是一个大问题。
插入xlsx公司 当我运行名为Test2的lsp时。lsp返回此测试窗口
这是目前lsp中唯一的一行
(命令“_.INSERT”“SIG”list(12 36 0)1 1 32“781Z”“GYR”)
知道怎么了吗?
谢谢
页:
[1]
2