Module: Autocad

Defined in:
lib/autocad.rb,
lib/autocad.rb,
lib/autocad.rb,
lib/autocad/app.rb,
lib/autocad/arc.rb,
lib/faa/cleanup.rb,
lib/autocad/line.rb,
lib/autocad/plot.rb,
lib/autocad/text.rb,
lib/autocad/block.rb,
lib/autocad/layer.rb,
lib/autocad/model.rb,
lib/autocad/mtext.rb,
lib/autocad/paths.rb,
lib/autocad/point.rb,
lib/autocad/errors.rb,
lib/autocad/layout.rb,
lib/autocad/spline.rb,
lib/autocad/drawing.rb,
lib/autocad/element.rb,
lib/autocad/element.rb,
lib/autocad/element.rb,
lib/autocad/element.rb,
lib/autocad/element.rb,
lib/autocad/element.rb,
lib/autocad/element.rb,
lib/autocad/point3d.rb,
lib/autocad/version.rb,
lib/autocad/viewport.rb,
lib/autocad/dim_style.rb,
lib/autocad/pviewport.rb,
lib/autocad/enumerator.rb,
lib/autocad/text_style.rb,
lib/autocad/bounding_box.rb,
lib/autocad/event_handler.rb,
lib/autocad/selection_set.rb,
lib/autocad/block_reference.rb,
lib/autocad/selection_filter.rb,
lib/autocad/plot_configuration.rb,
lib/autocad/selection_set_adapter.rb

Overview

rbs_inline: enabled

Defined Under Namespace

Modules: AcadEntity, Color, Common, ElementTrait, ModelTrait Classes: App, Arc, Attribute, AttributeReference, Attributes, BSplineCurve, BSplineSurface, Block, BlockReference, BoundingBox, Circle, DimStyle, Drawing, DrawingClose, DrawingError, Element, Ellipse, Enumerator, EventHandler, ExistingFile, ExternalReference, FileNotFound, Layer, Layout, Line, Linetype, MText, ModelSpace, PViewport, PaperSpace, Paths, Plot, PlotConfiguration, Point, Point3d, Polyline, SelectionFilter, SelectionSet, SelectionSetAdapter, Spline, Text, TextStyle, Viewport

Constant Summary collapse

ROOT =
Pathname.new(__dir__).parent
Error =
Class.new(::RuntimeError)
NonDGNFile =
Class.new(Error)
MultipleUpdateError =
Class.new(Error)
VERSION =
"0.5"

Class Method Summary collapse

Class Method Details

.color_to_index(color) ⇒ Object

Convert a color value (symbol, string, or integer) to an AutoCAD color index



107
108
109
110
# File 'lib/autocad.rb', line 107

def self.color_to_index(color)
  return color if color.is_a?(Integer)
  Color.to_index(color)
end

.dgn2pdf(dir_or_file, outdir: dir_or_file, mode: :dir) ⇒ Object

Convert DGN/DWG files to PDF

Raises:

  • (RuntimeError)

    Invalid mode



130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/autocad.rb', line 130

def dgn2pdf(dir_or_file, outdir: dir_or_file, mode: :dir)
  raise "Mode on of :dir or :file" unless [:dir, :file].include? mode
  if mode == :dir
    drawings = drawings_in_dir(dir_or_file)
    with_drawings(drawings) do |drawing|
      drawing.save_as_pdf(name: drawing.name, dir: outdir)
    end
  else
    open_drawing(dir_or_file) do |drawing|
      drawing.save_as_pdf(name: drawing.name, dir: outdir)
    end
  end
end

.drawings_in_dir(dir) ⇒ Object

Find drawings in directory



223
224
225
226
# File 'lib/autocad.rb', line 223

def drawings_in_dir(dir)
  dirpath = Pathname.new(dir).expand_path
  dirpath.glob("*.d{gn,wg,xf}").sort_by { _1.basename(".*").to_s.downcase }
end

.open_drawing(drawing) ⇒ Object

Open single drawing



231
232
233
# File 'lib/autocad.rb', line 231

def open_drawing(drawing, ...)
  App.open_drawing(drawing, ...)
end

.rootObject



120
121
122
# File 'lib/autocad.rb', line 120

def root
  ROOT
end

.runObject



115
116
117
# File 'lib/autocad.rb', line 115

def run(...)
  App.run(...)
end

.save_current_drawing(dir, exit: true, model: false) ⇒ Object

Save current drawing with options



190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/autocad.rb', line 190

def save_current_drawing(dir, exit: true, model: false)
  if exit
    run do |app|
      drawing = app.current_drawing
      return unless drawing
      drawing.copy(dir: dir)
      drawing.save_as_pdf(dir:, model:)
      drawing.close(false)
    end
  else
    app = App.new
    drawing = app.current_drawing
    return unless drawing
    drawing.copy(dir: dir)
    drawing.save_as_pdf(dir: dir)
    app
  end
end

.save_current_drawing_as_pdf(dir) ⇒ Object

Save current drawing as PDF



212
213
214
215
216
217
218
# File 'lib/autocad.rb', line 212

def save_current_drawing_as_pdf(dir)
  App.run do |app|
    drawing = app.current_drawing
    drawing.save_as_pdf(dir: dir)
    drawing.close
  end
end

.save_open_drawings(dir: Pathname.getwd, exit: true, model: false) ⇒ Object

Save all open drawings



161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'lib/autocad.rb', line 161

def save_open_drawings(dir: Pathname.getwd, exit: true, model: false)
  if exit
    run do |app|
      return unless app.has_drawings?
      drawings = app.drawings
      drawings.each do |d|
        d.copy(dir:)
        d.save_as_pdf(dir:, model:)
        d.close(false)
      end
    end
  else
    app = App.new
    return unless app.has_drawings?
    drawings = app.drawings
    drawings.each do |d|
      d.copy(dir:)
      d.save_as_pdf(dir:, model:)
      # d.close(false)
    end
    app
  end
end

.with_drawingsObject

Process multiple drawings



244
245
246
# File 'lib/autocad.rb', line 244

def with_drawings(...)
  App.with_drawings(...)
end

.with_drawings_in_dir(dir) ⇒ Object

Process drawings in directory



252
253
254
255
# File 'lib/autocad.rb', line 252

def with_drawings_in_dir(dir, ...)
  drawings = drawings_in_dir(dir)
  with_drawings(drawings, ...)
end

.with_open_drawingsObject

Process currently open drawings



147
148
149
150
151
152
153
154
# File 'lib/autocad.rb', line 147

def with_open_drawings(...)
  run do |app|
    return unless app.has_drawings?
    app.drawings.each do |drawing|
      yield drawing
    end
  end
end