明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2003|回复: 8

打开2个ACAD,怎么分别在他们中插入块.

[复制链接]
发表于 2004-8-25 16:48:00 | 显示全部楼层 |阅读模式
我做了一个标题栏插入的程序.运行后调用VB编的DLL文件,在ACAD中插入块.担当启动两个ACAD后,在后启动的ACAD中运行该命令,却把块插入到第一个ACAD中了.要怎么才能在激活的ACAD中插入块.我用的语句如下.set BlkRefrence = ActiveDocument.ModelSpace.InsertBlock(blkInsPnt, Text1.Text, tzbl, tzbl, 1#, 0)
发表于 2004-8-25 19:23:00 | 显示全部楼层
你的activedocument要指定cad窗口,连接cad时要注意
 楼主| 发表于 2004-8-26 10:14:00 | 显示全部楼层
怎么指定呢?:有语句示例么?
发表于 2004-8-26 19:09:00 | 显示全部楼层
惭愧,对于两个同一版本的cad窗口,我也不会怎样指定某一窗口。
发表于 2004-8-27 00:14:00 | 显示全部楼层
调用Dll后把Thisdrawing传给对象
 楼主| 发表于 2004-8-27 16:00:00 | 显示全部楼层
lzh741206真是高人,谢谢。解决了。 同时也谢谢mikewolf2k的热心帮助。原本以为我这个帖子没人回。没想到竟然得到了解决,我以后一定多上明经。
 楼主| 发表于 2004-8-27 16:05:00 | 显示全部楼层
为了以后有疑问的人解决问题。我把调用的代码贴上。 '==========如下代码是在VBA中写的===================== Dim thisdwg As Object '定义一个对象变量
Set thisdwg = ThisDrawing '将ThisDrawing对象赋给它
Set oMyApp = ThisDrawing.Application.GetInterfaceObject("Cadstar_DESK.desk") vReturn = oMyApp.C_DESK_F1(thisdwg) '传递参数 '===============如下代码是在VB中定义的======================== '首先在一个VB的模块中定义一个公共变量,便于调用 Public thisdwg1 As Object
'然后在类模块中定义函数 Public Function C_DESK_F1(thisdwg As Object)
Set thisdwg1 = thisdwg
frm1.Show vbModal
End Function 然后在整个VB中都可以调用THISDWG1代替ACTIVEDOCUMENT了:)

评分

参与人数 1金钱 +2 激情 +2 收起 理由
zfbj + 2 + 2 【好评】专题管理

查看全部评分

发表于 2004-8-27 19:19:00 | 显示全部楼层
不好意思,我还是没有看出来如何指定多个窗口的cad中的某一个。比如说三个cad文件,打开的文件分别是a.dwg,b.dwg,c.dwg,怎样才能指定打开b.dwg那个窗口?
发表于 2004-8-30 15:13:00 | 显示全部楼层
其实楼主的方法是逆向的方法。并不是在程序的运行时检测,那个cad是运行的,而是在cad中使用命令时,将当前图形的thisdrawing作为一个参数传入dll文件的函数中,这样程序就知道是那个cad了。 这种方法有一点需要注意的,就是thisdrawing的转化问题。当然这种问题在你同时处理不同的图形时才会表现出来。 我一般在子程序的开始会加入一个函数 Public Function ChangeThisdrawing()
Set Thisdrawing = Acadapp.ActiveDocument
End Function 这样程序运行时,处理的总是当前激活的文档。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 02:40 , Processed in 0.190037 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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