Gets the custom scale for a layout or plot configuration.
Supported platforms: Windows only
VBA:
object.GetCustomScale Numerator, Denominator
Type: Layout, PlotConfiguration
The objects this method applies to.
Access: Output-only
Type: Double
The numerator in the scale ratio. This value represents the number of inches or mm for the scale.
Access: Output-only
Type: Double
The denominator in the scale ratio. This value represents the number of drawing units for the scale.
No return value.
The Numerator parameter depends upon the setting of the PaperUnits property.
VBA:
Sub Example_GetCustomScale()
' This example will access the Layouts collection for the current drawing
' and list basic information about the custom scale for each Layout.
' It will then change the custom scale information for model space and re-display
' the scale information.
Dim Layouts As AcadLayouts, Layout As ACADLayout
Dim msg As String
Dim Numerator As Double, Denominator As Double
Dim Measurement As String
' Display current scale information
GoSub DISPLAY_SCALE_INFO
' Modify scale
Numerator = 1
Denominator = 1
ThisDrawing.Layouts("Model").SetCustomScale Numerator, Denominator
ThisDrawing.Regen acAllViewports
' Display new scale information
GoSub DISPLAY_SCALE_INFO
Exit Sub
DISPLAY_SCALE_INFO:
' Get layouts collection from document object
Set Layouts = ThisDrawing.Layouts
msg = vbCrLf & vbCrLf ' Start with a space
' Get the scale information of every layout in this drawing
For Each Layout In Layouts
msg = msg & Layout.name & vbCrLf
' Get scale information
Layout.GetCustomScale Numerator, Denominator
' Are we using inches or millimeters
Measurement = IIf(Layout.PaperUnits = acInches, " inch(es)", " millimeter(s)")
' Format for display
msg = msg & vbTab & "Contains " & Numerator & Measurement & vbCrLf
msg = msg & vbTab & "Contains " & Denominator & " drawing units" & vbCrLf
msg = msg & "_____________________" & vbCrLf
Next
' Display custom scale information
MsgBox "Custom scale information for the current drawing is: " & msg
Return
End Sub
Visual LISP:
(vl-load-com)
(defun c:Example_GetCustomScale()
;; This example will access the Layouts collection for the current drawing
;; and list basic information about the custom scale for each Layout.
;; It will then change the custom scale information for model space and re-display
;; the scale information.
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
;; Display current scale information
(setq Layouts (vla-get-Layouts doc))
(setq msg "")
;; Get the scale information of every layout in this drawing
(vlax-for Layout Layouts
(setq msg (strcat msg (vla-get-Name Layout) "\n"))
;; Get scale information
(vla-GetCustomScale Layout 'Numerator 'Denominator)
;; Are we using inches or millimeters
(setq Measurement (if (= (vla-get-PaperUnits Layout) acInches) " inch(es)\n" " millimeter(s)\n"))
;; Format for display
(setq msg (strcat msg " Contains " (rtos Numerator 2) Measurement
" Contains " (rtos Denominator 2) " drawing units\n"
"_____________________\n"))
)
;; Display custom scale information
(alert (strcat "Custom scale information for the current drawing is: " msg))
;; Modify scale
(setq Numerator 1
Denominator 1)
(vla-SetCustomScale (vla-Item (vla-get-Layouts doc) "Model") Numerator Denominator)
(vla-Regen doc acAllViewports)
;; Display new scale information
(setq Layouts (vla-get-Layouts doc))
(setq msg "")
;; Get the scale information of every layout in this drawing
(vlax-for Layout Layouts
(setq msg (strcat msg (vla-get-Name Layout) "\n"))
;; Get scale information
(vla-GetCustomScale Layout 'Numerator 'Denominator)
;; Are we using inches or millimeters
(setq Measurement (if (= (vla-get-PaperUnits Layout) acInches) " inch(es)\n" " millimeter(s)\n"))
;; Format for display
(setq msg (strcat msg " Contains " (rtos Numerator 2) Measurement
" Contains " (rtos Denominator 2) " drawing units\n"
"_____________________\n"))
)
;; Display custom scale information
(alert (strcat "Custom scale information for the current drawing is: " msg))
)