明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: jsxygshh

求一段测量两点距离的代码

  [复制链接]
 楼主| 发表于 2012-9-12 11:06:54 | 显示全部楼层
markc0826 发表于 2012-9-12 11:00

先谢谢了
调试成功
 楼主| 发表于 2012-9-12 11:11:51 | 显示全部楼层
markc0826 发表于 2012-9-12 11:00

再请教一个问题,此代码是否可以用数组的方式量取,然后写入EXCEL呢
 楼主| 发表于 2012-9-12 11:35:24 | 显示全部楼层
下面是我在你的帮助下写的,请帮助修改一下:用数组的方式或其他方式量取多个距离,然后分别输入到EXCEL不同的单元格中,深表感谢!
  1. Public acadApp As Object
  2. Public acadDoc As Object
  3. Public ssetObj As AcadSelectionSet
  4. Public ssobj As AcadSelectionSet
  5. Public Xlapp As Object
  6. Public WT As Object
  7. Private Sub Command4_Click() '测量长度
  8.     Dim acadDoc As AcadDocument
  9.     Set acadApp = GetObject(, "AutoCAD.Application")
  10.     If Err Then
  11.         Err.Clear
  12.         Set acadApp = CreateObject("AutoCAD.Application")
  13.         If Err Then End
  14.     End If
  15.     acadApp.Visible = True
  16.     Set acadDoc = acadApp.ActiveDocument
  17.     Set Xlapp = GetObject(, "Excel.Application")
  18.     Set WT = Xlapp.ActiveWorkbook.ActiveSheet
  19.     AppActivate "AUTOCAD"
  20.    
  21.     Dim PT1 As Variant
  22.     Dim Dis As Double
  23.     Dim YoN
  24.     YoN = vbYes
  25.     Do Until YoN = vbNo
  26.     PT1 = acadDoc.Utility.GetPoint(, "1st Point")
  27.     Dis = Format(acadDoc.Utility.GetDistance(PT1, "2nd Point") / 1000, "##0.00")
  28.     Xlapp.ActiveCell = Dis
  29.     YoN = MsgBox("The Distance is :" & Dis & ",是否继续?", vbYesNo)
  30. Loop   
  31. End Sub
发表于 2012-9-12 12:10:33 | 显示全部楼层
看来您程式是写在excel中然後呼叫AutoCAD去抓资讯,这样子您的loop回圈应该写在Excel的运行上才有办法连续抓取数据,目前程式这样写法只做到确定ACAD抓到的单一数据是你要的,若不是或点错,可以重新点选这种功能,而无法连续传递多笔数据回Excel。
另外一个思维您考虑看看,将程式写在ACAD然後资料丢到Excel中也是可行的,端看你的主要作业软体是什麽?...您参考参考..
 楼主| 发表于 2012-9-13 07:48:21 | 显示全部楼层
markc0826 发表于 2012-9-12 12:10
看来您程式是写在excel中然後呼叫AutoCAD去抓资讯,这样子您的loop回圈应该写在Excel的运行上才有办法连续抓 ...

没有用数组的方式可以量取多个距离,但是需要每次都按“确定”,是否可以在选择结束以后再按键盘上的回车键结束呢?(结束本过程)
  1. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Long
  2. Public acadApp As Object
  3. Public acadDoc As Object
  4. Public ssetObj As AcadSelectionSet
  5. Public ssobj As AcadSelectionSet
  6. Public Xlapp As Object
  7. Public WT As Object
  8. Private Sub Command4_Click() '测量长度
  9.     Dim acadDoc As AcadDocument
  10.     Set acadApp = GetObject(, "AutoCAD.Application")
  11.     If Err Then
  12.         Err.Clear
  13.         Set acadApp = CreateObject("AutoCAD.Application")
  14.         If Err Then End
  15.     End If
  16.     acadApp.Visible = True
  17.     Set acadDoc = acadApp.ActiveDocument
  18.     Set Xlapp = GetObject(, "Excel.Application")
  19.     Set WT = Xlapp.ActiveWorkbook.ActiveSheet
  20.     AppActivate "AUTOCAD"
  21.     Dim PT1 As Variant
  22.     Dim Dis As Double
  23.     Dim YoN
  24.     YoN = vbYes
  25.     Do Until YoN = vbNo
  26.         PT1 = acadDoc.Utility.GetPoint(, "1st Point")
  27.         Dis = Format(acadDoc.Utility.GetDistance(PT1, "2nd Point") / 1000, "##0.00")
  28.         Xlapp.ActiveCell = Dis
  29.         Xlapp.ActiveCell.Offset(1, 0).Select
  30.         YoN = MsgBox("已经测量,是否继续?", vbYesNo)
  31.     Loop
  32. End Sub
请帮助修改一下,达到以上效果,先谢谢
 楼主| 发表于 2012-9-13 13:58:51 | 显示全部楼层
望大家给予帮助,深表感谢
 楼主| 发表于 2012-9-13 14:06:06 | 显示全部楼层
在线等大家的帮助!
发表于 2012-9-13 16:04:15 | 显示全部楼层
  1.     Do Until YoN = vbNo
  2.         PT1 = acadDoc.Utility.GetPoint(, "1st Point")
  3.         Dis = Format(acadDoc.Utility.GetDistance(PT1, "2nd Point") / 1000, "##0.00")
  4.         Xlapp.ActiveCell = Dis
  5.         Xlapp.ActiveCell.Offset(1, 0).Select
  6.         YoN = MsgBox("已经测量,是否继续?", vbYesNo)
  7.     Loop
复制代码
改为:
  1. on error resume next
  2.         label:
  3.         PT1 = acadDoc.Utility.GetPoint(, "1st Point")
  4.         Dis = Format(acadDoc.Utility.GetDistance(PT1, "2nd Point") / 1000, "##0.00")
  5.         Xlapp.ActiveCell = Dis
  6.         Xlapp.ActiveCell.Offset(1, 0).Select
  7.         if err then
  8.         exit sub
  9.         else
  10.         goto label
  11. end if
复制代码
 楼主| 发表于 2012-9-25 07:31:44 | 显示全部楼层
Flyingdancing 发表于 2012-9-13 16:04
改为:

谢谢你的帮助,在你的帮助下已经调试成功,可以正常使用了,深表感谢
发表于 2012-10-13 20:25:03 | 显示全部楼层
两点的坐标读出来再用两点间的距离求法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 15:51 , Processed in 0.182856 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表