信.cad图库管理插入的块如何炸开?一行代码搞得我头发都掉了。
(defun EF-Lib-BlockInsert ();图块插入(command "insert"
(cadddr (assoc $EF_LibIndex $EF_BlockList))
"X" $EF_LibScaleX
"Y" $EF_LibScaleY
"Z" $EF_LibScaleZ
"R" (angtos $EF_LibROTATE)
)
(command "EXPLODE" (SSGET "x" '((0 . "insert"))));用这个不行 "L"也不行。一行代码搞得我头发都掉了。
)
试试下面的写法:
(defun EF-Lib-BlockInsert ();图块插入
(command "insert"
;;
(strcat "*" (cadddr (assoc $EF_LibIndex $EF_BlockList)))
"X" $EF_LibScaleX
"Y" $EF_LibScaleY
"Z" $EF_LibScaleZ
"R" (angtos $EF_LibROTATE)
)
) satan421 发表于 2019-12-5 08:46
试试下面的写法:
(defun EF-Lib-BlockInsert ();图块插入
(command "insert"
大佬,插入的块没有问题。我想知道的是在代码最后一行,我炸开了块(我自己加的代码),不知道因为什么会失败,要怎么写才会炸开块。 satan421 发表于 2019-12-5 08:46
试试下面的写法:
(defun EF-Lib-BlockInsert ();图块插入
(command "insert"
少了""吗? (command "EXPLODE" (entlast)) XTdwynij 发表于 2019-12-5 09:29
少了""吗?
不同版本插入块需要的参数不一样,自己测试需要几个""。块名前加"*",代表插入时分解块。
如果非要用explode炸开,先注意你获取的选择集,ssget "X"是选择所有的块。explode命令炸开选择集的时候,需要把系统变量qaflags设置为1。
(defun EF-Lib-BlockInsert ();图块插入
(setvar 'qaflags 1)
(command "insert"
(cadddr (assoc $EF_LibIndex $EF_BlockList))
"X" $EF_LibScaleX
"Y" $EF_LibScaleY
"Z" $EF_LibScaleZ
"R" (angtos $EF_LibROTATE)
)
(command "EXPLODE" (SSGET "x" '((0 . "insert"))) "");注意选择集是所有块
) 大佬可以看一下整个完整的附件。调用COMMAND的时候竟然是COMMand还没有执行完毕。就先执行后面的代码了。相当神奇。看不懂。想加个炸开块的代码都找不着怎么加。太神奇了。
start4444 发表于 2019-12-5 09:51
(command "EXPLODE" (entlast))
大佬你看下我上传的附件源码。在插入块代码后面加入您刚刚发的那句代码上去,竟然是先执行炸开命令,然后再返回去执行插入块。很神奇,看得我一脸懵逼? XTdwynij 发表于 2019-12-5 18:15
大佬你看下我上传的附件源码。在插入块代码后面加入您刚刚发的那句代码上去,竟然是先执行炸开命令,然后 ...
插件有很多关联的东西,测试不了,炸开命令你放在哪里 start4444 发表于 2019-12-5 19:20
插件有很多关联的东西,测试不了,炸开命令你放在哪里
这个是一个完整的程序,直接运行就可以了。我把它放在插入块代码的后面。但是我调试过后竟然块还没有插入进去,放在插入块后面的代码竟然运行了。真是神奇。大佬你也调试下就知道了,长见识了。就是看不懂代码。