乐筑天下

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

[编程交流] 更改层以匹配另一个

[复制链接]

38

主题

83

帖子

53

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
186
发表于 2022-7-6 15:18:48 | 显示全部楼层 |阅读模式
我在一家暖通空调公司工作。我正在使用AutoCAD 2008。
我正在做一些项目,我们得到建筑背景的形式之一是客户的。
Architecture客户端使用AutoDesk architectural程序,我们必须更改图层以匹配are标准,但更改每个图形文件中的图层需要时间。
是否可以在一个图形中更新图层信息(如颜色),然后在我选择的其他图形中更改同一图层的信息?无需手动更改。
我只使用AutoCAD 2008几个月,我知道2004有一种方法可以匹配另一个图形中的图层,但它在这里不起作用。
我只希望我在第一个图形中更改的图层与我选择的其他图形中的更改相匹配。
是否有lisp文件或VB例程或帮助创建这样的文件,。。。
谢谢
回复

使用道具 举报

0

主题

132

帖子

198

银币

限制会员

铜币
-21
发表于 2022-7-6 15:43:43 | 显示全部楼层
我不确定,但在工具>>CAD标准>>图层转换器下进行检查。我知道ACAD 2007有它。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 16:03:13 | 显示全部楼层
这可以在我更改所有图层属性时完成。
 
我使用的方法是读取与我们的surveyors库匹配的现有文本文件。
 
好的,您需要做的是将图层细节dwg1写入文本文件,然后将其与dwg2中的已知列表进行比较,并进行简单的更改
 
下面是一些代码,可以帮助您在这里搜索并写出图层
 
  1. Dim objENT As AcadEntity
  2. Dim ssetObj As AcadSelectionSet
  3. Dim layercode As String
  4. Dim objLayers As AcadLayers
  5. Dim objLayer As AcadLayer
  6. Dim X, Y, J, k As Integer
  7. Dim lname, ans, ltype As String
  8. Dim MyLAYERNAME(256) As String
  9. Dim MyLAYERCOLOR(256) As Integer
  10. Dim MyLAYERLINETYPE(256) As String
  11. 'On Error GoTo filediafix
  12. ' 256 max LINES 3 VARIABLES
  13. Open "S:\Autodesk\lisp\civilcad6layercodes.txt" For Input As #1
  14. ' setvar filedia to 0
  15. ThisDrawing.SendCommand "filedia" & vbCr & "0" & vbCr
  16. 'loads all custom linetypes purges first then reloads
  17. 'ThisDrawing.SendCommand "-purge" & vbCr & "lt" & vbCr & "*" & vbCr & "N" & vbCr
  18. 'ThisDrawing.SendCommand "-linetype" & vbCr & "l" & vbCr & "*" & vbCr & "s:\Autodesk\supportfiles\custom.lin" & vbCr & vbCr
  19. ' reset all solid linetypes to continuous
  20. Set objLayers = ThisDrawing.Layers
  21. For Each objLayer In objLayers
  22. If objLayer.Linetype = "solid" Or objLayer.Linetype = "SOLID" Then
  23. objLayer.Linetype = "Continuous"
  24. End If
  25. Next objLayer
  26. MsgBox "Solid Linetypes reset in the layers"
  27. For Each objLayer In objLayers
  28. 'If objLayer.Name = "FENCE" Then
  29. 'If objLayer.Linetype = "903" Then
  30. ' objLayer.Linetype = "FENCE"
  31. ' End If
  32. Next objLayer
  33. MsgBox "903 Linetypes reset in the layers"
  34. For Each objLayer In objLayers
  35. If objLayer.Linetype = "dash" Then
  36. objLayer.Linetype = "DASHED"
  37. End If
  38. Next objLayer
  39. MsgBox "DASH Linetypes reset in the layers"
  40. For Each objLayer In objLayers
  41. If objLayer.Linetype = "VEGETATION" Then
  42. objLayer.Linetype = "TREE"
  43. End If
  44. Next objLayer
  45. MsgBox "Vegetation Linetypes reset in the layers"
  46. ' now change layer colors and linEtype for all entities to bylayer
  47. Set ssetObj = ThisDrawing.SelectionSets.Add("MYsSS")
  48. ssetObj.Select acSelectionSetAll
  49. For Each objENT In ssetObj
  50. objENT.color = acByLayer
  51. objENT.Linetype = "ByLayer"
  52. Next objENT
  53. ThisDrawing.SelectionSets.Item("MYsSS").Delete
  54. 'read in each line of data file with layer name colour and linetype
  55. Y = 0
  56. Do While Not EOF(1)    ' Check for end of file.
  57. Line Input #1, layercode    ' Read line of data.
  58.   ' MsgBox "1   lines" & layercode
  59.    
  60.   ans = Mid(layercode, 1, 22)    'LAYER NAME
  61.   J = 22
  62.   lname = ""
  63.   For k = 1 To J
  64.   character = Mid(ans, k, 1)
  65.   If character = " " Then k = J Else lname = lname + character
  66.   Next k
  67.   MyLAYERNAME(Y) = lname
  68.   
  69.   MyLAYERCOLOR(Y) = CInt(Mid(layercode, 23, 1))    'COLOR NUMBER
  70.   
  71.   ans = Mid(layercode, 25, 10)
  72.   
  73.   J = 10
  74.   ltype = ""
  75.   For k = 1 To J
  76.   character = Mid(ans, k, 1)
  77.   If character = " " Then k = J Else ltype = ltype + character
  78.   Next k
  79.   MyLAYERLINETYPE(Y) = ltype    ' LINETYPE
  80.   
  81.    
  82.    Y = Y + 1
  83. Loop
  84. Close #1    ' Close file.
  85. For Each objLayer In objLayers
  86. For X = 1 To Y
  87. If objLayer.Name = MyLAYERNAME(X) Then
  88. objLayer.color = MyLAYERCOLOR(X)
  89. objLayer.Linetype = MyLAYERLINETYPE(X)
  90. X = Y
  91. Else
  92. z = z + 1
  93. End If
  94. Next X
  95. Next objLayer
  96. MsgBox "Linetypes and colours have been reset all the layers"
  97. filediafix:
  98. ThisDrawing.SendCommand "filedia" & vbCr & "1" & vbCr
回复

使用道具 举报

38

主题

83

帖子

53

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
186
发表于 2022-7-6 16:15:58 | 显示全部楼层
这段代码是lisp还是VB?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:21:13 | 显示全部楼层
VB
 
干杯
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 20:59 , Processed in 0.394802 second(s), 62 queries .

© 2020-2025 乐筑天下

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