phjlc 发表于 2022-7-6 17:32:38

字段缺少其参考Ev

您好,我真的不知道这是否是合适的董事会张贴这一点,但我有一个问题,关于我的动态块失去其字段每次我保存



它正在显示此错误



我打开后总是需要运行这个
(defun c:asd ()
(setq      ssblck (ssget "x" (list '(0 . "INSERT")))
      lpdtct 0
)
(repeat (sslength ssblck)
    (if      (not (eq (vlax-get-property
                   (vlax-ename->vla-object (ssname ssblck lpdtct))
                   'effectivename
               )
               "OIS-LVL-BLK"
             )
      )
      (progn (setq lpdtct (+ lpdtct 1)))
      (progn
      (SETQ d1 (ssname ssblck lpdtct)
            d2 (vlax-ename->vla-object d1)
            d3 (itoa (vla-get-objectid d2))
            d4 (vlax-invoke d2 'getattributes)
            d5 (car d4)                ;ffl
            d6 (cadr d4)                ;lvl
            d7 (vlax-variant-value
                   (vlax-get-property
                     (nth 4 (vlax-invoke d2 'getdynamicblockproperties))
                     'value
                   )
               )
      )
      (if (eq d7 1)
          (progn
            (command "move" d1 "" '(0 0 0) '(0 1212 0))
            (setq lpdtct (+ lpdtct 1))
          )
          (progn
            (vlax-put-property
            d6
            'textstring
            (strcat
                "+"
                "%<\\AcObjProp Object(%<\\_ObjId "
                d3                            ">%).InsertionPoint \\f "
                "\"%lu2%pt4%pr3"            "\">%"
               )
            )
            (vlax-put-property
            d5
            'textstring
            (strcat
                "%<\\AcObjProp Object(%<\\_ObjId "
                d3                        ">%).Layer \\f "
                "\"%tc1"                  "\">%"
               )
            )
            (setq lpdtct (+ lpdtct 1))
          )
      )
      )
    )
)
)


谢谢大家的回复。

BIGAL 发表于 2022-7-6 19:30:36

有时使用这种类型的东西插入块,作为第二步更新它,所以您可以使用(entlast)获取对象,然后放置动态属性。我知道for块每次都必须获得id,因为它必须反映插入的块。如果设置了ID,则无法复制块。
 
为什么动态块会做一些特殊的事情?价值观来自哪里?
 
您可能需要发布真实的dwg。 
页: [1]
查看完整版本: 字段缺少其参考Ev