乐筑天下

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

[编程交流] 它可以#039;t.f

[复制链接]

16

主题

69

帖子

54

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 16:55:57 | 显示全部楼层 |阅读模式
我正在使用一个包含命令的循环。打开以按顺序加载文件。每次尝试加载下一个文件时,它都会暂停例程以显示以下消息:
当我单击“确定”时,程序继续正确打开文件,然后继续执行程序的其余部分。我对它的运行方式很满意,只是每次加载文件时都必须按enter键才能删除消息并取消暂停例程。
 
导致此消息弹出的错误是什么?我该如何修复?如果没有其他方法的话,我很乐意找到一种简单地抑制信息的方法,因为在其他情况下一切都会完美地工作。
 
代码如下(请原谅那些骇人听闻的代码。我不知道我在做什么):
 
  1. ;Open and Trim
  2. (Defun C:oat () ;define Open and Trim
  3. ;        (c:wwc) ;run WriteWithinCurve
  4. ;        (setvar "cmdecho" 0)
  5. (If(/= nil writewithincurvedirectory)(princ (strcat "\nCurrent directory is:\n" writewithincurvedirectory))) ;display current path
  6. (princ "\n")
  7. (setvar "SDI" 1)
  8. (command "FILEDIA" 0) ;Set open dialog to be command line only
  9. (setq DXFFilesArray (vl-directory-files writewithincurvedirectory "*.dxf")) ;Find all .dxf files in current folder.
  10. (princ DXFFilesArray) ;display contents of current target directory
  11. (princ "\n") ;newline for aesthetic purposes
  12. (setq LoopIndex 0) ;initialize loop index
  13. (repeat (length DXFFilesArray) ;repeat once for each .dxf file in DXFFilesArray
  14. ;        (repeat (3) ;repeat once for each .dxf file in DXFFilesArray
  15.         (setq FileToOpenFullPath (strcat writewithincurvedirectory (nth LoopIndex DXFFilesArray))) ;get current folder to write file to and add the .dxf name to it
  16.         (princ (strcat "\nFile to open is: " FileToOpenFullPath "\n")) ;display filename
  17.         (setq LoopIndex (1+ LoopIndex))
  18.         (command "_.OPEN" "_Y" FileToOpenFullPath)
  19. ;                (OpenDwgFile FileToOpenFullPath)
  20.         (C:ty) ;Trim Yellow
  21. )
  22. (setvar "filedia" 1) ;Restore open dialogue to have a visual interface
  23. (princ)
  24. (setvar "cmdecho" 1)
  25. ;        (command "_QUIT" "_Y") ;close AutoCAD
  26. )
  27. ; (defun OpenDwgFile (arg1 / )
  28. ; (vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) arg1))
  29. ; ); defun
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:33:00 | 显示全部楼层
假设打开命令没有“Y”选项。。。
回复

使用道具 举报

16

主题

69

帖子

54

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 17:53:56 | 显示全部楼层
这就解决了!非常感谢。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:56:44 | 显示全部楼层
几句话(如果有兴趣):
 
您可以使用这样的方法来防止最终崩溃:
  1. (if (eq 'SUBR (type C:test)) (C:test))

对于这些函数调用:
  1. (c:wwc) ;run WriteWithinCurve
  2. (C:ty) ;Trim Yellow

 
 
  1. (If(/= nil writewithincurvedirectory)(princ (strcat "\nCurrent directory is:\n" writewithincurvedirectory))) ;display current path

这与上一行相同,即(/=nil…)检查是否冗余:
  1. (if writewithincurvedirectory (princ (strcat "\nCurrent directory is:\n" writewithincurvedirectory))) ;display current path

 
 
虽然这是一个注释,但它会出错,因为它将查找名为3的函数(当您决定取消注释时):
  1. ;        (repeat (3) ;repeat once for each .dxf file in DXFFilesArray

所以只需保留整数:
  1. ;        (repeat 3 ;repeat once for each .dxf file in DXFFilesArray
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 13:16 , Processed in 0.685148 second(s), 71 queries .

© 2020-2025 乐筑天下

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