风飞沙 发表于 2012-5-23 19:52:24

求助,请帮忙看下问题出在哪,为什么加载不了?

原先此lisp在32位电脑上可以用,最近换了64位的CAD2012,需要doslib18x64.arx,就加了带背景区域语句就不能用了,高手帮忙看下,为什么?如何修改?
谢谢!

;;;load DOSlib
(cond
((= (atoi (substr (getvar "acadver") 1 2)) 16)
   (if (not (member "doslib16.arx" (arx)))
   (progn
       (arxload (findfile "doslib16.arx"))
       (arxload (findfile "fpath16.arx"))
   )
   )
)
((= (atoi (substr (getvar "acadver") 1 2)) 17)
   (if (not (member "doslib17.arx" (arx)))
   (arxload (findfile "doslib17.arx"))
   )
   )
)
((= (atoi (substr (getvar "acadver") 1 2)) 18)
   (if (not (member "doslib18x64.arx" (arx)))
   (arxload (findfile "doslib18x64.arx"))
   )
)
)

(defun BLIST (/ BLCHECK BLNAME1)
(setq BLNLIST nil)
(setq BLCHECK (tblnext "BLOCK" T))
(while (/= BLCHECK nil)
    (setq BLNAME1 (CDR (ASSOC 2 BLCHECK))
          BLNLIST (cons BLNAME1 BLNLIST)
          BLCHECK (tblnext "BLOCK")
    )
) ;while
)

;;; COPY & RENAME BLOCK BY PICK
(defun C:RB (/ BE BONAME BTYPE BNNAME BONAME2 BP1)
(While (/= BTYPE "INSERT")
    (setq BE        (car (entsel "Pick BLOCK to Copy & Rename:"))
          BTYPE        (cdr (assoc 0 (ENTGET BE)))
    )
    (if        (/= BTYPE "INSERT")
      (princ "\nNot a Block! Please select a Block.\n")
    )
)
(setq        BONAME (cdr (assoc 2 (ENTGET BE)))
        BP1    (cdr (assoc 10 (ENTGET BE)))
        BNNAME BONAME
)
(BLIST)
(while (/= (member BNNAME BLNLIST) nil)
    (setq BNNAME (dos_getstring
                   "NEW Block Name : "
                   (strcat "OLD Block Name : " BONAME)
                   BNNAME
               )
    )
)
(if (= BNNAME nil)
    (exit)
)
(command ".UNDO" "BE")
(command "_.explode" BE "")
(command "_copybase" BP1 "P" "")
(command "_erase" "p" "")
(command "_pasteblock" BP1)

(setq BONAME2 (cdr (assoc 2 (entget (entlast)))))
(if (= (getvar "cmdecho") 1)
    (setvar "cmdecho" 0)
)
(command "-rename" "block" BONAME2 BNNAME)
(command ".UNDO" "END")
(princ)
)

Andyhon 发表于 2012-5-23 20:30:29

应是 (cond ....) 段
多了 ")"

风飞沙 发表于 2012-5-24 09:59:35

好像不是,我只要把那带背景段删除就可以加载了……

请帮忙……

Andyhon 发表于 2012-5-24 10:34:41

Try...
(cond
((= (atoi (substr (getvar "acadver") 1 2)) 18)
   (if (not (member "doslib18x64.arx" (arx)))
   (arxload (findfile "doslib18x64.arx"))
   )
)
((= (atoi (substr (getvar "acadver") 1 2)) 16)
   (if (not (member "doslib16.arx" (arx)))
   (progn
       (arxload (findfile "doslib16.arx"))
       (arxload (findfile "fpath16.arx"))
   )
   )
)
((= (atoi (substr (getvar "acadver") 1 2)) 17)
   (if (not (member "doslib17.arx" (arx)))
   (arxload (findfile "doslib17.arx"))
   )
)
)

风飞沙 发表于 2012-5-24 12:53:20

可以了,谢谢!
页: [1]
查看完整版本: 求助,请帮忙看下问题出在哪,为什么加载不了?