![]() |
【转帖】为什么提示“类型不匹配”?
为什么提示“类型不匹配”?
www.dimcax.com 为什么提示“类型不匹配”? 做两个圆求交点,然后判断,两圆有交点时,程序运行正常。 问题出在没有交点时,我本想输出对话框提示,然而系统报警,说“类型不匹配”,各位看看怎么回事? private function getfsupportcenter(bsupportcenter as variant, fswingbasepoint as variant) as variant dim testlayer as acadlayer dim objcircle1 as acadcircle '辅助圆 dim objcircle2 as acadcircle dim swinglength as double dim swingpitch as double dim pt(0 to 2) as double set testlayer = thisdrawing.layers.add("非显示层") '辅助线位于非显示层 testlayer.color = acred thisdrawing.application.activedocument.activelayer = testlayer '激活图层 testlayer.layeron = true swinglength = 2607 swingpitch = 3250 set objcircle1 = thisdrawing.modelspace.addcircle(fswingbasepoint, swinglength) '作辅助线 set objcircle2 = thisdrawing.modelspace.addcircle(bsupportcenter, swingpitch) dim intpoints as variant intpoints = objcircle2.intersectwith(objcircle1, acextendnone) '获取交点并判断 if vartype(intpoints) = vbempty then msgbox "没有交点!" elseif bsupportcenter(1) = fswingbasepoint(1) then for i = lbound(intpoints) + 1 to ubound(intpoints) step 3 on error resume next if intpoints(i) < bsupportcenter(1) then pt(0) = intpoints(i - 1): pt(1) = intpoints(i): pt(2) = intpoints(i + 1) getfsupportcenter = pt '函数返回值 end if next else for i = lbound(intpoints) to ubound(intpoints) step 3 on error resume next if (intpoints(i + 1) - fswingbasepoint(1)) / (bsupportcenter(1) - fswingbasepoint(1)) - (intpoints(i) - fswingbasepoint(0)) / (bsupportcenter(0) - fswingbasepoint(0)) < 0 then pt(0) = intpoints(i): pt(1) = intpoints(i + 1): pt(2) = intpoints(i + 2) getfsupportcenter = pt '函数返回值 end if next end if 'objcircle1.delete 'objcircle2.delete end function sub trial() dim a as variant dim b as variant dim c as variant a = thisdrawing.utility.getpoint(, "后支撑碗中心:") b = thisdrawing.utility.getpoint(, "前摆杆上铰接点:") c = getfsupportcenter(a, b) msgbox "前支撑碗中心坐标:" & c(0) & "," & c(1) & "," & c(2) end sub |
所有的时间均为北京时间。 现在的时间是 12:57 PM. |