一个python的UG二次开发简单例子(二)

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 to UF_CURVE_create_line for documentation.

Signature: CreateLine(lineCoords)

Parameters:lineCoords (NXOpen.UF.Curve.Line Refer to UF_CURVE_line_s for documentation.) – Coordinates of line in absolute space
Returns:Object identifier Of new line
Return type:Tag

其中lineCoords (NXOpen.UF.Curve.Line Refer to UF_CURVE_line_s for 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()

Refer to UF_CURVE_create_line_point_point for documentation.

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 to UF_CURVE_limit_s for 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

class NXOpen.UF.CurveLimit_Struct

Bases: object

Fields

NXOpen.UF.CurveLimit_Struct.LimitTypeRefer to UF_CURVE_limit_s for documentation.
NXOpen.UF.CurveLimit_Struct.ValueRefer to UF_CURVE_limit_s for documentation.
NXOpen.UF.CurveLimit_Struct.LimitingObjRefer to UF_CURVE_limit_s for documentation.
NXOpen.UF.CurveLimit_Struct.HelpDataRefer to UF_CURVE_limit_s for documentation.

尝试了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的学习了

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值