Class: Layout::Document

Inherits:
Object
  • Object
show all

Overview

This is the interface to a LayOut document. A Document is the 2D drawing that the user is working with, and it serves as the 鈥渆ntry point鈥� for most Ruby API interactions. The Document.open method gives you a handle to a Document, and from there you can use the document-level methods to start getting information and making changes.

Examples:

# Grab a handle to an existing LayOut document.
doc = Layout::Document.open("C:/path/to/document.layout")

# Grab other handles to commonly used collections inside the model.
layers = doc.layers
pages = doc.pages
entities = doc.shared_entities

# Now that we have our handles, we can start pulling objects and making
# method calls that are useful.
first_entity = entities[0]

number_pages = pages.count

Version:

  • LayOut 2018

Constant Summary #

Layout::Document::VERSION_1
Layout::Document::VERSION_2
Layout::Document::VERSION_3
Layout::Document::VERSION_2013
Layout::Document::VERSION_2014
Layout::Document::VERSION_2015
Layout::Document::VERSION_2016
Layout::Document::VERSION_2017
Layout::Document::VERSION_2018
Layout::Document::VERSION_2019
Layout::Document::VERSION_CURRENT
Layout::Document::FRACTIONAL_INCHES
Layout::Document::DECIMAL_INCHES
Layout::Document::DECIMAL_FEET
Layout::Document::DECIMAL_MILLIMETERS
Layout::Document::DECIMAL_CENTIMETERS
Layout::Document::DECIMAL_METERS
Layout::Document::DECIMAL_POINTS

Class Method Summary # collapse

Instance Method Summary # collapse

Constructor Details

↑ #initialize ⇒ Layout::Document #initialize(template_path) ⇒ Layout::Document

The #initialize method creates a new Layout::Document. Passing a path to an existing Layout::Document will use that file as a template. The new Layout::Document won't have a path until it is saved for the first time.

Examples:

doc = Layout::Document.new
doc2 = Layout::Document.new("/path/to/template.layout")

Overloads:

Raises:

  • (RuntimeError) —

    if there was an error reading the template file

  • (ArgumentError) —

    if the template file could not be found

Version:

  • LayOut 2018

Class Method Details

↑ .open(path) ⇒ Layout::Document

The open method creates a new Layout::Document by loading an existing .layout file.

Examples:

filename = File.join(ENV['Home'], 'Desktop', 'template.layout')
doc = Layout::Document.open(filename)

Parameters:

  • path (String) —

    The path to the .layout file on disk.

Returns:

Raises:

  • (ArgumentError) —

    if the file does not exist

Version:

  • LayOut 2018

Instance Method Details

↑ #==(other) ⇒ Boolean

The #== method checks to see if the two Layout::Documents are equal. This checks whether the Ruby Objects are pointing to the same internal object.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
document = doc.pages.first.document
doc == document

Parameters:

Returns:

  • (Boolean)

Version:

  • LayOut 2018

↑ #add_entity(entity, layer, page) ⇒ Object #add_entity(entity, layer) ⇒ Object

The #add_entity method adds an Entity to the Layout::Document and places it on the given Layer and Page. If layer is a shared Layer then page may be ommitted. The Entity must not already belong to a Layout::Document. If the Entity is a Group, then the Group along with all of its children will be added to the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
rect = Layout::Rectangle.new([[1, 1], [2, 2]])
all_layers = doc.layers
all_pages = doc.pages
doc.add_entity(rect, all_layers.first, all_pages.first)

Overloads:

Raises:

  • (ArgumentError) —

    if no Page is passed in and layer is non-shared

  • (ArgumentError) —

    if page does not belong to the Layout::Document

  • (ArgumentError) —

    if layer does not belong to the Layout::Document

  • (ArgumentError) —

    if entity already belongs to a Layout::Document

Version:

  • LayOut 2018

↑ #auto_text_definitions ⇒ Layout::AutoTextDefinitions

The #auto_text_definitions method returns an array of AutoTextDefinition's in the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
defs = doc.auto_text_definitions

Returns:

Version:

  • LayOut 2018

↑ #grid ⇒ Layout::Grid

The #grid method returns the Grid for a Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
grid = doc.grid

Returns:

Version:

  • LayOut 2018

↑ #grid_snap_enabled=(enabled) ⇒ Object

The #grid_snap_enabled= method sets whether or not grid snap is enabled in the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
doc.grid_snap_enabled = true

Parameters:

  • enabled (Boolean) —

    true for enabled false for disabled

Version:

  • LayOut 2018

↑ #grid_snap_enabled? ⇒ Boolean

The #grid_snap_enabled? method returns whether or not grid snap is enabled in the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
enabled = doc.grid_snap_enabled?

Returns:

  • (Boolean)

Version:

  • LayOut 2018

