Sets the custom scale for a layout or plot configuration.
Supported platforms: Windows only
VBA:
object.SetCustomScale Numerator, Denominator
Type: Layout, PlotConfiguration
The objects this method applies to.
Access: Input-only
Type: Double
A positive number representing the numerator in the scale ratio. This value represents the number of inches or mm for the scale.
Access: Input-only
Type: Double
A positive number representing the denominator in the scale ratio. This value represents the number of drawing units for the scale.
No return value.
The units for the Numerator parameter can be found in the PaperUnits property.
The Numerator and Denominator parameters must be greater than zero.
Changes made by this method will not be visible until after a regeneration of the drawing. Use the Regen method to regenerate the drawing.
VBA:
Sub Example_SetCustomScale()
' 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
' Identify whether inches or millimeters are being used.
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_SetCustomScale()
;; 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))
)