在proje中打开特定文件夹
我的目标是制作一些快捷键,用于打开我在项目中经常访问的文件夹。我的AutoLISP能力非常有限,但我能够对这段代码进行符号化,这段代码适用于一个特定场景。(defun c:PICS ()
(setq PicsPath1 (vl-string-right-trim "\\Dwgs\\" (getvar "dwgprefix")))
(setq PicsPath2 (strcat PicsPath1 "\\Photos\\"))
(startapp "explorer" PicsPath2)
(princ)
)
我的项目文件夹结构基本如下:
N:\project name\correspondences
\docs
\dwgs
\ByOthers
\exhibits
\ImpPlans
\On-Site
\Off-Site
\profiles
\photos
\points
我打算用上面的代码打开“\照片”文件夹。我的所有图形文件都在“N:\project name\dwgs”或更高版本中。更深一层是我的代码有问题的地方。它仅适用于“N:\project name\dwgs”中的图形,但不适用于任何较深的图形,例如“N:\project name\dwgs\examples”或“N:\project name\dwgs\impplan\Off-Site”。
我发现我的代码在将“\照片”文件夹放入路径之前只修剪了“\ dwg”文件夹。我需要修剪“\ dwg”及其以外的所有内容。我认为它可能是通配符这样简单的东西,但在阅读了几天的帖子后,我仍然没有弄明白这一点。
感谢您的任何帮助! 请注意在该任务中使用字符串修剪函数-此类函数不是搜索提供的模式,而是删除给定集中的所有字符,例如:
_$ (vl-string-trim "abc" "aaabbbcccaaa")
"" 我建议你这样开始:
(defun c:pics nil (myexplore "photos\\"))
(defun c:points nil (myexplore "points\\"))
(defun c:odwgsnil (myexplore "dwgs\\byothers\\"))
(defun getroot ( / dir pos )
(setq dir (strcase (getvar 'dwgprefix) t)
pos (vl-string-search "\\dwgs\\" dir)
)
(if pos
(substr dir 1 pos)
(prompt "\nCurrent directory does not have a \"dwgs\" folder.")
)
)
(defun explore ( dir )
(if (vl-file-directory-p dir)
(startapp "explorer" dir)
(prompt (strcat "\n\"" dir "\" not found."))
)
)
(defun myexplore ( fld / dir )
(if (setq dir (getroot)) (explore (strcat dir "\\" fld)))
(princ)
)
非常感谢李!我知道你们中的一个人会给我指出一个更复杂的方向。这正是我需要的。我甚至已经添加了几个其他文件夹。
现在我将分析并找出它是如何工作的! 不客气!我很高兴代码按预期工作。
如果您对它的运行方式有任何疑问,请随时提问。
李
页:
[1]