UG API里面模型创建主要包括了两大类模块,一是NXOpen,二是NXOpen.UF(以下简称UF)。这两个里面都包含创建数字模型的函数,但使用方法有很大的不同。UG帮助文档介绍UF开发比较早,可能是为了兼容的原因依然保留吧,脚本录制生成的代码只有NXOpen的函数。没有脚本录制,学习UF真是纯靠运气和参照帮助文档。只能怪自己英语理解能力差,虽然帮助文档里面的函数写的明白明白需要哪些参数,就是不理解其中意思啊。以下的代码写的真是跌跌撞撞啊,功能很简单,还是画两个点,两点连成直线。两条直线中一条是没有关联的,一条是有关联特征的

# NX 10.0.0.24

import pydevd

pydevd.settrace()

import NXOpen

import NXOpen.UF

mysession=NXOpen.Session.GetSession()

myufsession=NXOpen.UF.UFSession.GetUFSession()

mylw=mysession.ListingWindow

workPart=mysession.Parts.Work

displayPart=mysession.Parts.Display

myui=NXOpen.UI.GetUI()

mylw.Open()

#

pt1=myufsession.Curve.CreatePoint([10.,10.,10.])

pt2=myufsession.Curve.CreatePoint([20.,20.,20.])

mylw.WriteLine('first point id is %s'%pt1)

#无关联特征的直线创建,帮助文档是如下介绍的

Curve.CreateLine()¶

Refer toUF_CURVE_create_linefor documentation.

Signature: CreateLine(lineCoords)

Parameters:lineCoords (NXOpen.UF.Curve.Line Refer toUF_CURVE_line_sfor documentation.) – Coordinates of line in absolute space

Returns:Object identifier Of new line

Return type:Tag

其中lineCoords (NXOpen.UF.Curve.Line Refer toUF_CURVE_line_sfor documentation.) – Coordinates of line in absolute space是告诉我们函数输入类型是NXOpen.UF.Curve.Line类型,一开始没理解对,直接上CreateLine([10.,10.,10.],[20.,20.,20.])起点+终点坐标

正确的做法是先要创建NXOpen.UF.Curve.Line的实例,如下

st=myufsession.Curve.Line([10.,10.,10.],[20.,20.,20.])

line1=myufsession.Curve.CreateLine(st)

#关联特征直线的创建,需要输入5个参数,limitP的参数是需要NXOpen.UF.Curve.Limit类型的list,其他4个参数都比较好理解。

Curve.CreateLinePointPoint()¶

Signature: CreateLinePointPoint(point1, point2, limitP, supportPlane, isAsso)

Parameters:point1 (Tag) – tag of start point

point2 (Tag) – tag of end point

limitP (list of NXOpen.UF.Curve.Limit Refer toUF_CURVE_limit_sfor documentation.) – extension limits

supportPlane (Tag) – tag of support plane of the line

isAsso (bool) – true - if associative, false - if not associative

Returns:if is_asso == TRUE - object identifier of new associative line feature if is_asso == FALSE - object identifier of new associative line

Return type:Tag

对于NXOpen.UF.Curve.Limit的理解只能继续查文档,文档内容如下,咋用啊,简单的不能再简单了啊。字面上基本可以理解,需要设置limittype,value,limitobj,helpdata,再接续查看帮助文档,也没有找到如何设置这些参数的方法。

NXOpen.UF.Curve.Limit is an alias for NXOpen.UF.CurveLimit_Struct

classNXOpen.UF.CurveLimit_Struct¶

Bases: object

Fields

尝试了N次,总算是让我试出来了,一开始我设置st1=myufsession.Curve.Limit没有加括号总是出错,我突然想起来Python里面类class实例化好像需要加上括号,于是加上了括号。Limit里面的参数我只理解了value,所以只设置了value值。实际上也可以采用默认值,就是什么都不用设置,只要实例化起点和终点limit类就可以。

st1=myufsession.Curve.Limit()

st1.Value=0.

en1=myufsession.Curve.Limit()

en1.Value=20.

#创建支持面

plane1=myufsession.ModlFeatures.CreateFixedDplane([0.,0.,10.],[0.,0.,1.])

#做了这么多,到此才开始创建关联直线

line2=myufsession.Curve.CreateLinePointPoint(pt1,pt2,[st1,en1],plane1,True)

没有脚本录制辅助,UF学起来真费劲,放弃UF的学习了

