乐筑天下

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

从Autocad到Excel的长度计算

[复制链接]

4

主题

13

帖子

1

银币

初来乍到

Rank: 1

铜币
29
发表于 2014-9-12 10:59:50 | 显示全部楼层 |阅读模式
嘿,大家好,
通过我在互联网上的搜索,我找到了沼泽,里面有许多有用的文章和成员
首先,我不想打开一个新线程,但我无法找到问题的精确解决方案
基本上,我需要打开文件夹中的dwg文件,计算每个图形的总长度,然后将其写入excel
它应该如下所示,
dwg1=1200 mm
dwg2=700 mm
,以此类推。
图形可能包含多段线或多段线

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

4

主题

13

帖子

1

银币

初来乍到

Rank: 1

铜币
29
发表于 2014-9-13 09:01:01 | 显示全部楼层
我确信答案就藏在某个地方。
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2014-9-15 09:41:01 | 显示全部楼层
总长度是多少?这些图纸中有什么需要计算长度
您需要VBA中的解决方案吗?您是否编写VBA,如果是,请发布您尝试解决此问题的内容?
回复

使用道具 举报

4

主题

13

帖子

1

银币

初来乍到

Rank: 1

铜币
29
发表于 2014-9-15 14:13:27 | 显示全部楼层
这应该由excel vba完成
,我没有写我自己的代码只是尝试了一些其他用户的代码,
它们不适合我想要的,似乎非常复杂,由我的自我
过程重新设计就像
某个文件夹将在excel中选择比所有dwg文件地址将由
excel获得比excel将使autocad打开这些文件并计算总长度
行最终 autocad 将在 excel 上发布这些文件。
该项目的目标是计算等离子切割机切割的零件的总长度。
希望我能解释得更好
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-9-16 10:00:03 | 显示全部楼层
我用VBA代码附加了一个excel文件,我快速从我的一个代码中导出,以尝试并满足您的需求
它引用AutoCAD 2010类型库
如果您有不同的AutoCAD版本,则必须通过VBA IDE中的“工具>引用”选项卡更新引用并选择正确的引用(类似于“AutoCAD 20xx类型库”)
并祈祷它有效!
再见
回复

使用道具 举报

4

主题

13

帖子

1

银币

初来乍到

Rank: 1

铜币
29
发表于 2014-9-16 12:57:16 | 显示全部楼层
哇,它简直像魔术
谢谢,伙计。现在,我的旅程从您代码的每一个字母开始。
p.s.对于与autocad 2010用户不同的版本,
首先,我必须从“工具”>“参考”中停用缺少的库。
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-9-16 13:25:05 | 显示全部楼层
不客气。
这是我希望遇到和鼓励的态度。
,我想你也可以用很少的努力来处理这些问题。
回复

使用道具 举报

4

主题

13

帖子

1

银币

初来乍到

Rank: 1

铜币
29
发表于 2014-9-17 08:51:55 | 显示全部楼层
我正在尝试一个非常简单的代码
打开一个autocad文件
绘制一个正方形
分解它以获得线而不是折线
选择全部
,最后在excel上写下线长。
每个thinf似乎都很好,直到输入长度。
你能不能看一下。
Sub Filtresiz()
Dim LWline as AcadLine
Dim SetseC as AcadSelectionSet
Dim strDrawing as String
Dim LwlengtH as Double
On Error Resume Next
Set Graphics = GetObject(, “AutoCAD.Application”)
if Err.Description > vbNullString then
Err.Clear
Set Graphics = CreateObject(“AutoCAD.Application”)
end if

Graphics.Visible = True

AppActivate “autocad”

Graphics.ActiveDocument.SendCommand (“rectang” & vbCr & “0,0” & vbCr & “1000,1000” & vbCr & “_.zoom _e” & vbCr & “_ai_selall” & vbCr & “_explode” & vbCr)

Graphics.ActiveDocument.SendCommand (“_ai_selall” & vbCr)
Set ssetObj = Graphics.ActiveDocument.SendCommand(“_ai_selall” & vbCr)

Graphics.WindowState = acMax
If SetseC.Count > 0 Then

For Each LWline In SetseC
with LWline
LwlengtH = .legth
End With
  细胞(18, 18).值 = 单元格(18, 18)。值 + LwlengtH
下一个 LWline

结束 如果

on 错误 转到 0
结束 子
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-9-17 10:09:54 | 显示全部楼层
1)为什么要在直线上分解折线?折线也具有Lenght属性
2)为了更好地查找错误,您必须由默认错误管理
来支持,因此在
[
代码1
]代码块之后,而不是在代码末尾。
这样,在利用默认错误警告管理的临时抑制之后,您可以将其设置回去,以便您仍然能够跟踪错误发生的位置
,并且您会发现实际的不良指令是
  1. Set ssetObj = Graphics.ActiveDocument.SendCommand("_ai_selall" & vbCr)

,您必须考虑一下。仔细阅读在线 AutoCAD ActiveX 和 VBA 参考“选择集对象”主题,了解是否正确编码了构建、填充和使用选择集所需的内容。你也可以深入研究我的代码以获取提示。
由于我不使用 SendCommand 方法,我不确定它是否返回一个可以分配给 selecstionset 对象的对象。但是,您肯定可以通过VBA代码构建并填充包含所有绘图元素的选择集
3)完成选择集对象后,您可以在后续代码中使用它。但你必须正确地参考它:每个人都想用它的真实名字来称呼它!
此外
,4)在
  1. LwlengtH = .legth

中有sintax错误。它必须

  1. LwlengtH = .Length


5)我不使用
  1. If Err.Description > vbNullString Then

,所以我不确定它是否正常工作
,我总是使用
  1. If Err then

6)作为一般规则,我建议在每个模块的开头使用“Option Explicit”,这样你就被迫声明每个变量,从而确保你照顾到它们的正确处理。
在这种情况下,将缺少两个声明
  1. Dim Graphics As AcadApplication
  2. Dim ssetObj As AcadSelectionSet

回复

使用道具 举报

4

主题

13

帖子

1

银币

初来乍到

Rank: 1

铜币
29
发表于 2014-9-18 08:04:55 | 显示全部楼层
哇,里克
那帮了太多。
对于过滤方法
,您已经使用了一些代码,例如“
设置过滤标准
gpCode(0) = 0
dataValue(0) = ”LWPOLYLINE“

'选择LWPolylines
ssetObj.SelectOnScreen gpCode,dataValue
这工作完美,但是使用此方法用户必须进行选择。
我试图做的是autocad选择屏幕上的所有内容,并将长度信息发送到excel。
这是可能的,如果是这样,您是否知道此过程的代码。
提前致谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-28 18:48 , Processed in 2.764162 second(s), 72 queries .

© 2020-2025 乐筑天下

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