乐筑天下

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

[编程交流] [请帮帮我]我想

[复制链接]

7

主题

33

帖子

26

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 21:53:28 | 显示全部楼层 |阅读模式
我有剧本
 
  1. Sub ChangeLayer(ByVal FullDwgName)
  2. On Error Resume Next
  3. Dim AcadApp
  4. Dim Thisdrawing
  5. Set AcadApp = GetObject(,"Autocad.Application")
  6. If Err Then
  7.         Err.Clear
  8.         Set AcadApp =CreateObject("Autocad.Application")
  9. End If
  10. Dim LayerObj
  11.        
  12. Dim strOldLayerName(4)        'old name of Layer
  13. strOldLayerName(0) ="STV-DIM"
  14. strOldLayerName(1) ="STV-CENTER"
  15. strOldLayerName(2) ="STV-HIDDEN"
  16. strOldLayerName(3) ="STV-REF"
  17. strOldLayerName(4) ="STV-PRIMARY"
  18. Dim strNewLayerName(4)        'New Name of Layer
  19. strNewLayerName(0) ="PT-DIM"                'Name for new Layer 1
  20. strNewLayerName(1) ="PT-CENTER"                'Name for new Layer 2
  21. strNewLayerName(2) ="PT-HIDDEN"                'Name for new Layer 3
  22. strNewLayerName(3) ="PT-REF"                'Name for new Layer 4
  23. strNewLayerName(4) ="PT-PRIMARY"        'Name for new Layer 5
  24. Dim intNewLayerColor(4)
  25. intNewLayerColor(0)=1        'Color for Layer 1
  26. intNewLayerColor(1)=2        'Color for Layer 2
  27. intNewLayerColor(2)=3        'Color for Layer 3
  28. intNewLayerColor(3)=4        'Color for Layer 4
  29. intNewLayerColor(4)=5        'Color for Layer 5
  30. Dim strNewLayerLineType(4)
  31. strNewLayerLineType(0)="CENTER"
  32. strNewLayerLineType(1)="Continuous"
  33. strNewLayerLineType(2)="HIDDEN"
  34. strNewLayerLineType(3)="PHANTOM"
  35. strNewLayerLineType(4)="Continuous"
  36. Set Thisdrawing = AcadApp.Documents.Open(FullDwgName)
  37. Dim intA
  38. For Each LayerObj In Thisdrawing.Layers
  39.                
  40.                 For intA=0 To 4
  41.                         If LayerObj.Name = strOldLayerName(intA) Then
  42.                                
  43.                                 LayerObj.Name = strNewLayerName(intA)
  44.                                 LayerObj.color = intNewLayerColor(intA)
  45.                                 Thisdrawing.Linetypes.Load strNewLayerLineType(intA),"acad.lin"
  46.                                 LayerObj.Linetype=strNewLayerLineType(intA)
  47.                                 AcadApp.Update
  48.                         End If
  49.                 Next
  50. Next
  51. 'Close drawing
  52. Thisdrawing.Close True
  53. End Sub

 
旧层:A1、A2、A3、A4、A5、A6、A7、A8、A9
新层:B1、B2、B3、B4
 
所以我想把A1,A3,A5变成B1
A2、A4、A6、A7=>B2
A8=>B3
A9=>B4
 
我该怎么办?
 
提前谢谢你
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 22:14:26 | 显示全部楼层
首先,你有vba代码而不是脚本,想想lisp,script,vba&。网
 
上面的代码更改了图层属性而不是对象,如果要获取4层对象并生成一个图层,则不能将4个图层重命名为一个图层。
 
手动使用layiso选择4个图层选择所有对象、chprop或使用特性。
 
脚本示例
  1. (setq ss (ssget "x" '((8 . "A2,A4,A6,A7")))) (command "-chprop" ss "" "la" "B2" "")(setq ss nil)
  2. (setq ss (ssget "x" '((8 . "A8")))) (command "-chprop" ss "" "la" "B3" "")(setq ss nil)
  3. (setq ss (ssget "x" '((8 . "A9")))) (command "-chprop" ss "" "la" "B4" "")(setq ss nil)
回复

使用道具 举报

7

主题

33

帖子

26

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 22:20:45 | 显示全部楼层
 
这是我的文件更改层。rar公司
如果我想取4层对象并制作一层,我该怎么办?因为我想更改许多CAD文件。
帮我更改此文件。
提前谢谢你
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 22:33:11 | 显示全部楼层
只要让我发布的脚本做所有的工作,是的,一个lisp会做得更好,但一个真正的快速回答。
 
  1. Open dwg1
  2. (setq ss (ssget "x" '((8 . "A2,A4,A6,A7")))) (command "-chprop" ss "" "la" "B2" "")(setq ss nil)
  3. (setq ss (ssget "x" '((8 . "A8")))) (command "-chprop" ss "" "la" "B3" "")(setq ss nil)
  4. (setq ss (ssget "x" '((8 . "A9")))) (command "-chprop" ss "" "la" "B4" "")(setq ss nil)
  5. close Y
  6. Open dwg2
  7. (setq ss (ssget "x" '((8 . "A2,A4,A6,A7")))) (command "-chprop" ss "" "la" "B2" "")(setq ss nil)
  8. (setq ss (ssget "x" '((8 . "A8")))) (command "-chprop" ss "" "la" "B3" "")(setq ss nil)
  9. (setq ss (ssget "x" '((8 . "A9")))) (command "-chprop" ss "" "la" "B4" "")(setq ss nil)
  10. close Y
  11. Open dwg3
  12. (setq ss (ssget "x" '((8 . "A2,A4,A6,A7")))) (command "-chprop" ss "" "la" "B2" "")(setq ss nil)
  13. (setq ss (ssget "x" '((8 . "A8")))) (command "-chprop" ss "" "la" "B3" "")(setq ss nil)
  14. (setq ss (ssget "x" '((8 . "A9")))) (command "-chprop" ss "" "la" "B4" "")(setq ss nil)
  15. close Y
回复

使用道具 举报

7

主题

33

帖子

26

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 22:42:25 | 显示全部楼层
 
你能帮我把你的代码放到我的脚本文件里吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:01:35 | 显示全部楼层
我发布了脚本文件all ready dwg1=drawing name 1等等。
 
将我第一篇文章中的3行另存为layers4321。通过记事本复制和粘贴。在命令行中键入SCRIPT,选择layers4321,它应该会更改当前图形。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 12:48 , Processed in 1.064963 second(s), 64 queries .

© 2020-2025 乐筑天下

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