明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1064|回复: 0

[原创]借助Excel更改零件号

[复制链接]
发表于 2007-12-10 15:20:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-12-10 15:28:28 编辑

绘制施工图时,在件号1~50之间补插入17和18零件号,通常方法是人工来更改后面零件号。如图所示。

本人的解决方案是,将施工图里的件号图层的件号读到到Excel中,在Excel中1~50间的17、18后,插入19、20件号。采用ObjectToObject更改原施工图里件号,效率高,实用性强。程序如下。
  1. Sub ReadPartNo()
  2.   Dim xlSheet
  3.   Set xlSheet = xlApp.sheets(1)
  4.   Dim ss1 As AcadSelectionSet
  5.   Dim layername As String
  6.   Dim AcadEnt As AcadEntity
  7.   'Dim pp1 As AcadPoint, pp2 As AcadPoint
  8.   '指定图层名称
  9.   'Set pp1 = ThisDrawing.Utility.GetPoint
  10.   'Set pp2 = ThisDrawing.Utility.GetPoint
  11.   layername = "件号"
  12.   Dim tt As AcadText, MTt As AcadMText
  13.   '得到选择集
  14.   Dim gpCode(0) As Integer
  15.   Dim dataValue(0) As Variant
  16.   gpCode(0) = 8
  17.   dataValue(0) = layername
  18. '  ss1.Delete
  19.   ii = 1
  20.   Set ss1 = ThisDrawing.SelectionSets.Add("sss")
  21.   ss1.Select acSelectionSetAll, , , gpCode, dataValue
  22.   'ss1.Select acSelectionSetCrossing, pp1, pp2, , dataValue
  23. For Each AcadEnt In ss1
  24.   'Debug.Print AcadEnt.ObjectName
  25.   Select Case AcadEnt.ObjectName
  26.     Case "AcDbText"
  27.       Set tt = AcadEnt
  28.       With tt
  29.         xlSheet.cells(ii, 1).Value = .TextString
  30.         xlSheet.cells(ii, 2).Value = .InsertionPoint(0)
  31.         xlSheet.cells(ii, 3).Value = .InsertionPoint(1)
  32.         xlSheet.cells(ii, 4).Value = .Layer
  33.         xlSheet.cells(ii, 5).Value = .ScaleFactor
  34.         xlSheet.cells(ii, 6).Value = .color
  35.         xlSheet.cells(ii, 7).Value = .ObjectID
  36.         ii = ii + 1
  37.       End With
  38.     Case "AcDbMText1"
  39.       Set MTt = AcadEnt
  40.       Debug.Print "MText---", MTt.TextString
  41.   End Select
  42.   
  43. Next
  44.   ss1.Delete
  45.   
  46. End Sub
  47. 在Excel中插入相应零件号,更改后面的件号,按顺序添加序号要比手动在AutoCAD中更改序号要简单多。
  48. Sub ChangePartNumber()
  49.   Dim Ent As AcadEntity
  50.   Dim tt As AcadText
  51.   Dim xlSheet
  52.   Set xlSheet = xlApp.sheets(1)
  53.   
  54.   For ii = 1 To 50
  55.     Set tt = ThisDrawing.ObjectIdToObject(xlSheet.cells(ii, 7).Value)
  56.     With tt
  57.       .TextString = xlSheet.cells(ii, 1).Value
  58.       .color = acByLayer
  59.       .Update
  60.     End With
  61.   Next ii
  62. End Sub

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 10:24 , Processed in 0.152544 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表