明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 620|回复: 1

[提问] 程序出错,大佬帮看一下。

[复制链接]
发表于 2019-8-4 17:14:25 | 显示全部楼层 |阅读模式
(defun c:nn (/ i enbox #cmd #os y_insert_n e len s lst elst s+ ss+ n i_e s_len insert_p insert_p_lst)
  (vl-load-com)
;获取对角点
  (defun enbox (ename / ll ur)
        (vla-getboundingbox (vlax-ename->vla-object ename) 'll 'ur)
        (mapcar 'vlax-safearray->list (list ll ur))
)
;选择集合并
  (defun ss+(ss1 ss2 / a b sl1 sl2 ename)
        (if (= (type ss1) 'PICKSET)(setq a(sslength ss1)))
        (if (= (type ss2) 'PICKSET)(setq b(sslength ss2)))
(cond ((and ss1 ss2)
       (progn
         (setq sl2(sslength ss2))
           (repeat sl2
          (setq ename(ssname ss2 (setq sl2(1- sl2))))
          (setq ss1(ssadd ename ss1)))))
      ((and (not ss1)(not ss2))ss1)
      ((not ss1)ss2)
      ((not ss2)ss1)
      ))
;*******
  (vl-cmdf "_.undo" "be")
  (setq #cmd (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq #os (getvar "osmode"))
  (setvar "osmode" 0)
  (vl-cmdf "-layer" "on" "*" "")
  (setq y_insert_n (vlax-get (vlax-ename->vla-object (car (entsel "\n请选择更换目标符号(块):"))) 'Name))
  (setq e (car (entsel "\n请选择矩形:")))
  (setq len (vlax-get (vlax-ename->vla-object e) 'Length));请选择矩形:; 错误: ActiveX 服务器返回错误: 未知名称: "LENGTH"
  (setq s (ssget "A" (list (assoc 8 (entget e)))))
  (setq lst nil elst nil s+ nil i 0)
  (repeat (sslength s);选择相同的矩形
    (setq i_e (ssname s i))
    (setq s_len (vlax-get (vlax-ename->vla-object i_e) 'Length));请选择矩形:; 错误: ActiveX 服务器返回错误: 未知名称: "LENGTH"
    (if (= len s_len)(setq lst (cons i_e lst)))
    (setq i (1+ i))
    )
  (foreach x lst      ;选择矩形内的块
    (setq elst (enbox x))
    (setq s (ssget "W" (car lst)(cadr lst) '((0 . "INSERT")(8 . "CHAR"))))
    (setq s+ (ss+ s s+))
    )
  (repeat (setq n (sslength s+))
    (setq insert_p (vlax-get (vlax-ename->vla-object (ssname s+ (setq n (1- n)))) 'Name))
    (setq insert_p_lst (cons insert_p insert_p_lst))
    (entdel (ssname s+ n))
    )
  (foreach x insert_p_lst  ;替换块
    (vl-cmdf "insert" y_insert_n x "1" "" "")
    )
  (setvar "cmdecho" #cmd)
  (setvar "osmode" #os)
  (vl-cmdf "_.undo" "e")
  (princ)
)

程序出现错误,我脑袋糊了,检查不出来
(vl-load-com)已写在开头
提示:请选择矩形:; 错误: ActiveX 服务器返回错误: 未知名称: "LENGTH"
应该是这行
(setq len (vlax-get (vlax-ename->vla-object e) 'Length))

(setq s_len (vlax-get (vlax-ename->vla-object i_e) 'Length))



发表于 2019-8-4 22:04:32 来自手机 | 显示全部楼层
你改成vl-get-Length试下?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 16:26 , Processed in 0.184924 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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