将根部从直接
新手问题我需要从目录路径中去掉主根。
我使用它来获取路径:
(setq dfil(GetField“目录列表”“”“dwg”2))
(setq文件路径(vl文件名目录dfil))
返回例如:“C:\\Blocks\\2dlib\\Cars\\Plan”
如何将上述结果转化为:“2dlib\Cars\Plan”
去掉“C:\\Blocks\”并且目录之间只有一个反斜杠?
“C:\\Blocks\\2dlib\\Trees\\Plan”>“2dlib\Trees\Plan”
“C:\\Blocks\\2dlib\\People”>“2dlib\\People”
非常感谢
扎克旺 首先,请注意,反斜杠字符是AutoLISP中的转义字符。这意味着使用单个反斜杠为其后的字符赋予另一种含义,例如:
\n=新行字符
\t=制表符
\“=双引号字符
等
因此,为了获得单个反斜杠,必须用另一个反斜杠作为反斜杠的前缀,以便将其标记为文字反斜杠而不是转义字符(实际上,您将第一个反斜杠用作转义字符,以赋予第二个反斜杠另一种含义)。
因此,在AutoLISP中,两个反斜杠代表一个反斜杠;观察:
_$ (princ "\nThis is a single backslash \\")
This is a single backslash \ 关于剥离文件夹,请考虑以下递归函数:
(defun stripfolder ( dir lvl / pos )
(if (and (< 0 lvl) (setq pos (vl-string-position 92 dir)))
(stripfolder (substr dir (+ 2 pos)) (1- lvl))
dir
)
)
举几个例子:
_$ (stripfolder "C:\\Blocks\\2dlib\\Trees\\Plan" 2)
"2dlib\\Trees\\Plan"
_$ (stripfolder "C:\\Blocks\\2dlib\\People" 2)
"2dlib\\People"
_$ (stripfolder "C:\\Blocks\\2dlib\\Trees\\Plan" 1)
"Blocks\\2dlib\\Trees\\Plan"
_$ (stripfolder "C:\\Blocks\\2dlib\\Trees\\Plan" 3)
"Trees\\Plan" 谢谢Mac先生!
很有魅力! 不客气-我希望解释清楚! 是的,谢谢你,麦克先生。
页:
[1]