请大佬来帮忙看看代码的修改有没有问题
下面的代码运行时提示如下错误:命令: TC请输入图形中已有的动态块名称: lkm未找到指定的动态块名称: lkm请检查后重试。
要求:下面的代码运行tc后,提示用户输入图形中已有的动态块名称(动态块测试文件再附件),用户输入动态块名称空格确认后,自动选中已经输入名称的动态块(动态块已经在当前图纸中),然后再提示执行插入的操作,后面的功能和逻辑都按照代码不变。请大佬看看代码有哪些问题,应该如何修改,最好能将修改后的代码给我,拜谢!
(defun c:tc()
(defun dongtai (enb enb2 fz dxert / a code data ob elist gr j ja jj loop name1 name8 pt exitFlag)
(setq exitFlag nil)
(princ "\n选择图形放置的区域<空格退出>: ")
(if enb
(progn
(setq elist (entget enb))
(setq loop t)
(while loop
(setq gr (grread t 15 0))
(setq code (car gr))
(setq data (cadr gr))
(cond
((= code 5)
(entmod (subst (cons 10 data) (assoc 10 elist) elist))
)
((= code 3)
(setq name8 (huazuixiaojuxing data))
(setq name1 (haohaoxuanjuxing data))
(setq jj 960 ja 90 pt (xyp-9pt name1 1))
(entmake (list '(0 . "INSERT") (cons 2 enb2) (cons 10 pt)))
(setq ob (vlax-ename->vla-object (entlast))
j(- (cadr (xyp-9pt name1 7)) (cadr pt))
a(- (car (xyp-9pt name1 3)) (car pt))
)
(lm:setdynpropvalue ob "E1" j)
(lm:setdynpropvalue ob "E2" a)
(if (> j 1750)
(lm:setdynpropvalue ob "E3" jj)
(lm:setdynpropvalue ob "E3" ja)
)
(lm:setdynpropvalue ob "翻转状态1" fz)
(entdel name8)
(setq e (entlast))
(command "Draworder" e "" "b")
)
((member code '(11 25))
(if fz
(if (= fz 0)
(progn
(setq fz 1)
(lm:setdynpropvalue dxert "翻转状态1" fz)
)
(progn
(setq fz 0)
(lm:setdynpropvalue dxert "翻转状态1" fz)
)
)
)
(dongtai enb enb2 fz dxert) ; 注意:这里递归调用可能导致性能问题
(setq exitFlag t)
(setq loop nil)
)
((= code 2)
(setq loop nil)
(entdel enb)
)
)
(if exitFlag (setq loop nil))
)
)
)
)
(princ "\n请输入图形中已有的动态块名称: ")
(setq blockName (getstring))
(if (and blockName (not (equal blockName "")))
(progn
(setq filterList (list (cons 0 "INSERT") (cons 2 blockName))) ; 构造筛选条件
(setq selSet (ssget "_X" filterList)) ; 使用 _X 模式在当前空间搜索
(if (null selSet)
(progn
(setq selSet (ssget "X" filterList)) ; 使用 X 模式在所有空间搜索
(if (null selSet)
(progn
(princ (strcat "\n未找到指定的动态块名称: " blockName))
(princ "\n请检查后重试。")
)
(progn
(setq en (vlax-ename->vla-object (ssname selSet 0))) ; 从选择集中获取第一个实体
(setq name2 (vla-get-name en)) ; 获取动态块名称
(princ (strcat "\n找到动态块: " name2)) ; 打印找到的动态块名称
(entmakex (list '(0 . "INSERT") (cons 2 name2) (cons 10 '(0 0)))) ; 创建新的插入对象
(setq enb (entlast)
dxert (vlax-ename->vla-object enb)
fz (lm:getdynpropvalue dxert "翻转状态1")
)
(dongtai enb name2 fz dxert)
(princ "\n插入动态块执行完成")
)
)
)
(progn
(setq en (vlax-ename->vla-object (ssname selSet 0))) ; 从选择集中获取第一个实体
(setq name2 (vla-get-name en)) ; 获取动态块名称
(princ (strcat "\n找到动态块: " name2)) ; 打印找到的动态块名称
(entmakex (list '(0 . "INSERT") (cons 2 name2) (cons 10 '(0 0)))) ; 创建新的插入对象
(setq enb (entlast)
dxert (vlax-ename->vla-object enb)
fz (lm:getdynpropvalue dxert "翻转状态1")
)
(dongtai enb name2 fz dxert)
(princ "\n插入动态块执行完成")
)
)
)
(princ "\n未输入有效的动态块名称,请重新运行命令并输入正确的名称。")
)
(princ)
)
缺函数:huazuixiaojuxing haohaoxuanjuxing lm:getdynpropvalue lm:setdynpropvalue 函数
页:
[1]