乐筑天下

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

[编程交流] 在proje中打开特定文件夹

[复制链接]

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:31:47 | 显示全部楼层 |阅读模式
我的目标是制作一些快捷键,用于打开我在项目中经常访问的文件夹。我的AutoLISP能力非常有限,但我能够对这段代码进行符号化,这段代码适用于一个特定场景。
 
 
  1. (defun c:PICS ()
  2. (setq PicsPath1 (vl-string-right-trim "\\Dwgs\" (getvar "dwgprefix")))
  3. (setq PicsPath2 (strcat PicsPath1 "\\Photos\"))
  4.   (startapp "explorer" PicsPath2)
  5. (princ)
  6. )

 
 
我的项目文件夹结构基本如下:
 
  1. N:\project name\correspondences
  2.               \docs
  3.               \dwgs
  4.                    \ByOthers
  5.                    \exhibits
  6.                    \ImpPlans
  7.                             \On-Site
  8.                             \Off-Site
  9.                    \profiles
  10.               \photos
  11.               \points

 
 
我打算用上面的代码打开“\照片”文件夹。我的所有图形文件都在“N:\project name\dwgs”或更高版本中。更深一层是我的代码有问题的地方。它仅适用于“N:\project name\dwgs”中的图形,但不适用于任何较深的图形,例如“N:\project name\dwgs\examples”或“N:\project name\dwgs\impplan\Off-Site”。
 
我发现我的代码在将“\照片”文件夹放入路径之前只修剪了“\ dwg”文件夹。我需要修剪“\ dwg”及其以外的所有内容。我认为它可能是通配符这样简单的东西,但在阅读了几天的帖子后,我仍然没有弄明白这一点。
 
感谢您的任何帮助!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:50:19 | 显示全部楼层
请注意在该任务中使用字符串修剪函数-此类函数不是搜索提供的模式,而是删除给定集中的所有字符,例如:
  1. _$ (vl-string-trim "abc" "aaabbbcccaaa")
  2. ""
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:12:01 | 显示全部楼层
我建议你这样开始:
  1. (defun c:pics   nil (myexplore "photos\"))
  2. (defun c:points nil (myexplore "points\"))
  3. (defun c:odwgs  nil (myexplore "dwgs\\byothers\"))
  4. (defun getroot ( / dir pos )
  5.    (setq dir (strcase (getvar 'dwgprefix) t)
  6.          pos (vl-string-search "\\dwgs\" dir)
  7.    )
  8.    (if pos
  9.        (substr dir 1 pos)
  10.        (prompt "\nCurrent directory does not have a "dwgs" folder.")
  11.    )
  12. )
  13. (defun explore ( dir )
  14.    (if (vl-file-directory-p dir)
  15.        (startapp "explorer" dir)
  16.        (prompt (strcat "\n"" dir "" not found."))
  17.    )
  18. )
  19. (defun myexplore ( fld / dir )
  20.    (if (setq dir (getroot)) (explore (strcat dir "\" fld)))
  21.    (princ)
  22. )
回复

使用道具 举报

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 19:22:44 | 显示全部楼层
 
 
 
非常感谢李!我知道你们中的一个人会给我指出一个更复杂的方向。这正是我需要的。我甚至已经添加了几个其他文件夹。
 
现在我将分析并找出它是如何工作的!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:45:32 | 显示全部楼层
不客气!我很高兴代码按预期工作。
 
如果您对它的运行方式有任何疑问,请随时提问。
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:46 , Processed in 0.353849 second(s), 62 queries .

© 2020-2025 乐筑天下

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