乐筑天下

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

从Autocad到Excel的长度计算

[复制链接]

24

主题

204

帖子

6

银币

后起之秀

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

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

回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-9-15 09:41:01 | 显示全部楼层
总长度是多少 什么's在这些图纸中需要计算长度
您需要VBA中的解决方案吗 你写VBA吗?如果是的话,发表你的观点;我试图解决这个问题?
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 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 | 显示全部楼层
我附加了一个excel文件,其中包含我从我的VBA代码中快速导出的代码,以尝试满足您的需要。它引用AutoCAD 2010类型库。如果您有不同的AutoCAD版本,则必须通过工具更新引用->VBA IDE中的“引用”选项卡,并选择适当的引用(例如“AutoCAD 20xx Type Library”)
祈祷它成功
再见
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-9-16 12:57:16 | 显示全部楼层
哇,它简直像魔术
谢谢你,伙计,我的旅程从你代码的每一个字母开始;那里的用户首先必须从工具中停用缺失的库>参考文献
回复

使用道具 举报

0

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
4
发表于 2014-9-16 13:25:05 | 显示全部楼层
你'再次欢迎'这是我希望遇到和鼓励的态度,我想你也可以用很少的努力来对待我,再见
回复

使用道具 举报

0

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
4
发表于 2014-9-17 08:51:55 | 显示全部楼层
我试着用一个非常简单的代码打开一个autocad文件,画一个正方形,分解它得到直线而不是多段线,然后全选,最后在excel上写下直线长度
在输入长度之前,一切似乎都很好
你能看一下吗
Sub filteresiz()
将LWline作为AcadLine设置为Dim SetseC作为AcadSelectionSet设置为字符串 出错时继续下一步 设置图形=GetObject(,“AutoCAD.Application”)
 如果出错。说明>vbNullString然后&nbsp&nbsp 犯错误清除&nbsp&nbsp 设置图形=CreateObject(“AutoCAD.Application”)
 如果结束&nbsp
 图样可见=真&nbsp
 AppActivate“;autocad“
&nbsp
Graphics.ActiveDocument。SendCommand(“rectang”vbCr“0,0”vbCr,“10001000”vbCr。“zoom”e“vbCr”seall“u ai”vbCr;“u explode”vbCr)
&nbsp
Graphics.ActiveDocument。SendCommand(&u ai\u selall&vbCr)
设置ssetObj=Graphics.ActiveDocument。SendCommand(&u ai\u selall&vbCr)
&nbsp&nbsp&nbsp&nbsp&nbsp
图形。如果设置为C,则窗口状态=acMax。计数(&gt);然后为0&nbsp
;对于SETEC中的每个LWline&nbsp 使用LWline&nbsp 长度=.legth&nbsp 以结尾;细胞(18,18)。值=单元格(18,18)。值+长度;下一行
如果结束
 错误转到0时结束Sub
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-9-17 10:09:54 | 显示全部楼层
1) 为什么要在直线上分解多段线?多段线也具有长度属性
vbNullString Then
        Err.Clear
        Set Graphics = CreateObject("AutoCAD.Application")
    End If [/code] 代码块,而不是在代码末尾
通过这种方式,在利用默认错误警告管理的临时抑制后,您可以将其设置回原来的状态,以便您仍然能够跟踪错误发生的时间和位置,并且您'我会发现实际的错误指令是
  1. Set ssetObj = Graphics.ActiveDocument.SendCommand("_ai_selall" & vbCr)
你必须考虑一下。仔细阅读联机AutoCAD ActiveX和VBA参考“;SelectionSet对象“;主题以了解您是否'正确地重新编码构建、填充和使用选择集所需的内容。您也可以深入我的代码以获取提示
既然我不't使用SendCommand方法I'我不确定它是否返回了一个可以分配给SelecStiSet对象的对象。但是,一旦您'重新完成selectionset对象,您可以在后续代码中使用它。但你必须正确地提及它:每个人都想被称为其实际名称
此外姓名
此外,在
  1. LwlengtH = .legth
有sintax错误。它必须是
  1. LwlengtH = .Length
我不知道't使用
  1. If Err.Description > vbNullString Then
所以我'我不确定它是否正常工作,我总是使用
  1. If Err then
作为一般规则I和039;d建议使用;“选项明确”;在每个模块的开头,让你'我们被迫声明每个变量,从而确保您'我们会好好照顾他们
在这种情况下,将缺少两个声明
  1. Dim Graphics As AcadApplication
  2. Dim ssetObj As AcadSelectionSet
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-9-18 08:04:55 | 显示全部楼层
哇,Ric,帮了太多忙了
对于过滤方法,您使用了以下代码;设置过滤标准 gpCode(0)=0 数据值(0)=“0”;LW多段线“
&nbsp
&nbsp'选择LW多段线 ssetObj。选择屏幕上的gpCode、dataValue这非常有效,但使用此方法用户必须进行选择
我想做的是用autocad选择屏幕上的所有内容,并将长度信息发送到excel
&304;有可能吗?如果有,你知道这个过程的代码吗
提前谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-20 01:05 , Processed in 3.695180 second(s), 73 queries .

© 2020-2025 乐筑天下

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