python ug_一个python的UG二次开发简单例子(二)相关推荐

  1. ABAQUS 二次开发 简单插件制作

    本文主要使用python开发,为了让大家简单认识这个过程,通过介绍一个较为简单的插件制作过程,希望大家能对二次开发简单过程有个了解,当然我也是刚刚接触这个,很多地方还在摸索,只是记录这个过程,希望对后 ...

  2. pythoncad二次开发视频_revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档...

    二次开发 revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档2019-07-08赞( 0 ) 记录一下CAD二次开发的一些简单实例. 1.helloworld ...

  3. EPS二次开发简单整理(一)

    EPS二次开发简单整理(一) 2020.1.3 一.添加命令函数 二.添加检查程序 三.EPS中字体大小判断 四.植被面中符号宽度 五.Cross_P函数返回值说明 六.图形外接矩形关键点序号 七.高 ...

  4. catia二维图坐标如何表示_【二次开发】CATIA二维图一键标注投影点信息

    原标题:[二次开发]CATIA二维图一键标注投影点信息 CATIA软件不仅可以用来建立三维模型,用它来出二维图纸也是个不错的选择.且相对于传统的铅笔橡皮丁字尺和AutoCAD来说,CATIA二维图中的 ...

  5. tekla二次开发用C语言,Tekla能够进行哪些二次开发?Tekla二次开发功能详解

    我们话不多说,这次小编来给你讲一些搜罗而来的Tekla软件二次开发的功能.虽然是科普,不过这些二次开发功能有的还真的是很好用的,帮了大忙. 一.桥梁功能 如果向Tekla插件中加入了桥梁模块的功能,通 ...

  6. lisp 圆柱螺旋线_Auto LISP对AutoCAD2002进行二次开发实例——绘制二维函数曲线

    Auto LISP 对 AutoCAD 2002 进行二次开发实例 ---绘制二维函数曲线Ξ李旭荣 ,任奕玲 ,梁秀英 ,刘梅英 (华中农业大学 工程技术学院 ,湖南 武汉 430070) 摘 要:主 ...

  7. 用python做一个数据查询软件_Python实现功能简单的数据查询及可视化系统

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. image.png 前言 数据时代,数据的多源集成 ...

  8. python revit二次开发_Revit怎么二次开发?Revit开发问题汇总

    现如今Revit软件还无法满足所有领域的工作需求,然而其二次开发技术能够适应用户个性化的定制要求,来扩展软件功能或对其功能进行修正. 为了更大程度上方便二次开发,开发商将集成的数据库函数封装到Revi ...

  9. python手机解释器_用Python实现一个Python解释器

    Byterun是Ned Batchelder和我完成的,建立在Paul Swartz的工作之上.它的结构和主要的Python实现(CPython)差不多,所以理解Byterun会帮助你理解大多数解释器 ...

最新文章

  1. Dundas使用手册
  2. html div全屏遮罩层,Jquery全屏遮罩层DIV的实现代码
  3. 近20个绚丽实用的jQuery/CSS3侧边栏菜单
  4. 009_TreeSet对实现了Comparable接口的对象排序
  5. Android 面向切面编程-aspjectj应用
  6. Spring 入门学习二之IOC
  7. hdu-1728(贪心bfs的灵活运用吧)
  8. oc 画一个圆弧_UG建模一个蜗杆的方法,纯手工建模无插件
  9. 怎样一次性将一个word文档中所有图片保存
  10. Swagger中paramType
  11. python自动执行脚本
  12. 用ByteArrayOutputStream解决IO流乱码问题
  13. java hough_java – 如何实现Hough变换?
  14. MapReduce作业2
  15. 运算放大器应用汇总1
  16. win7添加一个计算机图标,Win7系统任务栏添加计算机图标的步骤图解
  17. 凛冬的寒风,吹开了电动车的遮羞布
  18. tf.executing_eagerly()
  19. ESP8266连接中国移动ONENET物联网平台TCP透传实现WIFI远程控制
  20. UOJ#748-[UNR #6]机器人表演【dp】

热门文章

  1. qnap plex安装_如何在Apple TV上安装Plex
  2. networker对mysql备份_【经验分享】EMC NetWorker数据库备份及异机恢复
  3. 最常用的 12 个物联网协议和标准
  4. python3 字体颜色_python3使用xlwt时写入文档字体颜色和边框样式
  5. Data - 数据思维
  6. 会话劫持后可以做什么操作_什么是会话劫持以及如何阻止它
  7. 基于java的售后服务管理系统
  8. 【2018年12月10日】A股最便宜的股票
  9. TCP Dump 抓包工具详解
  10. linux pci 网卡驱动,linux网络设备驱动_pci网卡