明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 898|回复: 5

[讨论] 求助扩展数据出错。。。

[复制链接]
发表于 2023-6-1 18:35:23 | 显示全部楼层 |阅读模式
  1. (defun c:test( / )
  2. (setq ss (ssget))
  3. (setq ename (ssname ss 0))
  4. (setq vname (vlax-ename->vla-object ename))
  5. (setq datatype (vlax-make-safearray vlax-vbInteger '(0 . 3)))
  6. (vlax-safearray-fill datatype '(1001 1000 1001 1000))
  7. (setq data (vlax-make-safearray vlax-vbvariant '(0 . 3)))
  8. (vlax-safearray-fill data '("ITU_PLDY_TK" "ffs10"  "ITU_PLDY_TM" "Drawing4__10"))
  9. ;(vlax-safearray-fill data '("ITU_PLDY_TM" "Drawing4__10" ))
  10. (vla-setxdata vname datatype data)
  11. (princ)
  12. )
以上代码设置扩展属性的值,,,有时候可以用,,但是有时就出错,,出错在vla-setxdata 提示:未找到注册的应用程序ID,不太懂变体,,,求大佬帮忙看下,,谢谢!!!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 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没有选择源对象!")
  )
)
 楼主| 发表于 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
发表于 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")
可以放到程序开始的地方,反正使用它们之前要先注册
 楼主| 发表于 2023-6-4 15:19:24 来自手机 | 显示全部楼层
llsheng_73 发表于 2023-6-4 12:26
先对将要涉及到的应用进行注册,源程序中1001对应的两个字串"ITU_PLDY_TK""ITU_PLDY_TM"
(regapp"ITU_PLDY ...

哦,我去试试,为什么单个操作就没事?这个有什么讲究?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 21:29 , Processed in 0.159137 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表