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)。
4.使用idea创建项目
目的:编译NX/UG java语言二次开发的.java源文件,获得.class文件。
- 正常使用idea新建java项目
- 在"file"-“Project Structure”-“Project Settings”-“Modules”-"Add"添加.jar包
- 编译项目
5.NXOpen Java代码生效流程
- 将java源代码编译成.class文件
- 打开NX/UG界面,“文件”-“执行”-“Nx Open(Ctrl+U 运行NX Oepn程序)”,选择.class文件类型并选中要执行的文件即可。
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;
}
}