CadFrank 发表于 2022-7-5 22:35:55

计算文件数量i

你好
 
有没有办法使用autolisp编码计算文件夹中的文件数。
 
谢谢!

Ender181 发表于 2022-7-5 22:39:57

我假设除了右键点击文件夹并选择属性之外,你还需要其他东西?

Tharwat 发表于 2022-7-5 22:45:10

只是一个例子
 

(if (setq f (vl-directory-files "C:\\Users\\Tharwat\\Desktop\\New Folder" nil 1))
(length f)
)

BlackBox 发表于 2022-7-5 22:46:15


(vl-load-com)

(defun c:FOO (/ *error* oShell oFolder path i)

(defun *error* (msg)
   (if oShell
   (vlax-release-object oShell)
   )
   (cond ((not msg))                                                   ; Normal exit
         ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
         ((princ (strcat "\n** Error: " msg " ** ")))                  ; Fatal error, display it
   )
   (princ)
)

(if
   (and
   (setq oShell (vla-getinterfaceobject
                  (vlax-get-acad-object)
                  "Shell.Application"
                  )
   )
   (setq oFolder (vlax-invoke
                     oShell
                     'BrowseForFolder
                     (vla-get-hwnd acApp)
                     "Select folder to search:"
                     0
                     (+ 1 64 256)
                   )
   )
   (setq path (vlax-get-property
                  (vlax-get-property oFolder 'Self)
                  'Path
                )
   )
   )
    (progn
      (prompt (strcat "\nSelected folder: \"" path "\" "))
      (prompt
      (strcat
          "\n"
          (itoa (setq i (length (vl-directory-files path "*.*" 1))))
          (if (= 1 i)
            " file "
            " files "
          )
          "found."
      )
      )
    )
)
(*error* nil)
)

CadFrank 发表于 2022-7-5 22:49:19

原因可能是我试图根据文件中绘图的编号在属性中输入一个值。

CadFrank 发表于 2022-7-5 22:52:37

好的,谢谢你,我几乎需要它,我会解决剩下的。
 
我变了
(if (setq f (vl-directory-files (getvar 'dwgprefix) nil 1))
(length f)
)

 
问题是,自从文件打开后,它就开始计数了。dwl和。dwl2
 
但就像上面说的,我会解决的
 
干杯&啤酒!

BlackBox 发表于 2022-7-5 22:57:48

 
您必须相应地设置vl目录文件函数的扩展参数。。。例如“*.dwg”。

Tharwat 发表于 2022-7-5 23:01:13

 
那就玩这个吧
 

(if
(and (setq
      f (vl-directory-files
            (getvar 'dwgprefix)
            nil
            1
          )
      )
      (setq l (vl-remove-if '(lambda (ex) (wcmatch ex "*.dwl,*.dwl2")) f))
)
(length l)
)

BlackBox 发表于 2022-7-5 23:04:15

 
OP是否试图量化除*之外的一切。dwl*文件,还是一个或多个特定扩展名的所有文件?

CadFrank 发表于 2022-7-5 23:05:01

我正在试着得到。dwg文件。
 
但我想解决剩下的问题。
 
 
谢谢!
页: [1] 2
查看完整版本: 计算文件数量i