fj_zxx923 发表于 2006-3-29 16:46:00

求助:AcadDocument_ObjectAdded函数中的问题

<P>求助:在AcadDocument_ObjectAdded函数中怎样把Object参数赋给AcadBlockReference类型变量,以判断插</P>
<P>入的块参照的名称?</P>
<P><BR>我想用VBA实现下面的功能:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当用户手动或者用其它工程(例如天正系列软件)向图形中插入一个特定的块(块名称</P>
<P>为"chuanghu",表示窗户)时,我的程序能检测到这个事件,并进行一些额外的处理(比如,让用户在命令行输</P>
<P>入块的高度,以方便以后的计算)</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是我实现AcadDocument_ObjectAdded(ByVal Object As Object)函数.但是该函数的执行去存</P>
<P>在下面的问题:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当用户手动插入块(执行CAD的"插入/块"菜单)时,AcadDocument_ObjectAdded函数运行没有问题,</P>
<P>能够判断出添加的时块参照,并能读取改块参照的块名称;但是当使用VBA程序,调用InsertBlock函数插入</P>
<P>块时,AcadDocument_ObjectAdded函数中部门把传入的参数Object赋值给一个AcadBlockReference变</P>
<P>量....程序会执行到Set ss = Object时出现错误</P>
<P>"运行时错误13,类型不匹配"...</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我的代码贴出来,如下,请各位高手看看,诊断下,不胜感激:</P>
<P>Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)<BR>Dim cla As String<BR>cla = Object.ObjectName<BR>If cla = "AcDbBlockReference" Then<BR>&nbsp; Dim ss As AcadBlockReference<BR>&nbsp; Set ss = Object<BR>&nbsp; Dim nm As String<BR>&nbsp; nm = ss.Name<BR>&nbsp; ThisDrawing.Utility.Prompt vbNewLine &amp; "ok! 块添加到图形中" &amp; "块名称:" &amp; nm<BR>End If<BR>End Sub<BR></P>

雪山飞狐_lzh 发表于 2006-3-29 19:07:00

<P><A href="http://www.mjtd.com/object/acad2004/idh_getstring.htm" target="_blank" ></A>&nbsp;http://www.mjtd.com/object/acad2004/idh_getstring.htm</P>
<P>然后改变块的插入比例</P>
页: [1]
查看完整版本: 求助:AcadDocument_ObjectAdded函数中的问题