静态void

时间:2018-08-27 09:33:31

标签: c# class methods interface static

我通常是一名JavaScript开发人员,但是对于我的公司来说,我才刚开始学习c#,以便使用CimatronE 13 API来为此3D建模软件开发自定义命令行PDM工具。

随着我逐渐了解编程语言,在这种令人沮丧的情况下,我想使用API​​终结点方法,但我无法使其正常工作。

Cimatron文档中的内容如下:

  

IPdm :: GetRelatedDocuments

     

语法:RelatedDocuments = GetRelatedDocuments(DocumentPath);

     

此方法使您可以从复合文件类型(例如,装配体或工程图)中获取相关文件。

     

输入 :(字符串)DocumentPath,   文件路径。例如\ Documents \ Location \ Folder \ Document。该文件必须是装配体或工程图。

     

返回 :(变体)相关文档,    变量类型数组,每个元素包含与选定的一个相关的文件的二维字符串类型数组。


这对我来说似乎很简单,因此我尝试从static void Main()方法中以多种方式调用它,但是我不断收到错误消息:

var RelatedDocuments = interop.CimBaseAPI.IPdm.GetRelatedDocuments("path");
  

CS0120:非静态字段,方法或属性'IPdm.GetRelatedDocuments(string)'需要对象引用

interop.CimBaseAPI.IPdm pdm = new interop.CimBaseAPI.IPdm();
var RelatedDocuments = pdm.GetRelatedDocuments("path");
  

CS0144:无法创建抽象类或接口“ IPdm”的实例

有什么想法吗?这可能很简单,但我仍然对c#:p

还是个菜鸟


编辑:

有关接口interop.CimBaseAPI.IPdm的Cimatron文档:

  

属性:

     

获取    查询(String,DocumentEnumType,DocumentEnumUnit)    变体

     

方法:

     

很多,包括Variant GetRelatedDocuments ( String )

2 个答案:

答案 0 :(得分:0)

正如我现在所看到的... interop.CimatronE.IPdm是一个接口,为了使用它的方法,我们首先需要访问Cimatron应用程序。使用应用程序对象,我们可以使用它的方法来获取所需的接口,例如IPdm并使用它们的方法。

下面的代码从编译器给出任何错误,但在执行时却没有。这似乎与CimatronE的版本13有关,因为应用程序对象使用版本12可以正常工作。在这些版本之间进行了很多更改,我认为这是API无法正常运行的原因,并且已经过时。

interop.CimAppAccess.AppAccess AppAcc = new interop.CimAppAccess.AppAccess();
interop.CimatronE.IApplication CimApp = /*(interop.CimatronE.IApplication)*/AppAcc.GetApplication();

interop.CimatronE.IPdm pdm = CimApp.GetPdm();

var RelatedDocuments = pdm.GetRelatedDocuments("path");
Console.WriteLine(RelatedDocuments);

如果我错了,请纠正我! (因为我才刚开始学习C#)

答案 1 :(得分:0)

我在使用 Cimatron 14 时遇到了同样的问题。 我需要在 Visual Studio 中进行一些更改,以便在 Cimatron 中正常运行。

  • 以管理员模式运行 Visual Studio
  • 将您的调试和发布解决方案平台设置为“x64”
  • 还建议将发布和调试的构建路径指向与 Cimatron 引用相同的文件夹。就我而言,'C:\Program Files\3D Systems\Cimatron\14.0\Program'。但是,如果没有这个,我的代码似乎运行良好。

我使用此代码 (VB.Net) 创建了 Cimatron 应用程序:

    Dim gAppAccess As New CIMAPPACCESSLib.AppAccess 'Define an AppAccess object to get running active application
    Dim gApp As CIMAPPACCESSLib.Application 'Define an Application object
    gApp = gAppAccess.GetApplication 'Getting running active application
    If gApp Is Nothing Then
        gApp = New CIMAPPACCESSLib.Application 'Creating a new instance of a Cimatron application
    End If

参考:Interop.CIMAPPACCESSLib.dll & interop.CimServicesAPI.dll

据我了解,Cimatron 15 可能还需要一些明显的更改。

Cimatrom Modules > Cimaton SDK 下的 Cimatron 程序中有一些帮助信息,可能会有一些帮助。