oldcatcup 发表于 2015-12-20 11:23:05

求助


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

zzyong00 发表于 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)

oldcatcup 发表于 2015-12-21 21:43:47

zzyong00 发表于 2015-12-20 20:28 static/image/common/back.gif
1 点击Command1,启动cad,看这里:http://bbs.mjtd.com/thread-111783-1-1.html
2 获取鼠标在cad中点击第一 ...

运行至"pt=ThisDrawing.Utility.GetPoint(, "请指定一点:")"的时候,CAD没有反应。

oldcatcup 发表于 2015-12-21 22:09:15

zzyong00 发表于 2015-12-20 20:28 static/image/common/back.gif
1 点击Command1,启动cad,看这里:http://bbs.mjtd.com/thread-111783-1-1.html
2 获取鼠标在cad中点击第一 ...


oldcatcup 发表于 2015-12-22 10:05:17

zzyong00 发表于 2015-12-20 20:28 static/image/common/back.gif
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

mikewolf2k 发表于 2015-12-22 10:50:05

取点的时候要激活acad的某个文件

oldcatcup 发表于 2015-12-22 11:23:29

mikewolf2k 发表于 2015-12-22 10:50 static/image/common/back.gif
取点的时候要激活acad的某个文件

"ThisDrawing"与"AcadApp.activeDocument"具体激活,还是没激活,怎么激活能帮忙讲一下,或者该看啥帮助文档吗?

mikewolf2k 发表于 2015-12-22 11:30:17

thisdrawing只是程序运行时间所处的文件。activedocument是当前激活的文件。
如果就是在acad界面上执行程序,thisdrawing=activedocument,二者无区别。
明显你是执行了自定义窗口,当前系统激活的窗口已经不是acad而是你的程序了,你应该先最小化自己的窗口,激活acad,选点,然后再激活自己的窗口,这样才能顺利完成点击自己程序-->acad取点-->返回的操作。

oldcatcup 发表于 2015-12-22 11:52:49

mikewolf2k 发表于 2015-12-22 11:30 static/image/common/back.gif
thisdrawing只是程序运行时间所处的文件。activedocument是当前激活的文件。
如果就是在acad界面上执行程序 ...

谢谢,现在清晰多了。

zzyong00 发表于 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(, "请指定一点:")前面!
页: [1] 2
查看完整版本: 求助