打开2个ACAD,怎么分别在他们中插入块.
我做了一个标题栏插入的程序.运行后调用VB编的DLL文件,在ACAD中插入块.担当启动两个ACAD后,在后启动的ACAD中运行该命令,却把块插入到第一个ACAD中了.要怎么才能在激活的ACAD中插入块.我用的语句如下.set BlkRefrence = ActiveDocument.ModelSpace.InsertBlock(blkInsPnt, Text1.Text, tzbl, tzbl, 1#, 0)<BR> 你的activedocument要指定cad窗口,连接cad时要注意 怎么指定呢?:有语句示例么? 惭愧,对于两个同一版本的cad窗口,我也不会怎样指定某一窗口。 调用Dll后把Thisdrawing传给对象 <A name=45760><FONT color=#990000><B>lzh741206</B></FONT></A>真是高人,谢谢。解决了。同时也谢谢<A name=45390><FONT color=#000066><B>mikewolf2k</B></FONT></A>的热心帮助。原本以为我这个帖子没人回。没想到竟然得到了解决,我以后一定多上明经。 为了以后有疑问的人解决问题。我把调用的代码贴上。
'==========如下代码是在VBA中写的=====================
Dim thisdwg As Object '定义一个对象变量<BR>Set thisdwg = ThisDrawing '将ThisDrawing对象赋给它<BR>Set oMyApp = ThisDrawing.Application.GetInterfaceObject("Cadstar_DESK.desk")
vReturn = oMyApp.C_DESK_F1(thisdwg) '传递参数
'===============如下代码是在VB中定义的========================
'首先在一个VB的模块中定义一个公共变量,便于调用
Public thisdwg1 As Object<BR>
'然后在类模块中定义函数
Public Function C_DESK_F1(thisdwg As Object)<BR>Set thisdwg1 = thisdwg<BR>frm1.Show vbModal<BR>End Function
然后在整个VB中都可以调用THISDWG1代替ACTIVEDOCUMENT了:) 不好意思,我还是没有看出来如何指定多个窗口的cad中的某一个。比如说三个cad文件,打开的文件分别是a.dwg,b.dwg,c.dwg,怎样才能指定打开b.dwg那个窗口? 其实楼主的方法是逆向的方法。并不是在程序的运行时检测,那个cad是运行的,而是在cad中使用命令时,将当前图形的thisdrawing作为一个参数传入dll文件的函数中,这样程序就知道是那个cad了。
这种方法有一点需要注意的,就是thisdrawing的转化问题。当然这种问题在你同时处理不同的图形时才会表现出来。
我一般在子程序的开始会加入一个函数
Public Function ChangeThisdrawing()<BR>Set Thisdrawing = Acadapp.ActiveDocument<BR>End Function
这样程序运行时,处理的总是当前激活的文档。
页:
[1]