明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2359|回复: 12

两个小问题:

  [复制链接]
发表于 2011-9-15 16:53:24 | 显示全部楼层 |阅读模式
本帖最后由 mandala 于 2011-9-15 18:18 编辑

1、要把一个字符串形式的文件名更名,最简便的方法是什么?如将“abc.dwg”变成“abc.plt”,当然abc是不确定的。对了,还只能用alisp来实现,不能用(vl-string-subst )。

2、有没有用以代替(vl-file-copy ) 的alisp函数?将一个文件拷贝到另一个地方……

出于某些原因,只能在cad14下运行以上两个函数,所以不能用vlisp,而且也不能用vlisp for cad14或doslib14。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-9-15 16:57:25 来自手机 | 显示全部楼层
都啥年代了,还抱着alisp不放干嘛呢?
发表于 2011-9-15 17:43:33 | 显示全部楼层
 楼主| 发表于 2011-9-15 18:17:09 | 显示全部楼层
fsxm 发表于 2011-9-15 16:57
都啥年代了,还抱着alisp不放干嘛呢?

当然是有苦难言喽。不然谁愿意去舍近求远呢。

点评

估计是老板只给装14版。深表同情  发表于 2011-9-16 05:53
发表于 2011-9-15 19:18:00 | 显示全部楼层
1.(defun C:TTT (/ FNAME EXTION INT CHAR)
(setq FNAME  "abc.dwg"
      EXTION "plt"
      INT    1
)
(while (not (setq LST (member CHAR '("." ""))))
  (setq CHAR (substr FNAME INT 1)
        INT  (1+ INT)
  )
)
(if (/= (length LST) 1)
  (strcat (substr FNAME 1 (1- INT)) EXTION)
)
)
2.AuotLISP的只能考虑调用DOS等外部程序,譬如命令SHELL等等
 楼主| 发表于 2011-9-15 20:08:09 | 显示全部楼层
本帖最后由 mandala 于 2011-9-15 21:07 编辑
caoyin 发表于 2011-9-15 19:18
1.(defun C:TTT (/ FNAME EXTION INT CHAR)
(setq FNAME  "abc.dwg"
      EXTION "plt"


谢谢版主!对shell的用法还不是很清楚,是否可以这样写:
(defun c:test(/ file)
(setq file (strcat (getvar "dwgprefix")(getvar "dwgname")))
(command "shell" (strcat "copy" “ ” file  “ ” "d:\\"))
(princ)
)

================

 楼主| 发表于 2011-9-15 21:06:46 | 显示全部楼层
caoyin 发表于 2011-9-15 19:18
1.(defun C:TTT (/ FNAME EXTION INT CHAR)
(setq FNAME  "abc.dwg"
      EXTION "plt"

顺便请教一下版主:为什么你的TTT里用的是(member char '("." “”)),而不直接是(member char '("."))呢?

发表于 2011-9-16 00:55:45 | 显示全部楼层
本帖最后由 caoyin 于 2011-9-16 08:56 编辑
mandala 发表于 2011-9-15 21:06
顺便请教一下版主:为什么你的TTT里用的是(member char '("." “”)),而不直接是(member char '("."))呢 ...


1.表长度为1就没有必要用member了,直接=就好了。
2.如果没有"",当你提供的文件名中没有"."不就死循环了
 楼主| 发表于 2011-9-16 08:15:07 | 显示全部楼层
本帖最后由 caoyin 于 2011-9-16 08:57 编辑
caoyin 发表于 2011-9-16 00:55
1.表长度为1就没有必要用member了,直接=就好了。
2.如果没有"",当你提供的文件名中没有"."不就死循环了 ...


明白了,谢谢版主!
 楼主| 发表于 2011-9-16 10:59:03 | 显示全部楼层
caoyin 发表于 2011-9-16 00:55
1.表长度为1就没有必要用member了,直接=就好了。
2.如果没有"",当你提供的文件名中没有"."不就死循环 ...

再请教一下版主:
(command "shell" (strcat "copy" “ ” file  “ ” "d:\\"))
这个命令似乎永远是返回nil?能否通过返回来判断这个拷贝有没有成功呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-24 09:09 , Processed in 0.170178 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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