乐筑天下

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

[编程交流] 从批处理中运行脚本

[复制链接]

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-6 10:31:53 | 显示全部楼层 |阅读模式
我有一个Tony Tanzillo的LISP,它可以在一个图形目录中运行,并且应该能够在每个图形上运行一个程序,但我不能让这个工作。我想要它做的是调用我编写的导出脚本。dwg到。dgn。所有参数都已在转换脚本中解决。现在,我使用一个名为EZ Script Pro的程序在图形目录中运行此脚本,但我希望能够从autocad中执行此操作,而不必打开完全不同的程序来执行此操作。有人能帮我找出我在这个程序中做错了什么,并可能帮我找出如何使用Tony Tanzillo批处理程序达到我认为是它的预期目的吗?
 
谢谢
 
 
  1. ;    Function from Tony Tanzillo Maestro Guru    ;
  2. (defun browse-folder (msg path / sh fld folderobject result)
  3. (vl-load-com)
  4. (setq    sh (vla-getInterfaceObject
  5.         (vlax-get-acad-object)
  6.         "Shell.Application"
  7.       )
  8. )
  9. (setq    fld (vlax-invoke-method
  10.          sh 'BrowseForFolder
  11.          vlax-vbDefaultButton1
  12.          msg          ; dialogue box message
  13.          vlax-vbDefaultButton3     ; BIF_NONEWFOLDERBUTTON Bruno Toniutti
  14.          path                  ; path start
  15. )
  16. )
  17. (vlax-release-object sh)
  18. (if fld
  19.    (progn
  20.      (setq folderobject (vlax-get-property fld 'Self))
  21.      (setq result (vlax-get-property folderObject 'Path))
  22.      (vlax-release-object fld)
  23.      (vlax-release-object folderobject)
  24.      result
  25.    )
  26. )
  27. )
  28. ;                        ;
  29. (defun list-dwg    (path / file_list full_list)
  30. (setq    file_list
  31.     (vl-directory-files path "*.dwg" 1)
  32. )
  33. (setq    file_list
  34.          (mapcar (function (lambda (x) (strcat path "\" x)))
  35.              file_list
  36.          )
  37.    full_list (append full_list file_list)
  38. )
  39. full_list
  40. )
  41. ;                            ;
  42. (prompt "\n********************************************")
  43. (prompt "\n    Enter OPB to run batch file operation\n")
  44. (prompt "\n********************************************")
  45. ;                            ;
  46. (defun C:dgnex (/ *good-files* acapp adoc file_obj full-names-list osd)
  47. (alert
  48.    "\nPlease wait a minute
  49. \nto ending of batch file operation"
  50. )
  51.   (vl-load-com)
  52. (setq    acapp (vlax-get-acad-object)
  53.    adoc  (vla-get-activedocument acapp)
  54. )
  55. (vla-startundomark adoc)
  56. (setq osd (vla-getvariable adoc "SDI"))
  57. (vla-setvariable adoc "SDI" 0)
  58. (setq olsp (vla-getvariable adoc "LISPINIT"))
  59. (vla-setvariable adoc "LISPINIT" 0)
  60. (if (setq full-names-list
  61.         (list-dwg (browse-folder "SELECT FOLDER" "w:\\Projects\"))
  62.      )
  63.    ; change on your start path folder
  64.    (progn
  65.      (mapcar
  66.    (function
  67.      (lambda (i)
  68.        (progn
  69.          (setq file_obj (vla-open (vla-get-documents acapp) i))
  70.          (setq *good-files* (cons file_obj *good-files*))
  71. [color=red]         [/color][color=red] ;;here will your batch function:
  72.        (COMMAND "_SCRIPT" "DGNEXPORT.scr" )             ;;My script.[/color]
  73.          (vla-setvariable file_obj "mirrtext" 0)
  74. ;          (vla-setvariable file_obj "insunits" 0)
  75. ;          (vla-setvariable file_obj "annotativedwg" 0)
  76.          (vla-close file_obj :vlax-true)
  77.          (vlax-release-object file_obj)
  78.          (setq file_obj nil)
  79.        )
  80.      )
  81.    )
  82.    full-names-list
  83.      )
  84.      (cond ((zerop (length *good-files*))
  85.         (princ "\nThere isn't opened files\n")
  86.        )
  87.        ((not (eq (length full-names-list) (length *good-files*)))
  88.         (princ "\nSome files is not opened\n")
  89.        )
  90.        (T nil)
  91.      )
  92.    )
  93.    (princ "\nThere isn't .DWG files in selected directory\n")
  94. )
  95. (vla-setvariable adoc "SDI" osd)
  96. (vla-setvariable adoc "LISPINIT" olsp)  
  97. (vla-endundomark adoc)
  98. (princ)
  99. )
回复

使用道具 举报

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-6 10:42:27 | 显示全部楼层
我已经改变了调用dgnexport的方式,现在它可以很好地转换目录中的第一个图形,但一直尝试转换我启动程序的图形。。。我觉得我离得有点近了。
 
  1. ;    Function from Tony Tanzillo Maestro Guru    ;
  2. (defun browse-folder (msg path / sh fld folderobject result)
  3. (vl-load-com)
  4. (setq    sh (vla-getInterfaceObject
  5.         (vlax-get-acad-object)
  6.         "Shell.Application"
  7.       )
  8. )
  9. (setq    fld (vlax-invoke-method
  10.          sh 'BrowseForFolder
  11.          vlax-vbDefaultButton1
  12.          msg          ; dialogue box message
  13.          vlax-vbDefaultButton3     ; BIF_NONEWFOLDERBUTTON Bruno Toniutti
  14.          path                  ; path start
  15. )
  16. )
  17. (vlax-release-object sh)
  18. (if fld
  19.    (progn
  20.      (setq folderobject (vlax-get-property fld 'Self))
  21.      (setq result (vlax-get-property folderObject 'Path))
  22.      (vlax-release-object fld)
  23.      (vlax-release-object folderobject)
  24.      result
  25.    )
  26. )
  27. )
  28. ;                        ;
  29. (defun list-dwg    (path / file_list full_list)
  30. (setq    file_list
  31.     (vl-directory-files path "*.dwg" 1)
  32. )
  33. (setq    file_list
  34.          (mapcar (function (lambda (x) (strcat path "\" x)))
  35.              file_list
  36.          )
  37.    full_list (append full_list file_list)
  38. )
  39. full_list
  40. )
  41. ;;-------------------------------------------------------
  42. ;;DGNEXPORT Function
  43. ;;Author: Andrew Qucsai Jr.
  44. ;;Date:   08-18-2010
  45. (defun dgnfun ( )   
  46.    (command "-dgnexport" "v8" "" "master" "standard" "W:\\AutoCAD\\PGE_CUI\\V8-Imperial-Seed3D.dgn" )
  47. (PRINC)
  48. )
  49. ;;-------------------------------------------------------
  50. ;                            ;
  51. (prompt "\n********************************************")
  52. (prompt "\n    Enter OPB to run batch file operation\n")
  53. (prompt "\n********************************************")
  54. ;                            ;
  55. (defun C:dgnex (/ *good-files* acapp adoc file_obj full-names-list osd)
  56. (alert
  57.    "\nPlease wait a minute
  58. \nto ending of batch file operation"
  59. )
  60.   (vl-load-com)
  61. (setq    acapp (vlax-get-acad-object)
  62.    adoc  (vla-get-activedocument acapp)
  63. )
  64. (vla-startundomark adoc)
  65. (setq osd (vla-getvariable adoc "SDI"))
  66. (vla-setvariable adoc "SDI" 0)
  67. (setq olsp (vla-getvariable adoc "LISPINIT"))
  68. (vla-setvariable adoc "LISPINIT" 0)
  69. (if (setq full-names-list
  70.         (list-dwg (browse-folder "SELECT FOLDER" "w:\\Projects\"))
  71.      )
  72.    ; change on your start path folder
  73.    (progn
  74.      (mapcar
  75.    (function
  76.      (lambda (i)
  77.        (progn
  78.          (setq file_obj (vla-open (vla-get-documents acapp) i))
  79.          (setq *good-files* (cons file_obj *good-files*))
  80.          ;;here will your batch function:
  81.        (progn (dgnfun))                        ;;My Function
  82.          (vla-setvariable file_obj "mirrtext" 0)
  83. ;          (vla-setvariable file_obj "insunits" 0)
  84. ;          (vla-setvariable file_obj "annotativedwg" 0)
  85.          (vla-close file_obj :vlax-true)
  86.          (vlax-release-object file_obj)
  87.          (setq file_obj nil)
  88.        )
  89.      )
  90.    )
  91.    full-names-list
  92.      )
  93.      (cond ((zerop (length *good-files*))
  94.         (princ "\nThere isn't opened files\n")
  95.        )
  96.        ((not (eq (length full-names-list) (length *good-files*)))
  97.         (princ "\nSome files were not opened\n")
  98.        )
  99.        (T nil)
  100.      )
  101.    )
  102.    (princ "\nThere isn't .DWG files in selected directory\n")
  103. )
  104. (vla-setvariable adoc "SDI" osd)
  105. (vla-setvariable adoc "LISPINIT" olsp)  
  106. (vla-endundomark adoc)
  107. (princ)
  108. )
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 10:52:47 | 显示全部楼层
你好
我不确定,但这不是与不能使用命令有关吗?我记得不久前问过类似的问题,但涉及批量导入。
回复

使用道具 举报

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-6 11:00:23 | 显示全部楼层
隐马尔可夫模型。。。我没想过。在那种情况下,我可能会把这一切都搞错。
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 11:08:11 | 显示全部楼层
我没有autocad要检查,但我想知道它是否适用于任何不使用命令的东西。
回复

使用道具 举报

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-6 11:17:09 | 显示全部楼层
李Mac帮我用这个程序写了一个批量文本替换程序,但那个并没有用命令。
回复

使用道具 举报

36

主题

183

帖子

151

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-6 11:24:29 | 显示全部楼层
我认为你是对的。我确实认为部分问题在于命令的使用。如果我能找到autocad将dgnexport LISP函数放置在哪里并将其放置在我的程序中,我想我可以绕过这个问题。这样我就不必使用命令,我可以使用progn。
 
有人知道在哪里可以找到autocad正在使用的实际dgnexport程序吗?
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 11:39:56 | 显示全部楼层
我想你找不到。不仅仅是一些express工具是Lisp吗?
 
我希望我错了,但我要说的是,如果你没有microstation,你必须坚持使用EZ script Pro(如果它已经完成了这项工作,那听起来很不错)。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 17:44 , Processed in 0.517382 second(s), 68 queries .

© 2020-2025 乐筑天下

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