yaojing38 发表于 2023-6-1 18:35:23

求助扩展数据出错。。。

(defun c:test( / )
(setq ss (ssget))
(setq ename (ssname ss 0))
(setq vname (vlax-ename->vla-object ename))
(setq datatype (vlax-make-safearray vlax-vbInteger '(0 . 3)))
(vlax-safearray-fill datatype '(1001 1000 1001 1000))
(setq data (vlax-make-safearray vlax-vbvariant '(0 . 3)))
(vlax-safearray-fill data '("ITU_PLDY_TK" "ffs10""ITU_PLDY_TM" "Drawing4__10"))
;(vlax-safearray-fill data '("ITU_PLDY_TM" "Drawing4__10" ))
(vla-setxdata vname datatype data)
(princ)
)以上代码设置扩展属性的值,,,有时候可以用,,但是有时就出错,,出错在vla-setxdata 提示:未找到注册的应用程序ID,不太懂变体,,,求大佬帮忙看下,,谢谢!!!

nxchenjk 发表于 2023-6-1 19:02:29

;;******************实体中写入扩展数据**********************
(defun c:APP()
;(setq lastent(entget(entlast)))
(setq lastent0(car(entsel"\n选择对象")))
;(setq PtName(getstring"\n请输入点号:"))
(if(/= lastent0 nil)
    (progn
      (while lastent0
        (setq ssr0 (car (entsel "\n请选择点号:")))
      (setq ssna (entget ssr0))
      (setq PtName(cdr(assoc '1. ssna)))
       
        (setq lastent(entget lastent0))
      (if (= (regapp "K_PtName") NULL)(regapp "K_PtName"))
        (setq entlist(list -3
                           (append (list "K_PtName") (list (cons '1000 PtName)))
                   )
        )
        (setq lastent (append lastent (list entlist)))
        (entmod lastent);;;更新实体属性
      (setq DianM(cdr(assoc 1000 (cdr(assoc "K_PtName" (cdr(assoc -3(entget lastent0 '("K_PtName")))))))))
        (setq xyz(cdr (assoc 10 lastent)))
        (command "text"xyz "0.8" "0.0" DianM)
        (setq lastent0(car(entsel"\n选择对象")))
        (if(/= lastent0 nil)
          (progn
          (setq dm PtName)
           ; (name_add1)
          (setq PtName dm)
          )
        )
      
       
      )
    )
    (princ"\n没有选择源对象!")
)
)

yaojing38 发表于 2023-6-1 21:17:15

nxchenjk 发表于 2023-6-1 19:02
;;******************实体中写入扩展数据**********************
(defun c:APP()
;(setq lastent(entge ...

谢谢您的回复,,,我试了把4个值分开两组写入可以了,,谢谢

唐小呆 发表于 2023-6-3 11:01:45

12345678910

llsheng_73 发表于 2023-6-4 12:26:44

本帖最后由 llsheng_73 于 2023-6-4 12:28 编辑

先对将要涉及到的应用进行注册,源程序中1001对应的两个字串"ITU_PLDY_TK""ITU_PLDY_TM"
(regapp"ITU_PLDY_TK")
(regapp"ITU_PLDY_TM")
可以放到程序开始的地方,反正使用它们之前要先注册

yaojing38 发表于 2023-6-4 15:19:24

llsheng_73 发表于 2023-6-4 12:26
先对将要涉及到的应用进行注册,源程序中1001对应的两个字串"ITU_PLDY_TK""ITU_PLDY_TM"
(regapp"ITU_PLDY ...

哦,我去试试,为什么单个操作就没事?这个有什么讲究?
页: [1]
查看完整版本: 求助扩展数据出错。。。