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

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 5258|回复: 65
打印 上一主题 下一主题

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

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12406

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-14 10:15:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

问题如标题所示。本来可以通过CreateGeometryProxy来创建特征的代理对象,进而获取该代理对象上的螺纹在装配图中的坐标,但是在Inventor 2012(或者之前的版本)中,得到的代理对象的坐标竟然是零件图里的坐标,所以必须想出了一个补救办法。我想到的办法是将零件图里的坐标转换成装配图里的坐标,也许有人早已经想到过这个办法。下面的VBA例子代码仅供参考:

  1. Sub test0()
  2.     ' Assuming the user selected a face in assembly
  3.     Dim fproxy As faceProxy
  4.     Set fproxy = ThisApplication.ActiveDocument.SelectSet.Item(1)
  5.     Dim cocc As ComponentOccurrence
  6.     Set cocc = fproxy.ContainingOccurrence
  7.    
  8.     Dim pc As PartComponentDefinition
  9.     Set pc = cocc.Definition
  10.    
  11.     Dim OccToAssMatric As Matrix
  12.     Set OccToAssMatric = cocc.Transformation   
  13.    
  14.     Dim oBasePoint As Point
  15.     Dim assDef As AssemblyComponentDefinition
  16.     Set assDef = ThisApplication.ActiveDocument.ComponentDefinition
  17.     Dim threadFt As Object
  18.         
  19.     If pc.Features.ThreadFeatures.Count > 0 Then        For Each threadFt In pc.Features.ThreadFeatures
  20.         
  21.             getinfoforthread threadFt.ThreadInfo, OccToAssMatric, assDef
  22.         
  23.         Next
  24.     End If
  25.    
  26.     If pc.Features.HoleFeatures.Count > 0 Then        For Each threadFt In pc.Features.HoleFeatures
  27.         If threadFt.Tapped = True Then
  28.             getinfoforthread threadFt.TapInfo, OccToAssMatric, assDef
  29.         End If
  30.         Next
  31.     End If
  32.    
  33.     If pc.Features.RectangularPatternFeatures.Count > 0 Then
  34.         Dim rf As RectangularPatternFeature
  35.         For Each rf In pc.Features.RectangularPatternFeatures
  36.             
  37.             For Each threadFt In rf.ParentFeatures
  38.                 If threadFt.Type = kHoleFeatureObject Then
  39.                
  40.                     If threadFt.Tapped = True Then
  41.                         getinfoforthread threadFt.TapInfo, OccToAssMatric, assDef
  42.                     End If
  43.                 End If
  44.             Next
  45.         Next
  46.     End If
  47. End SubSub getinfoforthread(tf As Object, OccToAssMatric As Matrix, assDef As AssemblyComponentDefinition)
  48.     Dim oBasePoint As Point
  49.     For Each oBasePoint In tf.ThreadBasePoints
  50.    
  51.         Debug.Print CStr(oBasePoint.x) + "," + CStr(oBasePoint.y) + "," + CStr(oBasePoint.Z)
  52.    
  53.         oBasePoint.TransformBy OccToAssMatric
  54.    
  55.         Debug.Print CStr(oBasePoint.x) + "," + CStr(oBasePoint.y) + "," + CStr(oBasePoint.Z)
  56.    
  57.         Call assDef.WorkPoints.AddFixed(oBasePoint)
  58.    
  59.     Next
  60.    
  61.     Dim dir As Vector
  62.    
  63.     Set dir = tf.ThreadDirection
  64.    
  65.     Debug.Print CStr(dir.x) + "," + CStr(dir.y) + "," + CStr(dir.Z)
  66.    
  67.     dir.TransformBy OccToAssMatric
  68.    
  69.     Debug.Print CStr(dir.x) + "," + CStr(dir.y) + "," + CStr(dir.Z)
  70. End Sub
复制代码
文章来源:http://blog.csdn.net/barbarahan

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对

相关帖子

工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12406

社区QQ达人

推荐
 楼主| 发表于 2018-11-21 15:51:29 | 只看该作者
Invertor二次开发
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

1

主题

842

帖子

1254

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1254
推荐
发表于 2014-5-27 11:14:33 | 只看该作者
路过!!!
不发表意见……
推荐
发表于 2017-3-24 09:43:39 | 只看该作者
活到老学到老
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-27 08:51

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表