乐筑天下

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

[编程交流] 外部参照重定位和重命名LSP-输出

[复制链接]

9

主题

51

帖子

42

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 17:51:08 | 显示全部楼层 |阅读模式
在某处找到代码。非常适合更改外部参照路径和外部参照名称。
但它变成了小写字母。
 
我输入lsp代码:R:\\DWGA\\
 
但是出来r:\dwga\
 
请帮助更改为大写字母
 
  1. ;................................................. ..............................
  2. ;
  3. ; << Replace old xref files with a set of new xref files >>
  4. ;
  5. ; << Version 1.0 >>
  6. ;
  7. ; NOTE: If new xrefs are in a different folder, you must call out
  8. ; XrefPathChange.lsp from the code below.
  9. ;
  10. ;................................................. ..............................
  11. (defun c:xrefR (/ b bcol path )
  12. (vl-load-com)
  13. (setq bcol (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
  14. (foreach blk '(
  15. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  16. ;>>>>> Enter all xref names below in this format >>>>>>
  17. ;>>>>> ("OldXrefName" . "NewXrefName") >>>>>>
  18. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  19. ("X-TEST-2A" . "X-TEST-2B")
  20. ("X-TEST-3A" . "X-TEST-3B")
  21. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  22. )
  23. (if
  24. (and
  25. (not (vl-catch-all-error-p (setq b (vl-catch-all-apply 'vla-item (list bcol (car blk))))))
  26. (= (vla-get-isxref b) :vlax-true)
  27. )
  28. (progn (vla-put-name b (cdr blk))
  29. (if (= (setq path (vl-filename-directory (vla-get-path b))) "")
  30. (vla-put-path b (strcat (cdr blk) ".dwg"))
  31. (vla-put-path b (strcat path "\" (cdr blk) ".dwg"))
  32. )
  33. (vla-reload b)
  34. )
  35. )
  36. )
  37. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  38. ;>>> XrefPathChange.lsp call out here. >>>>
  39. ;>>> Enter all xref paths to be changed in this format. >>>>
  40. ;>>> (xrefpathchange "c:\\Oldfolder\\oldfolder" "c:\\newfolder\\newfolder") >>>>
  41. ;>>> Note: Remove code if new xref path is unchanged. >>>>
  42. ;>>> Add ; infront of each line to block code. >>>>
  43. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  44. (xrefpathchange "S:\\DWG\\TEXT" "[b]R:\\DWGA\\[/b]")
  45. (XReload)
  46. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  47. (princ)
  48. );end of c:xrefR
  49. ;................................................. ..........
  50. ;.... Xref Path Change sub routine by ronjonp ....
  51. ;................................................. ..........
  52. (defun xrefpathchange (path1 path2 / newpath xrpath)
  53. (vl-load-com)
  54. (vlax-map-collection
  55. (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
  56. (function
  57. (lambda (x)
  58. (if (= (vla-get-isxref x) :vlax-true)
  59. (progn (setq xrpath (strcase (vlax-get x 'path) t)
  60. path1 (strcase path1 t)
  61. path2 (strcase path2 t)
  62. )
  63. (if (and (vl-string-search path1 xrpath)
  64. (setq newpath (vl-string-subst path2 path1 xrpath))
  65. (findfile newpath)
  66. )
  67. (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-path (list x newpath)))
  68. (princ (strcat "\n**OLD path found but was not changed!\n" xrpath))
  69. (princ (strcat "\n" newpath))
  70. )
  71. )
  72. )
  73. )
  74. )
  75. )
  76. )
  77. (princ)
  78. ); end of XrefPathChange
  79. ;................................................. ............
  80. ;.... Xref Reload sub routine .......
  81. ;................................................. ............
  82. (defun XReload (/ cObj cName); Updated 2007-10-1: added error trap
  83. (defun *error*(msg)
  84. (setvar "modemacro" ".")
  85. (setvar "cmdecho" 1)
  86. (princ "\n...Reload xref terminated!!!  ")
  87. (princ)
  88. ); end of *error*
  89. (setvar "modemacro" "Reloading loaded xrefs......please wait......")
  90. (setvar "cmdecho" 0)
  91. (setq cObj(tblnext "BLOCK" T))
  92. (while cObj
  93. (setq cName(cdr(assoc 2 cObj)))
  94. (if
  95. (and
  96. (=(logand(cdr(assoc 70 cObj))32)32)
  97. (=(logand(cdr(assoc 70 cObj))4)4)
  98. ); end and
  99. (progn
  100. (vl-cmdf "_.xref" "_unload" cName)
  101. (vl-cmdf "_.xref" "_reload" cName)
  102. ); end progn
  103. ); wnd if
  104. (setq cObj(tblnext "BLOCK"))
  105. ); end while
  106. (setvar "modemacro" ".")
  107. (setvar "cmdecho" 1)
  108. (prompt "\n--- Xref change finished! ---")
  109. (princ)
  110. ); end of XReload
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:50:43 | 显示全部楼层
看看你在哪里使用了strcase,没有花太多时间检查代码。
回复

使用道具 举报

9

主题

51

帖子

42

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 18:56:15 | 显示全部楼层
 
非常感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 23:39 , Processed in 0.557778 second(s), 58 queries .

© 2020-2025 乐筑天下

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