↑ #layers ⇒ Layout::Layers

The #layers method returns the Layers of the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
layers = doc.layers

Returns:

Version:

  • LayOut 2018

↑ #object_snap_enabled=(enabled) ⇒ Object

The #object_snap_enabled= method enables or disables inference in the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
doc.object_snap_enabled = false

Parameters:

  • enabled (Boolean) —

    true for enabled false for disabled

Version:

  • LayOut 2018

↑ #object_snap_enabled? ⇒ Boolean

The #object_snap_enabled? method returns whether or not inference is enabled in the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
enabled = doc.object_snap_enabled?

Returns:

  • (Boolean)

Version:

  • LayOut 2018

↑ #page_info ⇒ Layout::PageInfo

The #page_info method returns a reference to the PageInfo settings of the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
page_info = doc.page_info

Returns:

Version:

  • LayOut 2018

↑ #pages ⇒ Layout::Pages

The #pages method returns the Pages of the Layout::Document.

@example:

doc = Layout::Document.open("C:/path/to/document.layout")
doc_pages = doc.pages

Returns:

Version:

  • LayOut 2018

↑ #path ⇒ String

The #path method returns the full path of the Layout::Document file. An empty string is returned for a new Layout::Document (one which has not been saved and opened).

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
path = doc.path

Returns:

Version:

  • LayOut 2018

↑ #precision ⇒ Float

The #precision method returns the precision for the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
precision = doc.precision

Returns:

Version:

  • LayOut 2018

↑ #precision=(precision) ⇒ Object

Note:

LayOut only allows for a finite set of precision values for each units setting, so it will set the precision to the closest valid setting for the specified units. See the 鈥淯nits鈥� section of LayOut's 鈥淒ocument Setup鈥� dialog for a reference of the available precisions for each units setting.

The #precision= method sets the precision for the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
doc.precision = 0.0001

Parameters:

  • precision (Float) —

    The double specifying the precision for the Layout::Document

Version:

  • LayOut 2018

↑ #remove_entity(entity) ⇒ Object

The #remove_entity method removes an Entity from the Layout::Document. If entity is a Group, then the Group and all of its children will be removed from the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
shared_entities = doc.shared_entities
# Remove the first entity in the document
doc.remove_entity(shared_entities.first)

Parameters:

Raises:

Version:

  • LayOut 2018

↑ #save ⇒ Object #save(path, version = Layout::Document::VERSION_CURRENT) ⇒ Object

The #save method saves the Layout::Document to a file at the given path. Passing an empty path string will save the Layout::Document at its current path.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
# Save the model using the current Layout format
filename = File.join(ENV['Home'], 'Desktop', 'mydoc.layout')
status = doc.save(filename)
# Save the document to the current file using the current LayOut format
status = doc.save
# Save the document to the current file in LayOut 3 format
status = doc.save(Layout::Document::VERSION_3)
# Save the document in LayOut 2013 format
filename = File.join(ENV['Home'], 'Desktop', 'mydoc_v2013.layout')
status = doc.save(filename, Layout::Document::VERSION_2013)

Overloads:

  • #save ⇒ Object

    Raises:

  • #save(path, version = Layout::Document::VERSION_CURRENT) ⇒ Object

    Parameters:

    • path (String) —

      The path to the .layout file on disk.

    • version (Integer) (defaults to: Layout::Document::VERSION_CURRENT) —

      LayOut file format to save.

Raises:

  • (ArgumentError) —

    if version is not a valid version

Version:

  • LayOut 2018

↑ #shared_entities ⇒ Layout::Entities

The #shared_entities method returns the Entities that exist on shared Layers in the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
entities = doc.shared_entities

Returns:

Version:

  • LayOut 2018

↑ #time_created ⇒ Time

The #time_created method returns the time when the Layout::Document was created.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
created_time = doc.time_created

Returns:

Version:

  • LayOut 2018

↑ #time_modified ⇒ Time

The #time_modified method returns the last time the Layout::Document was modified.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
mod_time = doc.time_modified

Returns:

Version:

  • LayOut 2018

↑ #time_published ⇒ Time

The #time_published method returns the time when the Layout::Document was published.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
pub_time = doc.time_published

Returns:

Version:

  • LayOut 2018

↑ #units ⇒ Integer

The #units method returns the units for the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
units = doc.units

Returns:

Version:

  • LayOut 2018

↑ #units=(units_format) ⇒ Object

The #units= method sets the units for the Layout::Document.

Examples:

doc = Layout::Document.open("C:/path/to/document.layout")
units_format = LAYOUT::DOCUMENT::DECIMAL_MILLIMETERS
doc.units = units_format

Parameters:

Raises:

  • (ArgumentError) —

    if units format is not a valid format

Version:

  • LayOut 2018