乐筑天下

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

[编程交流] Lisp用于在s中打开文件

[复制链接]

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 13:19:32 | 显示全部楼层 |阅读模式
Hi all,


我正在寻找一个可以满足某些要求的lisp

我在一个文件夹和子文件夹中有许多图形,例如:

在D:\Drawing中,有许多格式为xA xxxx、1A-1234、2A-4321、3A-1234的图纸,有时它有一个尾部1A-1234yyy,但yyyy并不重要,1234是图纸编号,它是唯一的编号,所以我想要的是:[color][align]
1,我需要一个lisp,可以通过将图纸1A-1234输入autocad的弹出窗口并点击enter来打开它。

这意味着此lisp可以从指定的文件夹和子文件夹中搜索图形,然后打开它[color][align]
2,关于输入方法,正如我在上面所解释的,我们可以键入xA-1234或xA-1234yyy[align],而不是准确键入1A-1234

非常感谢您
回复

使用道具 举报

18

主题

434

帖子

422

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2022-7-5 13:24:46 | 显示全部楼层
也许一个简单的解决方案最适合你。
加载这个超短Lisp并启动它。在“文件名”框中输入任何字母,然后按“查找文件”按钮。这将带您进入下一个对话框。输入文件名或文件名的一部分(如果愿意)。在“查找范围”中,放入起始文件夹并选中“包含子文件夹”。按下“立即查找”按钮并等待。AutoCAD将使用与输入的名称匹配的dwg文件列表进行回答。选择所需选项,按“OK”。您将返回到第一个对话框–只需按“打开”按钮。
警告:当前图形将关闭而不保存!
  1. (defun c:FindIt()
  2.   (setq dwg (getfiled "Fuccaro" " " "dwg" 8))
  3.   (command "fileopen" "y" dwg)
  4.   )
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 13:29:04 | 显示全部楼层
 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 13:31:55 | 显示全部楼层
Fuccaro&vdungcom提出了一些缩小搜索速度的建议。
 
如果未提供驱动器/目录前缀,则(findfile)功能将仅搜索当前AutoCAD搜索路径。
 
引用帮助getfile支持起始目录
 
  1. (getfiled "Title" "Directory Path and/or File name" "File Extension" Flag)
回复

使用道具 举报

18

主题

434

帖子

422

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2022-7-5 13:35:05 | 显示全部楼层
像这样的?
感谢BIGAL提出的有用意见。
回复

使用道具 举报

18

主题

434

帖子

422

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2022-7-5 13:37:41 | 显示全部楼层
我之前的帖子发得很匆忙,所以让我在这里补充几句话。
要搜索名为1A-1234yyy的文件,应输入*1234*
列出了与名称匹配的所有文件(当然也在搜索路径中)。
输入要启动的所需文件的编号。
 
代码可以稍加改进,以便:
-如果只找到一个文件,则会立即打开该文件
-如果找到更多文件,则会列出所有文件(与现在一样),AutoCAD会切换到文本屏幕,等待您的输入
哦,你必须替换程序第二行中的搜索路径。
这有帮助吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 13:38:45 | 显示全部楼层
Fuccaro尝试了代码,但foreach l1 lst有点问题,但无论如何还是让德格利斯特发挥了作用。我使用了2*作为我们的DWG,所有DWG都以年份日期开始,例如2018123。
 
只是一个建议,你可以在lee mac list中打开列表,让dcl选择名称,而不是要求输入项目编号“ListBoxV1-2.lsp”。尽管列表框中有256个项目的最大限制。
 
  1. (if (not LM:listbox)(Load "listboxV1-2"))
  2. (setq n (nth 0 (lm:listbox "Pick dwg" dwglist 2)))
  3. (command "fileopen" "y" (nth n DWGlist))
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 13:43:15 | 显示全部楼层
谢谢你,fuccaro,BIGAL
我试过你的lisp,在替换路径后,它说“如果无法建立SDI模式,则无法运行FILEOPEN。”
我认为,如果我们可以从下拉列表中选择路径,并且可以随时更改它,这会更好。
非常感谢你
回复

使用道具 举报

18

主题

434

帖子

422

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2022-7-5 13:45:41 | 显示全部楼层
@vudungcom公司
请插入行
(setvar“sdi”0)
就在
(命令“fileopen。。。。。
大约6小时后,我会写更长的时间。干杯
 
 
回复

使用道具 举报

18

主题

434

帖子

422

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2022-7-5 13:48:34 | 显示全部楼层
BIGAL,我在4台计算机上试用了该代码,foreach循环一点问题都没有。
Vudungcom,你尝试过我提供的解决方案吗?如果是这样,它对你有用吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 00:49 , Processed in 3.436485 second(s), 72 queries .

© 2020-2025 乐筑天下

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