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)。
在这里插入图片描述

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;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/214383.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一款自动帮你生成UI界面和代码的AI神器

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 只要描述你想要的UI是什么样的,它就能帮你生成,是不是很神奇? v0使用 AI 模型根据简单的文本提示生成用户界面和代码&#xff…

U盘不仅能在电脑上使用,在手机上也可使用,包括安卓和苹果手机,但苹果的较特殊

许多最好的安卓手机都使用USB-C端口在电脑上充电和来回传输文件,但如果你需要给老板发电子邮件的文件放在闪存驱动器或全尺寸SD卡上呢? 幸运的是,使用廉价的适配器电缆,你可以将USB加密狗或读卡器直接连接到手机上。你甚至可以直接使用USB-C闪存驱动器,以实现更轻松的过程…

Java基础之数组拷贝

Arrays.copyOf 详解 copyOf是Arrays类下面的一个方法,用于拷贝各种数组 以整型数组为例:int [ ] copyOf(int [ ]array,int newLength);第一个参数是想要拷贝到数组,第二个参数是新拷贝得到的数组的大小(不一定非得和原始数组大小一样&…

深层神经网络(第四周)

这里省略了深层神经网络的前向传播和反向传播,内容和之前相似,不做过多描述。若今后需要,可以再补习。 一、为什么使用深层表示 解决问题时其实并不需要很大的神经网络,但是得有深度,得有比较多的隐藏层。这是为什么…

DBS note7 (end):DB Design

目录 一、前言 二、引言 三、Entity-Relationship Models(实体-关系模型) 1、关系约束 三、函数依赖和正则化 1、BCNF分解 2、无损分解 3、依赖关系保留分解 一、前言 略读过一遍CS186,对于CS186来说,绝对不止这 7 篇笔记…

SSM项目实战-登录验证成功并路由到首页面,Vue3+Vite+Axios+Element-Plus技术

1、util/request.js import axios from "axios";let request axios.create({baseURL: "http://localhost:8080",timeout: 50000 });export default request 2、api/sysUser.js import request from "../util/request.js";export const login (…

分布式锁框架Lock4j简单使用

最近项目中使用到了Lock4j的分布式锁组件,小编今天就带大家学习一下该框架,以及如何在我们项目中进行集成使用。 一、简介 Lock4j是一个分布式锁组件,它提供了多种不同的支持以满足不同性能和环境的需求;它基于Spring AOP&#…

SQL Server数据库数据文件的迁移

SQL Server数据库数据文件的迁移 如何将一台电脑中的SQL Server数据库数据文件迁移到另一台电脑上? 一、首先查看数据库文件保存在电脑中的位置; 如下图所示:右键-》属性-》数据库设置;可以找到数据库文件保存位置; …

【Node.js】Node.js环境下载与安装教程(Windows系统)

前言 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,可以让你使用JavaScript进行服务器端编程。本教程将向你展示如何在Windows系统上下载和安装Node.js环境。 下载 首先,你需要下载Node.js环境。 打开Node.js官方网站:https://no…

Linux系列-1 Linux启动流程——init与systemd进程

背景: 最近对所有项目完成了一个切换,服务管理方式由: init-> systemd。对相关知识进行总结一下。 1.启动流程 服务器的整体启动流程如下图所示: POST: 计算机通电后进行POST( Power-On Self-Test )加电自检&am…

力扣每日一题day26[42. 接雨水]

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] …

MQ - KAFKA 基础篇

##1、KAFKA的核心组件/API Producer API,它允许应用程序向一个或多个 topics 上发送消息记录 Consumer API,允许应用程序订阅一个或多个 topics 并处理为其生成的记录流 Streams API,它允许应用程序作为流处理器,从一个或多个主…

github问题解决(持续更新中)

1、ssh: connect to host github.com port 22: Connection refused 从.ssh文件夹中新建文件名为config,内容为: Host github.com Hostname ssh.github.com Port 4432、解决 git 多用户提交切换问题 使用系统命令ssh创建rsa公私秘钥 C:\Users\fyp01&g…

使用Redis构建简易社交网站(1)-创建用户与动态界面

目的 本文目的:实现简易社交网站中创建新用户和创建新动态功能。(完整代码附在文章末尾) 相关知识 本文将教会你掌握:1.redis基本命令,2.python基本命令。 redis基本命令 hget:从哈希中获取指定域的值…

vitepress的使用

创建项目并启动项目 // 1.创建项目,直接在空项目下安装vitepress(npm/yarn等都可以,这个可以看官网,官网给了好几种安装方式) yarn add -D vitepress // 2.初始化配置项目(npm/官网也给了多种包管理工具的安装方式) npx vitepress init // 初始化命令执行完会遇到以下几个问题…

Python---函数递归---练习:猴子吃桃问题(本文以递归算法 解法为主)

相关链接:Python---函数递归---练习:斐波那契数列(本文以递归算法为主)-CSDN博客 案例:猴子吃桃问题 猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。…

Web前端监控的方案

Web前端监控的方案 前端监控是一个非常重要的话题,对于业务的发展意义重大,就像遍布在城市各处的探头,实时监测整座城市的运行状况,保证系统的稳定、高效运行。 前端监控的意义 前端监控,对于业务和团队的重要性&am…

Kafka 的起源和背景

Apache Kafka 是一个分布式流处理平台,被广泛用于构建实时数据流应用程序和大数据处理系统。本文将深入探讨 Kafka 的起源、设计原则以及它在大数据领域中的重要作用。 大数据和实时数据处理背景 在大数据时代,处理海量数据和实时数据成为了一项关键挑…

C++学习之路(十七)C++ 用Qt5实现一个工具箱(增加托盘图标并且增加显示和退出菜单)- 示例代码拆分讲解

上篇文章,我们用 Qt5 实现了在小工具箱中添加了《为屏幕颜色提取功能增加一个点击复制的功能》功能。今天我们增加一个比较正式点的功能,就是增加托盘图标并且增加显示和退出菜单(越来越像回事了吧 😁 )。下面我们就来…

Python---函数递归---练习:使用递归求N的阶乘(如n=100)(本文以递归算法 解法为主)

相关链接:Python---函数递归---练习:斐波那契数列(本文以递归算法为主)-CSDN博客 Python---if选择判断结构、嵌套结构(if elif else)_python多重if嵌套-CSDN博客 案例:使用递归求N的阶乘&…