明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1369|回复: 8

[求助]请龙龙仔帮忙你的程式为何得不到想要的结果?

[复制链接]
发表于 2007-10-29 21:04 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-10-31 16:19:03 编辑

我改了龙龙仔的“一个VLISP的批量处理范例”可得不到想要的结果,我想要的结果是每个图形符合条件的文本,可得到的却是

"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"
"Drawing1.dwg" "Drawing1"

请高手告诉我为什么?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2007-10-30 09:48 | 显示全部楼层

原来的程序是这样的

;;一个VLISP的批量处理范例
;;从这个范例可以了解VLISP批量处理图档
;;虽然速度慢了点,但非常实用
;;By LUCAS(龙龙仔)
;;从文件移除未使用之具名参考                                
;;                                                          
;;虽配合Expresstools__(acetutil.arx)                        
;;为加度程序执行,程序将设定系统变量ACADLSPASDOC             
;;即<只载入 acad.lsp 至 AutoCAD 执行期所开启的第一个图面>   
;;当然程序结束后,会还原系统变量ACADLSPASDOC
;;                
;;Usage: (PURGEALL <循环次数>)                                                           
;;command: (PURGEALL 5)                                       

(
arxload "acetutil.arx" NIL)
(
vl-load-com)
(
defun PURGEALL (times/ HOLDECHO APP DWGNAME PREFIX_DWG NN QQ HOLDLSP
   WW)
  (
setq HOLDECHO (getvar "cmdecho"))
  (
setvar "cmdecho" 0)
  (
setq PREFIX_DWG
  (
strcat
    (strcase (acet-ui-pickdir
;; "选择目录"
;;(
vl-string-right-trim "\\" (getvar "dwgprefix"))
;;"移除未使用之具名参考"
      )
    )
    "\\"
  )
  )
  (
setq HOLDLSP (getvar "ACADLSPASDOC"))
  (
setvar "acadlspasdoc" 0)
  (
setq QQ (vl-directory-files PREFIX_DWG "*.DWG"))
  (
setq NN 0)
  (
if (/= QQ NIL)
    (
progn
      (setq APP (vlax-get-acad-object))
      (
repeat (length QQ)
(
setq DWGNAME (strcase (strcat PREFIX_DWG (nth NN QQ))))
(
setq WW (vla-open (vla-get-documents APP) DWGNAME))
(repeat times (vla-PURGEALL ww))
(vla-save WW)
(
prompt (strcat "\n" DWGNAME " !!!"))
(vla-close WW :vlax-false)
(
setq NN (1+ NN))
      )
      (
vlax-release-object WW)
      (
vlax-release-object APP)
    )
    (
prompt "\n所选目录中未有任何图档!!!")
  ))
我仅仅把(repeat times (vla-PURGEALL WW))改为了我的子程序(TM)

怎么就不行了呢?

点评

004
好程序  发表于 2012-12-3 02:53
 楼主| 发表于 2007-11-2 14:22 | 显示全部楼层
很想弄明白什么原因,自顶下。
发表于 2007-11-2 20:55 | 显示全部楼层

当然要看看你的子程序(TM)里的内容

 楼主| 发表于 2007-11-3 20:39 | 显示全部楼层

(tm)一楼有的,有烦版主帮忙,我用脚本完全可以的,我想龙龙仔更好,想试一下可是结果不对不能用,分析应该没什么问题,就是打开一幅处理一幅,可完全不是程序对对打开的图形不起作用,只对刚开始的起作用,迷惑???

发表于 2007-11-4 08:46 | 显示全部楼层

你的tm写入的是 (setq name(getvar "dwgname"))

没错啊

 楼主| 发表于 2007-11-4 11:37 | 显示全部楼层

应该没错,可就是行不通,我想是随后打开的图形不能作为当前激活文档,我对(setq WW (vla-open
   (vla-get-documents APP) DWGNAME)) 不太懂,请指教!

 楼主| 发表于 2007-11-9 22:03 | 显示全部楼层
唉,还是老问题,lsp只能用于单文档界面,我想这个问题无法用lsp解决!
发表于 2007-12-9 09:48 | 显示全部楼层
(defun tm()
 (setq name(getvar "dwgname"))
这里的问题,你现在对的是当前激活的图形文档而不是刚打开的文档,简单的就是
改为(setq name(vlax-get ww "name"))
其实可以这么理解,现在ww就是对应一个不是活动文档的根对象而已,要得到什么,都要通过ww来获得.我没有acet-ui-pickdir,大概理解应该是这样,,,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-14 20:04 , Processed in 0.159037 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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