我怎么调不出函数啊?(附代码)
<P>我式新手,请看下面代码:</P><P>Public Sub Command1_Click()<BR>On Error Resume Next<BR>Set AcadApp = GetObject(, "AutoCAD.Application")<BR>If Err Then<BR> Err.Clear<BR> Set AcadApp = CreateObject("AutoCAD.Application")<BR> If Err Then<BR> MsgBox ("不能运行AutoCAD2000,请检查是否安装了AutoCAD2000")<BR> Exit Sub<BR> End If<BR>End If</P>
<P><BR>Form1.Hide<BR>AcadApp.Visible = True<BR>Dim pt1(0 To 2) As Double<BR>pt1(0) = 100#: pt1(1) = 100#: pt1(2) = 0#<BR>Dim radius As Double<BR>radius = 60#</P>
<P><BR>Dim cirobj1 As AcadCircle</P>
<P>Set cirobj1 = Addcir(pt1, radius)</P>
<P><BR>ZoomAll</P>
<P>End Sub</P>
<P>Public Function Addcir(ByVal pt As Variant, ByVal radius As Double) As AcadCircle</P>
<P>Dim cirobj As AcadCircle<BR>Dim ptcen(0 To 2) As Double<BR>ptcen(0) = pt(0): ptcen(1) = pt(1): ptcen(2) = pt(2)</P>
<P>Set cirobj = AcadApp.ActiveDocument.ModelSpace.AddCircle(ptcen, radius)<BR>cirobj.Update<BR>Addcir = cirobj</P>
<P>End Function<BR></P>
<P>我是想打开CAD后调用Addcir函数画一个圆,可是怎么不对啊?好像ptcen的值赋不进去,我从立即窗口赋值,还是画不出圆,Addcir是从工具里添加进去的,请高手指点一下嘛,</P> 点要定义为variant, 不能定义为数组。 <P>怎么定义成Variant啊,我现在发现值已经赋进去了,但是执行Set cirobj = AcadApp.ActiveDocument.ModelSpace.AddCircle(ptcen, radius)时好像出了问题,开始ptcen,radius的值已经赋进去了,但执行这一句后又没有值了,麻烦高手试一下嘛</P> <P>对啊,ptcen必需定义为variant,不能直接定义为数组。</P>
<P>你试试看先将其定义为variant,然后用其getpoint,这时它会变成数组,再修改数组的值,再addcircle看看。</P> 整个程序没有什么大问题。
AcadApp有没有定义,可在最前面写上 Dim AcadApp As AcadApplication 试试。
另外,在你的函数中最后一个语句应为 Set Addcir = cirobj
还有,你那个函数AddCir有什么用,简直就是AddCircle一样,如果还是想写成函数,呵呵,那就写成这样吧:Public Function Addcir(ByVal pt As Variant, ByVal radius As Double) As AcadCircle
Set Addcir = AcadApp.ActiveDocument.ModelSpace.AddCircle(pt, radius)
Addcir.Update
End FunctionAddCircle方法中的点坐标,两种定义方法都可以。并不存在问题。
<P>谢谢各位,现在对了,现在我试了一下,是没有定义AcadApp为AcadApplication的原因,我这里主要是为了看怎么调函数,所以Addcir与VBA自己的Addcircle一样,因为在其他的一个程序中需要调函数,没有反影应,而将函数的代码不用函数形式写又是对的,我在去看看那个程序,谢谢各位,先走了哈</P>
页:
[1]