ntchjie 发表于 2004-10-26 08:58:00

提问lzh741206斑竹

关于vbnet代码不能运行的问题


vbnet与vb不同在于原来的variant类型都变成了object类型,但是我在用选择筛选的时候发现代码老是通不过,典型的用getentity如下:


                                                       Dim acadobj As Object<BR>                                                       Dim acaddoc, acadutil As Object<BR>                                                       Dim returnobj As Object<BR>                                                       Dim d As Object


                                                       acadobj = GetObject(, "AutoCAD.Application.16")<BR>                                                       acaddoc = acadobj.ActiveDocument<BR>                                                       acadutil = acaddoc.Utility<BR>                                                       AppActivate("Autocad")


                                                       Call acadutil.GetEntity(returnobj, d, "..选择物体")                                       ***在这一句提示类型不匹配。

ntchjie 发表于 2004-10-26 09:04:00

同样这一句是筛选文本的,也运行不通过,在最后一句出现错误。                                                       


acadobj = GetObject(, "AutoCAD.Application.16")<BR>                                                       acaddoc = acadobj.ActiveDocument<BR>                                                       mospace = acaddoc.ModelSpace<BR>                                                       acadutil = acaddoc.Utility<BR>                                                       AppActivate("Autocad")


                                                       '选择文本创建选择集<BR>                                                       sset = acaddoc.SelectionSets.Add("my")<BR>                                                       '定义过滤组码数据<BR>                                                       Dim gpcode(0) As Integer<BR>                                                       Dim datavalue(0) As String<BR>                                                       gpcode(0) = 0<BR>                                                       datavalue(0) = "Text"<BR>                                                       Dim groupcode As Object<BR>                                                       Dim datacode As Object<BR>                                                       groupcode = gpcode<BR>                                                       datacode = datavalue<BR>                                                       acadutil.prompt("请选择修改的文本:")<BR>                                                       Call sset.SelectOnScreen(groupcode, datacode)<BR>

雪山飞狐_lzh 发表于 2004-10-26 09:51:00

不用Call



Dim gpcode(0) As Short<BR>Dim datavalue(0) As Object<BR>


下面是多余的
                                                       Dim groupcode As Object<BR>                                                       Dim datacode As Object<BR>                                                       groupcode = gpcode<BR>                                                       datacode = datavalue

ntchjie 发表于 2004-10-26 15:18:00

在vb里面通常需要先定义数组再进行数据类型的转化(特别是在筛选多于1个的时候),是不是在net里面就没有必要转化了?还是因为这个只有一个筛选类型,所以没有?还是本来在net里面只要



Dim gpcode(n) As Short<BR>Dim datavalue(n) As Object<BR>sset.SelectOnScreen(gpcode,datavalue)


就可以了。试验了一下,原来这个比vb方便多了,省了两个变量和变量的转化。


谢谢斑竹,但是我第一楼的问题还不好解决,我拿掉了call后还是提示数据类型出错。<BR>


<BR>

雪山飞狐_lzh 发表于 2004-10-26 15:33:00

vb里面这些也是多余的代码
页: [1]
查看完整版本: 提问lzh741206斑竹