乐筑天下

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

[编程交流] 从mul导出属性数据

[复制链接]

5

主题

25

帖子

20

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 22:57:10 | 显示全部楼层 |阅读模式
大家好,
 
自2007年以来,我一直使用一种工具,可以将所有属性数据导出到excel,调整数据并将其更新回Autocad。
这一切都是通过VBA完成的。
不幸的是,代码从未被更新,现在它不再工作了。
 
我经常使用这个工具,我真的希望它能再次工作。
或者类似的事情。
 
工作流程应如下所示:
 
-运行命令(将块信息导出到excel)
(在后台打开excel)
-选择块
-如果存在块,程序将检查所有图形(在autocad会话中打开的图形)。
-然后将所有属性信息导出到Excel。
 
第二个程序将更新所有打开图形中的所有属性。
 
谁能帮我???
 
当做
卫斯理
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:05:27 | 显示全部楼层
由于新版本的AutoCAD默认不再支持VBA,因此您的工具可能停止工作;但是,您可以从Autodesk下载启用程序扩展。
回复

使用道具 举报

5

主题

25

帖子

20

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 23:12:41 | 显示全部楼层
我的所有版本都安装了vba enabler。
不知怎的,它已经不起作用了。
在Acad2014中,32位代码不再是wokring。
 
我不是vba程序员,所以我找不到问题。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:19:51 | 显示全部楼层
它是开放代码还是已编译?如果编译,那么尝试在64位中运行可能是个问题。
 
你有源代码吗?使用Vbaman进行测试可以从命令行a运行DVB使用:^C^C(vl vbaload“S:/VBA/Design Toolkit.DVB”)(vl vbarun“Toolkit”)
回复

使用道具 举报

5

主题

25

帖子

20

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 23:27:57 | 显示全部楼层
我更想知道这是否也可以通过LISP实现。
回复

使用道具 举报

6

主题

62

帖子

57

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:34:13 | 显示全部楼层
你好
 
你看过李的例行公事了吗
 
http://www.lee-mac.com/macatt.html
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:38:33 | 显示全部楼层
这只是一个操作,“调整数据”意味着在更新属性之前在Excel中进行计算?或者是大约两个单独的操作/命令(导出/导入)?
 
 
基本上,为了解决最后一个问题,您可以使用AutoLISP提取/编辑属性,还可以通过COM技术访问Excel,因此复制您的工具似乎是可行的。
回复

使用道具 举报

5

主题

25

帖子

20

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 23:46:06 | 显示全部楼层
Macatt只允许我导出属性值。
我想要的是:
-要选择标题栏,
-将所有打开图形的所有属性值导出到excel,
-更新信息(如drawingnumbers-drawingtitles)
-将其重新导入autocad。
 
@比加尔
我看了vba代码。但它看起来使用了很多不同的部件。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:52:08 | 显示全部楼层
如果你很高兴发布代码,听起来好像它没有编译,那么有人可以试着运行并找到问题。可能比重新开始更简单。如果需要,甚至可以更容易地重写它。
回复

使用道具 举报

5

主题

25

帖子

20

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 00:01:17 | 显示全部楼层
我不知道这是否是全部代码。
这只是其中的一部分。
dvb文件中有大量的小工具。
 
