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

news2025/1/13 13:42:52

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

严蔚敏数据结构题集 p18(2.25——2.30)(c语言代码实现)

目录 2.25假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。试对顺序表编写求C的算法。 2.26要求同2.25题。是对单链表编写求C的算法 2.…

03-IDEA集成Git,初始化本地库,添加远程仓库,提交,拉取,推送,分支的快捷操作

IDEA集成Git 创建Git忽略文件 不同的IDE开发工具有不同的特点文件,这些文件与项目的实际功能无关且不参与服务器上的部署运行, 把它们忽略掉能够屏蔽之间的差异 局部忽略配置文件: 在本地仓库的根目录即项目根目录下直接创建.gitignore文件, 以文件后缀或目录名的方式忽略指定…

CnosDB FDW:打通一扇通往PostgreSQL世界的大门

本文档提供了下载、安装和使用 CnosDB FDW 的简要说明。请根据您的实际需求和环境对文档进行调整。 概述 CnosDB FDW 是一个用于在 PostgreSQL 数据库中访问 CnosDB 数据库的外部数据包装器(Foreign Data Wrapper)。它提供了在 PostgreSQL 中查询 CnosD…

并发编程2:Java 加锁的原理和JVM对锁的优化

为什么要加锁 在多进程的环境下,如果一个资源被多个进程共享,那么对资源的使用往往会表现的随机和无序,这显然是不行的。例如多个线程同时对控制台输出,每个线程都输出的是完整的句子但是多个线程同时同时输出,则输出…

sd_webui的实用插件,prompt/lama/human matting/...,持续开源更新!!

热烈欢迎大家在git上star!!!冲鸭!!! 1.prompt优化插件 GitHub - leeguandong/sd_webui_beautifulprompt: beautifulprompt extension performs stable diffusion automatic prompt engineering on a bro…

博途PLC数组指针应用(SCL)

CODESYS数组类型变量使用介绍 https://rxxw-control.blog.csdn.net/article/details/131375218https://rxxw-control.blog.csdn.net/article/details/131375218 博途PLC数组类型变量使用介绍还可以查看下面文章博客: https://rxxw-control.blog.csdn.net/article/details/1…

通义灵码简单使用例子

首先我们需要了解到通义灵码的能力: 行/函数级实时续写: 当我们在 idea进行代码编写时(确认开启了自动云端生成的模式),通义灵码会根据当前代码文件及相关代码文件的上下文,自动为你生成代码建议。你可以不用,也可以t…

Android把宽高均小于给定值的Bitmap放大到给定值,Kotlin

Android把宽高均小于给定值的Bitmap放大到给定值,Kotlin 假设拉伸放大到SIZE2048 fun scaleSize(image: Bitmap): Bitmap {val w image.widthval h image.heightvar newW: Intvar newH: Intif (w > h) {newW SIZEnewH (SIZE / w.toFloat()) * h} else {newW …

计算机网络TCP篇③问答篇

目录 一、如何理解 TCP 是面向字节流协议 先来说说为什么 UDP 是面向报文的协议? 如果收到了两个 UDP 报文,操作系统是如何区分开的呢? 再说说为什么 TCP 是面向字节流的协议? 二、如何解决粘包问题? ①、固定消…

23.12.3日总结

饿了么项目进度 新建菜品的添加属性: 适应不同尺寸的媒体查询: 菜品详细页面: 项目上遇到的问题 媒体查询遇到的问题: 关于媒体查询不能生效的原因-CSDN博客 答辩总结 js中声明变量的关键字(const,let…

前缀和例题:子矩阵的和AcWing796

//前缀和模板提,在读入数据的时候就可以先算好前缀和的大小 //计算前缀的时候用:g[i][j] g[i][j-1] g[i-1][j] - g[i-1][j-1] Integer.parseInt(init[j-1]); //计算结果的时候用:g[x2][y2] - g[x1 - 1][y2]- g[x2][y1-1] g[x1 -1][y1 - 1] "\n" //一些重复加的地…

YOLOv8 区域计数 | 入侵检测 | 人员闯入

大家好,昨天的 YOLOv8 新增加了一个功能,区域计数,用这个功能我们能实现很多的任务, 比如入侵检测,流量统计,人员闯入等,使用方式也非常的方便,但是一定要使用最新版的 YOLOv8 代码(2023/12/03更新的代码)。 低版本是不具备这个功能的,上面是演示效果。 使用非常的方…

InsCode实践分享

在当今信息爆炸的时代,如何从海量信息中脱颖而出,获取更多的关注和认可,成为了许多人的共同追求。作为知乎平台上的优质用户,我愿意分享一些自己的经验和技巧,帮助大家更好地运用InsCode,实现个人成长和进步…

细说CountDownLatch

CountDownLatch 概念 CountDownLatch可以使一个获多个线程等待其他线程各自执行完毕后再执行。 CountDownLatch 定义了一个计数器,和一个阻塞队列, 当计数器的值递减为0之前,阻塞队列里面的线程处于挂起状态,当计数器递减到0时…

Linux下activemq的安装与安装成功确认

一、下载 apache-activemq-5.14.0-bin.tar.gz 二、安装 将压缩包拷入linux内,进行解压tar -zxvf apache-activemq-5.14.0-bin.tar.gz,与redis、nginx不同的是,active解压不需要安装就可以直接启动! 启动命令:./bin…

某60区块链安全之Create2实战二学习记录

区块链安全 文章目录 区块链安全Create2实战二实验目的实验环境实验工具实验原理实验内容Create2实战二 实验步骤Create2实战二 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约中的伪随机数问题 学会利用Create2可在同一地址部署不同合约特性解决伪随机数问题 找…

❀My学习Linux命令小记录(6)❀

目录 ❀My学习Linux命令小记录(6)❀ 26.ps指令 27.grep指令 28.awk指令 29.sed指令 30.wc指令 ❀My学习Linux命令小记录(6)❀ 26.ps指令 功能说明:报告当前系统的进程状态。 (ps.ps命令 用于报告当前系统的进…

免费数据采集软件,多种数据采集方式

数据无疑是企业决策的关键驱动力。要充分利用数据,就需要进行数据收集,而数据采集的方式多种多样。 数据采集方式的丰富多彩 数据采集并非一蹴而就的简单任务,而是一个多层次、多步骤的过程。在这个过程中,我们有着多种数据采集…

数据结构实验任务六 :基于 Dijsktra 算法的最短路径求解

本次代码为实验六:基于 Dijsktra 算法的最短路径求解实现。本实验的重点在于对于Dijsktra算法的理解。有关Dijsktra的资料可以参考有关博文: 图论:Dijkstra算法——最详细的分析,图文并茂,一次看懂!-CSDN博客 以下附上…

[LeetCode周赛复盘] 第 374 场周赛20231203

[LeetCode周赛复盘] 第 374 场周赛20231203 一、本周周赛总结100144. 找出峰值1. 题目描述2. 思路分析3. 代码实现 100153. 需要添加的硬币的最小数量1. 题目描述2. 思路分析3. 代码实现 100145. 统计完全子字符串1. 题目描述2. 思路分析3. 代码实现 100146. 统计感冒序列的数…