乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 46|回复: 19

[编程交流] 编辑批处理LISP

[复制链接]

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-5 23:38:27 | 显示全部楼层 |阅读模式
我有一个由Tony Tanzillo编写的程序,它的工作方式完全符合我希望我的批处理程序的工作方式,只是我想在保存和关闭它之前,在它打开的每个图形上运行一个文本替换程序。
 
 
我一直在尝试一些事情,但我似乎不知道需要添加什么才能实现这一点。
 
我想我没有足够的经验来知道使用哪个命令。我知道我需要在“;”中添加这个命令行,这将是您的批处理函数:“区域,但我不知道要使用什么命令,以便它在打开时运行我的程序。
 
我试图调用的程序是REPSTRING,这是我用来替换文本的另一个LISP。
回复

使用道具 举报

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-5 23:44:09 | 显示全部楼层
我不知道这是否可行,但如果程序暂停足够长的时间以运行命令,然后在命令运行后恢复,该怎么办?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:46:07 | 显示全部楼层
 
当从LISP中调用函数时,这不是必需的。。。但我真的没有足够的代码来处理这里。。。
 
这取决于文本替换是否接受参数,是否从命令行调用等等。。。
回复

使用道具 举报

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-5 23:50:25 | 显示全部楼层
 
这个怎么样:
  1. (defun C:OPB (/ *good-files* acapp adoc file_obj full-names-list osd)
  2. (alert
  3.    "\nPlease wait a minute
  4. \nto ending of batch file operation"
  5. )
  6.   (vl-load-com)
  7. (setq    acapp (vlax-get-acad-object)
  8.    adoc  (vla-get-activedocument acapp)
  9. )
  10. (vla-startundomark adoc)
  11. (setq osd (vla-getvariable adoc "SDI"))
  12. (vla-setvariable adoc "SDI" 0)
  13. (setq olsp (vla-getvariable adoc "LISPINIT"))
  14. (vla-setvariable adoc "LISPINIT" 0)
  15. (if (setq full-names-list
  16.         (list-dwg (browse-folder "SELECT FOLDER" "C:\"))
  17.      )
  18.    ; change on your start path folder
  19.    (progn
  20.      (mapcar
  21.    (function
  22.      (lambda (i)
  23.        (progn
  24.          (setq file_obj (vla-open (vla-get-documents acapp) i))
  25.          (setq *good-files* (cons file_obj *good-files*))
  26.          ;;here will your batch function:
  27.          (vla-setvariable file_obj "mirrtext" 0)
  28. ;          (vla-setvariable file_obj "insunits" 0)
  29. ;          (vla-setvariable file_obj "annotativedwg" 0)
  30.          (vla-close file_obj :vlax-true)
  31.          (vlax-release-object file_obj)
  32.          (setq file_obj nil)
  33.        )
  34.      )
  35.    )
  36.    full-names-list
  37.      )
  38.      (cond ((zerop (length *good-files*))
  39.         (princ "\nThere isn't opened files\n")
  40.        )
  41.        ((not (eq (length full-names-list) (length *good-files*)))
  42.         (princ "\nSome files is not opened\n")
  43.        )
  44.        (T nil)
  45.      )
  46.    )
  47.    (princ "\nThere isn't .DWG files in selected directory\n")
  48. )
  49. (vla-setvariable adoc "SDI" osd)
  50. (vla-setvariable adoc "LISPINIT" olsp)  
  51. (vla-endundomark adoc)
  52. (princ)
  53. )

 
我尽量避免违反托尼的任何规定。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:52:35 | 显示全部楼层
所以,是的,它确实告诉你在图形上把函数放在哪里,所以它取决于你想要调用的函数的格式——它接受参数吗?
回复

使用道具 举报

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-5 23:57:30 | 显示全部楼层
对我试图运行的命令由REPSTRING调用,有两个参数,要替换的文本和要替换的文本。
 
我相信这样的话:
 
重复字符串
文本1
文本2
回复

使用道具 举报

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-6 00:00:32 | 显示全部楼层
我试着插入线路:
(命令“REPSTRING”“TEXT1”“TEXT2”)
但这会不断产生未知的命令,但我可以在命令行中键入REPSTRING,每次都可以正常工作。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:03:42 | 显示全部楼层
不,不,我的意思是在命令行调用的函数,或者它是一个子函数,接受参数。
 
但是,从您的响应中,我可以看到它是从命令行调用的。
 
您可以使用
 
  1. (c:repstring)

 
但是,我倾向于将代码更改为sub,并接受参数,因为这样会更健壮。
回复

使用道具 举报

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-6 00:05:11 | 显示全部楼层
好的,那么如果我将REPSTRING LISP添加到此批处理LISP中会怎么样呢
 
然后,在BATCH LISP中调用add BATCH function的部分中,我放置以下内容:
 
这行吗?
 
我想我需要补充一下:
  1. (SETQ OSTRING (GETSTRING T "\nSTRING TO BE REPLACED: "))
  2. (SETQ NSTRING (GETSTRING T "\nSTRING TO REPLACE WITH: "))

 
OPB计划即将开始。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:09:22 | 显示全部楼层
不,你只需要打电话
 
  1. (repstring "OldString" "NewString")

 
在批次代码中。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 00:28 , Processed in 0.638746 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表