我尝试使用打开的文件对话框加载3d模型 所以点击按钮我可以选择.obj文件并显示它:
Model3DGroup groupLoad = HelixToolkit.Wpf.ModelImporter.Load("C:....");
public static Model3DGroup Load(string path)
{
if (path == null)
{
return null;
}
Model3DGroup model = null;
string ext = System.IO.Path.GetExtension(path).ToLower();
switch (ext)
{
case ".3ds":
{
var r = new HelixToolkit.Wpf.StudioReader();
model = r.Read(path);
break;
}
case ".lwo":
{
var r = new HelixToolkit.Wpf.LwoReader();
model = r.Read(path);
break;
}
case ".obj":
{
var r = new HelixToolkit.Wpf.ObjReader();
model = r.Read(path);
break;
}
case ".objz":
{
var r = new HelixToolkit.Wpf.ObjReader();
model = r.ReadZ(path);
break;
}
case ".stl":
{
var r = new HelixToolkit.Wpf.StLReader();
model = r.Read(path);
break;
}
case ".off":
{
var r = new HelixToolkit.Wpf.OffReader();
model = r.Read(path);
break;
}
default:
throw new InvalidOperationException("File format not supported.");
}
return model;
}
要解决此问题:
非静态字段,方法或者需要对象引用 property' ModelImporter.Load(string,Dispatcher,bool)'
我添加了这个:
var importer = new HelixToolkit.Wpf.ModelImporter();
var groupLoad = importer.Load("C:....");
任何想法,这里可能出现什么问题?
答案 0 :(得分:0)
问题是您尝试调用Load
的{{1}}方法。 ModelImporter
是ModelImporter
,如果您尝试调用class
的方法,那么您正在尝试运行class
方法,即类的方法-水平。但是,static
是实例级别。
让我举个例子:
如果您有Load
Bird
,则表示所有class
个对象,并且您调用的Bird
是所有Bird.migrate()
个对象执行的方法。但是,如果您实例化Bird
,则可以致电Bird
。在我们的示例中,fly
是migrate
个对象一起执行的方法,而Bird
是一个单独的操作。 fly
对象可以Bird
,但由于fly
是实例级操作,因此所有鸟都无法执行。{/ p>
要解决此问题,由于fly
是实例级方法,因此您必须实例化Load
:
class
在这里,您可以创建一个单独的ModelImporter import = new ModelImporter();
device = import.Load(model);
实例,因此可以通过它访问ModelImporter
。如果方法是Load
,那么它是static
- 级别,否则它是实例级别。