明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1352|回复: 10

[求助]如何返回所有加载的xref的名称?

[复制链接]
发表于 2008-3-8 18:37 | 显示全部楼层 |阅读模式
如何返回所有加载的xref的名称?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2008-3-8 19:43 | 显示全部楼层
(DEFUN XREFSlst()
  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  (setq blks (vla-get-blocks doc))
  (vlax-for blk blks
    (if (= (vla-get-isxref blk) :vlax-true)
      (setq xrefs (cons (vla-get-name blk) xrefs))))
  (reverse xrefs)
)
 楼主| 发表于 2008-3-8 23:14 | 显示全部楼层
alin,下面这几行lisp返回所有加载的xref的路径,为什么总提示:
错误: ActiveX 服务器返回错误: 未知名称: Path
如何解决?
  1. (vlax-for blk (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
  2.      (and (= (vla-get-isxref blk) :vlax-true)
  3.    (setq lst (cons (vla-get-path blk) lst))
  4.      )
  5.    )
 楼主| 发表于 2008-3-8 23:29 | 显示全部楼层

还有就是再想问一个问题:

比如返回的路径为:

"d:\2007jobs\road\sub\01table.dwg"

"d:\2007jobs\road\main\02model.dwg"

怎么样才能取得最后一个(目录)文件夹的名称,即sub和main

发表于 2008-3-9 11:24 | 显示全部楼层
因为有的BLK没有PATH属性
 楼主| 发表于 2008-3-9 11:30 | 显示全部楼层
vla-get-Path 函数

功能

      取得文件、应用程序、或外部参考的路径。

语法及参数

(vla-get-Path Object )
ObjectApplication, Document, ExternalReference
这个属性适用的对象
Parent字符串; 只读(ExternalReference对象时为只读)
应用程序、文件或外部参考的路径

说明
    文件或应用程序的路径不含有文件名。

发表于 2008-3-9 11:38 | 显示全部楼层
(cadr (reverse (PARSE_IT "d:\\2007jobs\\road\\sub\\01table.dwg" "\\")))


; ????? ??: Bill Kramer
(defun Parse_It    (inStr ;Input string to parse
         Delim ;Delimeter character (or ascii code)
         / Res ;Result list buffer
         Inx ;Character location of delim in string
         InxP revious character location
)
 ;
 ; Verify DELIM is of the proper type
 ;
  (setq    Delim (if (= (type Delim) 'STR)
        (ASCII Delim) ;Convert character to integer
        (if (/= (type Delim) 'INT) ;is it integer?
          32 ;then use space
          (if (> 0 Delim 256)
            Delim
            32
          )
        )
          )
 ;
 ; Set up parameters for string search loop
 ;
    Inx   (VL-String-Position Delim inStr 0)
    InxP  -1
  )
 ;
  (while (and Inx (< Inx (strlen inStr)))
    (setq Res
           (cons (substr inStr (+ 2 InxP) (- Inx InxP 1))
             Res
           )
      InxP Inx
      Inx  (VL-String-Position Delim inStr (1+ InxP))
    )
  )
  (setq Res (cons (substr inStr (+ 2 InxP)) Res))
  (reverse Res)
)
 楼主| 发表于 2008-3-9 11:45 | 显示全部楼层
本帖最后由 作者 于 2008-3-9 11:48:09 编辑

alin ,我找的资料在6楼,怎么解释呢?!为什么函数vla-get-Path 帮助文件本身写出可以取得外部参考的路径?!

发表于 2008-3-9 11:47 | 显示全部楼层
(vlax-for blk (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
      (if (= (vla-get-isxref blk) :vlax-true)
    (setq lst (cons (vla-get-path blk) lst))
      )
    )

发表于 2008-3-9 11:52 | 显示全部楼层
(vl-filename-base (vl-filename-directory filename))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 10:51 , Processed in 3.820740 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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