Inventor 2014 API 新功能 (11) 戳记 Imprinting

这是API独有的功能,用户界面没有。英文叫做Imprinting,或许翻译成戳记不是很确切,大家先跟着我看看其代码执行的结果,理解一下这个功能的作用首先预备两个零件,然后创建一个装配,将两零件做配合约束。例如下图。

执行以下代码,将会让用户选取部件1和部件2,对两个部件的SurfaceBody做戳记,最后创建一个新零件文档,把戳记返回的body1 和body2作为非参数化特征添加。

Public Sub CreateImprintFromAssembly()
    ' 获取当前装配文档.
    Dim asmDoc As AssemblyDocument
    Set asmDoc = ThisApplication.ActiveDocument
    
    ' 选取两个部件
    Dim part1 As ComponentOccurrence
    Dim part2 As ComponentOccurrence
    Set part1 = ThisApplication.CommandManager.Pick(kAssemblyLeafOccurrenceFilter, "Select part 1")
    Set part2 = ThisApplication.CommandManager.Pick(kAssemblyLeafOccurrenceFilter, "Select part 2")
    
    ' 获得部件对应的SurfaceBody,并拷贝出临时SurfaceBody,然后根据部件在装配中的位置变换
     
    Dim transBrep As TransientBRep
    Set transBrep = ThisApplication.TransientBRep
    Dim body1 As SurfaceBody
    Dim body2 As SurfaceBody
    Set body1 = transBrep.Copy(part1.Definition.SurfaceBodies.Item(1))
    Set body2 = transBrep.Copy(part2.Definition.SurfaceBodies.Item(1))
     
    Call transBrep.Transform(body1, part1.Transformation)
    Call transBrep.Transform(body2, part2.Transformation)
    
    '做戳记
    Dim newBody1 As SurfaceBody
    Dim newBody2 As SurfaceBody
    Dim body1OverlapFaces As Faces
    Dim body2OverlapFaces As Faces
    Dim body1OverlapEdges As Edges
    Dim body2OverlapEdges As Edges
    Call ThisApplication.TransientBRep.ImprintBodies(body1, body2, True, newBody1, newBody2, body1OverlapFaces, body2OverlapFaces, body1OverlapEdges, body2OverlapEdges)

    '创建一个新文档
    Dim partDoc As PartDocument
    Set partDoc = ThisApplication.Documents.Add(kPartDocumentObject, _
                  ThisApplication.FileManager.GetTemplateFile(kPartDocumentObject))
    Dim partDef As PartComponentDefinition
    Set partDef = partDoc.ComponentDefinition

    ' 根据戳记返回的新body1添加非参数化特征1
    Dim non1 As NonParametricBaseFeature
    Set non1 = partDef.Features.NonParametricBaseFeatures.Add(newBody1)
    Set newBody1 = non1.SurfaceBodies.Item(1)

    ' 根据戳记返回的新body1添加非参数化特征2
    Dim non2 As NonParametricBaseFeature
    Set non2 = partDef.Features.NonParametricBaseFeatures.Add(newBody2)
    Set newBody2 = non2.SurfaceBodies.Item(1)
End Sub


结果的零件文档是这样的:

看上去和原有装配的样子差不多,不过,当你拾取两部件配合面的时候,你会发现一些不同。为清楚显示,先将一个特征抑制。可以看到,配合面不再是一个面,而是多个面,类似我们盖章一样,被另外特征打了个印记。

对于另外一个特征也是类似的。

所以,Imprinting就是对发生贴合关系的两个体进行分析,获得其贴合后的体:body1和body2,并返回分割后的贴合面或边的集合。对应的方法是:

TransientBRep.ImprintBodies ( InputBodyOne As SurfaceBody,    原体1
                                                  InputBodyTwo As SurfaceBody,    原体2
                                                  ImprintCoincidentEdges As Boolean,  重合边是否计算在内
                                                  OutputBodyOne As SurfaceBody,     结果体1
                                                  OutputBodyTwo As SurfaceBody,     结果体2
                                                  BodyOneOverlappingFaces As Faces,  体1发生贴合的面集合
                                                  BodyTwoOverlappingFaces As Faces,  体2发生贴合的面集合
                                                  BodyOneOverlappingEdges As Edges,  体1发生贴合的边集合
                                                  BodyTwoOverlappingEdges As Edges,  体2发生贴合的边集合
                                                  [Tolerance As Double])


更多说明,请查看API帮助文档。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值