尊重原创,转载请注明出处! mansin_csa@163.com

实际上,CATIA在很多情况下并不能成功录制宏,比如,在自由曲面设计模块中,所有功能均不能录制宏。还有在测量功能中也不能录制宏。事实上,查阅V5Automation知道,其实是有关于测量功能的方法的。如下图所示:

在Measurable中就可以通过Volume方法来获得目标的体积。在实际编程中,还是需要很多前提才能成功使用该功能的。
【特别注意】:在CATIA GUI中是可以通过在“选项”中更改测量单位的。但在宏程序中所获得的体积的单位是m^3。
以下给出一个测量一个拟柱体体积的完整的宏程序。

Sub CATMain()
Set documents1 = CATIA.Documents
Set partDocument1 = documents1.Add("Part")
Set part1 = partDocument1.Part
Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("零件几何体")
Set sketches1 = body1.Sketches
Set originElements1 = part1.OriginElements
Set reference1 = originElements1.PlaneZX
Set sketch1 = sketches1.Add(reference1)
Dim arrayOfVariantOfDouble1(8)
arrayOfVariantOfDouble1(0) = 0.000000
arrayOfVariantOfDouble1(1) = 0.000000
arrayOfVariantOfDouble1(2) = 0.000000
arrayOfVariantOfDouble1(3) = -1.000000
arrayOfVariantOfDouble1(4) = 0.000000
arrayOfVariantOfDouble1(5) = 0.000000
arrayOfVariantOfDouble1(6) = 0.000000
arrayOfVariantOfDouble1(7) = -0.000000
arrayOfVariantOfDouble1(8) = 1.000000
sketch1.SetAbsoluteAxisData arrayOfVariantOfDouble1
part1.InWorkObject = sketch1
Set factory2D1 = sketch1.OpenEdition()
Set geometricElements1 = sketch1.GeometricElements
Set axis2D1 = geometricElements1.Item("绝对轴")
Set line2D1 = axis2D1.GetItem("横向")
line2D1.ReportName = 1
Set line2D2 = axis2D1.GetItem("纵向")
line2D2.ReportName = 2
Set ellipse2D1 = factory2D1.CreateClosedEllipse(0.000000, 0.000000, 100.000000, 0.000000, 100.000000, 30.000000)
Set point2D1 = axis2D1.GetItem("原点")
ellipse2D1.CenterPoint = point2D1
ellipse2D1.ReportName = 3
Set point2D2 = factory2D1.CreatePoint(0.000000, 30.000000)
point2D2.ReportName = 4
Set constraints1 = sketch1.Constraints
Set reference2 = part1.CreateReferenceFromObject(point2D2)
Set reference3 = part1.CreateReferenceFromObject(line2D2)
Set constraint1 = constraints1.AddBiEltCst(catCstTypeOn, reference2, reference3)
constraint1.Mode = catCstModeDrivingDimension
Set reference4 = part1.CreateReferenceFromObject(ellipse2D1)
Set reference5 = part1.CreateReferenceFromObject(point2D2)
Set constraint2 = constraints1.AddBiEltCst(catCstTypeOn, reference4, reference5)
constraint2.Mode = catCstModeDrivingDimension
sketch1.CloseEdition
part1.InWorkObject = sketch1
part1.UpdateObject sketch1
Set hybridShapeFactory1 = part1.HybridShapeFactory
Set hybridShapePlaneExplicit1 = originElements1.PlaneZX
Set reference6 = part1.CreateReferenceFromObject(hybridShapePlaneExplicit1)
Set hybridShapePlaneOffset1 = hybridShapeFactory1.AddNewPlaneOffset(reference6, 20.000000, False)
body1.InsertHybridShape hybridShapePlaneOffset1
part1.InWorkObject = hybridShapePlaneOffset1
part1.Update
Set hybridShapes1 = body1.HybridShapes
Set reference7 = hybridShapes1.Item("平面.1")
Set sketch2 = sketches1.Add(reference7)
Dim arrayOfVariantOfDouble2(8)
arrayOfVariantOfDouble2(0) = 0.000000
arrayOfVariantOfDouble2(1) = 20.000000
arrayOfVariantOfDouble2(2) = 0.000000
arrayOfVariantOfDouble2(3) = -1.000000
arrayOfVariantOfDouble2(4) = 0.000000
arrayOfVariantOfDouble2(5) = 0.000000
arrayOfVariantOfDouble2(6) = 0.000000
arrayOfVariantOfDouble2(7) = -0.000000
arrayOfVariantOfDouble2(8) = 1.000000
sketch2.SetAbsoluteAxisData arrayOfVariantOfDouble2
part1.InWorkObject = sketch2
Set factory2D2 = sketch2.OpenEdition()
Set geometricElements2 = sketch2.GeometricElements
Set axis2D2 = geometricElements2.Item("绝对轴")
Set line2D3 = axis2D2.GetItem("横向")
line2D3.ReportName = 1
Set line2D4 = axis2D2.GetItem("纵向")
line2D4.ReportName = 2
Set ellipse2D2 = factory2D2.CreateClosedEllipse(0.000000, 0.000000, 100.000000, 30.000000, 104.403065, 22.044853)
Set point2D3 = axis2D2.GetItem("原点")
ellipse2D2.CenterPoint = point2D3
ellipse2D2.ReportName = 3
sketch2.CloseEdition
part1.InWorkObject = sketch2
part1.UpdateObject sketch2
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(1.000000, 2.000000, 3.000000)
Set reference8 = part1.CreateReferenceFromObject(sketch1)
Set hybridShapeExtremum1 = hybridShapeFactory1.AddNewExtremum(reference8, hybridShapeDirection1, 1)
body1.InsertHybridShape hybridShapeExtremum1
part1.InWorkObject = hybridShapeExtremum1
part1.Update
Set hybridShapeDirection2 = hybridShapeFactory1.AddNewDirectionByCoord(1.000000, 2.000000, 3.000000)
Set reference9 = part1.CreateReferenceFromObject(sketch2)
Set hybridShapeExtremum2 = hybridShapeFactory1.AddNewExtremum(reference9, hybridShapeDirection2, 1)
body1.InsertHybridShape hybridShapeExtremum2
part1.InWorkObject = hybridShapeExtremum2
part1.Update
Set shapeFactory1 = part1.ShapeFactory
Set loft1 = shapeFactory1.AddNewLoft()
Set hybridShapeLoft1 = loft1.HybridShape
hybridShapeLoft1.SectionCoupling = 3
hybridShapeLoft1.Relimitation = 1
hybridShapeLoft1.CanonicalDetection = 2
Set reference10 = part1.CreateReferenceFromObject(sketch1)
hybridShapeLoft1.AddSectionToLoft reference10, 1, Nothing
Set reference11 = part1.CreateReferenceFromObject(sketch2)
hybridShapeLoft1.AddSectionToLoft reference11, 1, Nothing
part1.InWorkObject = hybridShapeLoft1
part1.Update
set reference26=hybridShapes1.Item("多截面实体.1")
Set TheSPAWorkbench=CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set TheMeasurable=TheSPAWorkbench.GetMeasurable(reference26)
AVolume = TheMeasurable.Volume
End Sub

