乐筑天下

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

[编程交流] 检索AutoCAD块记录

[复制链接]

2

主题

13

帖子

11

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:20:17 | 显示全部楼层 |阅读模式
你好
 
我的目标是在所有AutoCAD图形上设置批打印。每张图纸将有一个类似的记录:
 
232031e0eq5euwn9fqae6u.jpg
 
红色下划线的PartNo记录是递归函数将要处理的其他图形。这就是为什么我必须访问这些信息。我相信我必须访问一个名为“BLOCKNT”的对象才能这样做,但我不确定语法。
 
仅供参考,出于某种原因,每当我尝试使用此代码时:
  1. ApplicationServices.Application.DocumentManager.MdiActiveDocument

 
我得到以下错误:
 
这是一个。exe应用程序,我已经阅读,我不能使用NETLOAD命令在一个。exe项目?这有意义吗?
 
非常感谢。
亚历克斯
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:25:50 | 显示全部楼层
现在,如果您使用的是独立的EXE,那么您应该通过COM访问AutoCAD,而不是。NET API。
 
http://through-the-interface.typepad.com/through_the_interface/2010/02/handling-com-calls-rejected-by-autocad-from-an-external-net-application.html
 
 
 
另外,很难说清楚,因为你没有发布你的呼叫代码,但似乎是你的系统。IO。FileNotFoundException是试图将MdiActiveDocument对象传递给系统的结果。IO。文件Exists()方法调用(或类似调用),此时您需要提供限定的文件路径和文件名。
回复

使用道具 举报

2

主题

13

帖子

11

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:29:18 | 显示全部楼层
我懂了。。。我认为我一直在使用的AutoCAD文档是为了。NET API。至于调用代码本身,它看起来是这样的:
 
  1. Private Sub ACAD()
  2.     'The application crashes here and I receive the error posted above.
  3.     GetBlockContents()
  4. End Sub
  5. Private Sub GetBlockContents()
  6.     Dim test = Application.DocumentManager.MdiActiveDocument
  7. End Sub
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:31:29 | 显示全部楼层
从这里开始:我的第一次插件培训
 
不管你是否擅长。NET开发,或者如果这是您第一次尝试两者兼而有之,则需要更好地理解。NET和COM API,然后您的努力就会成功。
 
 
 
**注意-Autodesk的。NET文档假设对有基本了解。NET开发概念。
回复

使用道具 举报

2

主题

13

帖子

11

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:35:52 | 显示全部楼层
非常感谢。我会调查的。说到这点,我相当得体。NET开发。不过,在AutoCAD概念中还是很新的。我以前做过一些SolidEdge,但现在我正在扩展。
 
再次感谢!
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:37:44 | 显示全部楼层
 
别担心;我们都从某个地方开始。。。我想你的前任。NET开发经验很快就会派上用场。您只需要熟悉API对象的属性、方法和事件。
回复

使用道具 举报

2

主题

13

帖子

11

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:40:02 | 显示全部楼层
通过这些教程,我学到了很多东西。我还查看了该网站http://through-the-interface.typepad.com/它有大量的信息。
 
我仍然对如何从图形中检索块记录感到困惑。我并不是在创建一个插件,它是。NET API已加载到我的项目中,即使我只能通过COM与AutoCAD通信。我不确定这些参考文献是哪一个。NET,因为我认为我只从COM选项卡中获取了它们:
AcDbMgd
AcMgd公司
AutoCAD
AXDBLib
 
无论如何,我会努力进一步推进我的项目。我一拿到答案就贴出来。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 22:42:50 | 显示全部楼层
作为快速示例,尝试打开多个图形进行阅读,
最好看看数据库。ReadDwg方法
代码:
  1.         <CommandMethod("bah")> _
  2.        Public Shared Sub BatchStart()
  3.            Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("SDI", 0)
  4.            Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
  5.            Dim ed As Editor = doc.Editor
  6.            ' Get drawings to process
  7.            Dim dwgsForm As New Autodesk.AutoCAD.Windows.OpenFileDialog("Drawings to Process", "", "dwg", "", Autodesk.AutoCAD.Windows.OpenFileDialog.OpenFileDialogFlags.AllowMultiple)
  8.            If dwgsForm.ShowDialog() <> Windows.Forms.DialogResult.OK Then
  9.                Return
  10.            End If
  11.            Dim dwgfiles As String() = dwgsForm.GetFilenames()
  12.            Using doclock As DocumentLock = doc.LockDocument()
  13.                For i As Integer = 0 To dwgfiles.GetLength(0) - 1
  14.                    Dim newdoc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open(dwgfiles(i), False)
  15.                    'your rest code to retrieve desired things from opened document here
  16.                    '__________________________________________________'
  17.                    ed.WriteMessage(vbLf & dwgfiles(i).ToString())
  18.                    ' close doc without changes
  19.                    newdoc.CloseAndDiscard()
  20.                Next
  21.            End Using
  22.        End Sub
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:45:54 | 显示全部楼层
您需要为应用程序的目标处理环境添加对互操作程序集的引用。。。例如,这些互操作程序集可以分别在32位或64位的ObjectARX 2014 SDK中找到:
 
  1. C:\Autodesk\ObjectARX 2014\inc-win32\Autodesk.AutoCAD.Interop.dll

 
  1. C:\Autodesk\ObjectARX 2014\inc-x64\Autodesk.AutoCAD.Interop.dll
回复

使用道具 举报

2

主题

13

帖子

11

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:51:13 | 显示全部楼层
你好,菲索,
 
我看到你发了很多关于AutoCAD的帖子。很高兴你来帮我!非常感谢。在任何情况下,每次我似乎在文档管理器中包含“MdiActiveDocument”部分时,我的。exe程序崩溃并出现以下错误:
 
再次感谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 11:19 , Processed in 1.756383 second(s), 75 queries .

© 2020-2025 乐筑天下

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