hchm 发表于 2008-5-2 10:49:00

[求助]关于将某文件夹下DWG文件当作块插入当前DWG文件

<p><font color="#0066ff">目的叙述:</font></p><p>将D盘5w.dwg文件当作块插入当前已打开的xyz.dwg文件?</p><p><font color="#0033ff">程序内容:</font></p><p>Private Sub Command2_Click()<br/>&nbsp;&nbsp;&nbsp; Dim blockRefObj As AcadBlockReference<br/>&nbsp;&nbsp;&nbsp; Dim Pnt(0 To 2) As Double<br/>&nbsp;&nbsp;&nbsp; Pnt(0) = 2<br/>&nbsp;&nbsp;&nbsp; Pnt(1) = 2<br/>&nbsp;&nbsp;&nbsp; Pnt(2) = 0<br/>&nbsp;&nbsp;&nbsp; <font color="#ff0000">Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(Pnt, "D:\5w.dwg", 1#, 1#, 1#, 0)<br/></font>&nbsp;&nbsp;&nbsp; blockRefObj.Update<br/>End Sub</p><p><font color="#0909f7">出现错误:</font></p><p><font color="#000000">实时错误:424&nbsp; 要求对象</font></p><p>(对上述红色区域)</p><p><font color="#0033ff">问题请教:</font></p><p>1、以上程序错在那里?怎样修改?</p><p>2、如果想在插入时打散(炸开),应怎样修改?</p><p></p><p>谢谢各位。</p><p><font color="#0909f7"></font></p>

fjfhgdwfn 发表于 2008-5-2 17:43:00

<p>炸开&nbsp; blockRefObj.Explode</p><p>可能是你的D盘下没有5W.DWG</p><p>我这可以运行。</p><p></p>

azjmjsj 发表于 2008-5-3 04:45:00

<p>代码正确,可以运行</p><p>Private Sub CommandButton1_Click()<br/>&nbsp;Dim blockRefObj As AcadBlockReference<br/>&nbsp;&nbsp;&nbsp; Dim Pnt(0 To 2) As Double<br/>&nbsp;&nbsp;&nbsp; Pnt(0) = 2<br/>&nbsp;&nbsp;&nbsp; Pnt(1) = 2<br/>&nbsp;&nbsp;&nbsp; Pnt(2) = 0<br/>&nbsp;&nbsp;&nbsp; Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(Pnt, "D:\5w.dwg", 1#, 1#, 1#, 0)<br/>&nbsp;&nbsp;&nbsp; blockRefObj.Explode<br/>&nbsp;&nbsp;&nbsp; blockRefObj.Update<br/>End Sub</p>

hchm 发表于 2008-5-3 10:49:00

<p>哦,我忘记告诉大家是在VB中编的,并不是VBA,</p><p>请问是不是<font color="#ff0000">ThisDrawing</font>出的错?</p><p>在VB中当前文件能用<font color="#ff0000">ThisDrawing</font>表示吗?</p><p>以上代码应怎样修改?盼复!</p>

fjfhgdwfn 发表于 2008-5-3 11:27:00

<p><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=67396">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=67396</a></p><p>看看这个。再在GOOGLE中搜下VBA VB   CAD,网上很多的</p>

azjmjsj 发表于 2008-5-3 12:29:00

本帖最后由 作者 于 2008-5-3 12:47:24 编辑 <br /><br /> <p>Public AcadApp As Object<br/>Private Sub Form_Load()<br/>On Error Resume Next<br/>Set AcadApp = GetObject(, "AutoCAD.Application")<br/>If Err Then<br/>&nbsp;&nbsp; Err.Clear<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set AcadApp = CreateObject("AutoCAD.Application")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Err Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox ("不能运行AutoCAD, 请检查是否安装了AutoCAD")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Sub<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp; End If<br/>AcadApp.Visible = True<br/>End sub</p><p>Private Sub CommandButton1_Click()<br/>&nbsp;&nbsp;&nbsp; Dim blockRefObj As&nbsp;Object<br/>&nbsp;&nbsp;&nbsp; Dim Pnt(0 To 2) As Double<br/>&nbsp;&nbsp;&nbsp; Pnt(0) = 2#: Pnt(1) = 2#:&nbsp; Pnt(2) = 0#<br/>Set blockRefObj = AcadApp.Activedocument.ModelSpace.InsertBlock(Pnt,"D:\5w.dwg",1#, 1#, 1#, 0)<br/>&nbsp;&nbsp;&nbsp; blockRefObj.Explode<br/>&nbsp;&nbsp;&nbsp; blockRefObj.Update<br/>End Sub<br/></p><p>西北凡人: http://www.abofanyi.com/blog</p>

hchm 发表于 2008-5-3 15:51:00

怎么又出错啊

<p>第一步打开CAD是对的,</p><p>第二步插入图块出现:</p><p>自参照</p><p>的错误,请看看。</p><p>盼!</p>

fjfhgdwfn 发表于 2008-5-3 16:11:00

<p>可能是你5w.dwg在打开状态吧。</p><p>我刚试了没有问题的</p>

hchm 发表于 2008-5-3 16:19:00

本帖最后由 作者 于 2008-5-3 16:23:03 编辑 <br /><br /> <p>不会吧,我怎么试着出现了“自参照”(是循环参照)的问题?</p><p>你能不能简单做一个如我在7楼的VB程序贴上来?</p><p>多谢!</p>

fjfhgdwfn 发表于 2008-5-3 16:57:00

hchm发表于2008-5-3 16:19:00static/image/common/back.gif不会吧,我怎么试着出现了“自参照”(是循环参照)的问题?你能不能简单做一个如我在7楼的VB程序贴上来?多谢!

<p>我就是用的你的原程序,什么都没有开。直接打开工程就可以用了</p>
页: [1] 2
查看完整版本: [求助]关于将某文件夹下DWG文件当作块插入当前DWG文件