XTdwynij 发表于 2019-12-5 00:35:37

信.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"也不行。一行代码搞得我头发都掉了。
)

satan421 发表于 2019-12-5 08:46:40

试试下面的写法:
(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)
         )
)

XTdwynij 发表于 2019-12-5 09:28:54

satan421 发表于 2019-12-5 08:46
试试下面的写法:
(defun EF-Lib-BlockInsert ();图块插入
(command "insert"


大佬,插入的块没有问题。我想知道的是在代码最后一行,我炸开了块(我自己加的代码),不知道因为什么会失败,要怎么写才会炸开块。

XTdwynij 发表于 2019-12-5 09:29:58

satan421 发表于 2019-12-5 08:46
试试下面的写法:
(defun EF-Lib-BlockInsert ();图块插入
(command "insert"


少了""吗?

start4444 发表于 2019-12-5 09:51:21

(command "EXPLODE" (entlast))

satan421 发表于 2019-12-5 10:31:37

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"))) "");注意选择集是所有块
)

XTdwynij 发表于 2019-12-5 16:53:50

大佬可以看一下整个完整的附件。调用COMMAND的时候竟然是COMMand还没有执行完毕。就先执行后面的代码了。相当神奇。看不懂。想加个炸开块的代码都找不着怎么加。太神奇了。

XTdwynij 发表于 2019-12-5 18:15:05

start4444 发表于 2019-12-5 09:51
(command "EXPLODE" (entlast))

大佬你看下我上传的附件源码。在插入块代码后面加入您刚刚发的那句代码上去,竟然是先执行炸开命令,然后再返回去执行插入块。很神奇,看得我一脸懵逼?

start4444 发表于 2019-12-5 19:20:36

XTdwynij 发表于 2019-12-5 18:15
大佬你看下我上传的附件源码。在插入块代码后面加入您刚刚发的那句代码上去,竟然是先执行炸开命令,然后 ...

插件有很多关联的东西,测试不了,炸开命令你放在哪里

XTdwynij 发表于 2019-12-5 20:29:21

start4444 发表于 2019-12-5 19:20
插件有很多关联的东西,测试不了,炸开命令你放在哪里

这个是一个完整的程序,直接运行就可以了。我把它放在插入块代码的后面。但是我调试过后竟然块还没有插入进去,放在插入块后面的代码竟然运行了。真是神奇。大佬你也调试下就知道了,长见识了。就是看不懂代码。
页: [1] 2 3
查看完整版本: 信.cad图库管理插入的块如何炸开?一行代码搞得我头发都掉了。