CATIA 视角操作
' COPYRIGHT DASSAULT SYSTEMES 2002
Option Explicit
' ***********************************************************************
' Purpose : Change viewpoint to an engineering view defined by a series of parameters.
' This macro is a sample: the presented engineering view has to be reworked knowing industrial standards.
' Assumptions : A CATProduct document should be active.
' Author :
' Languages : VBScript
' Locales : English
' CATIA Level : V5R7
' ***********************************************************************
Sub CATMain()
' Parameters
Const Front = 0
Const Back = 1
Const Right = 2
Const Left = 3
Const Bottom = 4
Const Top = 5
Const Iso = 6
Const Custom = 7
Const Sight = 0
Const Up = 1
Const X = 0
Const Y = 1
Const Z = 2
Dim StdDirection(7,1,2)
StdDirection(Front , Sight, X) = 1.
StdDirection(Front , Sight, Y) = 0.
StdDirection(Front , Sight, Z) = 0.
StdDirection(Front , Up , X) = 0.
StdDirection(Front , Up , Y) = 0.
StdDirection(Front , Up , Z) = 1.
StdDirection(Back , Sight, X) = -1.
StdDirection(Back , Sight, Y) = 0.
StdDirection(Back , Sight, Z) = 0.
StdDirection(Back , Up , X) = 0.
StdDirection(Back , Up , Y) = 0.
StdDirection(Back , Up , Z) = 1.
StdDirection(Right , Sight, X) = 0.
StdDirection(Right , Sight, Y) = 1.
StdDirection(Right , Sight, Z) = 0.
StdDirection(Right , Up , X) = 0.
StdDirection(Right , Up , Y) = 0.
StdDirection(Right , Up , Z) = 1.
StdDirection(Left , Sight, X) = 0.
StdDirection(Left , Sight, Y) = -1.
StdDirection(Left , Sight, Z) = 0.
StdDirection(Left , Up , X) = 0.
StdDirection(Left , Up , Y) = 0.
StdDirection(Left , Up , Z) = 1.
StdDirection(Bottom, Sight, X) = 0.
StdDirection(Bottom, Sight, Y) = 0.
StdDirection(Bottom, Sight, Z) = 1.
StdDirection(Bottom, Up , X) = 0.
StdDirection(Bottom, Up , Y) = 1.
StdDirection(Bottom, Up , Z) = 0.
StdDirection(Top , Sight, X) = 0.
StdDirection(Top , Sight, Y) = 0.
StdDirection(Top , Sight, Z) = -1.
StdDirection(Top , Up , X) = 0.
StdDirection(Top , Up , Y) = 1.
StdDirection(Top , Up , Z) = 0.
StdDirection(Iso , Sight, X) = -1./ Sqr(3)
StdDirection(Iso , Sight, Y) = -1./ Sqr(3)
StdDirection(Iso , Sight, Z) = -1./ Sqr(3)
StdDirection(Iso , Up , X) = -1./ Sqr(6)
StdDirection(Iso , Up , Y) = -1./ Sqr(6)
StdDirection(Iso , Up , Z) = 2./ Sqr(6)
StdDirection(Custom, Sight, X) = -1./ Sqr(2)
StdDirection(Custom, Sight, Y) = -1./ Sqr(2)
StdDirection(Custom, Sight, Z) = 0.
StdDirection(Custom, Up , X) = 0.
StdDirection(Custom, Up , Y) = 0.
StdDirection(Custom, Up , Z) = 1.
' Engineering view do display
Dim iIndView As Integer
iIndView = Custom ' <==== To be changed on the different macros ====
' Get the viewer
Dim oViewer As Viewer
Set oViewer = CATIA.ActiveWindow.ActiveViewer
' Get the viewpoint
Dim oViewpoint As Viewpoint3D
Set oViewpoint = oViewer.Viewpoint3D
' Get the current parameters
Dim Origin(2)
oViewpoint.GetOrigin Origin
Dim SightDirection(2)
oViewpoint.GetSightDirection SightDirection
Dim Focus As Double
Focus = oViewpoint.FocusDistance
' Compute the new parameters
Dim StdSightDirection(2)
Dim StdUpDirection(2)
Dim I As Integer
For I = 0 to 2
StdSightDirection(I) = StdDirection(iIndView,Sight,I)
StdUpDirection(I) = StdDirection(iIndView,Up,I)
Origin(I) = Origin(I) + Focus*(SightDirection(I) - StdSightDirection(I))
Next
' Change the viewpoint
oViewpoint.PutOrigin Origin
oViewpoint.PutSightDirection StdSightDirection
oViewpoint.PutUpDirection StdUpDirection
oViewpoint.ProjectionMode = catProjectionCylindric
' Update the viewer
oViewer.Update
Set oViewpoint = Nothing
Set oViewer = Nothing
End Sub