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: |
|
---|---|
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.LimitType | Refer to UF_CURVE_limit_s for documentation. |
NXOpen.UF.CurveLimit_Struct.Value | Refer to UF_CURVE_limit_s for documentation. |
NXOpen.UF.CurveLimit_Struct.LimitingObj | Refer to UF_CURVE_limit_s for documentation. |
NXOpen.UF.CurveLimit_Struct.HelpData | Refer 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的学习了