本帖最后由 null. 于 2025-4-12 22:31 编辑
(setq ss (ssget "x" (list (cons 0 "INSERT") )))
(setq sn (sslength ss))
(setq n 0)
(repeat sn
(setq ent (ssname ss n))
(if (entget ent) ;在autoCAD2026里,会出现ent有显示图元值,但在(entget ent)却为空,如果操作这个值就可能闪退
(progn
(setq obj (vlax-ename->vla-object ent))
(setq blkname (vla-get-EffectiveName obj))
(terpri)
(princ blkname)
)
(print "图元块是空值")
)
(setq n (1+ n))
)
在autoCAD2026里,会出现ent有显示图元值,但在(entget ent)却为空,如果操作这个值就可能闪退.
我是在块编辑里,操作这段代码。会出错闪退,要用(entget ent)加个判断才行。
这个ent是块图元时,但其实在(entget ent),却为空,最容易闪退了,我今天在两个图中,不同的操作,都遇到同样的问题。都是在程序里补充这个判断,把这个问题绕过去才行就稳定了。都是因为操作块图元(nil)闪退的,
(vlax-dump-object obj T),想查这个是什么,有什么方法,结果也是出错。反正就是不能碰。我试用的是编动大神的
可能因为这个问题,要将这个参照图绑定时,也是绑定不上的,要用其他版本绑定才行。
目前感觉,还是autocad2026稳定的,在其他情况下还没有闪退。
 - (defun c:ttta ()
- (if (setq ss (ssget "x" (list (cons 0 "INSERT") ) )
- )
- (progn
- (setq ss (ss->lst ss))
- (foreach ent ss
- (if (entget ent)
- (princ)
- (progn
- (print "有块空值")
- (vla-Erase (vlax-ename->vla-object ent))
- )
- )
- )
- )
- )
- )
|