将一组块插入
在我的文件中,我有一些预定义的块,让我们将其命名为“A”、“B”和“C”。问题是如何在一个步骤中以定义的序列(如“a、a、B、C、C、C、a”或任何其他序列)将这些块插入数组中。
我不知道Vlisp,但总的来说,我认为我们可以遵循以下SETP:
1-程序将要求用户插入序列(只是序列已写入txt文件中,因此我们可以从txt文件复制序列并在命令行中通过。)
2-询问插入点。
3-要求wethere将其作为行或列插入。
4-指定块之间的间距。
有人愿意做这件事吗。
Thnx公司 快一点
(defun _insert(p bn ang ds)
(vlax-invoke
(vlax-get
(vla-get-ActiveLayout
(vla-get-activedocument
(vlax-get-acad-object)))
'Block)
'InsertBlock
p
bn
1
1
1
0)
(polar p ang ds)
)
(defun c:test()
(setq blk '("A" "B" "B" "C" "A" "B" "C")
pt(getpoint "\nPick Insertion point:"))
(if (not dist)
(setq dist 1.00))
(setq dist (cond
((getdist
(strcat "\nEnter Distance <"
(rtos dist 2 2)
">: ")))
(dist)))
(if (not angl)
(setq angl 0.00))
(setq angl (cond
((getangle
(strcat "\nEnter Angle <"
(angtos angl 0)
">: ")))
(angl)))
(foreach
bn
blk
(setq pt (_insert pt bn angl dist)))
)
HTH公司
得走了 Lisp程序似乎很好,但实际上它对我不起作用。
它也没有要求我输入块名序列。序列是随文件而异的变量,因此它应该是一个变量,用户每次都必须将其作为用逗号分隔的字符串插入 行(setq blk)(“A”“B”“B”“C”“A”“B”“C”)需要替换为txt文件中的读取行。提供的代码作为如何开始回答问题的示例。
这可能是开始学习Lisp程序的好时机。这里有很多人会提供帮助。
作为一个帮助有一个go at(getstring)和粘贴“a”“B”“B”“C”“a”“B”“C”一旦它击中空格它停止这是正常的任何想法的家伙,必须有一种方法使用粘贴函数作为变量。我知道我可以通过在粘贴可以接受的地方使用虚拟文本来欺骗它。
1、不知道你的文本文件是什么样子。
2.它是你的起点(因此c:测试)
是的
是的,可以这样做,接受逗号分隔的字符串,然后解析。根据OP在文本文件上的格式,解析实际上是不必要的,我完全不知道该文件的格式,很可能是“A”“B”“B”“C”“A”“B”“C”或sub来读取文本文件。不管怎样,这取决于行动
标志T将允许空间“”
(setq blk (getstring T "\nPaste Block Names: "))
(setq blk (read (strcat "("blk")")))
粘贴块名称:“A”“B”“B”“C”“A”“B”“C”
(“A”“B”“B”“C”“A”“B”“C”)
或者,如果碰巧文本文件是这种格式A B C A B C(没有逗号,没有引号)
(setq blk (getstring T "\nPaste Block Names: "))
(setq blk (mapcar 'vl-symbol-name (read (strcat "("blk")"))))
粘贴块名称:A B C A B C
(“A”“B”“B”“C”“A”“B”“C”)
干杯 谢谢Pbe的T也许有一天会派上用场。
干杯Bigal 现在轮到你了。很高兴让别人知道你得到了你想要的答案。 首先,我要感谢你们的帮助。当我们使用“T”flage时,lisp特别适合我,因此它符合空格delmited txt文件的格式(即A B C…)。逗号增量文件会更好。
实际上,txt文件的格式与AutoCAD通过命令(expresss-export attribute information)导出的txt文件的格式相同。下面是txt文件格式的示例:
句柄块名
'42C50 U14
'391FA U270
'391BA U271
块的名称排列在第2列中(即U14、U270和U271)。但这里的问题是行之间的“回车”。
为了解决这个问题,我在xls中打开了txt文件,然后复制了第二列,并使用命令“pass special-transpose”将该列转换为行。然后我再次将其保存在相同的txt格式中,然后以逗号delmitted的形式将其作为txt文件打开,然后用空格替换逗号,以满足CAD熟悉的txt文件格式(空格delmitted)。然后我就过去了。以下是我遵循的步骤。
您可以不用为Autocad转换文件来识别格式(Autocad不限于空格分隔格式),如果我们知道您在get gp上使用的文件格式,我们可以节省您转换文件的时间。从外部源读取块名会更干净。
但无论如何。,它现在对你有效。总比没有好
干杯
页:
[1]
2