You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CATIA的VB/VBA宏中创建Far点而非Near点

CATIA VB.NET宏创建Far点的解决方案

我在编写CATIA VB.NET宏时,无法创建Far点。尝试录制宏时,无论操作如何,都只生成创建Near点的代码;查阅官方文档也仅提及AddNewNear方法,找不到对应的Far点创建接口。甚至手动将Near点改为Far点后录制宏,得到的代码依然是创建另一个Near点。

原宏代码片段:

' 创建点
Dim hybridShapePointCoord1 As HybridShapePointCoord = hybridShapeFactory1.AddNewPointCoord(0#, 0#, 10.0#)
hybridBody1.AppendHybridShape(hybridShapePointCoord1)
part.InWorkObject = hybridShapePointCoord1
part.Update()

' 创建直线
Dim referencePoint1 As Reference = part.CreateReferenceFromObject(hybridShapePointCoord1)
Dim hybridShapeDirection1 As HybridShapeDirection = hybridShapeFactory1.AddNewDirectionByCoord(0#, 0#, 1.0#)
Dim hybridShapeLinePtDir1 As HybridShapeLinePtDir = hybridShapeFactory1.AddNewLinePtDir(referencePoint1, hybridShapeDirection1, -100.0#, 100.0#, False)
hybridBody1.AppendHybridShape(hybridShapeLinePtDir1)
part.InWorkObject = hybridShapeLinePtDir1
part.Update()

' 创建交线
Dim referenceLine As Reference = part.CreateReferenceFromObject(hybridShapeLinePtDir1)
Dim referenceBody As Reference = part.CreateReferenceFromObject(body)
Dim hybridShapeIntersection1 As HybridShapeIntersection = hybridShapeFactory1.AddNewIntersection(referenceLine, referenceBody)
hybridShapeIntersection1.PointType = 0 ' 根据需要调整
hybridBody1.AppendHybridShape(hybridShapeIntersection1)
part.InWorkObject = hybridShapeIntersection1
part.Update()

' 创建Near点
Dim referenceIntersection As Reference
referenceIntersection = part.CreateReferenceFromObject(hybridShapeIntersection1)

Dim hybridShapeNear1 As HybridShapeNear
hybridShapeNear1 = hybridShapeFactory1.AddNewNear(referenceIntersection, referencePoint1)

hybridBody1.AppendHybridShape(hybridShapeNear1)

Dim hybridShapeNear2 As HybridShapeNear
hybridShapeNear2 = hybridShapeFactory1.AddNewNear(referenceIntersection, referencePoint1)

hybridBody1.AppendHybridShape(hybridShapeNear2)

手动修改Near为Far后录制的宏代码:

Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim hybridShapeFactory1 As HybridShapeFactory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item("Some Geoset")

Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = hybridBody1.HybridShapes

Dim hybridShapeIntersection1 As HybridShapeIntersection
Set hybridShapeIntersection1 = hybridShapes1.Item("Intersect.1")

Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromObject(hybridShapeIntersection1)

Dim hybridShapePointCoord1 As HybridShapePointCoord
Set hybridShapePointCoord1 = hybridShapes1.Item("Point.13")

Dim reference2 As Reference
Set reference2 = part1.CreateReferenceFromObject(hybridShapePointCoord1)

Dim hybridShapeNear1 As HybridShapeNear
Set hybridShapeNear1 = hybridShapeFactory1.AddNewNear(reference1, reference2)

hybridBody1.AppendHybridShape hybridShapeNear1

part1.InWorkObject = hybridShapeNear1

part1.Update

Set partDocument1 = CATIA.ActiveDocument

partDocument1.Save

End Sub

解决方案

CATIA的API中,Near点和Far点共用HybridShapeNear对象,只需修改其Orientation属性即可切换类型:

  • 属性值0:创建Near点(默认)
  • 属性值1:创建Far点

修改后的代码示例(替换原代码中创建Near点的部分):

' 创建Far点
Dim referenceIntersection As Reference
referenceIntersection = part.CreateReferenceFromObject(hybridShapeIntersection1)

' 第一个Far点
Dim hybridShapeFar1 As HybridShapeNear
hybridShapeFar1 = hybridShapeFactory1.AddNewNear(referenceIntersection, referencePoint1)
hybridShapeFar1.Orientation = 1 ' 设置为Far点
hybridBody1.AppendHybridShape(hybridShapeFar1)

' 第二个Far点
Dim hybridShapeFar2 As HybridShapeNear
hybridShapeFar2 = hybridShapeFactory1.AddNewNear(referenceIntersection, referencePoint1)
hybridShapeFar2.Orientation = 1 ' 设置为Far点
hybridBody1.AppendHybridShape(hybridShapeFar2)

' 更新模型
part.InWorkObject = hybridShapeFar2
part.Update()

内容的提问来源于stack exchange,提问作者MadToolmaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:26:25