VB和AutoCAD14的问题
上官云峰 2003-11-10 07:37:43 是关于怎么样使用VB调用一个大的AutoCAD14图片,并能把一个已经知道的小图快插入大图中去,和AutoCAD14中INSERT/BLOCK(插入快)功能一样。希望有人能帮忙解决一下,或者告诉一个简单的方法。
邮箱cuilei197979@eyou.com
不管帮不帮忙我都非常感谢!!!!!!
CmdStartCAD是运行大的图片
Cmdexit是退出
insertblock是一个自定义插入函数
cmdinsertblock是插入一个小图片
txtlinkCAD是要插入的大图片
Text2是要插入的小图片
Public acadapp As Object
Private Sub CmdStartCAD_click()
Set acadapp = CreateObject("autocad.application")
Set acaddoc = acadapp.ActiveDocument
Set mospace = acaddoc.ModelSpace
Set paspace = acaddoc.PaperSpace
acadapp.Visible = True
txtlinkCAD.LinkTimeout = 1000
txtlinkCAD.LinkTopic = "autocad.r14.dde|system"
txtlinkCAD.LinkMode = 2
MDIForm1.Hide
End Sub
Private Sub Cmdexit_Click()
txtlinkCAD.LinkMode = 0
End Sub
Public blockpath As String
Private Sub cmdinsertblock_click()
Dim blockname As String
blockname = Text2.Text
Form1.txtlinkCAD.LinkExecute "insert" + " " + blockpath + blockname + Chr(13) + Chr(27)
Call insertblock(blockname)
End Sub
Private Sub Form_load()
Text2.Text = ""
blockpath = "d:\"
End Sub
Private Sub insertblock(bname As String)
Set acadapp = CreateObject("autocad.application")
Set acaddoc = acadapp.ActiveDocument
Set mospace = acaddoc.ModelSpace
Set paspace = acaddoc.PaperSpace
acadapp.Visible = True
Dim xscale As Double
Dim yscale As Double
Dim found As Boolean
Dim insertpoint As Variant
Dim insertpnt(0 To 2) As Double
Dim rotangle As Double
Dim entry As Object
insertpoint = acaddoc.Utility.GetPoint(insertpnt, "请输入插入点的坐标:")
insertpnt(0) = insertpoint(0)
insertpnt(1) = insertpoint(1)
insertpnt(2) = insertpoint(2)
xscale = 1
yscale = 1
rotangle = acaddoc.Utility.GetAngle(insertpnt, "旋转角:")
For Each entry In acaddoc.Blocks
If UCase(entry.Name) = UCase(bname) Then
found = True
Exit For
End If
Next
If found Then
mospace.insertblock insertpnt, bname, xscale, yscale, rotangle
paspace.insertblock insertpnt, bname, xscale, yscale, rotangle
End If
End Sub