明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1425|回复: 4

[求助]我在明经找到的这个拷贝块的函数不能运行,如何改正?

[复制链接]
发表于 2009-6-1 10:23:00 | 显示全部楼层 |阅读模式

我在明经找到的这个拷贝块的函数不能运行,如何改正?我用的是2006版的CAD:

命令: (CopyBlock ( findfile "CAD模板.dwg")   "图框")
; 错误: Automation 错误。 加载应用程序时出现问题

函数原地址:http://www.mjtd.com/a2/list.asp?id=314
函数原码:

;; COPYBLOCK.LSP  Copyright ?999  Tony Tanzillo
;;
;; AutoCAD 2000  Visual LISP / ObjectDBX 示例
;;
;;   http://www.caddzone.com
;;   tony.tanzillo@caddzone.com
;;
;; 该范例演示了怎样在Visual LISP中使用ObjectDBX将任意
;; 图形文件中的图块定义添加到当前图形中。
;;
;; (CopyBlock <文件名> <图块名>)
;;
;; 该函数可从名称为<文件名>(字符串)的.DWG文件中复制名称为
;; <图块名>(字符串)的图块定义到当前图形的图块表中。
;;
;; CopyBlock返回新复制过来的在当前图形的图块表中的图块对象。
;;
;; Note that this example performs none of the
;; error checking that is required, and does not
;; attempt to determine what actually happened
;; within the deep clone operation.

(vl-load-com)

(setq *acad* (vlax-get-acad-object))

(defun CopyBlock (DwgName BlkName / blocks dbxDoc)

   (setq blocks
      (vla-get-blocks
         (vla-get-ActiveDocument *acad*)
      )
   )
  
   (setq dbxDoc
      (vla-GetInterfaceObject
         *acad*
         "ObjectDBX.AxDbDocument"
      )
   )
  
   (vla-open dbxDoc DwgName)
  
   (vla-CopyObjects
      dbxDoc
      (vlax-safearray-fill
         (vlax-make-safearray
            vlax-vbObject
           '(0 . 0)
         )
         (list
            (vla-item
               (vla-get-blocks dbxDoc)
               BlkName
            )
         )
      )
      blocks
   )
  
   (vlax-release-object dbxDoc)
  
   (vla-item blocks BlkName)

)     

(princ "\n(CopyBlock <图形文件名> <图块名>)")

(princ)

;;;;;;;;;;;;;;;;;  CopyBlock.lsp ;;;;;;;;;;;;;;;;;;;;

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-6-1 13:16:00 | 显示全部楼层

看看

(vla-GetInterfaceObject
         *acad*
         "ObjectDBX.AxDbDocument"
      )
接口是否能否调用成功

 楼主| 发表于 2009-6-1 13:51:00 | 显示全部楼层
caoyin发表于2009-6-1 13:16:00看看(vla-GetInterfaceObject         *acad*         \"ObjectDBX.AxDbDocument\"   &nbs

我在命令行运行这一句就会出错,下面是出错时出现的信息:

; 错误: 参数类型错误: VLA-OBJECT nil

发表于 2009-6-1 16:44:00 | 显示全部楼层
(setq DBXDOC
  (vla-getinterfaceobject
    *ACAD*
    (strcat "ObjectDBX.AxDbDocument."
     (substr (getvar "AcadVer") 1 2)
    )
  )
  )
 楼主| 发表于 2009-6-1 21:48:00 | 显示全部楼层
龙龙仔发表于2009-6-1 16:44:00(setq DBXDOC  (vla-getinterfaceobject    *ACAD*    (strcat \"ObjectDBX.AxDbDocument.\"     (substr (getvar \"AcadVer\")

谢谢龙龙仔,经过你这么一改,函数可以正常用了。惊喜之中!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-24 23:51 , Processed in 0.185304 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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