Siemens-NXUG二次开发-Java开发环境配置[20231203]

Siemens-NXUG二次开发-Java开发环境配置[20231203]

  • 1.NX/UG Java API官方开发文档
  • 2.安装Java8
  • 3.安装jetbrain idea
  • 3.windows系统环境变量配置
  • 4.使用idea创建项目
  • 5.NXOpen Java代码生效流程
  • 6.API体系简述
  • 6.代码示例

1.NX/UG Java API官方开发文档

西门子NX/UG Java api开发文档:open_java_ref/overview-summary.html。

2.安装Java8

请参照CSDN有关Java8安装的教程。

3.安装jetbrain idea

请参照CSDN有关idea安装的教程。

3.windows系统环境变量配置

在“系统变量”下“新建”:
①“变量名”:UGII_JAVA_HOME,“变量值”:上述java-jdk安装目录(如:C:\java\jdk1.8.0_291)。
②“变量名”:UGII_JVM_LIBRARY_DIR,“变量值”:上述java-jre安装目录(如:C:\java\jre1.8.0_291\bin\server)。
Siemens-NXUG二次开发-Java开发环境配置[20231203]_第1张图片

4.使用idea创建项目

目的:编译NX/UG java语言二次开发的.java源文件,获得.class文件。

  • 正常使用idea新建java项目
  • 在"file"-“Project Structure”-“Project Settings”-“Modules”-"Add"添加.jar包
  • 编译项目
    Siemens-NXUG二次开发-Java开发环境配置[20231203]_第2张图片

5.NXOpen Java代码生效流程

  • 将java源代码编译成.class文件
  • 打开NX/UG界面,“文件”-“执行”-“Nx Open(Ctrl+U 运行NX Oepn程序)”,选择.class文件类型并选中要执行的文件即可。
    Siemens-NXUG二次开发-Java开发环境配置[20231203]_第3张图片

6.API体系简述

NX/UG二次开发追根溯源有两套体系:一是NXOPen C API,在java、python都被包装到NXOpen.UF包中;二是NXOpen C++ API,在java、python都成为其主要写法API。
因此,对于每种语言的开发API为了区分语境方便,称为java api和java uf api、python api和python uf api,其中uf式api是tag为ug对象标识,java api和python api以语言类对象为ug对象标识。

6.代码示例

package com.company;
import nxopen.*;
import nxopen.uf.*;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.rmi.RemoteException;

public class Main {
    public static void main(String[] args) throws RemoteException, NXException {
        Session theSession=null ;
        UFSession theUFSession=null ;

        try
        {
            theSession = (Session)SessionFactory.get("Session");
            theUFSession = (UFSession)SessionFactory.get("UFSession");
            theUFSession.ui().openListingWindow();
            theUFSession.ui().writeListingWindow("Session and UFSession are created");
            UFCurve ufCurve = theUFSession.curve();
            UFCurve.Arc ufArc = new UFCurve.Arc();
            UFPart ufPart = theUFSession.part();
            UFCsys ufCsys = theUFSession.csys();
            Part part1 = theSession.parts().newDisplay("CreateArc", Part.Units.INCHES);

            /* Fill out the data structure */
            ufArc.startAngle = 0.0;
            ufArc.endAngle = 3.0;
            ufArc.arcCenter=new double[3];
            ufArc.arcCenter[0] = 0.0;
            ufArc.arcCenter[1] = 0.0;
            ufArc.arcCenter[2] = 1.0;
            ufArc.radius = 2.0;

            Tag wcsData = ufCsys.askWcs();
            ufArc.matrixTag = ufCsys.askMatrixOfObject(wcsData);
            Tag arcData = ufCurve.createArc(ufArc);
            UFCurve.Arc theAskArcData=  ufCurve.askArcData(arcData);
            //theUFSession.ui().writeListingWindow("\nX Coordinate: "+theAskArcData.arcCenter[0]+"\n");
            //theUFSession.ui().writeListingWindow("Y Coordinate: "+theAskArcData.arcCenter[1]+"\n");
            //theUFSession.ui().writeListingWindow("Z Coordinate: "+theAskArcData.arcCenter[2]+"\n");
            //theUFSession.ui().writeListingWindow("Start Angle: "+theAskArcData.startAngle+"\n");
            //theUFSession.ui().writeListingWindow("End Angle: "+theAskArcData.endAngle+"\n");
            //theUFSession.ui().writeListingWindow("arcRadius: "+theAskArcData.radius);
            //theUFSession.ui().writeListingWindow("\nCreated successfully");

            BasePart.CloseAfterSave var2;
            part1.save(BasePart.SaveComponents.FALSE, BasePart.CloseAfterSave.TRUE);

        }
        catch (Exception ex)
        {
            if(theUFSession!=null)
            {
                StringWriter s = new StringWriter();
                PrintWriter p = new PrintWriter(s);
                p.println("Caught exception " + ex );
                ex.printStackTrace(p);
                theUFSession.ui().writeListingWindow("\nFailed");
                //theUFSession.ui().writeListingWindow("\n"+ex.getMessage());
                theUFSession.ui().writeListingWindow("\n"+s.getBuffer().toString());
            }
        }
    }
    public static int getUnloadOption() {
        return BaseSession.LibraryUnloadOption.IMMEDIATELY;
    }
}

你可能感兴趣的:(Siemens,NX/UG二次开发,java,西门子,UG,NX,Siemens,西门子UG,UG二次开发)