并将这些块包含在lisp中,然后再次为您上传。 以下是3个文件(XBlock.lsp、ddxblock.dcl、terminal.dwg)。正如我提到的,我将它们都保存在支持目录中。
在你把一切都安排好之后,有几件事要记住。名称是任意的。出于所有目的,请将其保留为“CC”。你可以把它命名为ABCDEFGHIJK。。。。。如果你这样选择,但这并不重要。默认起点为1,只需输入2作为终点。同样,只要终点高于起点,这是任意的。1-10、11-12、22-99,都无关紧要。
要查看我的问题,请打开文件“terminal.dwg”,运行LISP和VIOLA!现在打开一个空白图形并尝试。祝你好运
我还不习惯这些论坛,因为在我还是一个新手海报,所以让我知道如果这不上传。
干杯
XBLOCK。LSP
终端。图纸
ddxblock。dcl 嗨,代理,
使现有代码工作的快速方法是确保其使用的所有块(即Terminal.dwg)都位于AutoCAD支持路径中。
可以通过在命令行键入“Options”,然后转到“Files”选项卡来找到支持路径。
李 谢谢你,李,但是他们。。。请参阅我上一篇文章的第一行。。。 嗨,代理,
我看了一下你发布的代码,并重写了它,希望能为你提供更强大的功能(它也应该运行得更快)。
如果你有任何问题,请告诉我。
李
xblock LM。lsp
ddxblock LM。dcl 李,如果找不到障碍物,我相信你的常规动作会摇摆不定。
当我不打算在我的例程中进行用户交互(允许用户选择文件夹、文件等)时(即使这样,我在大多数情况下也会考虑过度杀戮,即我通常会尽可能快地使例程失败。如下面最后一个示例所示)。然而,当我设计一个用于用户交互的应用程序时,你可以指望至少还有100行左右,只是为了让它有点防爆。
(defun blockp ( bn )
;;
;; blockp
;; return ``location'' for a block search.
;;
;; if block is in dwg. returns ``dwg''
;; if block is found in paths returns
;; ``path to dwg''
;; if not found, returns ``nil''
(cond
((tblsearch "BLOCK" bn) 'dwg)
((findfile (strcat bn ".dwg")))) )
( (lambda ( block-to-insert file-to-get-block-from )
(cond
( (or
(tblsearch "BLOCK" block-to-insert)
(ObjectDBX-copyblockfromdrawing file-to-get-block-from block-to-insert)
)
(command "insert" block-to-insert PAUSE "" "")
(while (eq (logand (getvar "CMDACTIVE")) 1)
(command PAUSE))
)
( T
(princ "\n\nUnable to locate block"))))
"BlockThatDoesntExistInDrawing"
"c:\\Drawing.dwg") *哇,你们在我打字的时候又在我身上加了几个帖子(或者我没有看到第二页)(^^)。。。对不起,如果我现在断章取义。
不用担心,你是对的-我之前发布的函数中有一个拼写错误,我假设vl filename extension返回“”表示无扩展(就像vl filename directory返回无目录一样),但实际上它返回零。
代码已更新。
李 我假设块不在Autocad搜索路径中,因此无法找到它。
我认为您需要做的就是将块写入Autocad搜索路径(或在选项、文件选项卡、搜索文件支持路径中创建自己的块)。这将使autocad搜索您的图形,如果在那里找不到,则应在autocad和您可以创建的搜索路径中查找。
希望这有帮助 谢谢大家的帮助。我一天的大部分时间都不在,为了工作,我会做一些其他的图表。我只是想让你知道我已经收到了所有的东西。不过,我有一个简单的问题,我应该把其他代码放到李的代码里吗?只是好奇。
但是我今天会试着去试一下,我会回复的。
再次感谢您的帮助,我稍后会与大家见面!
页:
1
[2]