如何获取块编辑器的块名
如图,用lisp或者vlisp获取块编辑器的块名先选择图元,获取块名的信息,然后在用COMMAND打开块编辑器,对这个块编辑不就行了吗?为什么一定要在编辑器里获取呢? vla-get-EffectiveName 不就是块名吗 和块编辑器有什么关系 楼上两位说的方法我会 只想在这种情况下得到块名 (getvar "REFEDITNAME") 黄翔 发表于 2022-10-31 14:54
(getvar "REFEDITNAME")
这个方法只有在位编辑的时候好使进去块编辑器就没办法得到了
一个变通的办法是,首先进行 “在位编辑(refedit)” ,这样的话就能获得块名,然后再切入到“块编辑(blockedit)” 刚才获得的块名就能用了。
一个国外的讨论贴,最后得到的结论似乎也是这样。
https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/get-block-name-while-in-block-editor/td-p/6980045#:~:text=If%20YES%20use%20REFEDIT%20instead%20of%20BEDIT%2C%20while,A%20Top%20Secret%20Command%20for%20Editing%20Your%20Blocks
贴子最后说:
Ok i think i have an idea how to make this work but i still need to retrieve some information while in the block editor. I can make it work if i can get the list of visibility states and the current visibility state. I dont know if the information is available while in block editor. Any help would be greatly appreciated. Thanks
黄明儒黄工帮我写过一个程序,似乎就是这样变通的。
http://bbs.mjtd.com/thread-176128-1-1.html 本帖最后由 kozmosovia 于 2022-11-4 14:14 编辑
从当前块编辑器内任选一个进入块编辑时就有的原图块中的实体,提取句柄。然后遍历块表内图块,找到包含该句柄的图块,提取块名。
要提高遍历效率,可以增加判断块内元素数量大于当前块编辑器内实体总数,以及标志实体的位置特征,防止相同实体用于多个块记录。
似乎没有太好的办法我想弄一个历遍所有图元的程序遇到块编辑更改块内图元属性现在无法得知是还在这个块中还是跳出到其他块定义了现在的笨方法是吧所有子图元添加扩展信息 通过读取扩展信息确定在哪个块定义中挺费劲 所以看看有没有变通的方法
CAD不支持同时进入多个块编辑器,同一时间只可能有一个活动的块编辑器。如果是程序调用的bedit命令,进入时就需要指出快名,这时候保存快名就是了。至于是否处于块编辑器状态,可以直接通过系统变量判定。
页:
[1]