AKing 发表于 2022-7-6 07:50:17

Autocad和Access

我正试图通过MSAccess使用Autocad的自动化来从cad绘图中获取属性。当我在Autocad中输入代码时,代码运行良好,但当我将其移到MSAccess时,它会使Access崩溃。是的,我包括了参考文件。
以下是它在Autocad中的外观:
    Dim blkTitle As AcadBlockReference
   
   For Each oEnt In ThisDrawing.ModelSpace
       If oEnt.EntityType = acBlockReference Then
         If oEnt.HasAttributes Then
               If oEnt.Name = "TITLE" Then
                   Set blkTitle = oEnt
                   If blkTitle.HasAttributes Then
                     aryAttributes = blkTitle.GetAttributes
                     MsgBox aryAttributes(0).TextString
                   End If
               End If
         End If
       End If
   Next oEnt在这里,它处于访问状态:
我想知道是否有人知道它为什么会崩溃?我没有收到任何错误消息或任何东西,只是一个发送错误报告对话框。这可能与数组中的对象类型为AcadAttributeReference有关吗?谢谢你能提供的任何帮助。
 
Ps.运行Autocad 2008

fixo 发表于 2022-7-6 07:58:29

你可以通过晚绑定或早绑定来实现
下面是一个早期绑定的快速示例
到AutoCAD应用程序几乎未经测试
您可以在上查看有关后期绑定的更多信息
http://www.excelguru.ca/node/10
并对AuitoCAD使用相同的方法
确保在Acces中设置了reference
到当前AutoCAD版本
在访问模块中添加此代码
希望这在2008年也能奏效
 
~'J'~
 
Option Compare TextOption ExplicitPublic fullName As String’//=================================Public Sub TitleToAccess()Dim acApp As acadapplication Dim aDoc As AcadDocumentDim oEnt As acaddentityDim blkTitle As AcadBlockReferenceDim oattrf As AcadAttributeReferenceDim bnameStr As StringDim arytributes As VariantDim ftype(0)As IntegerDim fdata(0)As VariantDim fcode As VariantDim fvalue As VariantDimi作为整数,j作为整数dim info()作为StringMsgBox“耐心等待…AutoCAD将自动”关闭“fullName=“C:\MyAccess\MyBlocks.dwg”

AKing 发表于 2022-7-6 08:04:09

哈哈!它成功了。非常感谢

fixo 发表于 2022-7-6 08:12:53

 
如果这有帮助的话,我很高兴
 
~'J'~

DanChirila 发表于 2022-7-6 08:19:23

您能帮我用这段代码将数据从access窗体写入autocad块属性吗。对不起,我没有编程技能。

irneb 发表于 2022-7-6 08:26:09

欢迎来到CT。首先,我们需要知道一些事情:Access的哪个版本(一些较新的版本不符合下面的VBA标准,所以可能需要翻译成VB.Net)?您确定要从访问端执行此操作,还是愿意让AutoCAD驱动MDB文件中的数据(这要简单得多,甚至可能工作得更快)?
 
ACad和Access是否始终位于同一台电脑上?是否要在没有ACad的情况下修改DWG文件?或者您想在没有访问权限的情况下修改MDB内的数据吗?

DanChirila 发表于 2022-7-6 08:33:06

我使用的是autocad 2008和access 2007,它们将始终位于同一台电脑上,我不打算进行修改,如果更容易,我更愿意将数据从一个访问表单连接到dwg自定义特性或SSM特性,然后通过标题栏中使用的字段链接该数据。
我发现一个代码可以在access中工作,并将数据发送到word模板。。。。http://www.techrepublic.com/blog/msoffice/how-do-i-fill-word-form-fields-with-access-data/164......i要将数据发送到autocad字段或块属性。

DanChirila 发表于 2022-7-6 08:40:12

我正在使用autocad 2008和access 2007。。。我在同一台计算机上使用它们。。。

DanChirila 发表于 2022-7-6 08:47:15

我不打算在没有这些软件的情况下修改数据。。。。。对不起我的英语。我想将数据从一个访问窗体带到autocad块属性或dwg的自定义特性或ssm特性。

irneb 发表于 2022-7-6 08:53:05

我不太确定Access 2007是否有VBA,我知道我在2007年运行为Outlook 2003编写的VBA工具时遇到了很大的问题,即使是在安装了MSO的VBA插件包之后。
 
我没有在DotNet中为Access做过任何编程,所以我对此不太了解。我在Access 2003中做了一些类似于OP的事情(尽管我不得不告诉你它运行得很慢)。最终,我在AutoCAD上使用ADOLisp链接到MDB文件,速度快了10倍。有很多关于使用Lisp链接到数据库的线程,ADOLisp实际上有链接到MDB文件的示例代码,尽管它可以链接到任何可以通过ADO/ODBC连接的数据库。
 
您可能需要查看以下线程:http://www.theswamp.org/index.php?topic=42014.0
页: [1]
查看完整版本: Autocad和Access