首页 / 浏览问题 / 桌面GIS / 问题详情
使用自己从revit导出的udbx,recordset的addnew方法报错
5EXP 2021年12月31日
GeoCylinder geoCylinder = new GeoCylinder();
geoCylinder.BottomRadius = 100;
geoCylinder.TopRadius = 100;
geoCylinder.Height = 200;
geoCylinder.Position = new Point3D(120.204501532168, 29.317661875028, 100);
recordset.Edit();
recordset.AddNew(geoCylinder as Geometry3D, result);
feature.Dispose();
recordset.Update();
recordset.Close();
recordset.Dispose();

使用范例程序CBD没问题,换成自己导出的udbx就会在addnew方法处报System.AccessViolationException:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

1个回答

您好,组件有多种产品,为便于我们更快帮您解决问题,希望您下次可以准确标识您使用的产品,如iobject .net、iobject Python等。
希望可以帮助到您!
9,653EXP 2021年12月31日
你写入数据读写性没有问题的话,那你传入传出的数据类型呢?你的数据集是模型数据集吗?

你传入的数据使用无字典的addnew方法,只传as Geometry的几何对象是否报错呢?构造其他的模型对象,只as Geometry不传字典是否报错呢?

这个报错没有什么异常的报错信息,建议您还是和普通开发调试一样,仔细检查传入和传出的数据。
无字典的addnew方法也试过了也是会报错,构造其他的模型对象也是一样,成功和报错的区别只有成功的数据源是超图的范例数据CBD.udb,而失败的是我从revit导出的文件,这两个的区别我不知道在哪里
Idesktop和插件都是.net组件写的,创建的方法是一样的哈。你在组件端create一个udbx和ubd后创建模型数据集写入是否正常。

ubd和ubdx你在打开数据源时的connectioninfo,type有没有调整。
插件导出的数据源里面的模型数据集我这边测试了addnew是没有问题的哈。
组件端创建的已经试过了,打开数据源时的type还没有了解过
...