| 本帖最后由 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))
          )
        )
      )
    )
  )
)      
 |