通过Excel、Autocad交换块
您好,我正在寻找有关autocad的VBA帮助。我想做的是使用excel将一个块替换为另一个块,以保存块列表,而不是硬编码。我所拥有/知道的:
包含两个克隆和135行的excel工作表(行数可能会更改)
每行图纸中存在1:1的关系
A列B列
旧块新块
我可以毫无问题地打开excel表
我不知道的是:
如何“阅读”图形以获取块信息
将其与excel关联
替换/更新块
有人能帮忙吗? 您的意思是要更新图形中的块定义吗?
是否要更新此块定义:
[列表]
[*]在运行时使用各种对象/属性?
[*]来自存储在单独图形中的块定义?
[*]从一个完整的。DWG文件?
[/列表] 谢谢你的回复。。
图纸中将包含一个块。
autocad用户将选择VBA按钮,该按钮将读取图形中的块,(我猜)保存此信息。阅读excel表格。并用新块替换该块。。。
这回答了你的问题吗?
有点像,但当你说“用新块替换块”时,这个新块定义存储在哪里?在同一张图纸中?因此,图形包含名为“a”和“B”的块,您想用“B”替换“a”的每次插入吗?
还是要用“B”的块定义更新“A”的块定义? 谢谢你的回复。
新块将位于服务器上,而不是图形中。
使用不同的名称。
所以我想答案是更新块定义。 你好
试试这个法语Lisp程序
@+
Rbloc。拉链 那么呢
_blockreplace命令? 谢谢你的帮助。。。
感谢Patrick_35,但Lisp不会剪掉它。
下面附上我到目前为止的代码。。。。
-------------------------
公共子访问Excel()
出错时继续下一步
'检查Excel是否已在运行,并获取当前应用程序。
设置AppExcel=GetObject(,“Excel.Application”)
'Excel未运行;需要启动它。
如果AppExcel什么都不是那么
'清除上述错误。
犯错误清楚的
'启动Excel。
设置AppExcel=CreateObject(“Excel.Application”)
'无法启动Excel。
如果出错。数字0那么
MsgBox“无法启动Excel。请确保程序已安装。”_
vbCritical,“Excel错误”
出口接头
如果结束
如果结束
出错时继续下一步
设置AppExcel=CreateObject(“Excel.Application”)
如果出错。数字0那么
MsgBox“无法启动Excel。请确保程序已安装。”,vbCritical,“Excel错误”
出口接头
如果结束
'使Excel窗口可见。用于测试
阿佩克塞尔。Visible=True“用于在程序完全使用时进行测试
'AppExcel。Visible=False“在程序完成时使用
末端接头
---------------------------------------------------
公共子读取块()
调用AccessExcel'
如果AppExcel为Nothing,则“如果找不到excel,则退出代码”
出口接头
如果结束
'定义excel对象
将WkBk设置为工作簿
设置WkBk=AppExcel。工作簿。打开(“K:\Acad Blocks\Swap.xls”)
将WkSt设置为工作表
设置WkSt=WkBk。工作表(“表1”)
'定义变量和默认值
Dim intRow为整数'
简介=1’
Dim oldblock As String'
oldblock=WkSt。单元格(简介,1)。值'
将新块变暗为字符串'
Do Until oldblock=“”
新块=WkSt。细胞(简介,2)。值'
调用buildssetoblock(oldblock,newblock)'
intRow=intRow+1'递增计数器
oldblock=WkSt。单元格(简介,1)。值'获取下一个值
环
调用CloseExcel
末端接头
--------------------------------
公共子构建子块(oldBlockName作为字符串,newBlockName作为字符串)
将对象设置为AcadSelectionSet
将strBlocks设置为字符串
Dim objBlockRef作为AcadBlock
Dim intDxfCode(0到1)为整数
Dim varDxfValue(0到1)作为变量
'初始化字符串。
strBlocks=“”
'单步遍历图形中的所有块。
对于本图纸中的每个objBlockRef。阻碍
strBlocks=strBlocks&objBlockRef。名称和vbCrLf
'下一个
“”向用户显示块。
图形中定义的“MsgBox”块:“&vbCrLf&vbCrLf&strBlocks”
下一个
'块在此替换新块的旧块
末端接头
-------------- 嘿
我知道这是一个很老的线程,但我想知道你是否有过这样的日常工作?
页:
[1]