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)) )