PDuMont 发表于 2022-7-5 16:05:42

测试“在位编辑块”

你好
 
如果四处搜索,但没有找到测试参照编辑是否处于活动状态的方法。
我知道块编辑器有一个系统变量,但似乎没有一个用于refedit。
 
我想我可以在refedit处于活动状态时测试不可用/非法的命令,例如“block”命令,但似乎无法做到这一点。
 
有人能给我指出正确的方向吗?

rlx 发表于 2022-7-5 16:25:32

嗨,PDuMont,
 
 
发现了一些与反应堆有关的东西。我不知道他们在说什么,所以我希望这对你来说比对我来说更有意义。
 
 
http://www.cadtutor.net/forum/showthread.php?101534-测试QUOTE Edit Block In Place QUOTE Active
 
 
(setq g\u lastHandle nil g\u tmpHandel nil)(defun callbackStart(obj lst)(if(=“REFEDIT”(car lst))(setq g\u lastHandle(cdr(assoc 5(entget(entlast))))(defun callbackEnd(obj lst)(if(=“REFCLOSE”(car lst))(progn(setq g\u tmpHandel g\u lastHandle)(setq g\u lastHandle nil)))(defun callbackAbort(obj lst)(if(=“REFEDIT”(car lst))(setq g_lastHandle nil))(如果(=“REFCLOSE”(car lst))(setq g\u lastHandle g\u tmpHandel))(if(null refeditDetect)(setq refeditDetect(vlr command reactor nil’(:vlr commandWillStart.callbackStart)(:vlr commandEnded.callbackEnd)(:vlr commandCancelled.callbackAbort)(:vlr commandFailed.callbackAbortа);(defun getRefeditSS(/elst en i len ss)(setq ss(ssget))(if g_lastHandle(progn(setq i 0 len(sslength ss))(setq elst nil)(while(<i len)(setq en(ssname ss i))(setq elst(cons en elst))(setq i(1+i))(foreach en elst(if(

PDuMont 发表于 2022-7-5 16:33:26

谢谢你的rlx。
 
对于我试图做的事情来说似乎有点过分。
如果refedit打开,我试图阻止例程运行,因为lisp正在创建一个块,这不能通过refedit内部的命令调用来实现。
 
 
所以我只是修改了例程,通过entmake创建了块。问题已解决。
 
再次感谢。

rlx 发表于 2022-7-5 16:50:28

 
很高兴你能破解它。通常,最好的解决方案是最简单的。反应堆可能很难处理,尤其是如果你不得不处理其中许多反应堆的话。暂时取消对命令的定义是另一种选择,但我认为您的解决方案是最好的选择。
 
gr.Rlx

Roy_043 发表于 2022-7-5 16:55:03

回答OP:
检查REFEDITNAME变量。

PDuMont 发表于 2022-7-5 17:16:41

砰,就是这样。。。就在我面前。
 
谢谢你,罗伊!
页: [1]
查看完整版本: 测试“在位编辑块”