benhubel 发表于 2022-7-5 16:55:57

它可以#039;t.f

我正在使用一个包含命令的循环。打开以按顺序加载文件。每次尝试加载下一个文件时,它都会暂停例程以显示以下消息:
当我单击“确定”时,程序继续正确打开文件,然后继续执行程序的其余部分。我对它的运行方式很满意,只是每次加载文件时都必须按enter键才能删除消息并取消暂停例程。
 
导致此消息弹出的错误是什么?我该如何修复?如果没有其他方法的话,我很乐意找到一种简单地抑制信息的方法,因为在其他情况下一切都会完美地工作。
 
代码如下(请原谅那些骇人听闻的代码。我不知道我在做什么):
 
;Open and Trim
(Defun C:oat () ;define Open and Trim
;        (c:wwc) ;run WriteWithinCurve
;        (setvar "cmdecho" 0)
(If(/= nil writewithincurvedirectory)(princ (strcat "\nCurrent directory is:\n" writewithincurvedirectory))) ;display current path
(princ "\n")

(setvar "SDI" 1)
(command "FILEDIA" 0) ;Set open dialog to be command line only
(setq DXFFilesArray (vl-directory-files writewithincurvedirectory "*.dxf")) ;Find all .dxf files in current folder.
(princ DXFFilesArray) ;display contents of current target directory
(princ "\n") ;newline for aesthetic purposes
(setq LoopIndex 0) ;initialize loop index
(repeat (length DXFFilesArray) ;repeat once for each .dxf file in DXFFilesArray
;        (repeat (3) ;repeat once for each .dxf file in DXFFilesArray
        (setq FileToOpenFullPath (strcat writewithincurvedirectory (nth LoopIndex DXFFilesArray))) ;get current folder to write file to and add the .dxf name to it
        (princ (strcat "\nFile to open is: " FileToOpenFullPath "\n")) ;display filename
        (setq LoopIndex (1+ LoopIndex))
        (command "_.OPEN" "_Y" FileToOpenFullPath)
;                (OpenDwgFile FileToOpenFullPath)
        (C:ty) ;Trim Yellow
)
(setvar "filedia" 1) ;Restore open dialogue to have a visual interface
(princ)
(setvar "cmdecho" 1)
;        (command "_QUIT" "_Y") ;close AutoCAD
)

; (defun OpenDwgFile (arg1 / )
; (vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) arg1))
; ); defun

Roy_043 发表于 2022-7-5 17:33:00

假设打开命令没有“Y”选项。。。

benhubel 发表于 2022-7-5 17:53:56

这就解决了!非常感谢。

Grrr 发表于 2022-7-5 17:56:44

几句话(如果有兴趣):
 
您可以使用这样的方法来防止最终崩溃:
(if (eq 'SUBR (type C:test)) (C:test))
对于这些函数调用:

(c:wwc) ;run WriteWithinCurve
(C:ty) ;Trim Yellow

 
 
(If(/= nil writewithincurvedirectory)(princ (strcat "\nCurrent directory is:\n" writewithincurvedirectory))) ;display current path
这与上一行相同,即(/=nil…)检查是否冗余:
(if writewithincurvedirectory (princ (strcat "\nCurrent directory is:\n" writewithincurvedirectory))) ;display current path
 
 
虽然这是一个注释,但它会出错,因为它将查找名为3的函数(当您决定取消注释时):
;        (repeat (3) ;repeat once for each .dxf file in DXFFilesArray
所以只需保留整数:
;        (repeat 3 ;repeat once for each .dxf file in DXFFilesArray
页: [1]
查看完整版本: 它可以#039;t.f