' COPYRIGHT DASSAULT SYSTEMES 2004 ' *********************************************************************** ' Purpose : This macro allows you to set the drafting print area ' from the mouse selection, then to visualize it. ' Author : TBU ' Languages : VBScript ' Locales : English ' CATIA Level : V5R14 ' *********************************************************************** Sub CATMain() ' Retrieve the active document Dim oDocument As Document Set oDocument = CATIA.ActiveDocument ' Test the document's type, if it is not a drawing document the macro stops If TypeName(oDocument) = "DrawingDocument" Then Dim oDrawingDocument As DrawingDocument Set oDrawingDocument = oDocument Else MsgBox "This macro can be run with a drawing document only." Exit Sub End If ' Retrieve the active sheet of the document Dim oSheet As DrawingSheet Set oSheet = oDrawingDocument.Sheets.ActiveSheet ' Retrieve the selection of the document Dim oSelection 'As Selection Set oSelection = oDrawingDocument.Selection ' Clear the selection oSelection.Clear ' Define the object type allowed to be selected, here a drawing point Dim InputObjectType(0) InputObjectType(0) = "Point2D" Dim ReturnStatus As String Dim oView As DrawingView Dim ObjectSelected As Boolean Dim iFirstPoint 'As Point 2D Dim oFirstPointRelative(1) Dim oFirstPointAbsolute(1) ' Retrieve the first point location to set the print area from the mouse selection ReturnStatus = oSelection.IndicateOrSelectElement2D("Select the first point", InputObjectType, True, True, False, ObjectSelected, oFirstPointAbsolute) ' Test of the selection content from the ObjectSelected value If ObjectSelected = True Then ' A drawing point has been selected ' Retrieve the drawing point object Set iFirstPoint = oSelection.Item(1).Value ' Retrieve the drawing point's view form the FindObject method of the selection Set oView = oSelection.FindObject("CATIADrawingView") ' Retrieve the drawing point's coordinates, ' these coordinates are defined from the view's reference axis iFirstPoint.GetCoordinates oFirstPointRelative ' Compute the drawing point's coordinates according to the sheet's reference axis CatAbsoluteCoordinates oView, oFirstPointAbsolute, oFirstPointRelative End If oSelection.Clear Dim iSecondPoint 'As Point2D Dim oSecondPointRelative(1) Dim oSecondPointAbsolute(1) ' Retrieve the second point location to set the print area from the mouse selection ReturnStatus = oSelection.IndicateOrSelectElement2D("Select the second point", InputObjectType, True, True, False, oSecondPointAbsolute, WindowsLocation) If ObjectSelected = True Then ' A drawing point has been selected ' Retrieve the drawing point object Set iSecondPoint = oSelection.Item(1).Value ' Retrieve the drawing point's view form the FindObject method of the selection Set oView = oSelection.FindObject("CATIADrawingView") ' Retrieve the drawing point's coordinates, ' these coordinates are defined from the view's reference axis iSecondPoint.GetCoordinates oSecondPointRelative ' Compute the drawing point's coordinates according to the sheet's reference axis CatAbsoluteCoordinates oView, oSecondPointAbsolute, oSecondPointRelative End If oSelection.Clear ' Define the coordinates of the print area's point Dim XPrintArea As Double Dim YPrintArea As Double If oFirstPointAbsolute(0) > oSecondPointAbsolute(0) Then XPrintArea = oSecondPointAbsolute(0) Else XPrintArea = oFirstPointAbsolute(0) End If If oFirstPointAbsolute(1) > oSecondPointAbsolute(1) Then YPrintArea = oSecondPointAbsolute(1) Else YPrintArea = oFirstPointAbsolute(1) End If Dim WidthPrintArea As Double Dim HeightPrintArea As Double ' Define the width and height of the print area WidthPrintArea = Abs(oSecondPointAbsolute(0) - oFirstPointAbsolute(0)) HeightPrintArea = Abs(oSecondPointAbsolute(1) - oFirstPointAbsolute(1)) ' Define and activate the print area of the drawing document Dim oPrintArea As PrintArea Set oPrintArea = oSheet.PrintArea oPrintArea.SetArea XPrintArea, YPrintArea, WidthPrintArea, HeightPrintArea oPrintArea.ActivationState = True ' Run the "Visualize Print Area" command from its id, the sheet must be selected before ! oSelection.Add oSheet CATIA.StartCommand "CATDrwVisualizePrintAreaHdr" oSelection.Clear End Sub Private Sub CatAbsoluteCoordinates(CatDrawingView As Object, AbsoluteCoordinates(), RelativeCoordinates()) ' Compute the coordinates of a point in a view according to the sheet's reference axis ' Location, Angle and Scale factor of the view are take into account AbsoluteCoordinates(0) = CatDrawingView.xAxisData + (RelativeCoordinates(0) * Cos(CatDrawingView.Angle) - RelativeCoordinates(1) * Sin(CatDrawingView.Angle)) * CatDrawingView.Scale2 AbsoluteCoordinates(1) = CatDrawingView.yAxisData + (RelativeCoordinates(0) * Sin(CatDrawingView.Angle) + RelativeCoordinates(1) * Cos(CatDrawingView.Angle)) * CatDrawingView.Scale2 End Sub