EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

萧闫子 发表于 2014-1-14 10:15:11

如何获取与用户选择的面关联的零件中的螺纹在装配图中的坐标等信息?

问题如标题所示。本来可以通过CreateGeometryProxy来创建特征的代理对象,进而获取该代理对象上的螺纹在装配图中的坐标,但是在Inventor 2012(或者之前的版本)中,得到的代理对象的坐标竟然是零件图里的坐标,所以必须想出了一个补救办法。我想到的办法是将零件图里的坐标转换成装配图里的坐标,也许有人早已经想到过这个办法。下面的VBA例子代码仅供参考:Sub test0()
    ' Assuming the user selected a face in assembly
    Dim fproxy As faceProxy
    Set fproxy = ThisApplication.ActiveDocument.SelectSet.Item(1)
    Dim cocc As ComponentOccurrence
    Set cocc = fproxy.ContainingOccurrence
   
    Dim pc As PartComponentDefinition
    Set pc = cocc.Definition
   
    Dim OccToAssMatric As Matrix
    Set OccToAssMatric = cocc.Transformation   
   
    Dim oBasePoint As Point
    Dim assDef As AssemblyComponentDefinition
    Set assDef = ThisApplication.ActiveDocument.ComponentDefinition
    Dim threadFt As Object
      
    If pc.Features.ThreadFeatures.Count > 0 Then      For Each threadFt In pc.Features.ThreadFeatures
      
            getinfoforthread threadFt.ThreadInfo, OccToAssMatric, assDef
      
      Next
    End If
   
    If pc.Features.HoleFeatures.Count > 0 Then      For Each threadFt In pc.Features.HoleFeatures
      If threadFt.Tapped = True Then
            getinfoforthread threadFt.TapInfo, OccToAssMatric, assDef
      End If
      Next
    End If
   
    If pc.Features.RectangularPatternFeatures.Count > 0 Then
      Dim rf As RectangularPatternFeature
      For Each rf In pc.Features.RectangularPatternFeatures
            
            For Each threadFt In rf.ParentFeatures
                If threadFt.Type = kHoleFeatureObject Then
               
                  If threadFt.Tapped = True Then
                        getinfoforthread threadFt.TapInfo, OccToAssMatric, assDef
                  End If
                End If
            Next
      Next
    End If
End SubSub getinfoforthread(tf As Object, OccToAssMatric As Matrix, assDef As AssemblyComponentDefinition)
    Dim oBasePoint As Point
    For Each oBasePoint In tf.ThreadBasePoints
   
      Debug.Print CStr(oBasePoint.x) + "," + CStr(oBasePoint.y) + "," + CStr(oBasePoint.Z)
   
      oBasePoint.TransformBy OccToAssMatric
   
      Debug.Print CStr(oBasePoint.x) + "," + CStr(oBasePoint.y) + "," + CStr(oBasePoint.Z)
   
      Call assDef.WorkPoints.AddFixed(oBasePoint)
   
    Next
   
    Dim dir As Vector
   
    Set dir = tf.ThreadDirection
   
    Debug.Print CStr(dir.x) + "," + CStr(dir.y) + "," + CStr(dir.Z)
   
    dir.TransformBy OccToAssMatric
   
    Debug.Print CStr(dir.x) + "," + CStr(dir.y) + "," + CStr(dir.Z)
End Sub文章来源:http://blog.csdn.net/barbarahan

萧闫子 发表于 2018-11-21 15:51:29

Invertor二次开发

中华! 发表于 2014-5-27 11:14:33

路过!!!
不发表意见……

EaBIM门户编辑 发表于 2017-3-24 09:43:39

活到老学到老

国产008 发表于 2014-2-18 12:31:52

路过!!!
帮顶……

车奴 发表于 2014-2-19 15:01:03

顶......
楼下跟上.....

宇航员 发表于 2014-2-21 14:45:25

(*^__^*) 嘻嘻……

大奔KY 发表于 2014-2-22 20:18:43

顶!!!!!!!!!!!!!!!!!!!!!!!!!

MIMDxFzL 发表于 2014-2-25 10:36:52

顶!!!!!!!!!!

等你回来 发表于 2014-2-25 10:39:42

顶!!!!!!!!!!

黑超BB 发表于 2014-2-28 11:55:02

路过!!!
帮顶……

苦田辛君 发表于 2014-3-5 15:37:03

路过!!!
帮顶……

千里独行 发表于 2014-3-5 15:39:55

(*^__^*) 嘻嘻……

慕容柔晴 发表于 2014-3-7 11:59:16

路过!!!
帮顶……

levin 发表于 2014-3-7 12:02:21

(*^__^*) 嘻嘻……

孙雅 发表于 2014-3-10 12:22:58

顶!!!!!!!!!!!!!!!!!!!!!!!!!

看看侃侃 发表于 2014-3-11 15:36:18

顶......
楼下跟上.....

悠悠筱荷 发表于 2014-3-11 15:39:26

路过!!!
帮顶……
页: [1] 2 3 4 5 6
查看完整版本: 如何获取与用户选择的面关联的零件中的螺纹在装配图中的坐标等信息?