| 会员登录 立即注册
关注公众号

关注公众号拿干货

CATIA教程
加入联盟

扫微信(sakula)入联盟

CATIA软件
风格切换

catia教程

搜索

CATIA联盟论坛

[CATIA VBA] CATIA的VBA二次开发测量

[复制链接]
CATIA正版多少钱 发表于 2019-12-18 14:11:46 | 显示全部楼层 |阅读模式
CATIA正版多少钱
2019-12-18 14:11:46 1370 0 看全部
  CATIA的VBA二次开发测量

  初次接触CATIA,走了好多弯路,由于会使用CATIA VB,所以上来就写代码,然后发现方向不对,又回过头来看catia的特性结构和相关实例。

  这里建议CATIA二次开发的初学者们参考CATIA v5文档和CATIA二次开发技术基础这本书。

  接下来介绍一下,结构图如下(从自带的文档中截取的):
CATIA的VBA二次开发测量67

  首先获得Application
  Set CATIA=GetObject(,"CATIA.Application")
  或者创建一个
  Set CATIA=CreateObject("CATIA.Appliaction")
  然后就可以由Application获取document了

  '判断是不是零件文档
  Function IsPartDocument(ByVal pDoc As Document)As Boolean
  If(UCase(TypeName(pDoc))="PARTDOCUMENT")Then
  IsPartDocument=True
  Else
  IsPartDocument=False
  End If
  End Function

  '判断是不是产品文档
  Function IsProductDocument(ByVal pDoc As Document)As Boolean
  If(UCase(TypeName(pDoc))="PRODUCTDOCUMENT")Then
  IsProductDocument=True
  Else
  IsProductDocument=False
  End If
  End Function

  获取某一个product的原点的旋转矩阵和偏移向量
  dim base(11)
  product1.Position.GetComponents(base)

  这里说一下,base(0)-base(8)是该产品在当前工作台中的旋转矩阵,base(9)-base(11)是该产品的坐标原点的偏移向量。
  在catia的装配体中,是以第一个零件的坐标系作为装配体的坐标系的,我把它理解为世界坐标系。

  获取点的偏移向量
  dim ps(2)
  Set mMeasurable=rootWorkBench.GetMeasurable(ref1)
  mMeasurable.GetPoint(ps)
  这里ps获得偏移向量是相对于世界坐标系的偏移向量。

  于是有下图:
  世界坐标系原点为O,基准坐标系原点为B,所计算的零件重心点坐标为P
  根据向量关系有:BP=OP-OB

  获得MP向量后,根据基准面相对于世界坐标系的旋转矩阵,进行投影,也就是与矩阵进行相乘即可。
  Function CalcMatrix(ByRef base()As Double,ByRef part()As Double,ByRef pt()As Double)As Double()
  Dim ret(2)As Double
  Dim p(2)As Double
  Dim i As Integer

  '世界坐标下的向量bp(基准坐标原点到重心点的向量)
  p(0)=pt(0)-base(9)
  p(1)=pt(1)-base(10)
  p(2)=pt(2)-base(11)

  '根据旋转矩阵,将向量进行投影转换
  For i=0 To 2
  ret(0+i)=p(0)*base(0+3*i)+p(1)*base(1+3*i)+p(2)*base(2+3*i)
  Next
  Debug.Print(ret(0)&""&ret(1)&""&ret(2))
  CalcMatrix=ret
  End Function

  到此,就获得了CATIA各个零件的重心点到各个基准面的距离了,且带有正负方向。
CATIA论坛官方公众号
  • 您可能感兴趣
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

查看:1370 | 回复:0

CATIA教程| CATIA视频教程| CATIA培训| CATIA下载| CATIA安装| CATIA二次开发| CATIA入门教程| CATIA V5教程| CATIA V6教程| CATIA论坛
联系电话:18982019507 地址:成都市青羊区二环路西一段155号天祥广场4栋1801
版权所有 ©软易达 •( 蜀ICP备14018086号 )Copyright © 2001-2013 Comsenz Inc. All Rights Reserved.   Powered by Discuz! X3.4
联盟微信客服:
silhouette023CATIA软件


CATIA技术群

微信公众号 CATIA微信公众号
“CATIA联盟”