希望你能用它做点什么。
 
  1. Public Sub TelAllDocs()
  2. Dim aDocs As Variant, aDoc As AcadDocument
  3. Dim oBlok As AcadBlockReference, Pt
  4. Dim Excel As Object, ExcelSheet As Object
  5. Dim nX
  6. Dim EersteRij() As Variant
  7.    Debug.Print
  8.    
  9.    Set Excel = StartExcel
  10.    Excel.Visible = True
  11.    Excel.Workbooks.Add
  12.    Set ExcelSheet = Excel.sheets.Add
  13.    ExcelSheet.name = Format(Application.Documents.Count, "00") & "-documenten"
  14.    RowNum = 2
  15.    
  16.    EersteRij = Array("Bloknaam", "X", "Y", "Handle", "Layer", "Pad", "Filenaam")
  17.    
  18.    ExcelSheet.Range("A1:BZ1").Font.Bold = True
  19.    For nX = LBound(EersteRij) To UBound(EersteRij)
  20.        ExcelSheet.cells(1, nX + 1).Value = EersteRij(nX)
  21.    Next nX
  22.    
  23.    AppActivate "Autocad", False
  24.    DoEvents
  25.    On Error Resume Next
  26.    ThisDrawing.Utility.GetEntity oBlok, Pt, "Wijs Blok aan : "
  27.    If Err.Number <> 0 Then Exit Sub
  28.    On Error GoTo 0
  29.    
  30.    Set aDocs = Application.Documents
  31.    
  32.    For Each aDoc In aDocs
  33.        Debug.Print aDoc.Path; ""; aDoc.name
  34.        aDoc.Activate
  35.        TelAttrDoc oBlok.name
  36.    Next
  37.    Beep
  38.    Set Excel = Nothing
  39.    Set ExcelSheet = Nothing
  40.    
  41. End Sub
  42. Private Sub TelAttrDoc(sBlokNaam)
  43. Dim Excel As Object
  44. Dim oBlokje As Object
  45. Dim ExcelSheet As Object
  46. Dim Array1 As Variant
  47. Dim Count
  48. Dim NumberOfAttributes As Integer
  49. Dim FoundAttributes As Boolean
  50. Dim tmp As Integer
  51. Dim oBlokjeReference As AcadBlockReference
  52. Dim sBlokName As String
  53. Dim nKol1, nX, Retval As Double, nTimeout As Byte
  54. Dim EersteRij() As Variant
  55. Dim W9 As AcadSelectionSet
  56. Dim Q4 As cObj
  57.    Set Q4 = New cObj
  58.    Q4.VoegToeGroepModified BLOK, Left(sBlokNaam, 7) & "*"
  59.    Q4.SelType = acSelectAll
  60.    Q4.ExcecuteSelect
  61.    
  62.    Set W9 = ThisDrawing.SelectionSets(Q4.SelSetNaam)
  63.    Debug.Print W9.Count
  64.    If W9.Count = 0 Then Exit Sub
  65.    
  66.    nTagTeller = 0
  67.    Set Excel = StartExcel
  68.    Set ExcelSheet = Excel.sheets(Format(Application.Documents.Count, "00") & "-documenten")
  69.    
  70.    On Error GoTo 0
  71.    EersteRij = Array("", "", "", "", "", "", "")
  72.    
  73.    For Each oBlokje In W9
  74.        If oBlokje.HasAttributes Then
  75.            Set oBlokjeReference = oBlokje
  76.                ExcelSheet.cells(RowNum, 1) = oBlokje.name
  77.                ExcelSheet.cells(RowNum, 1).NumberFormat = "@"
  78.                ExcelSheet.cells(RowNum, 2).Value = oBlokjeReference.InsertionPoint(0)
  79.                ExcelSheet.cells(RowNum, 3).Value = oBlokjeReference.InsertionPoint(1)
  80.                ExcelSheet.cells(RowNum, 4).NumberFormat = "@"
  81.                ExcelSheet.cells(RowNum, 4).Value = oBlokjeReference.Handle
  82.                ExcelSheet.cells(RowNum, 5).Value = oBlokjeReference.Layer
  83.                ExcelSheet.cells(RowNum, 6).Value = ThisDrawing.GetVariable("dwgprefix")
  84.                ExcelSheet.cells(RowNum, 7).Value = ThisDrawing.GetVariable("dwgname")
  85.                Array1 = oBlokjeReference.GetAttributes
  86.                For Count = LBound(Array1) To UBound(Array1)
  87.                    nKol1 = WelkeKolomMod(Trim(Array1(Count).TagString), ExcelSheet, UBound(EersteRij) + 1)
  88.                    ExcelSheet.cells(RowNum, nKol1).NumberFormat = "@"
  89.                    ExcelSheet.cells(RowNum, nKol1).Value = Trim(Array1(Count).TextString)
  90.                Next Count
  91.                RowNum = RowNum + 1
  92.        End If
  93.    Next oBlokje
  94.    Set Excel = Nothing
  95.    Set ExcelSheet = Nothing
  96. End Sub

 
对不起,里面有荷兰语.:-)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:16 , Processed in 0.352487 second(s), 72 queries .

© 2020-2025 乐筑天下

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