【说明】:
(1)上面的程序通过AVolume变量获得了体积值,如果需要在CATIA中显示出来,则需要借助Msgbox。在Visual Basic编程中,可以传递给相关变量。
(2)如果通过宏程序在Part中生成了实体,但没有“更新”实体,其测量会报错!
(3)如果要对“零件几何体”进行体积测量,以下给出范例程序:

Set objPart=CATIA.ActiveDocument.Part
Set objRef=objPart.CreateReferenceFromObject(objPart.Mainbody)
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(objRef)
LoftVolume = TheMeasurable.Volume
Msgbox LoftVolume

关于CATIA V5二次开发中实体“体积”测量的宏问题相关推荐

  1. CATIA V6二次开发——Automation之对象

    Automation之对象 1. 对象(Object) 1.1 聚合关系 1.2 抽象对象(Abstract object) 1.3 集合(Collection) 1.4 AnyObject 1. 对 ...

  2. 关于objectArx /CAD二次开发中“属性块”操作

    关于objectArx /CAD二次开发中"属性块"操作 属性块就是在图块上附加一些文字属性(Attribute),这些文字可以非常方便地修改.属性块被广泛应用在工程设计和机械设计 ...

  3. CATIA CAA 二次开发资料(PDF).rar

    05.16.02.MapInfo_MapX_Mobile_5.0-CYGiSO.zip aiss902.rar AutoNest_v1.6_for_AutoCAD.rar Catia CAA 编程示范 ...

  4. CATIA VBA二次开发(一)快速入门之宏脚本

    本文内容为作者原创,拒绝以任何形式转载. CATIA宏(Macro)是CATIA向用户提供的一种记录 .重放用户操作的工具(CATIAVBAProject也属于宏,本书中把VBAProject放在CA ...

  5. CATIA V6二次开发——Automation之属性和方法

    1.Automation之属性 属性是描述一个对象某个方面特性的值,这个值可能是对象,也可能是普通数据类型(整数.实数.字符串等). 比如 CATIA 中一个通过三个坐标值创建的点(HybridSha ...

  6. lisp陡坎程序_(终稿)毕业论文设计_Autolisp在CAD二次开发中的应用.doc(最终版)最新版...

    <毕业论文:Autolisp在CAD二次开发中的应用.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)毕业论文设计_Autolisp在CAD二次开发中的应用.doc(最终版) ...

  7. CATIA CAA二次开发专题(一)------明知山有虎

    开局:进军一个新领域 最近接到公司新的开发任务:基于DASSAULT  CATIA  CAA的二次开发,完成一个焊缝的生成和管理插件. 长期进行CATIA的授权管理软件开发,但是一直没有进行过CATI ...

  8. CATIA Drawing 二次开发

    CATIA Drawing 二次开发 解决零件投影 自动套图框 自动编号 自动投影的问题 using System; using System.Collections.Generic; using S ...

  9. python在abaqus二次开发_Python在ABAQUS二次开发中的应用实例2ppt

    PPT内容 这是Python在ABAQUS二次开发中的应用实例2ppt,包括了ABAQUS 脚本概述,Python 语言简介,ABAQUS脚本编写等内容,欢迎点击下载. 主要内容 一.ABAQUS 脚 ...

最新文章

  1. 基于 Prometheus、InfluxDB 与 Grafana 打造监控平台
  2. java hellowordk_Rhythmk 一步一步学 JAVA(4):Spring3 MVC 之 Hello Word
  3. Keepalived高可用集群来实现web服务器负载均衡集群
  4. 我感到惭愧不已的飞鸽传书
  5. 微信小程序|开发实战篇之十一---商品页面和购物车页面
  6. 【kafka】Attempted to write a non-default produerId at version 1
  7. PyTorch系列入门到精通——张量操作线性回归
  8. asp.net 模板页中 控件 ID和Name 的变化
  9. 【软工】第一次阅读作业
  10. PowerDesigner概念模型与物理模型相互转换及导出数据字典
  11. 小程序开发入门教程 一
  12. C++ map的基本和高级操作
  13. 另存为映射技术,异速联让导出导入更简单
  14. 裴礼文数学分析中的典型问题与方法第5章级数练习
  15. 日志管理系统,多种方式总结
  16. mov和mp4格式哪个好_Mac版dvd格式转换器哪个好用?Mac上最好用的dvd格式转换器推荐...
  17. 奇安信天擎卸载密码_【web安全】记奇安信“渗透测试”培训
  18. 如何把excel表格的数据导入到MATLAB中去
  19. Teigha绘制“月亮”形状
  20. 如何使用DD-WRT增强Wi-Fi网络信号并增加范围

热门文章

  1. 弘辽科技:淘宝宝贝访问量低该如何解决?影响访问量低的原因有?
  2. python数字转中文大写_Python 人民币数字转汉字表示 —— 大写金额
  3. JZOJ5953. 【NOIP2018模拟11.5A组】生死之境
  4. Java Springboot之数据库监控与预警
  5. Keil5中No Cortex-M4 SW Device Found 解决方法
  6. jwt私钥和公钥怎么获取_如何为php-jwt生成密钥对?
  7. Android Studio下载与安装
  8. U盘中毒之后打不开怎么办
  9. 如何设置BIOS使服务器停电来电后自动开机
  10. 关于采购订单价格错误导致移动平均价错误处理