明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1593|回复: 10

求助

[复制链接]
发表于 2015-12-20 11:23:05 | 显示全部楼层 |阅读模式

点击Command1,启动cad,并获取鼠标在cad中点击第一点的坐标值,x坐标值显示在TEXT1中,Y坐标值显示在TEXT2中。
代码应该怎样写呢?谢谢了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2015-12-20 20:28:00 | 显示全部楼层
1 点击Command1,启动cad,看这里:http://bbs.mjtd.com/thread-111783-1-1.html
2 获取鼠标在cad中点击第一点的坐标值:
Dim pt As Variant
pt = ThisDrawing.Utility.GetPoint(, "请指定一点:")
3 x坐标值显示在TEXT1中,Y坐标值显示在TEXT2中:
text1.text=pt(0)
text2.text=pt(1)
 楼主| 发表于 2015-12-21 21:43:47 | 显示全部楼层
zzyong00 发表于 2015-12-20 20:28
1 点击Command1,启动cad,看这里:http://bbs.mjtd.com/thread-111783-1-1.html
2 获取鼠标在cad中点击第一 ...

运行至"pt=ThisDrawing.Utility.GetPoint(, "请指定一点:")"的时候,CAD没有反应。
 楼主| 发表于 2015-12-21 22:09:15 | 显示全部楼层
zzyong00 发表于 2015-12-20 20:28
1 点击Command1,启动cad,看这里:http://bbs.mjtd.com/thread-111783-1-1.html
2 获取鼠标在cad中点击第一 ...


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2015-12-22 10:05:17 | 显示全部楼层
zzyong00 发表于 2015-12-20 20:28
1 点击Command1,启动cad,看这里:http://bbs.mjtd.com/thread-111783-1-1.html
2 获取鼠标在cad中点击第一 ...

我把"ThisDrawing"改为"acadapp.activeDocument "就可以了。不过不懂原理,请老师讲解下,或者该看什么帮助?
Dim AcadApp As AcadApplication
Private Sub Form_Load()
On Error Resume Next
Set AcadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set AcadApp = CreateObject("AutoCAD.Application")
If Err Then
MsgBox ("不能运行AutoCAD ,请检查是够安装了AutoCAD")
Exit Sub
End If
End If
AcadApp.Visible = True
End Sub
Private Sub Command1_Click()
Dim pt As Variant
pt = AcadApp.activeDocument.Utility.GetPoint(, "请指定一点:")
'x坐标值显示在TEXT1中,Y坐标值显示在TEXT2中:
Text1.Text = pt(0)
Text2.Text = pt(1)
zoomall
End Sub

发表于 2015-12-22 10:50:05 | 显示全部楼层
取点的时候要激活acad的某个文件
 楼主| 发表于 2015-12-22 11:23:29 | 显示全部楼层
mikewolf2k 发表于 2015-12-22 10:50
取点的时候要激活acad的某个文件

"ThisDrawing"与"AcadApp.activeDocument"具体激活,还是没激活,怎么激活能帮忙讲一下,或者该看啥帮助文档吗?
发表于 2015-12-22 11:30:17 | 显示全部楼层
thisdrawing只是程序运行时间所处的文件。activedocument是当前激活的文件。
如果就是在acad界面上执行程序,thisdrawing=activedocument,二者无区别。
明显你是执行了自定义窗口,当前系统激活的窗口已经不是acad而是你的程序了,你应该先最小化自己的窗口,激活acad,选点,然后再激活自己的窗口,这样才能顺利完成点击自己程序-->acad取点-->返回的操作。
 楼主| 发表于 2015-12-22 11:52:49 | 显示全部楼层
mikewolf2k 发表于 2015-12-22 11:30
thisdrawing只是程序运行时间所处的文件。activedocument是当前激活的文件。
如果就是在acad界面上执行程序 ...

谢谢,现在清晰多了。
发表于 2015-12-22 23:23:26 | 显示全部楼层
如果你有耐心,好好看看http://bbs.mjtd.com/thread-111783-1-1.html
Public Function ThisDrawing() As AcadDocument
    If Not (objCad Is Nothing) Then Set ThisDrawing = objCad.ActiveDocument
End Function
以上函数,使得vb6与VBA代码通用!!!

AppActivate objCad.Caption
这条语句,可以在取点的时候要激活acad当前的document
这句放在 pt=ThisDrawing.Utility.GetPoint(, "请指定一点:")前面!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 09:42 , Processed in 0.200186 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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