Anda di halaman 1dari 138

Fundamentals

ActiveX Developer's Guide (ActiveX/VBA)

The ActiveX Developer's guide provides you with an overview of the main topics and workflows for
using the AutoCAD ActiveX Object Library and the Microsoft Visual Basic for Applications
Integrated Development Environment.

Tutorials
Basic
Tutorial: Design the Garden Path

Fundamentals
Introduction
AutoCAD ActiveX Technology

AutoCAD Visual Basic for Applications Interface

AutoCAD ActiveX and VBA Together

Using ActiveX Automation with the Microsoft .NET Framework

Sample Code

Migrating Automation Projects

ActiveX API History

More Information

Getting Started with VBA


Embedded and Global VBA Projects

Organizing Your Projects with the VBA Manager

Handling Your Macros

Editing Your Projects with the VBA IDE

Exercise: An Introduction to VBA

AutoCAD VBA Project Terms

More Information on the VBA IDE

Develop Applications with VBA


Forms in VBA

Handling Errors

Encrypting VBA Code Modules

Running a VBA Macro from a Toolbar or Menu


Automatically Loading a VBA Project

Automatically Running a VBA Macro

Automatically Opening the VBA IDE Whenever a Project Is Loaded

Working in a Zero Document State

Distributing Your Application

VBA Terminology

Resources
AutoCAD VBA Commands

AutoCAD VBA Related AutoLISP Functions

Visual LISP and ActiveX/VBA Comparison

Basics
Using ActiveX Automation
AutoCAD Object Model

Accessing the Object Hierarchy

Collection Objects

Properties and Methods

Parent Objects

Locating the Type Library

Using Variants in Methods and Properties

Using Other Programming Languages

Controlling the AutoCAD Environment


Opening, Saving, and Closing Drawings

Setting AutoCAD Preferences

Controlling the Application Window

Controlling the Drawing Windows

Resetting Active Objects

Setting and Returning System Variables

Drawing with Precision

Prompting for User Input

Accessing the AutoCAD Command Line

Working with No Documents Open

Importing Other File Formats

Exporting to Other File Formats


Creating and Editing Entities
Creating Objects

Working with Selection Sets

Modifying Objects

Assigning Layers, Colors, and Linetypes to Objects

Saving and Restoring Layer Settings

Adding Text to Drawings

Adding Dimensions and Tolerances


Dimensioning Concepts

Creating Dimensions

Editing Dimensions

Working with Dimension Styles

Dimensioning in Model Space and Paper Space

Creating Leaders and Annotation

Using Geometric Tolerances

Intermediate
Working in Three-Dimensional Space
Specifying 3D Coordinates

Defining a User Coordinate System

Converting Coordinates

Creating 3D Objects

Editing in 3D

Editing 3D Solids

Drawing and Organizational Techniques


Working with Raster Images

Using Blocks and Attributes

Using External References

Assigning and Retrieving Extended Data

Defining and Plotting Layouts


Model Space and Paper Space

Layouts

Viewports

Plotting Your Drawing

Registering Events
Events in AutoCAD

Event Handlers

Handling Application Level Events

Handling Document Level Events

Handling Object Level Events

Advanced
Customize Toolbars and Menus
MenuBar and MenuGroups Collections

Loading Menu Groups

Changing the Menu Bar

Creating and Editing Pull-Down and Shortcut Menus

Creating and Editing Toolbars

Creating Macros

Creating Status-Line Help for Menu Items and Toolbar Items

Adding Entries to the Right-Click Menu

Interacting with Other Applications and Windows APIs


Interacting with Visual LISP Applications

Interacting with Other Windows Applications

Accessing Windows APIs from VBA

About the AutoCAD ActiveX Technology (ActiveX)

AutoCAD® ActiveX® enables you to manipulate AutoCAD programmatically from within or outside
AutoCAD.

It does this by exposing AutoCAD objects to the “outside world.” Once these objects are exposed,
they can be accessed by many different programming languages and environments and by other
applications such as Microsoft® Word VBA or Excel VBA.

There are two advantages to implementing an ActiveX interface for AutoCAD:

 Programmatic access to AutoCAD drawings is opened up to many more programming


environments. Before ActiveX Automation, developers were limited to an AutoLISP® or C++
interface.
 Sharing data with other Windows® applications, such as Microsoft Excel and Word, is made
dramatically easier.
An object is the main building block of any ActiveX application. Each exposed object represents a
precise part of AutoCAD. There are many different types of objects in the AutoCAD ActiveX
interface. For example:
 Graphical objects such as lines, arcs, text, and dimensions are objects.
 Style settings such as linetypes and dimension styles are objects.
 Organizational structures such as layers, groups, and blocks are objects.
 The drawing displays such as view and viewport are objects.
 Even the drawing and the AutoCAD application are considered objects.

About the AutoCAD Visual Basic for Applications Interface (VBA/ActiveX)

Microsoft VBA is an object-oriented programming environment designed to provide rich


development capabilities similar to those of VB.NET.

The main difference between VBA and VB is that VBA runs in the same process space as
AutoCAD, providing an AutoCAD-intelligent and very fast programming environment.

VBA also provides application integration with other VBA-enabled applications. This means that
AutoCAD, using other application object libraries, can be an Automation controller for other
applications such as Microsoft Word or Excel.

The standalone development editions of VB.NET, which must be purchased separately,


complement AutoCAD VBA with additional components, such as an external database engine and
report-writing capabilities.

There are four advantages to implementing VBA for AutoCAD:

 VBA and its environment are easy to learn and use.


 VBA runs in-process with AutoCAD. This translates to very fast program execution.
 Dialog box construction is quick and effective. This allows developers to prototype applications
and quickly receive feedback on designs.
 Projects can be standalone or embedded in drawings. This choice allows developers great
flexibility in the distribution of their applications.

About Using AutoCAD ActiveX and VBA Together (VBA/ActiveX)

The AutoCAD ActiveX/VBA interface represents several advantages over other AutoCAD API
environments.

The advantages that the AutoCAD ActiveX/VBA interface offer are:

 Speed. Running in-process with VBA, ActiveX applications are faster than AutoLISP applications.
 Ease of Use. The programming language and development environment are easy to use and
come installed with AutoCAD.
 Windows Interoperability. ActiveX and VBA are designed to be used with other Windows
applications and provide an excellent path for communication of information across applications.
 Rapid Prototyping. The rapid interface development of VBA provides the perfect environment for
prototyping applications, even if those applications will -eventually be developed in another
language.
 Programmer Base. AutoCAD ActiveX and VBA technology provide Visual Basic and VB.NET
programmers with the ability to customize AutoCAD and develop applications for it.

About Using ActiveX Automation with the Microsoft .NET Framework (ActiveX)

AutoCAD automation objects can be accessed from projects created with Microsoft® Visual
Studio®.

To fully access AutoCAD automation objects from Microsoft Visual Studio® .NET, create
references to the following files:

 The AutoCAD 2017 type library, acax21enu.tlb, located at C:\Program Files\Common


Files\Autodesk Shared.
 The AutoCAD/ObjectDBX Common 21.0 type library, axdb21enu.tlb, located at C:\Program
Files\Common Files\Autodesk Shared.
These references will make available the following primary interop assemblies:

 Autodesk.AutoCAD.Interop.dll (for AutoCAD-specific types and Autodesk)


 AutoCAD.Interop.Common.dll (for types shared by ObjectDBX™ host applications)
The interop assemblies are located in the global assembly cache; they map automation objects
to .NET counterparts.

After you reference the type libraries, you can declare AutoCAD-based variables in Microsoft
Visual Studio .NET, as in the following examples:

Dim objAcad As Autodesk.AutoCAD.Interop.AcadApplication

Dim objLine As Autodesk.AutoCAD.Interop.Common.AcadLine

You can load a .NET application using the NETLOAD command in AutoCAD.

Additional information about using a .NET application with AutoCAD is available from the
Developer Center section of the Autodesk website.

About Sample Code (VBA/ActiveX)

The ActiveX Developer and Reference topics contain over 800 example VBA subroutines that
demonstrate the usage of ActiveX methods, properties, and events.

There are also many sample applications provided in the AutoCAD Sample directory. These
sample applications show a wide range of functionality, from extracting AutoCAD drawing data into
Microsoft Excel spreadsheets to drawing and performing stress analysis on an electrical
transmission tower.

These samples also show how to combine the versatility of the Visual Basic for Applications
programming environment with the power of the AutoCAD ActiveX interface to create customized
applications.
Additionally, example code in the ActiveX Developer and Reference topics can be copied from the
Help files, pasted directly into the AutoCAD VBA environment, and then executed with one
requirement: the current active drawing in AutoCAD must be a blank drawing open to model
space.

About the Organization of the ActiveX Documentation (ActiveX)

The ActiveX related information is primarily written for those developing VBA applications for use
with AutoCAD.

The ActiveX topics assume that you have prior working knowledge of the Visual Basic
programming language, and does not attempt to duplicate or replace the abundance of
documentation available on the Internet or in books. If you need more information on the Visual
Basic and VB.NET programming languages or development environment usage, see the Visual
Basic for Applications Help file or the Visual Studio Help system developed by Microsoft, available
from the Help menus in the interactive development environments (IDEs).

If you are using ActiveX with a development environment other than VBA and a programming
language other than VB or VB.NET, you will need to adapt the information and example code that
is presented.

About How VBA Is Implemented in AutoCAD (VBA/ActiveX)

VBA sends messages to AutoCAD by the AutoCAD ActiveX Automation interface.

AutoCAD VBA permits the VBA environment to run simultaneously with AutoCAD and provides
programmatic control of AutoCAD through the ActiveX Automation interface. This coupling of
AutoCAD, ActiveX Automation, and VBA provides an extremely powerful interface not only for
manipulating AutoCAD objects, but for sending data to or retrieving data from other applications.

There are three fundamental elements that define ActiveX and VBA programming in AutoCAD.
The first is AutoCAD itself, which has a rich set of objects that encapsulates AutoCAD entities,
data, and commands. Because AutoCAD was designed as an open-architecture application with
multiple levels of interface, familiarity with AutoCAD programmability is highly desirable in order to
use VBA effectively. If you've used AutoLISP to control AutoCAD programmatically, you already
have a good understanding of the AutoCAD facilities. However, you will find the VBA object-based
approach to be quite different from that of AutoLISP.

The second element is the AutoCAD ActiveX Automation interface, which establishes messages
(communication) with AutoCAD objects. Programming in VBA requires a fundamental
understanding of ActiveX Automation. A description of the AutoCAD ActiveX Automation interface
can be found in the ActiveX and VBA Reference. Even the experienced VB programmer will find
the AutoCAD ActiveX Automation interface invaluable for understanding and developing AutoCAD
VBA applications.

The third element is the VBA programming environment, which has its own set of objects,
keywords, constants, and so forth that provides program flow, control, debugging, and execution.
Microsoft's own extensive Help for VBA is included with the AutoCAD VBA Help and is accessible
from the VBA IDE by any of the following methods:

 Pressing F1 on the keyboard


 Choosing Help from the VBA IDE menu bar
 Clicking the Question Mark icon on the VBA IDE toolbar

About How VBA Is Implemented in AutoCAD (VBA/ActiveX)

VBA sends messages to AutoCAD by the AutoCAD ActiveX Automation interface.

AutoCAD VBA permits the VBA environment to run simultaneously with AutoCAD and provides
programmatic control of AutoCAD through the ActiveX Automation interface. This coupling of
AutoCAD, ActiveX Automation, and VBA provides an extremely powerful interface not only for
manipulating AutoCAD objects, but for sending data to or retrieving data from other applications.

There are three fundamental elements that define ActiveX and VBA programming in AutoCAD.
The first is AutoCAD itself, which has a rich set of objects that encapsulates AutoCAD entities,
data, and commands. Because AutoCAD was designed as an open-architecture application with
multiple levels of interface, familiarity with AutoCAD programmability is highly desirable in order to
use VBA effectively. If you've used AutoLISP to control AutoCAD programmatically, you already
have a good understanding of the AutoCAD facilities. However, you will find the VBA object-based
approach to be quite different from that of AutoLISP.

The second element is the AutoCAD ActiveX Automation interface, which establishes messages
(communication) with AutoCAD objects. Programming in VBA requires a fundamental
understanding of ActiveX Automation. A description of the AutoCAD ActiveX Automation interface
can be found in the ActiveX and VBA Reference. Even the experienced VB programmer will find
the AutoCAD ActiveX Automation interface invaluable for understanding and developing AutoCAD
VBA applications.

The third element is the VBA programming environment, which has its own set of objects,
keywords, constants, and so forth that provides program flow, control, debugging, and execution.
Microsoft's own extensive Help for VBA is included with the AutoCAD VBA Help and is accessible
from the VBA IDE by any of the following methods:

 Pressing F1 on the keyboard


 Choosing Help from the VBA IDE menu bar
 Clicking the Question Mark icon on the VBA IDE toolbar

Acerca de cómo se implementa VBA en AutoCAD (VBA / ActiveX)


VBA envía mensajes a AutoCAD mediante la interfaz de AutoCAD ActiveX Automation.
AutoCAD VBA permite que el entorno de VBA se ejecute simultáneamente con AutoCAD y proporciona
control programático de AutoCAD a través de la interfaz de automatización ActiveX. Este acoplamiento de
AutoCAD, ActiveX Automation y VBA proporciona una interfaz extremadamente potente no solo para
manipular objetos de AutoCAD, sino también para enviar o recuperar datos de otras aplicaciones.
Hay tres elementos fundamentales que definen la programación de ActiveX y VBA en AutoCAD. El primero
es AutoCAD, que tiene un amplio conjunto de objetos que encapsula entidades, datos y comandos de
AutoCAD. Debido a que AutoCAD se diseñó como una aplicación de arquitectura abierta con múltiples
niveles de interfaz, la familiaridad con la programabilidad de AutoCAD es muy deseable para usar VBA de
manera efectiva. Si usó AutoLISP para controlar AutoCAD mediante programación, ya tiene una buena
comprensión de las instalaciones de AutoCAD. Sin embargo, encontrará que el enfoque basado en objetos
de VBA es bastante diferente del de AutoLISP.
El segundo elemento es la interfaz de AutoCAD ActiveX Automation, que establece mensajes
(comunicación) con objetos de AutoCAD. La programación en VBA requiere una comprensión fundamental
de la automatización ActiveX. Puede encontrar una descripción de la interfaz de AutoCAD ActiveX
Automation en la Referencia de ActiveX y VBA. Incluso el experimentado programador de VB encontrará
que la interfaz de AutoCAD ActiveX Automation es invaluable para comprender y desarrollar aplicaciones
de AutoCAD VBA.
El tercer elemento es el entorno de programación de VBA, que tiene su propio conjunto de objetos,
palabras clave, constantes, etc., que proporciona flujo, control, depuración y ejecución de programas. La
amplia Ayuda de Microsoft para VBA se incluye con la Ayuda de AutoCAD VBA y se puede acceder desde el
IDE de VBA por cualquiera de los siguientes métodos:
Presionando F1 en el teclado
Elegir ayuda de la barra de menú IDE de VBA
Hacer clic en el icono de signo de interrogación en la barra de herramientas IDE de VBA

About Interacting with Other Windows Applications (ActiveX)

AutoCAD® ActiveX technology allows you to exchange information easily with other ActiveX-
enabled applications such as Microsoft Excel or Microsoft Word.

This capability allows you to collect, store, and present AutoCAD information in formats other than
the AutoCAD drawing. You can also read information from these applications back into AutoCAD
to direct the creation or manipulation of AutoCAD objects. An example of using this technology is
to create a bill of materials as a Microsoft Excel spreadsheet from the objects in an AutoCAD
drawing.

You have already learned how to write code using the AutoCAD ActiveX Object Model.
Exchanging information with other ActiveX-enabled applications involves simply referencing the
other applications' ActiveX Object Model and writing the code necessary to utilize their objects.

Note: This chapter provides only a brief introduction to the capabilities of cross-application
programming. This material is not AutoCAD-specific, and as such it is discussed in both Microsoft
documentation and independent programming guides.

Acerca de la interacción con otras aplicaciones de Windows (ActiveX)


La tecnología AutoCAD® ActiveX le permite intercambiar información fácilmente con otras aplicaciones
habilitadas para ActiveX como Microsoft Excel o Microsoft Word.
Esta capacidad le permite recopilar, almacenar y presentar información de AutoCAD en formatos distintos
al dibujo de AutoCAD. También puede volver a leer la información de estas aplicaciones en AutoCAD para
dirigir la creación o manipulación de objetos de AutoCAD. Un ejemplo del uso de esta tecnología es crear
una lista de materiales como una hoja de cálculo de Microsoft Excel a partir de los objetos en un dibujo de
AutoCAD.
Ya aprendió a escribir código usando el Modelo de objetos AutoCAD ActiveX. El intercambio de
información con otras aplicaciones habilitadas para ActiveX implica simplemente hacer referencia al
modelo de objetos ActiveX de las otras aplicaciones y escribir el código necesario para utilizar sus objetos.
Nota: Este capítulo proporciona solo una breve introducción a las capacidades de la programación entre
aplicaciones. Este material no es específico de AutoCAD y, como tal, se trata en la documentación de
Microsoft y en guías de programación independientes.

Getting Started with VBA

About Embedded and Global VBA Projects (VBA/ActiveX)

An AutoCAD® VBA project is a collection of code modules, class modules, and forms that work
together to perform a given function. Projects can be stored within an AutoCAD drawing, or as a
separate file.

Embedded projects are stored within an AutoCAD drawing. These projects are automatically
loaded whenever the drawing in which they are contained is opened in AutoCAD, making the
distribution of projects very convenient. Embedded projects are limited and not able to open or
close AutoCAD drawings because they function only within the document where they reside.
Users of embedded projects are no longer required to find and load project files before they run a
program. A time log that is triggered when the drawing is opened is an example of a project
embedded in a drawing. With this macro users can log in and record the length of time they
worked on the drawing. The user does not have to remember to load the project before opening
the drawing; it simply is done automatically.

Global projects are stored in separate files and are more versatile because they can work in, open,
and close any AutoCAD drawing, but are not automatically loaded when a drawing is opened.
Users must know which project file contains the macro they need and then load that project file
before they can run the macro. However, global projects are easier to share with other users, and
they make excellent libraries for common macros. An example of a project you may store in a
project file is a macro that collects a bill of materials from many drawings. This macro can be run
by an administrator at the end of a work cycle and can collect information from many drawings.

At any given time, users can have both embedded and global projects loaded into their AutoCAD
session.

AutoCAD VBA projects are not binary compatible with standalone Visual Basic 6 or .NET projects.
However, the forms, modules, and classes can be exchanged between projects using the Import
and Export tools in the VBA IDE. The use of Visual Studio .NET to drive and customize AutoCAD
through COM Automation is supported.

Acerca de los proyectos integrados y globales de VBA (VBA / ActiveX)


Un proyecto AutoCAD® VBA es una colección de módulos de código, módulos de clase y formularios que
funcionan en conjunto para realizar una función determinada. Los proyectos se pueden almacenar dentro
de un dibujo de AutoCAD o como un archivo separado.
Los proyectos integrados se almacenan dentro de un dibujo de AutoCAD. Estos proyectos se cargan
automáticamente cada vez que se abre el dibujo en el que están contenidos en AutoCAD, lo que hace que
la distribución de proyectos sea muy conveniente. Los proyectos incrustados son limitados y no pueden
abrir o cerrar dibujos de AutoCAD porque funcionan solo dentro del documento donde residen. Los
usuarios de proyectos integrados ya no necesitan encontrar y cargar archivos de proyectos antes de
ejecutar un programa. Un registro de tiempo que se activa cuando se abre el dibujo es un ejemplo de un
proyecto incrustado en un dibujo. Con esta macro, los usuarios pueden iniciar sesión y registrar el tiempo
que trabajaron en el dibujo. El usuario no tiene que recordar cargar el proyecto antes de abrir el dibujo;
simplemente se hace automáticamente.
Los proyectos globales se almacenan en archivos separados y son más versátiles porque pueden trabajar,
abrir y cerrar cualquier dibujo de AutoCAD, pero no se cargan automáticamente cuando se abre un dibujo.
Los usuarios deben saber qué archivo de proyecto contiene la macro que necesitan y luego cargar ese
archivo de proyecto antes de que puedan ejecutar la macro. Sin embargo, los proyectos globales son más
fáciles de compartir con otros usuarios y hacen excelentes bibliotecas para macros comunes. Un ejemplo
de un proyecto que puede almacenar en un archivo de proyecto es una macro que recopila una lista de
materiales de muchos dibujos. Esta macro puede ser ejecutada por un administrador al final de un ciclo de
trabajo y puede recopilar información de muchos dibujos.
En cualquier momento dado, los usuarios pueden tener proyectos integrados y globales cargados en su
sesión de AutoCAD.
Los proyectos de AutoCAD VBA no son compatibles con binarios con proyectos independientes de Visual
Basic 6 o .NET. Sin embargo, los formularios, módulos y clases se pueden intercambiar entre proyectos
utilizando las herramientas Importar y Exportar en el IDE de VBA. El uso de Visual Studio .NET para
conducir y personalizar AutoCAD a través de la Automatización COM es compatible.
About Organizing Your Projects with the VBA Manager (ActiveX)

You can view all the VBA projects loaded in the current AutoCAD session by using the VBA
Manager. It is an AutoCAD tool that allows you to load, unload, save, create, embed, and extract
VBA projects.

Acerca de organizar sus proyectos con el administrador de VBA (ActiveX)


Puede ver todos los proyectos de VBA cargados en la sesión actual de AutoCAD utilizando el Administrador
de VBA. Es una herramienta de AutoCAD que le permite cargar, descargar, guardar, crear, incrustar y
extraer proyectos de VBA.
About Handling Your Macros (VBA/ActiveX)

A macro is a public (executable) subroutine. Each project usually contains at least one macro.

Acerca del manejo de sus macros (VBA / ActiveX)


Una macro es una subrutina pública (ejecutable). Cada proyecto generalmente contiene al menos una
macro.
About Editing Your Projects with the VBA IDE (VBA/ActiveX)

Once a project has been loaded into AutoCAD, you can edit the code, forms, and references for
that project using the VBA interactive development environment.

You can also debug and run projects from the VBA IDE. Once open, the VBA IDE provides access
to all loaded projects.

Acerca de la edición de sus proyectos con el IDE de VBA (VBA / ActiveX)


Una vez que un proyecto ha sido cargado en AutoCAD, puede editar el código, formularios y referencias
para ese proyecto usando el entorno de desarrollo interactivo de VBA.
También puede depurar y ejecutar proyectos desde el IDE de VBA. Una vez abierto, el IDE de VBA
proporciona acceso a todos los proyectos cargados.
Exercise: An Introduction to VBA (VBA/ActiveX)

In this exercise you will create a new AutoCAD drawing, add a line of text to that drawing, then
save the drawing, all from VBA.

1. At the AutoCAD Command prompt, enter vbaide and press Enter.


2. In the VBA IDE, Project Explorer window, select the ThisDrawing class module or a code module
in the project.
3. On the menu bar, click View menu Code to open a code window for the ThisDrawing class
module.
4. On the menu bar, click Insert menu Procedure to create a new procedure in the project.
5. In the Add Procedure dialog box, Name text box, enter HelloWorld.
6. Under the Type section, select Sub.
7. Under the Scope section, select Public. Click OK.
8. Enter the following code between the lines Public Sub HelloWorld() and End Sub lines.

9. ' Create a new drawing

10. ThisDrawing.Application.Documents.Add

11.

12. Dim insPoint(0 To 2) As Double 'Declare insertion point

13. Dim textHeight As Double 'Declare text height

14. Dim textStr As String 'Declare text string

15. Dim textObj As AcadText 'Declare text object

16.

17. insPoint(0) = 2 'Set insertion point X coordinate

18. insPoint(1) = 4 'Set insertion point Y coordinate

19. insPoint(2) = 0 'Set insertion point Z coordinate

20.

21. textHeight = 1 'Set text height to 1.0

22. textStr = "Hello World!" 'Set the text string

23.

24. 'Create the Text object


25. Set textObj = ThisDrawing.ModelSpace.AddText _

26. (textStr, insPoint, textHeight)

27.

ThisDrawing.SaveAs("Hello.dwg")

28. On the menu bar, click Run menu Run Sub/UserForm to execute the HelloWorld subroutine.
When the subroutine finishes executing, switch to the AutoCAD application window. The text
“Hello World!” should be visible in your drawing. The drawing name should be Hello.dwg.

Ejercicio: una introducción a VBA (VBA / ActiveX)


En este ejercicio creará un nuevo dibujo de AutoCAD, agregará una línea de texto a ese dibujo y luego
guardará el dibujo, todo desde VBA.
En el símbolo del sistema de AutoCAD, ingrese vbaide y presione Entrar.
En la ventana IDE de VBA, Explorador de proyectos, seleccione el módulo de clase ThisDrawing o un
módulo de código en el proyecto.
En la barra de menú, haga clic en Ver código de menú para abrir una ventana de código para el módulo de
clase ThisDrawing.
En la barra de menú, haga clic en el menú Insertar procedimiento para crear un nuevo procedimiento en el
proyecto.
En el cuadro de diálogo Agregar procedimiento, cuadro de texto Nombre, ingrese HelloWorld.
En la sección Tipo, selecciona Sub.
En la sección Ámbito, seleccione Público. Haga clic en Aceptar.
Ingrese el siguiente código entre las líneas Public Sub HelloWorld () y End Sub lines.
En la barra de menú, haga clic en el menú Ejecutar Ejecutar Sub / UserForm para ejecutar la subrutina
HelloWorld.
Cuando la subrutina termine de ejecutarse, cambie a la ventana de la aplicación AutoCAD. El texto "¡Hola
mundo!" Debería estar visible en tu dibujo. El nombre del dibujo debe ser Hello.dwg.
AutoCAD VBA Project Terms Reference (VBA/ActiveX)

Terms related to VBA projects and the VBA IDE.

Global Project
A VBA project stored in a .dvb file.

Embedded Project
A VBA project stored in an AutoCAD drawing.

Regular Document
An AutoCAD drawing that does not contain VBA embedded projects.

Smart Document
An AutoCAD drawing that contains one or more VBA embedded projects.

Current Project
The project currently selected in the VBA IDE.

ThisDrawing
ThisDrawing is a VBA programming term used to represent the current drawing. For global
projects, ThisDrawing always refers to the active document in AutoCAD. For embedded
projects, ThisDrawing always refers to the document containing the project.

VBA IDE
The VBA interactive development environment. This application allows you to edit the code
and forms in your project, or copy code and forms from other projects. It also allows you to
set references to other application Object Models.

VBA Manager
The VBA Manager allows you to manage your projects. You can create, delete, embed, or
extract projects. You can also view which projects, if any, are embedded in an open
drawing.

Macros Dialog Box


The Macros dialog box allows you to run, delete, and create new macros, and provides
access to the VBA project options.

Referencia de términos de proyecto de AutoCAD VBA (VBA / ActiveX)


Términos relacionados con los proyectos de VBA y el IDE de VBA.
Proyecto global
Un proyecto de VBA almacenado en un archivo .dvb.

Proyecto integrado
Un proyecto de VBA almacenado en un dibujo de AutoCAD.

Documento regular
Un dibujo de AutoCAD que no contiene proyectos integrados de VBA.

Documento inteligente
Un dibujo de AutoCAD que contiene uno o más proyectos integrados de VBA.

Proyecto actual
El proyecto actualmente seleccionado en el IDE de VBA.
Este dibujo
ThisDrawing es un término de programación de VBA utilizado para representar el dibujo actual. Para
proyectos globales, ThisDrawing siempre se refiere al documento activo en AutoCAD. Para proyectos
integrados, ThisDrawing siempre se refiere al documento que contiene el proyecto.

IDE de VBA
El entorno de desarrollo interactivo de VBA. Esta aplicación le permite editar el código y los formularios en
su proyecto, o copiar códigos y formularios de otros proyectos. También le permite establecer referencias
a otros modelos de objetos de la aplicación.

VBA Manager
El Administrador de VBA le permite administrar sus proyectos. Puede crear, eliminar, incrustar o extraer
proyectos. También puede ver qué proyectos, si los hay, están incrustados en un dibujo abierto.

Cuadro de diálogo Macros


El cuadro de diálogo Macros le permite ejecutar, eliminar y crear nuevas macros, y proporciona acceso a
las opciones de proyecto de VBA.
About More Information on the VBA IDE (VBA/ActiveX)

More information on the VBA IDE and the VBA programming language is available in the Help files
provided by Microsoft.

The Microsoft Visual Basic Help can be accessed from the Help menu in the VBA IDE.

Acerca de Más información sobre el IDE de VBA (VBA / ActiveX)


Puede encontrar más información sobre el IDE de VBA y el lenguaje de programación de VBA en los
archivos de Ayuda proporcionados por Microsoft.
Se puede acceder a la Ayuda de Microsoft Visual Basic desde el menú Ayuda en el IDE de VBA.
About Embedding a Project into a Drawing (VBA/ActiveX)

When you embed a project you place a copy of the project in the drawing database. The project is
then loaded or unloaded whenever the drawing containing it is opened or closed.

A drawing can contain only one embedded project at a time. If a drawing already contains an
embedded project you must extract it before a different project can be embedded into the drawing.

Acerca de la incrustación de un proyecto en un dibujo (VBA / ActiveX)


Cuando incrusta un proyecto, coloca una copia del proyecto en la base de datos de dibujos. El proyecto se
carga o descarga cada vez que se abre o cierra el dibujo que lo contiene.
Un dibujo puede contener solo un proyecto incrustado a la vez. Si un dibujo ya contiene un proyecto
incrustado, debe extraerlo antes de que se pueda incrustar un proyecto diferente en el dibujo.
About Extracting a Project from a Drawing (VBA/ActiveX)

When you extract a project you remove the project from the drawing database and are given the
opportunity to save the project in an external project file. If you do not save the file in an external
project file, the project data will be deleted.

Acerca de la extracción de un proyecto de un dibujo (VBA / ActiveX)


Cuando extrae un proyecto, elimina el proyecto de la base de datos de dibujos y se le brinda la
oportunidad de guardar el proyecto en un archivo de proyecto externo. Si no guarda el archivo en un
archivo de proyecto externo, los datos del proyecto se eliminarán.
About Creating a New Project (VBA/ActiveX)

New projects are created as unsaved global projects. Once a project has been created, you can
then embed the project in a drawing, or save the project out to a project file.

Acerca de la creación de un nuevo proyecto (VBA / ActiveX)


Los nuevos proyectos se crean como proyectos globales no guardados. Una vez que se ha creado un
proyecto, puede incrustar el proyecto en un dibujo o guardar el proyecto en un archivo de proyecto.
About Naming Your Project (VBA/ActiveX)

The project name and the name of the .dvb file where the project is stored are two different values.

You establish the name of the .dvb file the project is stored in when you save the project. The
project name is set in the Properties window of the VBA IDE.

If you do not set the project name and file name, AutoCAD automatically assigns the following
default names:

Project name: ACADProject

File name: Project.dvb

Acerca de nombrar su proyecto (VBA / ActiveX)


El nombre del proyecto y el nombre del archivo .dvb donde se almacena el proyecto son dos valores
diferentes.
Establece el nombre del archivo .dvb en el que está almacenado el proyecto cuando guarda el proyecto. El
nombre del proyecto se establece en la ventana Propiedades del IDE de VBA.
Si no establece el nombre del proyecto y el nombre del archivo, AutoCAD automáticamente asigna los
siguientes nombres predeterminados:
Nombre del proyecto: ACADProject
Nombre de archivo: Project.dvb
Saving Your Project (VBA/ActiveX)
Embedded projects are saved whenever the drawing is saved. Global projects must be saved
using the VBA Manager or the VBA IDE.

There is no explicit SAVE command in AutoCAD for VBA projects. Instead, the SAVE command
resides in the File menu of the VBA IDE and in the VBA Manager. Any changes to a VBA project
will access a standard Save VBA Project dialog box when one of these events occurs:

 You select the SAVE command from the VBA IDE.


 You choose the Save As option in the VBA Manager.
 Your AutoCAD session is about to end or quit and the VBA project is not saved.
Note: Before you save a project, it is assigned the default file name project.dvb. It is important that
you assign a new name to your project file when you save the project. If you save a project with
the default file name project.dvb, you will no longer be able to create new empty projects. Each
time you create a new project, you will actually be loading the saved project called project.dvb.

Guardar su proyecto (VBA / ActiveX)


Los proyectos integrados se guardan cada vez que se guarda el dibujo. Los proyectos globales deben
guardarse usando el Administrador de VBA o el IDE de VBA.
No hay un comando SAVE explícito en AutoCAD para proyectos de VBA. En cambio, el comando GUARDAR
reside en el menú Archivo del IDE de VBA y en el Administrador de VBA. Cualquier cambio en un proyecto
de VBA accederá a un cuadro de diálogo Guardar proyecto de VBA estándar cuando ocurra uno de estos
eventos:
Selecciona el comando GUARDAR desde el IDE de VBA.
Usted elige la opción Guardar como en el Administrador de VBA.
Su sesión de AutoCAD está a punto de finalizar o finalizar y el proyecto de VBA no se guarda.
Nota: antes de guardar un proyecto, se le asigna el nombre de archivo predeterminado project.dvb. Es
importante que asigne un nuevo nombre a su archivo de proyecto cuando guarde el proyecto. Si guarda un
proyecto con el nombre de archivo predeterminado project.dvb, ya no podrá crear nuevos proyectos
vacíos. Cada vez que creas un nuevo proyecto, en realidad estarás cargando el proyecto guardado llamado
project.dvb.
About Loading an Existing Project

When you load a project into AutoCAD, all the public subroutines, also called macros, become
available for use. Projects embedded in a drawing are loaded whenever the drawing is opened.
Projects stored in DVB files must be loaded explicitly.

Anytime a project is loaded, any other projects that are referenced by the first project will be
loaded automatically. Additionally, AutoCAD will automatically load at startup any project file with
the name acad.dvb.

Acerca de cargar un proyecto existente


Cuando carga un proyecto en AutoCAD, todas las subrutinas públicas, también llamadas macros, están
disponibles para su uso. Los proyectos incrustados en un dibujo se cargan cada vez que se abre el dibujo.
Los proyectos almacenados en archivos DVB deben cargarse explícitamente.
Cada vez que se carga un proyecto, cualquier otro proyecto al que haga referencia el primer proyecto se
cargará automáticamente. Además, AutoCAD cargará automáticamente al inicio cualquier archivo de
proyecto con el nombre acad.dvb.
About Unloading a Project (VBA/ActiveX)

Unloading a project frees up memory and keeps the list of loaded projects at a length that is easy
to manage.

You cannot unload embedded projects or projects that are referenced by other loaded projects.

Acerca de la descarga de un proyecto (VBA / ActiveX)


La descarga de un proyecto libera memoria y mantiene la lista de proyectos cargados a una longitud que es
fácil de administrar.
No puede descargar proyectos integrados o proyectos a los que otros proyectos cargados hacen
referencia.
About Embedded and Global VBA Projects (VBA/ActiveX)

An AutoCAD® VBA project is a collection of code modules, class modules, and forms that work
together to perform a given function. Projects can be stored within an AutoCAD drawing, or as a
separate file.

Embedded projects are stored within an AutoCAD drawing. These projects are automatically
loaded whenever the drawing in which they are contained is opened in AutoCAD, making the
distribution of projects very convenient. Embedded projects are limited and not able to open or
close AutoCAD drawings because they function only within the document where they reside.
Users of embedded projects are no longer required to find and load project files before they run a
program. A time log that is triggered when the drawing is opened is an example of a project
embedded in a drawing. With this macro users can log in and record the length of time they
worked on the drawing. The user does not have to remember to load the project before opening
the drawing; it simply is done automatically.

Global projects are stored in separate files and are more versatile because they can work in, open,
and close any AutoCAD drawing, but are not automatically loaded when a drawing is opened.
Users must know which project file contains the macro they need and then load that project file
before they can run the macro. However, global projects are easier to share with other users, and
they make excellent libraries for common macros. An example of a project you may store in a
project file is a macro that collects a bill of materials from many drawings. This macro can be run
by an administrator at the end of a work cycle and can collect information from many drawings.

At any given time, users can have both embedded and global projects loaded into their AutoCAD
session.

AutoCAD VBA projects are not binary compatible with standalone Visual Basic 6 or .NET projects.
However, the forms, modules, and classes can be exchanged between projects using the Import
and Export tools in the VBA IDE. The use of Visual Studio .NET to drive and customize AutoCAD
through COM Automation is supported.

Acerca de los proyectos integrados y globales de VBA (VBA / ActiveX)


Un proyecto AutoCAD® VBA es una colección de módulos de código, módulos de clase y formularios que
funcionan en conjunto para realizar una función determinada. Los proyectos se pueden almacenar dentro
de un dibujo de AutoCAD o como un archivo separado.
Los proyectos integrados se almacenan dentro de un dibujo de AutoCAD. Estos proyectos se cargan
automáticamente cada vez que se abre el dibujo en el que están contenidos en AutoCAD, lo que hace que
la distribución de proyectos sea muy conveniente. Los proyectos incrustados son limitados y no pueden
abrir o cerrar dibujos de AutoCAD porque funcionan solo dentro del documento donde residen. Los
usuarios de proyectos integrados ya no necesitan encontrar y cargar archivos de proyectos antes de
ejecutar un programa. Un registro de tiempo que se activa cuando se abre el dibujo es un ejemplo de un
proyecto incrustado en un dibujo. Con esta macro, los usuarios pueden iniciar sesión y registrar el tiempo
que trabajaron en el dibujo. El usuario no tiene que recordar cargar el proyecto antes de abrir el dibujo;
simplemente se hace automáticamente.
Los proyectos globales se almacenan en archivos separados y son más versátiles porque pueden trabajar,
abrir y cerrar cualquier dibujo de AutoCAD, pero no se cargan automáticamente cuando se abre un dibujo.
Los usuarios deben saber qué archivo de proyecto contiene la macro que necesitan y luego cargar ese
archivo de proyecto antes de que puedan ejecutar la macro. Sin embargo, los proyectos globales son más
fáciles de compartir con otros usuarios y hacen excelentes bibliotecas para macros comunes. Un ejemplo
de un proyecto que puede almacenar en un archivo de proyecto es una macro que recopila una lista de
materiales de muchos dibujos. Esta macro puede ser ejecutada por un administrador al final de un ciclo de
trabajo y puede recopilar información de muchos dibujos.
En cualquier momento dado, los usuarios pueden tener proyectos integrados y globales cargados en su
sesión de AutoCAD.
Los proyectos de AutoCAD VBA no son compatibles con binarios con proyectos independientes de Visual
Basic 6 o .NET. Sin embargo, los formularios, módulos y clases se pueden intercambiar entre proyectos
utilizando las herramientas Importar y Exportar en el IDE de VBA. El uso de Visual Studio .NET para
conducir y personalizar AutoCAD a través de la Automatización COM es compatible.
About Referencing Other VBA Projects (VBA/ActiveX)

Referencing one VBA project from another allows developers to share code more easily.

Developers can create libraries of commonly used macros and then reference the library when
needed. This keeps the shared code centrally located and supported, while allowing a large
number of developers to utilize the code.

Once another project has been successfully referenced, you will notice a new folder in the Projects
window of the VBA IDE. This new folder is titled References and contains the name of the project
referenced.

Once you have referenced a project, you can use any public code or form component in that
project.

When a project that references another project is loaded into AutoCAD, the referenced project is
automatically loaded into AutoCAD as well. The referenced project cannot be closed until all
projects that reference it are closed first.

You cannot make circular references. That is, you cannot reference a project that contains a
reference back to the first project. If you accidentally create a circular reference, you will be
notified by VBA.
Project referencing is a standard feature of Microsoft VBA. There is no additional work in AutoCAD
to extend this functionality. You can find more information on referencing projects in the Microsoft
VBA Help. You can open the Microsoft VBA Help from the Help menu in the VBA IDE.

Note: You cannot reference embedded projects or VBA projects from other applications.
Acerca de la referencia de otros proyectos de VBA (VBA / ActiveX)

Hacer referencia a un proyecto de VBA de otro permite a los desarrolladores compartir el código más
fácilmente.

Los desarrolladores pueden crear bibliotecas de macros de uso común y luego hacer referencia a la
biblioteca cuando sea necesario. Esto mantiene el código compartido ubicado y respaldado de forma
centralizada, a la vez que permite que un gran número de desarrolladores utilice el código.

Una vez que otro proyecto ha sido referenciado con éxito, verá una nueva carpeta en la ventana Proyectos
del IDE de VBA. Esta nueva carpeta se titula Referencias y contiene el nombre del proyecto al que se hace
referencia.

Una vez que ha hecho referencia a un proyecto, puede usar cualquier código público o componente de
formulario en ese proyecto.

Cuando un proyecto que hace referencia a otro proyecto se carga en AutoCAD, el proyecto al que se hace
referencia también se carga automáticamente en AutoCAD. El proyecto al que se hace referencia no se
puede cerrar hasta que todos los proyectos que hacen referencia a él se cierren primero.

No puedes hacer referencias circulares. Es decir, no puede hacer referencia a un proyecto que contiene
una referencia de regreso al primer proyecto. Si accidentalmente crea una referencia circular, VBA le
notificará.

La referencia de proyectos es una característica estándar de Microsoft VBA. No hay trabajo adicional en
AutoCAD para extender esta funcionalidad. Puede encontrar más información sobre proyectos de
referencia en la Ayuda de Microsoft VBA. Puede abrir la Ayuda de Microsoft VBA desde el menú Ayuda en
el IDE de VBA.

Nota: No puede hacer referencia a proyectos integrados o proyectos de VBA desde otras aplicaciones.
About Using the Macros Dialog Box (VBA/ActiveX)

The Macros dialog box allows you to run, edit, delete, and create macros as well as set the VBA
project options.
Open the Macros dialog box from the ribbon in AutoCAD by clicking Manage tab Applications
panel Run VBA Macro, or issue VBARUN at the AutoCAD Command prompt.

The names of all macros in the valid range are displayed in this dialog box. You can change the
valid range by using the Macros In drop-down list. This list specifies the projects or drawings
whose macros are displayed. You can choose to display the macros in

 All drawings and projects


 All drawings
 All projects
 Any individual drawing currently open in AutoCAD
 Any individual project currently loaded in AutoCAD
By limiting the valid range you can control how many macro names appear in the list. This will help
you in the cases when many macros are available in the loaded drawings and projects.

Acerca del uso del cuadro de diálogo Macros (VBA / ActiveX)


El cuadro de diálogo Macros le permite ejecutar, editar, eliminar y crear macros, así como establecer las
opciones del proyecto VBA.
Abra el cuadro de diálogo Macros desde la cinta de opciones en AutoCAD haciendo clic en Administrar
tabulaciones Panel de aplicaciones Ejecutar macro de VBA o ejecute VBARUN en el indicador de comando
de AutoCAD.
Los nombres de todas las macros en el rango válido se muestran en este cuadro de diálogo. Puede cambiar
el rango válido utilizando la lista desplegable Macros en. Esta lista especifica los proyectos o dibujos cuyas
macros se muestran. Puede elegir mostrar las macros en
Todos los dibujos y proyectos
Todos los dibujos
Todos los proyectos
Cualquier dibujo individual actualmente abierto en AutoCAD
Cualquier proyecto individual actualmente cargado en AutoCAD
Al limitar el rango válido, puede controlar cuántos nombres de macro aparecen en la lista. Esto lo ayudará
en los casos en que hay muchas macros disponibles en los dibujos y proyectos cargados.
About Running a Macro (VBA/Active)

Running a macro executes the macro code within the context of the current AutoCAD session.

The current active drawing is considered to be the open drawing that has the focus when macro
execution begins. All VBA references to the ThisDrawing object will refer to the current active
drawing for macros in global projects. For macros in embedded projects, the ThisDrawing object
always refers to the drawing in which the macro is embedded.

Acerca de ejecutar una macro (VBA / activo)


Al ejecutar una macro se ejecuta el código de macro dentro del contexto de la sesión actual de AutoCAD.
El dibujo activo actual se considera el dibujo abierto que tiene el foco cuando comienza la macro ejecución.
Todas las referencias de VBA al objeto ThisDrawing se referirán al dibujo activo actual para macros en
proyectos globales. Para macros en proyectos integrados, el objeto ThisDrawing siempre hace referencia al
dibujo en el que está incrustada la macro.
About Editing a Macro (VBA/ActiveX)

Editing a macro will open the VBA IDE with the chosen macro open in the Code window.

Acerca de la edición de una macro (VBA / ActiveX)


La edición de una macro abrirá el IDE de VBA con la macro elegida abierta en la ventana de Código.
About Stepping into a Macro (VBA/ActiveX)

Stepping into a macro begins execution of the macro and then halts the execution on the first line
of code. The VBA IDE is opened with the chosen macro open in the Code window at the line of
execution.

Acerca de entrar en una macro (VBA / ActiveX)


Entrar en una macro inicia la ejecución de la macro y luego detiene la ejecución en la primera línea de
código. El IDE de VBA se abre con la macro seleccionada abierta en la ventana Código en la línea de
ejecución.
About Setting Project Options (VBA/ActiveX)

There are several options that affect if a VBA project can be loaded or used during the current
session.

There are three options that can be set for AutoCAD VBA projects:

 Enable Auto Embedding


 Allow Break on Errors
 Enable Macro Virus Protection

Enable Auto Embedding


The auto embed feature automatically creates an embedded VBA project for all drawings when
the drawing is opened.

Allow Break on Errors


This option allows VBA to enter Break mode when an error is encountered. Break mode is a
temporary suspension of program execution in the interactive development environment. In Break
mode, you can examine, debug, reset, step through, or continue program execution.

When this option is enabled, unhandled errors found during the execution of a VBA macro will
suspend the execution of the macro and display the VBA IDE at the point of the error in the macro.

When this option is disabled, untrapped errors found during the execution of a VBA macro will
display a message box alerting you to the error, and then end execution of the macro.
Enable Macro Virus Protection
The virus protection mechanism displays a built-in warning message whenever you open a
drawing that may contain macro viruses.

Acerca de la configuración de las opciones del proyecto (VBA / ActiveX)


Hay varias opciones que afectan si un proyecto de VBA se puede cargar o usar durante la sesión actual.
Hay tres opciones que se pueden configurar para los proyectos de AutoCAD VBA:
Habilitar incrustación automática
Permitir interrupción de errores
Habilitar la protección antivirus de mac

Habilitar incrustación automática


La característica de inserción automática crea automáticamente un proyecto de VBA incorporado para
todos los dibujos cuando se abre el dibujo.

Permitir interrupción de errores


Esta opción permite que VBA ingrese al modo Break cuando se encuentra un error. El modo de pausa es
una suspensión temporal de la ejecución del programa en el entorno de desarrollo interactivo. En el modo
Break, puede examinar, depurar, restablecer, avanzar o continuar la ejecución del programa. Cuando esta
opción está habilitada, los errores no controlados que se encuentran durante la ejecución de una macro de
VBA suspenderán la ejecución de la macro y mostrarán el IDE de VBA en el punto del error en la macro.
Cuando esta opción está deshabilitada, los errores no capturados encontrados durante la ejecución de una
macro de VBA mostrarán un cuadro de mensaje que lo alertará del error y luego finalizará la ejecución de
la macro.

Habilitar la protección antivirus de mac


El mecanismo de protección contra virus muestra un mensaje de advertencia incorporado cada vez que
abre un dibujo que puede contener virus de macro.
AutoCAD VBA Commands Reference (VBA/ActiveX)

Commands related to VBA projects and the VBA IDE.

VBAIDE
Brings up the VBA IDE.

The VBA IDE allows you to edit, run, and debug programs interactively. Although the VBA
IDE is invoked only when AutoCAD is running, it can be minimized, opened, and closed
independent of the AutoCAD Application window.

VBALOAD
Loads a VBA project into the current AutoCAD session.
VBAMAN
Displays the VBA Manager allowing you to view, create, load, close, embed, and extract
projects.

VBANEW
Creates a new project.

VBAPREF
Displays the Options dialog box and allows you to set VBA-specific options for the current
session.

VBARUN
Runs a VBA macro from the Macros dialog box or from the AutoCAD command line.

VBASTMT
Executes a VBA statement from the AutoCAD command line.

VBAUNLOAD
Unloads a VBA project from the current AutoCAD session.

If the VBA project is modified but not saved, the user is asked to save it with the Save
Project dialog box (or command line equivalent).

Referencia de comandos de AutoCAD VBA (VBA / ActiveX)


Comandos relacionados con proyectos de VBA y el IDE de VBA.
VBAIDE
Muestra el IDE de VBA.
El IDE de VBA le permite editar, ejecutar y depurar programas de forma interactiva. Aunque el VBA IDE se
invoca solo cuando se está ejecutando AutoCAD, se puede minimizar, abrir y cerrar independientemente
de la ventana de la aplicación AutoCAD.

VBALOAD
Carga un proyecto de VBA en la sesión actual de AutoCAD.

VBAMAN
Muestra el Administrador de VBA que le permite ver, crear, cargar, cerrar, incrustar y extraer proyectos.

VBANEW
Crea un nuevo proyecto

VBAPREF
Muestra el cuadro de diálogo Opciones y le permite establecer opciones específicas de VBA para la sesión
actual.
VBARUN
Ejecuta una macro de VBA desde el cuadro de diálogo Macros o desde la línea de comandos de AutoCAD.

VBASTMT
Ejecuta una declaración de VBA desde la línea de comandos de AutoCAD.

VBAUNLOAD
Descarga un proyecto de VBA de la sesión actual de AutoCAD.

Si el proyecto de VBA se modifica pero no se guarda, se le pide al usuario que lo guarde con el cuadro de
diálogo Guardar proyecto (o línea de comando equivalente).

About Forms (VBA)

Forms are the basic building blocks through which you create your own custom dialog boxes for
your application.

Through custom forms you can provide information to users, get information from users, or have
your users control activity in the application.

Forms are like an artist's canvas—they start out blank. To fill your canvas, you need a palette. In
this case, your palette is the control toolbox. You, as the artist, place selected controls from the
toolbox onto the form. You can add as many controls as you like. At any time you can adjust size
and properties of the controls and even the form itself. Finally, you add the functionality (code) to
the controls that brings your form to life.

Acerca de las formas (VBA)


Los formularios son los bloques básicos a través de los cuales puede crear sus propios cuadros de diálogo
personalizados para su aplicación.

A través de formularios personalizados, puede proporcionar información a los usuarios, obtener


información de los usuarios o hacer que los usuarios controlen la actividad en la aplicación.

Las formas son como el lienzo de un artista: comienzan en blanco. Para llenar su lienzo, necesita una
paleta. En este caso, su paleta es la caja de herramientas de control. Usted, como artista, coloca los
controles seleccionados de la caja de herramientas en el formulario. Puede agregar tantos controles como
desee. En cualquier momento puede ajustar el tamaño y las propiedades de los controles e incluso el
formulario en sí. Finalmente, agrega la funcionalidad (código) a los controles que hacen que su formulario
cobre vida.
Although VB.NET supports different types of forms, VBA supports only the UserForm. This means
some forms have been created and exported in VB.NET that cannot be imported into VBA.

UserForms—or forms, as they are called in this guide—can be modal or modeless. The
ShowModal property of a form determines whether it is modal or modeless. Modal forms displayed
in your running application must be closed before users can perform any other action in the
application.

Aunque VB.NET admite diferentes tipos de formularios, VBA solo admite UserForm. Esto significa que se
han creado y exportado algunos formularios en VB.NET que no se pueden importar a VBA.

Los UserForms, o formularios, como se denominan en esta guía, pueden ser modales o no. La propiedad
ShowModal de un formulario determina si es modal o no. Los formularios modales que se muestran en la
aplicación en ejecución deben cerrarse para que los usuarios puedan realizar cualquier otra acción en la
aplicación.
About Modal Forms (VBA)

When you define a dialog box as modal in AutoCAD VBA, the user must respond to the dialog box
before any other part of the application is allowed to continue.

No subsequent code is executed until the modal dialog box is closed through either
the Hide or Unload method. This requires that you, as the developer of the application, think
carefully about how and when you implement dialog boxes.

For example, you may have a dialog box that requires the user to select an object in the AutoCAD
drawing. For the user to be able to pick the object from the AutoCAD Application window, you
must hide the form by calling the Hide method. Once the object has been selected you use
the Show method to redisplay the form, with all of its data still current, and continue with the
application.

Note: Although other forms in the application are disabled when a modal dialog box is displayed,
other applications are not.
Acerca de los formularios modales (VBA)
Cuando define un cuadro de diálogo como modal en AutoCAD VBA, el usuario debe responder al cuadro de
diálogo antes de permitir que cualquier otra parte de la aplicación continúe.

No se ejecuta ningún código posterior hasta que se cierra el cuadro de diálogo modal mediante el método
Ocultar o Descargar. Esto requiere que usted, como desarrollador de la aplicación, piense cuidadosamente
sobre cómo y cuándo implementar cuadros de diálogo.

Por ejemplo, puede tener un cuadro de diálogo que requiera que el usuario seleccione un objeto en el
dibujo de AutoCAD. Para que el usuario pueda elegir el objeto desde la ventana de la aplicación AutoCAD,
debe ocultar el formulario llamando al método Hide. Una vez que el objeto ha sido seleccionado, usa el
método Mostrar para volver a mostrar el formulario, con todos sus datos aún actualizados, y continúe con
la aplicación.

Nota: Aunque otros formularios de la aplicación están desactivados cuando se muestra un cuadro de
diálogo modal, otras aplicaciones no lo están.
About Design and Run Mode (VBA)

Design mode allows you to define a form directly in the UserForm window of the VBA IDE, while
Run mode allows you to make changes to a form dynamically using the code of a program.

While you are building your form you are working in Design mode, where you can

 Add controls to the form


 Change the properties of the form
 Change the properties of controls on the form
 Add code to the form module
While in Design mode there is no interaction among the user, the user interface of AutoCAD, and
your form.

Once you run your application, or your user runs your application, the form is then in Run mode.
While in Run mode you cannot make adjustments to the form directly. However, the form is now
displayed in the AutoCAD user interface and the user can interact with the form as part of the
normal operation of your application.

Acerca del diseño y el modo de ejecución (VBA)


El modo de diseño le permite definir un formulario directamente en la ventana UserForm del IDE de VBA,
mientras que el modo Run le permite realizar cambios en un formulario de forma dinámica utilizando el
código de un programa.

Mientras construyes tu formulario, estás trabajando en modo Diseño, donde puedes


Agregar controles al formulario
Cambiar las propiedades del formulario
Cambiar las propiedades de los controles en el formulario
Agregar código al módulo de formulario
Mientras está en modo Diseño, no hay interacción entre el usuario, la interfaz de usuario de AutoCAD y su
formulario.

Una vez que ejecuta su aplicación, o su usuario ejecuta su aplicación, el formulario está en modo Ejecución.
Mientras está en el modo Ejecutar, no puede hacer ajustes al formulario directamente. Sin embargo, ahora
el formulario se muestra en la interfaz de usuario de AutoCAD y el usuario puede interactuar con el
formulario como parte del funcionamiento normal de su aplicación.
About Adding Controls to a Form (VBA)

Controls placed on a form allow a program to request input from the user.

Adding controls to a form is easy. Simply select a control from the control toolbox and drag it over
to the form. When you release your mouse, a copy of the control will be placed on the form. Once
the control is on the form, you can change the position and size of the control. You can copy over
as many controls as you like.

In addition to the drag method previously mentioned, there are other ways of placing controls on a
form.

Acerca de agregar controles a un formulario (VBA)


Los controles colocados en un formulario permiten que un programa solicite información del usuario.

Agregar controles a un formulario es fácil. Simplemente seleccione un control de la caja de herramientas


de control y arrástrelo al formulario. Cuando suelte el mouse, se colocará una copia del control en el
formulario. Una vez que el control está en el formulario, puede cambiar la posición y el tamaño del control.
Puede copiar tantos controles como desee.

Además del método de arrastre mencionado anteriormente, hay otras formas de colocar controles en un
formulario.
About Formatting Controls (VBA)

VBA provides several formatting controls to help you lay out your form.

These controls can be found on the Format menu of the VBA IDE. These controls allow you to
align controls to each other, make two or more controls the same size, change the spacing
between controls, and center controls on the form.
Remember when using the formatting controls that several controls can be selected at once by
using Shift.

Acerca de los controles de formato (VBA)


VBA proporciona varios controles de formato para ayudarlo a diseñar su formulario.

Estos controles se pueden encontrar en el menú Formato del IDE de VBA. Estos controles le permiten
alinear controles entre sí, hacer dos o más controles del mismo tamaño, cambiar el espaciado entre
controles y centrar los controles en el formulario.

Recuerde al usar los controles de formateo que se pueden seleccionar varios controles a la vez usando
Shift.
About Changing the Properties of a Control (VBA)

Properties control various characteristics of a control such as its size, shape, color, label, and
default values.

You can set the properties of a control in design mode by using the Properties window.

Acerca de cambiar las propiedades de un control (VBA)


Las propiedades controlan varias características de un control como su tamaño, forma, color, etiqueta y
valores predeterminados.

Puede establecer las propiedades de un control en modo de diseño utilizando la ventana Propiedades.
About Adding Code to a Control (VBA)

After a control has been added to a form, you can edit the code for an event that is triggered by a
control when a user interacts with it.

Now that you have your form looking the way you want, it is time to add some code behind your
controls. To open the Code window for a control simply double-click on the control in the Form
window. The Code window will open, with a subroutine created for that control and its default
event.

You can add code to the default event, or choose a different event from the event drop-down list at
the top-right corner of the Code window.

Acerca de agregar código a un control (VBA)


Después de que se haya agregado un control a un formulario, puede editar el código para un evento que se
desencadena por un control cuando un usuario interactúa con él.
Ahora que tiene su formulario en la forma que desea, es hora de agregar algún código detrás de sus
controles. Para abrir la ventana Código para un control simplemente haga doble clic en el control en la
ventana Formulario. Se abrirá la ventana Código, con una subrutina creada para ese control y su evento
predeterminado.

Puede agregar código al evento predeterminado o elegir un evento diferente de la lista desplegable de
eventos en la esquina superior derecha de la ventana de Código.
About Displaying and Hiding Forms (VBA)

A VBA project must display a user form before it can be used and then hidden after you no longer
need it.

Now you have a beautifully designed form with fully functional code behind all the controls. The
last step is getting the form displayed to the user at run-time. Displaying the form is accomplished
through the VBA Show method. The Show method can be called from any code module in your
application.

The form you created is modal by default, so the user will not be able to interact with AutoCAD
directly while the form is displayed. For example, the user cannot select a point or object in the
drawing with the form displayed. To allow the user access to the AutoCAD drawing, use the
VBA Hide method. The Hide method hides the form and allows the user limited access to
AutoCAD. When using the Hide method it is important to remember that the form is not unloaded
from memory. It will retain all current values while hidden.

The Hide method is called in the same manner as the Show method.

Display a form
This example will display the form named “UserForm1”:

Acerca de mostrar y ocultar formularios (VBA)


Un proyecto de VBA debe mostrar un formulario de usuario antes de poder usarlo y luego ocultarlo cuando
ya no lo necesite.

Ahora tiene una forma bellamente diseñada con un código completamente funcional detrás de todos los
controles. El último paso es obtener el formulario que se muestra al usuario en tiempo de ejecución. La
visualización del formulario se realiza a través del método VBA Show. Se puede llamar al método Show
desde cualquier módulo de código en su aplicación.

El formulario que creó es modal de manera predeterminada, por lo que el usuario no podrá interactuar
directamente con AutoCAD mientras se muestra el formulario. Por ejemplo, el usuario no puede
seleccionar un punto u objeto en el dibujo con el formulario que se muestra. Para permitir que el usuario
acceda al dibujo de AutoCAD, use el método Ocultar de VBA. El método Hide oculta el formulario y permite
al usuario acceso limitado a AutoCAD. Al usar el método Hide, es importante recordar que el formulario no
se descarga de la memoria. Retendrá todos los valores actuales mientras esté oculto.

El método Hide se llama de la misma manera que el método Show.

Mostrar un formulario
Este ejemplo mostrará el formulario llamado "UserForm1":

Public Sub MyApplication()

UserForm1.Show

End Sub

The subroutine (and consequently the display of your form) is now callable as a macro from the
VBARUN command or from the AutoCAD user interface.

Hide a form
This example hides the form named “UserForm1”:

La subrutina (y, en consecuencia, la pantalla de su formulario) ahora se puede llamar como una macro
desde el comando VBARUN o desde la interfaz de usuario de AutoCAD.

Ocultar un formulario
Este ejemplo oculta el formulario llamado "UserForm1":

Public Sub MyAppHide()

UserForm1.Hide

End Sub

About Loading and Unloading Forms (VBA)

There may be times when you want to load a form into memory during runtime, but not show the
form. You may choose to do this to better control when the load time occurs in your application, or
when you need programmatic access to the form but do not want to display the form to the user.

To load a form, but not display it, use the VBA Load method. The Show method can then be used
to make the form visible at the appropriate time in your application's execution. Remember, the
user cannot interact with your form until it is visible.

If the Show method is called and the form has not been loaded, it will be loaded automatically.
There may also be times when you will want to unload a form specifically. Unloading a form
removes that form from memory and all the memory associated with the form is reclaimed. Until
the form is loaded again by using either the Load or Show method, a user cannot interact with the
form, and the form cannot be manipulated programmatically. You may choose to unload a form
when you know the form will not be used again in the application and you want to reclaim the
memory.

The Hide method does not perform an unload. If your application ends and a form has not been
unloaded, it will be unloaded automatically. The following table compares the
VBA Show, Hide, Load, and Unload methods:

Acerca de los formularios de carga y descarga (VBA)


Puede haber momentos en los que desee cargar un formulario en la memoria durante el tiempo de
ejecución, pero no mostrar el formulario. Puede optar por hacer esto para controlar mejor cuándo se
produce el tiempo de carga en su aplicación, o cuando necesita acceso programático al formulario, pero no
desea mostrar el formulario al usuario.

Para cargar un formulario, pero no mostrarlo, use el método de carga de VBA. El método Show se puede
usar para hacer que el formulario sea visible en el momento apropiado en la ejecución de su aplicación.
Recuerde, el usuario no puede interactuar con su formulario hasta que esté visible.

Si se llama al método Show y el formulario no se ha cargado, se cargará automáticamente.

También puede haber ocasiones en las que desee descargar un formulario específicamente. Al descargar
un formulario, se elimina ese formulario de la memoria y se recupera toda la memoria asociada con el
formulario. Hasta que el formulario no se vuelva a cargar utilizando el método Load o Show, un usuario no
puede interactuar con el formulario y el formulario no se puede manipular mediante programación. Puede
elegir descargar un formulario cuando sabe que el formulario no se utilizará nuevamente en la aplicación y
desea recuperar la memoria.

El método Hide no realiza una descarga. Si su aplicación finaliza y un formulario no se ha descargado, se


descargará automáticamente. La siguiente tabla compara los métodos VBA Show, Hide, Load y Unload:

VBA Show, Hide, Load, and Unload methods

Method Use

Show Displays a form. If the form has not been loaded


VBA Show, Hide, Load, and Unload methods

Method Use

Hide Hides a form. The form is not unloaded from me

Load Loads a form into memory but does not display

Unload Unloads a form from memory. This can be done


the application.

To Create a New Form in a Project (VBA)

Forms allow for input from the user.

1. Open the Project window of the VBA IDE and select the project you want to add the form to.
2. From the Insert menu, click UserForm.
A blank form is created and added to your project.

Para crear un nuevo formulario en un proyecto (VBA)


Los formularios permiten la entrada del usuario.

Abra la ventana Proyecto del IDE de VBA y seleccione el proyecto al que desea agregar el formulario.
En el menú Insertar, haga clic en UserForm.
Se crea un formulario en blanco y se agrega a su proyecto.
To Create a Modeless Form in a Project (VBA)

Modeless dialog boxes allow a form to remain displayed while the user interfaces with the drawing
area, similar to a floating palette.

1. Open the Project window of the VBA IDE and select the project you want to add the form to.
2. From the Insert menu, choose UserForm, and change the ShowModal property to False.
3. Add the AcFocusCtrl (AcFocusCtrl.dll) to the Toolbox, and drag the control onto the form.
The AcFocusCtrl keeps the focus on the form during user interaction.
Para crear un formulario sin modo en un proyecto (VBA)
Los cuadros de diálogo sin modo permiten que un formulario permanezca visualizado mientras el usuario
interactúa con el área de dibujo, de forma similar a una paleta flotante.

Abra la ventana Proyecto del IDE de VBA y seleccione el proyecto al que desea agregar el formulario.
En el menú Insertar, elija UserForm y cambie la propiedad ShowModal a False.
Agregue AcFocusCtrl (AcFocusCtrl.dll) a la Caja de herramientas y arrastre el control al formulario.
AcFocusCtrl mantiene el foco en el formulario durante la interacción del usuario.

About Handling Errors (VBA)

Most development environments provide default error handling.

For VB and VBA, the default reaction to an error is to display an error message and terminate the
application. While this behavior is adequate during the development phase of your application, it is
not productive for your end user. There may be errors that you want to ignore, or that you want to
provide special responses to. There may be errors that you will want to suppress the error
message display for, or simply control the message that gets displayed to the user. In addition,
automatically terminating the application is hardly ever acceptable to the end user.

In general, error handling is necessary whenever user input is required and whenever working with
file I/O. Remember, even if you are sure a needed file is there and available for processing, there
may be conditions you haven't thought of that could cause errors.

Note: Most of the code examples provided in the AutoCAD documentation do not use error
trapping. This keeps the examples simple and to the point. However, as with all programming
languages, proper error trapping and handling is essential for a robust application.

Acerca del manejo de errores (VBA)


La mayoría de los entornos de desarrollo proporcionan manejo de error predeterminado.

Para VB y VBA, la reacción predeterminada a un error es mostrar un mensaje de error y finalizar la


aplicación. Si bien este comportamiento es adecuado durante la fase de desarrollo de su aplicación, no es
productivo para su usuario final. Es posible que haya errores que desee ignorar o a los que desee dar
respuestas especiales. Puede haber errores por los que desee suprimir la visualización del mensaje de
error, o simplemente controlar el mensaje que se muestra al usuario. Además, la finalización automática
de la aplicación casi nunca es aceptable para el usuario final.

En general, el manejo de errores es necesario siempre que se requiera la entrada del usuario y siempre
que se trabaje con E / S de archivos. Recuerde, incluso si está seguro de que hay un archivo necesario y
está disponible para su procesamiento, puede haber condiciones que no haya pensado que puedan causar
errores.
Nota: la mayoría de los ejemplos de código proporcionados en la documentación de AutoCAD no utilizan
trampas de errores. Esto mantiene los ejemplos simples y al grano. Sin embargo, como con todos los
lenguajes de programación, la captura y el manejo de errores apropiados es esencial para una aplicación
robusta.
About Trapping Runtime Errors (VBA)

In VB and VBA, runtime errors are trapped using the On Error statement.

This statement literally sets a trap for the system. When an error occurs, this statement
automatically detours processing to your specially written error handler. The default error handling
for the system is bypassed.

The On Error statement has three forms:

Acerca de Trapping Runtime Errors (VBA)


En VB y VBA, los errores de tiempo de ejecución quedan atrapados con la instrucción On Error.

Esta declaración literalmente establece una trampa para el sistema. Cuando se produce un error, esta
declaración desvía automáticamente el procesamiento a su manejador de error especialmente escrito. El
manejo de errores predeterminado para el sistema está anulado.

La declaración On Error tiene tres formas:

 On Error Resume Next


 On Error GoTo Label
 On Error GoTo 0

The On Error Resume Next statement is used when you want to ignore errors. This statement
traps the error and instead of displaying an error message and terminating the program, it simply
moves on to the next line of code and continues processing. For example, if you wanted to create
a subroutine to iterate through model space and change the color of each entity, you know that
AutoCAD will throw an error if you try to color an entity on a locked layer. Instead of terminating
the program, simply skip the entity on the locked layer and continue processing the remaining
entities. The On Error Resume Next statement lets you do just that.

The On Error GoTo Label statement is used when you want to write an explicit error handler.
This statement traps the error and instead of displaying an error message and terminating the
program, it jumps to a specific location in your code. Your code can then respond to the error in
whatever manner is appropriate for your application. For example, you can expand the example
above to display a message containing the handle for each entity on the locked layer.

La instrucción On Error Resume Next se usa cuando desea ignorar errores. Esta declaración atrapa el error
y en lugar de mostrar un mensaje de error y terminar el programa, simplemente pasa a la siguiente línea
de código y continúa el procesamiento. Por ejemplo, si desea crear una subrutina para iterar a través del
espacio modelo y cambiar el color de cada entidad, sabe que AutoCAD emitirá un error si intenta colorear
una entidad en una capa bloqueada. En lugar de terminar el programa, simplemente omita la entidad en la
capa bloqueada y continúe procesando las entidades restantes. La instrucción On Error Resume Next le
permite hacer eso.

La sentencia On Error GoTo Label se utiliza cuando desea escribir un controlador de error explícito. Esta
declaración atrapa el error y en lugar de mostrar un mensaje de error y terminar el programa, salta a una
ubicación específica en su código. Su código puede entonces responder al error de la manera que sea
apropiada para su aplicación. Por ejemplo, puede expandir el ejemplo anterior para mostrar un mensaje
que contenga el identificador de cada entidad en la capa bloqueada.

Handle errors with the On Error Resume Next statement


The following subroutine iterates model space and changes the color of each entity to red. Try
running this subroutine on a drawing with several entities, some of which are on a locked layer.
Next, comment out the On Error Resume Next statement and run the subroutine again. You
will notice the subroutine terminates at the first entity on the locked layer.

Manejar los errores con la declaración On Error Resume Next


La siguiente subrutina repite el espacio modelo y cambia el color de cada entidad a rojo. Intente ejecutar
esta subrutina en un dibujo con varias entidades, algunas de las cuales están en una capa bloqueada. A
continuación, comente la instrucción On Error Resume Next y ejecute la subrutina nuevamente. Notará
que la subrutina termina en la primera entidad en la capa bloqueada.

Sub Ch11_ColorEntities()

Dim entry As Object

On Error Resume Next

For Each entry In ThisDrawing.ModelSpace

entry.Color = acRed

Next entry

End Sub

Handle errors with the On Error GoTo statement


The following subroutine iterates model space and changes the color of each entity to red. For
each entity on the locked layer, the error handler displays a custom error message and the handle
of the entity. Try running this subroutine on a drawing with several entities, some of which are on a
locked layer. Next, comment out the On Error GoTo MyErrorHandling statement and run
the subroutine again. You will notice the subroutine terminates at the first entity on the locked
layer.
Manejar errores con la declaración On Error GoTo
La siguiente subrutina repite el espacio modelo y cambia el color de cada entidad a rojo. Para cada entidad
en la capa bloqueada, el controlador de errores muestra un mensaje de error personalizado y el
identificador de la entidad. Intente ejecutar esta subrutina en un dibujo con varias entidades, algunas de
las cuales están en una capa bloqueada. A continuación, comente la sentencia On Error GoTo
MyErrorHandling y ejecute la subrutina nuevamente. Notará que la subrutina termina en la primera
entidad en la capa bloqueada.

Sub Ch11_ColorEntities2()

Dim entry As Object

On Error GoTo MyErrorHandler

For Each entry In ThisDrawing.ModelSpace

entry.Color = acRed

Next entry

' Important! Exit the subroutine before the error handler

Exit Sub

MyErrorHandler:

Msgbox entry.EntityName + " is on a locked layer." + _

" The handle is: " + entry.Handle

Resume Next

End Sub

The On Error GoTo 0 statement cancels the current error handler. The On Error Resume
Next and On Error GoTo Label statements remain in effect until the subroutine ends, another
error handler is declared, or the error handler is canceled with the On Error GoTo 0 statement.
La instrucción On Error GoTo 0 cancela el controlador de error actual. Las sentencias On Error Resume Next
y On Error GoTo Label permanecen vigentes hasta que la subrutina finaliza, se declara otro controlador de
errores o se cancela el manejador de errores con la instrucción On Error GoTo 0.
About Responding to Trapped Errors (VBA)

After an error is trapped, you must determine what to do with the error and if program execution
should continue.
Now that you have trapped an error, what do you do with it? The answer depends on the nature of
your application and the nature of the error.

VB and VBA provide information on the type of error that has been trapped by using
the Err object. This object has several properties: Number, Description, Source, HelpFile,
HelpContext, and LastDLLError. The properties of the Err object get filled in with the information
for the most current error. The most important properties are the Number and Description
properties. The Number property contains the unique error code associated with the error, and the
Description property contains the error message that would normally be displayed.

In your error handler you can compare the Number property of the error to an expected value. This
will help you determine the nature of the error that has occurred. Once you know what kind of error
you are dealing with, you can take the appropriate action.

Acerca de la respuesta a errores atrapados (VBA)


Después de atrapar un error, debe determinar qué hacer con el error y si la ejecución del programa debe
continuar.

Ahora que atrapaste un error, ¿qué haces con él? La respuesta depende de la naturaleza de su aplicación y
la naturaleza del error.

VB y VBA proporcionan información sobre el tipo de error que ha quedado atrapado al usar el objeto Err.
Este objeto tiene varias propiedades: Number, Description, Source, HelpFile, HelpContext y LastDLLError.
Las propiedades del objeto Err se completan con la información del error más reciente. Las propiedades
más importantes son las propiedades de Número y Descripción. La propiedad Number contiene el código
de error único asociado con el error, y la propiedad Description contiene el mensaje de error que
normalmente se mostraría.

En su controlador de errores, puede comparar la propiedad Número del error con un valor esperado. Esto
te ayudará a determinar la naturaleza del error que ha ocurrido. Una vez que sepa con qué tipo de error
está tratando, puede tomar la acción adecuada.
About Responding to AutoCAD User Input Errors (VBA/ActiveX)

The user-input methods provide a certain amount of inherent error trapping in that they require the
user to enter a certain type of data.

If the user tries to enter some other data, AutoCAD rejects the input and reprompts the user. Using
the InitializeUserInput method with the user input functions provides additional control of
the user input but can also introduce additional conditions that must be verified through error
trapping. For an example of error trapping that is required with certain types of user-input.

Acerca de cómo responder a los errores de entrada de usuario de AutoCAD (VBA / ActiveX)
Los métodos de entrada del usuario proporcionan una cierta cantidad de captura de errores inherente, ya
que requieren que el usuario ingrese un cierto tipo de datos.
Si el usuario intenta ingresar otros datos, AutoCAD rechaza la entrada y reprompea al usuario. El uso del
método InitializeUserInput con las funciones de entrada del usuario proporciona un control adicional de la
entrada del usuario, pero también puede introducir condiciones adicionales que deben verificarse
mediante la captura de errores. Para ver un ejemplo de captura de errores que se requiere con ciertos
tipos de entrada de usuario.
Application Error Types Reference (VBA)

There are three different types of errors you can encounter in your applications: compile-time
errors, runtime errors, and logic errors.

 Compile-time errors occur during the construction of your application. These errors consist mostly
of syntax mistakes, variable scoping problems, or data typing problems. In VBA, these types of
errors are caught by the development environment. When you enter an incorrect line of code, the
line is highlighted and an error message appears telling you the problem. Compile-time errors
must be corrected before the application can run.
 Runtime errors are a little more difficult to find and correct. They occur during the execution of your
code, and often involve receiving information from the user. For example, if your application
requires the user to enter the name of a drawing and the user enters a name for a drawing that
didn't exist, a runtime error occurs. To handle runtime errors effectively, you must predict what
kinds of problems could happen, trap them, and then write code to handle these situations.
 Logic errors are the most difficult to find and correct. Symptoms of logic errors include situations in
which there are no compile-time errors and no runtime errors, but the outcome of your program is
still incorrect. This is what programmers refer to as a bug—and a bug can be very easy or very
difficult to track down.
Information on finding and correcting all three types of errors can be found in documentation for
your development environment. AutoCAD-specific errors fall into the runtime error category, so
these types of errors will be covered more fully in this documentation.

Referencia de tipos de error de la aplicación (VBA)


Hay tres tipos diferentes de errores que puede encontrar en sus aplicaciones: errores de tiempo de
compilación, errores de tiempo de ejecución y errores de lógica.

Los errores de tiempo de compilación ocurren durante la construcción de su aplicación. Estos errores
consisten principalmente en errores de sintaxis, problemas de alcance variable o problemas de escritura de
datos. En VBA, este tipo de errores son atrapados por el entorno de desarrollo. Cuando ingresa una línea
de código incorrecta, la línea se resalta y aparece un mensaje de error que le indica el problema. Los
errores de tiempo de compilación deben corregirse antes de que la aplicación pueda ejecutarse.
Los errores de tiempo de ejecución son un poco más difíciles de encontrar y corregir. Ocurren durante la
ejecución de su código, y a menudo implican la recepción de información del usuario. Por ejemplo, si su
aplicación requiere que el usuario ingrese el nombre de un dibujo y el usuario ingrese un nombre para un
dibujo que no existía, se produce un error de tiempo de ejecución. Para manejar los errores de tiempo de
ejecución de manera efectiva, debe predecir qué tipo de problemas podrían ocurrir, atraparlos y luego
escribir el código para manejar estas situaciones.
Los errores de lógica son los más difíciles de encontrar y corregir. Los síntomas de los errores lógicos
incluyen situaciones en las que no hay errores de tiempo de compilación y no hay errores de tiempo de
ejecución, pero el resultado de su programa sigue siendo incorrecto. Esto es a lo que los programadores se
refieren como un error, y un error puede ser muy fácil o muy difícil de rastrear.
Puede encontrar información sobre cómo encontrar y corregir los tres tipos de errores en la
documentación de su entorno de desarrollo. Los errores específicos de AutoCAD se incluyen en la
categoría de error de tiempo de ejecución, por lo que estos tipos de errores se tratarán con más detalle en
esta documentación.
About Encrypting VBA Code Modules (VBA)

Although VBA does not support creation of executables, it does offer password protection for the
visibility of the project forms, classes, and modules on a project basis.

You can find this Project Protection facility on the VBA IDE menu bar. Click the Tools
menu Project Properties Protection.

Acerca del cifrado de los módulos de código VBA (VBA)


Aunque VBA no es compatible con la creación de ejecutables, sí ofrece protección con contraseña para la
visibilidad de los formularios, clases y módulos del proyecto en base a un proyecto.

Puede encontrar esta función de Protección de proyectos en la barra de menú IDE de VBA. Haga clic en el
menú Herramientas Protección de propiedades del proyecto.
About Running a VBA Macro from a Toolbar or Menu (VBA)

You can run a VBA macro from an AutoCAD toolbar or menu by simply changing the Macro
property for that toolbar or menu.

The Macro property must be set equal to

Acerca de ejecutar una macro de VBA desde una barra de herramientas o menú (VBA)
Puede ejecutar una macro de VBA desde una barra de herramientas o menú de AutoCAD simplemente
cambiando la propiedad Macro para esa barra de herramientas o menú.

La propiedad Macro se debe establecer igual a

-VBARUN filename.dvb!modulename.macroname

where filename is the name of the project file, modulename is the name of the module containing
the macro to be run, and macroname is the name of the macro. The file name is only required
when the file is not loaded in the current session of AutoCAD. If the file name is provided, the file
will be loaded.
donde filename es el nombre del archivo del proyecto, modulename es el nombre del módulo que
contiene la macro que se ejecutará, y macroname es el nombre de la macro. El nombre del archivo solo es
necesario cuando el archivo no se carga en la sesión actual de AutoCAD. Si se proporciona el nombre del
archivo, el archivo se cargará.
About Automatically Loading a VBA Project (VBA)

VBA project files can be automatically loaded into AutoCAD.

There are two different ways to load a VBA project automatically:

 When VBA is loaded it will look in the AutoCAD directory for a project named acad.dvb. This file is
automatically loaded as the default project.
 Any project other than the default, acad.dvb, can be used by explicitly loading that project at
startup using the VBALOAD command. The following code sample uses the AutoLISP startup file
to load VBA and a VBA project named myproj.dvb when AutoCAD is started.
Start notepad.exe and create (or append to) acad.lsp the following lines:

 defun S::STARTUP()
 (command "_VBALOAD" "myproj.dvb")
 )

Acerca de cargar automáticamente un proyecto de VBA (VBA)


Los archivos de proyecto de VBA pueden cargarse automáticamente en AutoCAD.

Hay dos maneras diferentes de cargar un proyecto de VBA automáticamente:

Cuando se carga VBA, buscará en el directorio de AutoCAD un proyecto llamado acad.dvb. Este archivo se
carga automáticamente como el proyecto predeterminado.
Cualquier proyecto que no sea el predeterminado, acad.dvb, se puede usar cargando explícitamente ese
proyecto al inicio utilizando el comando VBALOAD. El siguiente ejemplo de código utiliza el archivo de
inicio de AutoLISP para cargar VBA y un proyecto de VBA llamado myproj.dvb cuando se inicia AutoCAD.
Inicie notepad.exe y cree (o anexe) acad.lsp las siguientes líneas:

About Automatically Running a VBA Macro (VBA)

You can automatically run any macro in the acad.dvb file by calling it with the command line
version of VBARUN from an AutoCAD startup facility like acad.lsp.

For example, to automatically run the macro named drawline, first save the drawline macro in
the acad.dvb file. Next, invoke notepad.exe and create (or append to) acad.lsp the following lines:

Acerca de ejecutar automáticamente una macro de VBA (VBA)


Puede ejecutar automáticamente cualquier macro en el archivo acad.dvb llamándolo con la versión de
línea de comando de VBARUN desde una instalación de inicio de AutoCAD como acad.lsp.

Por ejemplo, para ejecutar automáticamente la macro denominada drawline, primero guarde la macro
drawline en el archivo acad.dvb. A continuación, invoque notepad.exe y cree (o anexe) acad.lsp las
siguientes líneas:

(defun S::STARTUP()

(command "_-vbarun" "drawline")

You can cause a macro to run automatically when VBA loads by naming the
macro AcadStartup. Any macro in your acad.dvb file called AcadStartup will automatically get
executed when VBA loads.
Puede hacer que una macro se ejecute automáticamente cuando VBA se carga nombrando la macro
AcadStartup. Cualquier macro en su archivo acad.dvb llamada AcadStartup se ejecutará automáticamente
cuando se cargue VBA.
About Automatically Opening the VBA IDE Whenever a Project Is Loaded (VBA)

There is an option on the Open VBA Project dialog box that allows you to open the interactive
development environment automatically.

Simply select the Open Visual Basic Editor check box found in the lower-left side of the dialog box
and the VBA IDE will open automatically whenever a VBA project is loaded. This option will remain
set until you turn it off again.

Note: To access the Open VBA Project dialog box, enter VBALOAD at the command line. The
dialog box will open and allow you to choose a project to load. If you do not see the Open VBA
Project dialog box, it is most likely because the system variable FILEDIA is turned off. This system
variable turns on and off the display of dialog boxes. To turn FILEDIA back on, set it to 1.

Acerca de abrir automáticamente el IDE de VBA cuando un proyecto está cargado (VBA)
Hay una opción en el cuadro de diálogo Abrir proyecto de VBA que le permite abrir el entorno de
desarrollo interactivo automáticamente.

Simplemente seleccione la casilla de verificación Abrir Editor de Visual Basic que se encuentra en la parte
inferior izquierda del cuadro de diálogo y el IDE de VBA se abrirá automáticamente cada vez que se cargue
un proyecto de VBA. Esta opción permanecerá configurada hasta que la apague nuevamente.

Nota: Para acceder al cuadro de diálogo Abrir proyecto de VBA, ingrese VBALOAD en la línea de comando.
El cuadro de diálogo se abrirá y le permitirá elegir un proyecto para cargar. Si no ve el cuadro de diálogo
Abrir proyecto de VBA, lo más probable es que la variable de sistema FILEDIA esté desactivada. Esta
variable del sistema enciende y apaga la pantalla de cuadros de diálogo. Para volver a activar FILEDIA,
establézcalo en 1.
About Working in a Zero Document State (VBA)

A zero document state is when there are no open drawings in AutoCAD.

There are several important considerations to keep in mind when you are working with VBA in a
zero document state:

 The ThisDrawing object is undefined in a zero document state. Any attempt to


use ThisDrawing will result in an error.
 Objects that are document dependent are also not defined in a zero document state. Document
dependent objects are those objects that fall below the Document object in the AutoCAD object
model. Working with nondocument-dependent object, such as
the Application or MenuBar objects, is allowed.
 AutoCAD does not have a command line in a zero document state. Any attempt to access the
AutoCAD Command prompt while AutoCAD is in a zero document state will result in an error.

Acerca de trabajar en un estado de documento cero (VBA)


Un estado de documento cero es cuando no hay dibujos abiertos en AutoCAD.

Hay varias consideraciones importantes que debe tener en cuenta cuando trabaje con VBA en un estado
de documento cero:

El objeto ThisDrawing no está definido en un estado de documento cero. Cualquier intento de usar
ThisDrawing dará como resultado un error.
Los objetos que dependen del documento tampoco se definen en un estado de documento cero. Los
objetos dependientes del documento son aquellos objetos que se encuentran debajo del objeto
Documento en el modelo de objetos de AutoCAD. Se permite trabajar con objetos no documentales, como
los objetos Application o MenuBar.
AutoCAD no tiene una línea de comando en un estado de documento cero. Cualquier intento de acceder a
la solicitud del comando de AutoCAD mientras AutoCAD está en un estado de documento cero generará un
error.
About Distributing Your Application (VBA)

After you have tested a project, it is ready to be distributed to your users.

The method you use to distribute your application depends on if it is a VBA project, or an
application developed with VB or VB.NET.

VBA Applications
VBA applications can be distributed two different ways:

 Embedded in an AutoCAD drawing file


 Stored in a VBA project file
You must choose a distribution option that is appropriate for your application. Applications that are
applicable to the current drawing, and do not access other drawings, are often embedded in the
drawing. By embedding the application in the drawing, you can always be sure the application is
loaded, and therefore available to the user whenever the drawing is open.

Applications that are used by many people, are updated frequently, need to open and close other
drawings, or are not used frequently you may want to store in a VBA project file. In this way, there
is one central location for the application, and everyone can be sure to use the latest version.

Standalone Applications
Visual Basic or .NET applications, or any other out-of-process applications, cannot be stored
within an AutoCAD drawing. These applications are compiled into standalone executables (EXEs).

Acerca de la distribución de su aplicación (VBA)


Después de que haya probado un proyecto, está listo para ser distribuido a sus usuarios.

El método que utiliza para distribuir su aplicación depende de si se trata de un proyecto de VBA o de una
aplicación desarrollada con VB o VB.NET.

Aplicaciones VBA
Las aplicaciones de VBA se pueden distribuir de dos formas diferentes:

Integrado en un archivo de dibujo de AutoCAD


Almacenado en un archivo de proyecto de VBA
Debe elegir una opción de distribución apropiada para su aplicación. Las aplicaciones que son aplicables al
dibujo actual, y no tienen acceso a otros dibujos, a menudo se incrustan en el dibujo. Al incrustar la
aplicación en el dibujo, siempre puede estar seguro de que la aplicación está cargada y, por lo tanto, está
disponible para el usuario siempre que el dibujo esté abierto.

Las aplicaciones que utilizan muchas personas, se actualizan con frecuencia, necesitan abrir y cerrar otros
dibujos o no se usan con frecuencia, es posible que desee almacenarlas en un archivo de proyecto de VBA.
De esta manera, hay una ubicación central para la aplicación, y todos pueden estar seguros de usar la
última versión.

Aplicaciones autónomas
Las aplicaciones de Visual Basic o .NET, o cualquier otra aplicación fuera de proceso, no se pueden
almacenar dentro de un dibujo de AutoCAD. Estas aplicaciones se compilan en ejecutables independientes
(EXEs).
Terminology Reference (VBA)

There are terms that you should be familiar with when reading the VBA and ActiveX
documentation.

The following terms will help you understand and work within the VBA environment.

Dialog box
A means by which information is displayed or gathered during application execution.

Form/UserForm
Container for dialog box controls.

Macro
A public subroutine or function. Macros are exposed to the user as an executable
component of your project.

Module
A group of (usually related) subroutines and functions.

Project
A set of forms and modules grouped together in a single file.

Referencia de terminología (VBA)


Hay términos con los que debe estar familiarizado cuando lea la documentación de VBA y ActiveX.

Los siguientes términos lo ayudarán a comprender y trabajar dentro del entorno de VBA.

Caja de diálogo
Un medio por el cual la información se muestra o recopila durante la ejecución de la aplicación.
Formulario / UserForm
Contenedor para controles de cuadro de diálogo.
Macro
Una subrutina o función pública. Las macros están expuestas al usuario como un componente ejecutable
de su proyecto.
Módulo
Un grupo de subrutinas y funciones (generalmente relacionadas).
Proyecto
Un conjunto de formularios y módulos agrupados en un solo archivo.

Basics

Using ActiveX Automation


About the AutoCAD Object Model (VBA/ActiveX)

An object is the main building block of the AutoCAD ActiveX interface.

Each exposed object represents a precise part of AutoCAD. There are many different types of
objects in the AutoCAD ActiveX interface. For example:

 Graphical objects such as lines, arcs, text, and dimensions are objects.
 Style settings such as linetypes and dimension styles are objects.
 Organizational structures such as layers, groups, and blocks are objects.
 The drawing display such as view and viewport are objects.
 Even the drawing and the AutoCAD application are considered objects.
The objects are structured in a hierarchical fashion, with the Application object at the root. The
view of this hierarchical structure is referred to as the Object Model. The Object Model shows you
which object provides access to the next level of objects.

Acerca del modelo de objetos de AutoCAD (VBA / ActiveX)

Un objeto es el componente principal de la interfaz AutoCAD ActiveX.

Cada objeto expuesto representa una parte precisa de AutoCAD. Hay muchos tipos diferentes de
objetos en la interfaz AutoCAD ActiveX. Por ejemplo:

Los objetos gráficos como líneas, arcos, texto y dimensiones son objetos.

Las configuraciones de estilo tales como tipos de línea y estilos de dimensión son objetos.

Las estructuras organizacionales como capas, grupos y bloques son objetos.

La pantalla de dibujo como vista y ventana gráfica son objetos.

Incluso el dibujo y la aplicación AutoCAD se consideran objetos.

Los objetos están estructurados de forma jerárquica, con el objeto Aplicación en la raíz. La vista
de esta estructura jerárquica se conoce como el Modelo de Objetos. El Modelo de objetos le
muestra qué objeto proporciona acceso al siguiente nivel de objetos.
About Accessing the Object Hierarchy (VBA/ActiveX)

Accessing the object hierarchy is easy from within VBA. This is because VBA is running in-
process with the current AutoCAD session so there is no additional step needed to connect it to
the application.

VBA provides a link to the active drawing in the current AutoCAD session through
the ThisDrawing object. By using ThisDrawing you gain immediate access to the current
Document object and all of its methods and properties, and all of the other objects in the hierarchy.

When used in global projects, ThisDrawing always refers to the active document in AutoCAD.
When used in embedded projects, ThisDrawing always refers to the document containing the
project. For example, the following line of code in a global project saves whatever drawing is
currently active in AutoCAD:

ThisDrawing.Save

Acerca del acceso a la jerarquía de objetos (VBA / ActiveX)

Acceder a la jerarquía de objetos es fácil desde dentro de VBA. Esto se debe a que VBA se
ejecuta en proceso con la sesión actual de AutoCAD, por lo que no es necesario un paso
adicional para conectarlo a la aplicación.

VBA proporciona un enlace al dibujo activo en la sesión actual de AutoCAD a través del objeto
ThisDrawing. Al utilizar ThisDrawing, obtiene acceso inmediato al objeto de documento actual y a
todos sus métodos y propiedades, y a todos los demás objetos de la jerarquía.

Cuando se usa en proyectos globales, ThisDrawing siempre se refiere al documento activo en


AutoCAD. Cuando se usa en proyectos integrados, ThisDrawing siempre hace referencia al
documento que contiene el proyecto. Por ejemplo, la siguiente línea de código en un proyecto
global guarda cualquier dibujo actualmente activo en AutoCAD:
About Collection Objects (VBA/ActiveX)

AutoCAD groups most objects in collections. Although these collections contain different types of
data, they can be processed using similar techniques.

Each collection has a method for adding an object to the collection. Most collections use
the Add method for this purpose. However, entity objects are usually added using a method titled
Add<Entityname>. For example, to add a line you would use the AddLine method.

Collections also have some other methods and properties in common. The Count property can be
used to obtain a zero-based count of the objects in a collection. The Item method can be used to
obtain any object within a collection.

Acerca de Objetos de colección (VBA / ActiveX)


AutoCAD agrupa la mayoría de los objetos en las colecciones. Aunque estas colecciones
contienen diferentes tipos de datos, se pueden procesar utilizando técnicas similares.

Cada colección tiene un método para agregar un objeto a la colección. La mayoría de las
colecciones usan el método Agregar para este propósito. Sin embargo, los objetos de entidad
generalmente se agregan usando un método llamado Add <Entityname>. Por ejemplo, para
agregar una línea, usaría el método AddLine.

Las colecciones también tienen otros métodos y propiedades en común. La propiedad Count se
puede usar para obtener un conteo basado en cero de los objetos en una colección. El método
Item se puede usar para obtener cualquier objeto dentro de una colección.

About Properties and Methods (VBA/ActiveX)

Each object has associated properties and methods.

Properties describe aspects of the individual object, while methods are actions that can be
performed on the individual object. Once an object is created, you can query and edit the object
through its properties and methods.

For example, a Circle object has the Center property. This property represents the 3D world
coordinate system coordinate at the center of that circle. To change the center of the circle, simply
set this property to the new coordinate. The Circle object also has a method called Offset.
This method creates a new object at a specified offset distance from the existing circle.

Acerca de las propiedades y métodos (VBA / ActiveX)

Cada objeto tiene propiedades y métodos asociados.

Las propiedades describen aspectos del objeto individual, mientras que los métodos son acciones
que se pueden realizar en el objeto individual. Una vez que se crea un objeto, puede consultar y
editar el objeto a través de sus propiedades y métodos.

Por ejemplo, un objeto Circle tiene la propiedad Center. Esta propiedad representa la coordenada
del sistema de coordenadas mundiales 3D en el centro de ese círculo. Para cambiar el centro del
círculo, simplemente establezca esta propiedad en la nueva coordenada. El objeto Circle también
tiene un método llamado Offset. Este método crea un nuevo objeto a una distancia de
desplazamiento especificada del círculo existente.
About Parent Objects (VBA/ActiveX)

Each object has a parent object to which it is permanently linked.


All objects originate from a single parent object called the Root object. You can access all the
objects in the interface by following the links from the root to the child objects. Additionally, objects
have a property called Application that links directly back to the Root object.

The Root object for the AutoCAD interface is the AutoCAD application.

Acerca de los objetos principales (VBA / ActiveX)

Cada objeto tiene un objeto principal al que está vinculado permanentemente.

Todos los objetos se originan a partir de un solo objeto padre llamado el objeto raíz. Puede
acceder a todos los objetos en la interfaz siguiendo los enlaces de la raíz a los objetos
secundarios. Además, los objetos tienen una propiedad llamada Aplicación que vincula
directamente al objeto raíz.

El objeto raíz para la interfaz AutoCAD es la aplicación AutoCAD.


About Locating the Type Library (VBA/ActiveX)

The objects, properties, and methods exposed by Automation objects are contained in a type
library. A type library is a file or part of a file that describes the type of one or more objects.

Type libraries do not store objects; they store information. By accessing a type library, applications
and browsers can determine the characteristics of an object, such as the interfaces supported by
the object and the names and addresses of the members of each interface.

Before you can use the Automation object exposed by an application, you must reference its type
library. The Automation objects related to AutoCAD are

Acerca de la ubicación de la biblioteca de tipos (VBA / ActiveX)

Los objetos, propiedades y métodos expuestos por los objetos de Automatización están
contenidos en una biblioteca de tipos. Una biblioteca de tipos es un archivo o parte de un archivo
que describe el tipo de uno o más objetos.

Las bibliotecas de tipos no almacenan objetos; ellos almacenan información. Al acceder a una
biblioteca de tipos, las aplicaciones y los navegadores pueden determinar las características de
un objeto, como las interfaces admitidas por el objeto y los nombres y direcciones de los
miembros de cada interfaz.
Antes de poder usar el objeto de Automatización expuesto por una aplicación, debe hacer
referencia a su biblioteca de tipos. Los objetos de automatización relacionados con AutoCAD son

 AutoCAD 2017 Type Library file, acax21enu.tlb, which is located at %ProgramFiles%\Common


Files\Autodesk Shared

Note: Reference is automatically set in the VBA IDE, but needs to be set in other interactive
development environments.

 AutoCAD/ObjectDBX Common 21.0 type library file, axdb21enu.tlb, which is located


at %ProgramFiles%\Common Files\Autodesk Shared
 AcSmComponents21 1.0 type library file (Sheet Set Object library), AcSmComponents21.tlb,
which is located at %ProgramFiles%\Common Files\Autodesk Shared
 CAO 1.0 type library file (Connectivity Automation Object library), cao20enu.tlb, which is located
at %ProgramFiles%\Common Files\Autodesk Shared
 Transmittal 19.0 type library file (eTransmittal Object library), AcETransmit19.tlb, which is located
at %ProgramFiles%\Common Files\Autodesk Shared
 Autodesk Standards Manager Type Library file (CAD Standards Plug-in library), AcStMgr.tlb,
which is located at %ProgramFiles%\Common Files\Autodesk Shared

Note: Use with VB6, Managed .NET, or C++ to create stand-alone DLLs that can be used with the
CAD Standards feature in AutoCAD or the Batch Standards Checker.

Archivo de AutoCAD 2017 Type Library, acax21enu.tlb, que se encuentra en% ProgramFiles% \
Common Files \ Autodesk Shared

Nota: La referencia se establece automáticamente en el IDE de VBA, pero debe establecerse en


otros entornos de desarrollo interactivos.

Archivo de biblioteca de tipo AutoCAD / ObjectDBX Common 21.0, axdb21enu.tlb, que se


encuentra en% ProgramFiles% \ Common Files \ Autodesk Shared

AcSmComponents21 1.0 archivo de biblioteca de tipo (biblioteca de objetos de conjunto de


planos), AcSmComponents21.tlb, que se encuentra en% Archivos de programa \ Archivos
comunes \ Autodesk compartido

Archivo de biblioteca de tipo CAO 1.0 (biblioteca de objetos de automatización de conectividad),


cao20enu.tlb, que se encuentra en% Archivos de programa% \ Archivos comunes \ Autodesk
compartido

Transmittal 19.0 type library file (biblioteca de objetos eTransmittal), AcETransmit19.tlb, que se
encuentra en% ProgramFiles% \ Common Files \ Autodesk Shared

Archivo de Autodesk Standards Manager Type Library (biblioteca de complementos de


estándares CAD), AcStMgr.tlb, que se encuentra en% ProgramFiles% \ Common Files \ Autodesk
Shared

Nota: Utilícelo con VB6, Managed .NET o C ++ para crear archivos DLL independientes que se
puedan usar con la función de estándares CAD en AutoCAD o en el Batch Standards Checker.
You can use an application's objects without referencing the application's type library. However, it
is preferable to add the type library reference for the following reasons:

 Globally accessible functions may be accessed directly without qualification.


 Invocation of functions, properties, and methods can be checked at compile time for correctness,
and therefore will execute more quickly at runtime.
 It is possible to declare variables of the types defined in the library, which increases runtime
reliability and readability.

Puede usar los objetos de una aplicación sin hacer referencia a la biblioteca de tipos de la
aplicación. Sin embargo, es preferible agregar la referencia de biblioteca de tipo por los siguientes
motivos:

Se puede acceder a las funciones de acceso global directamente sin calificación.

La invocación de funciones, propiedades y métodos se puede verificar en tiempo de compilación


para ver si es correcta, y por lo tanto se ejecutará más rápidamente en el tiempo de ejecución.

Es posible declarar variables de los tipos definidos en la biblioteca, lo que aumenta la


confiabilidad y legibilidad del tiempo de ejecución.
About Using Variants in Methods and Properties (VBA/ActiveX)

ActiveX Automation uses variants to pass arrays of data.

Although this may seem confusing to a novice user, it is not difficult once you learn the basics. In
addition, AutoCAD ActiveX Automation provides utilities to help you convert your data types.

Acerca del uso de variantes en métodos y propiedades (VBA / ActiveX)

ActiveX Automation usa variantes para pasar matrices de datos.

Aunque esto puede parecer confuso para un usuario novato, no es difícil una vez que aprende los
conceptos básicos. Además, AutoCAD ActiveX Automation proporciona utilidades para ayudarlo a
convertir sus tipos de datos.
About Using Other Programming Languages (VBA/ActiveX)

Most of the ActiveX related topics were written for use with the VBA programming language. To
use the code in other programming environments, you must update it for the chosen environment.

Use the documentation for your development environment to help you convert the example code.

Note: The registry key to create and access an instance of the COM application for AutoCAD
2017 is AutoCAD.Application.21.
Acerca del uso de otros lenguajes de programación (VBA / ActiveX)

La mayoría de los temas relacionados con ActiveX se escribieron para su uso con el lenguaje de
programación de VBA. Para usar el código en otros entornos de programación, debe actualizarlo
para el entorno elegido.

Use la documentación de su entorno de desarrollo para ayudarlo a convertir el código de ejemplo.

Nota: La clave de registro para crear y acceder a una instancia de la aplicación COM para
AutoCAD 2017 es AutoCAD.Application.21.
About Opening, Saving, and Closing Drawings (VBA/ActiveX)

The Documents collection and Document object provide access to the AutoCAD file functions.

To create a new drawing, or open an existing drawing, use the methods on


the Documents collection. The Add method creates a new drawing and adds that drawing to
the Documents collection. The Open method opens an existing drawing. There is also
a Close method on the Documents collection that closes all the drawings open in the AutoCAD
session.

Use either the Save or SaveAs method to save a drawing. Occasionally you will want to check if
the active drawing has any unsaved changes. It is a good idea to do this before you quit the
AutoCAD session or start a new drawing. Use the Saved property to make sure that the current
drawing does not contain any unsaved changes.

To import and export drawings, use the Import and Export methods on the Document object.

Open an existing drawing


This example uses the Open method to open an existing drawing. The VBA Dir function is used
to check for the existence of the file before trying to open it. You should change the drawing file
name or path to specify an existing AutoCAD drawing file on your system.

Acerca de Abrir, guardar y cerrar dibujos (VBA / ActiveX)

La colección Documentos y el objeto Documento proporcionan acceso a las funciones del archivo
AutoCAD.

Para crear un nuevo dibujo o abrir un dibujo existente, use los métodos en la colección
Documentos. El método Agregar crea un nuevo dibujo y agrega ese dibujo a la colección
Documentos. El método Open abre un dibujo existente. También hay un método Cerrar en la
colección Documentos que cierra todos los dibujos abiertos en la sesión de AutoCAD.
Utilice el método Guardar o Guardar como para guardar un dibujo. Ocasionalmente querrá
verificar si el dibujo activo tiene cambios no guardados. Es una buena idea hacer esto antes de
salir de la sesión de AutoCAD o comenzar un nuevo dibujo. Use la propiedad Saved para
asegurarse de que el dibujo actual no contenga ningún cambio no guardado.

Para importar y exportar dibujos, use los métodos Importar y Exportar en el objeto Documento.

Abra un dibujo existente

Este ejemplo usa el método Open para abrir un dibujo existente. La función VBA Dir se utiliza
para verificar la existencia del archivo antes de intentar abrirlo. Debe cambiar el nombre o la ruta
del archivo de dibujo para especificar un archivo de dibujo de AutoCAD existente en su sistema.

Sub Ch3_OpenDrawing()

Dim dwgName As String

dwgName = "c:\campus.dwg"

If Dir(dwgName) <> "" Then

ThisDrawing.Application.Documents.Open dwgName

Else

MsgBox "File " & dwgName & " does not exist."

End If

End Sub

Create a new drawing


This example uses the Add method to create a new drawing based on the default template.

Crea un nuevo dibujo

Este ejemplo utiliza el método Agregar para crear un nuevo dibujo basado en la plantilla
predeterminada.

Sub Ch3_NewDrawing()

Dim docObj As AcadDocument


Set docObj = ThisDrawing.Application.Documents.Add

End Sub

Save the active drawing


This example saves the active drawing under its current name and again under a new name.

Guarde el dibujo activo

Este ejemplo guarda el dibujo activo bajo su nombre actual y nuevamente bajo un nuevo nombre.

Sub Ch3_SaveActiveDrawing()

' Save the active drawing under the current name

ThisDrawing.Save

' Save the active drawing under a new name

ThisDrawing.SaveAs "MyDrawing.dwg"

End Sub

Test if a drawing has unsaved changes


This example checks to see if there are unsaved changes and verifies with the user that it is OK to
save the drawing (if it is not OK, skip to the end). If OK, use the Save method to save the current
drawing, as shown here:

Prueba si un dibujo tiene cambios no guardados

Este ejemplo verifica si hay cambios no guardados y verifica con el usuario que está bien guardar
el dibujo (si no está bien, salte hasta el final). Si está bien, use el método Guardar para guardar el
dibujo actual, como se muestra aquí:

Sub Ch3_TestIfSaved()

If Not (ThisDrawing.Saved) Then

If MsgBox("Do you wish to save this drawing?", _

vbYesNo) = vbYes Then


ThisDrawing.Save

End If

End If

End Sub

About Setting AutoCAD Preferences (VBA/ActiveX)

There are nine objects pertaining to options, each representing a tab in the Options dialog box.

These objects provide access to all of the registry-stored options in the Options dialog box. You
can customize many of the AutoCAD settings by using properties found on these objects. These
objects are

Acerca de establecer las preferencias de AutoCAD (VBA / ActiveX)

Hay nueve objetos pertenecientes a opciones, cada uno representa una pestaña en el cuadro de
diálogo Opciones.

Estos objetos proporcionan acceso a todas las opciones almacenadas en el registro en el cuadro
de diálogo Opciones. Puede personalizar muchas de las configuraciones de AutoCAD utilizando
las propiedades que se encuentran en estos objetos. Estos objetos son

 PreferencesDisplay
 PreferencesDrafting
 PreferencesFiles
 PreferencesOpenSave
 PreferencesOutput
 PreferencesProfiles
 PreferencesSelection
 PreferencesSystem
 PreferencesUser

These objects are accessible with the Preferences object. To gain access to
the Preferences object, use the Preferences property of the Application object:

Estos objetos son accesibles con el objeto de Preferencias. Para obtener acceso al objeto
Preferencias, use la propiedad Preferencias del objeto Aplicación:

Dim acadPref as AcadPreferences

Set acadPref = ThisDrawing.Application.Preferences


You can then access any of the specific Preferences objects using
the Display, Drafting, Files, OpenSave, Output, Profile, Selection, System,
and User properties.

A continuación, puede acceder a cualquiera de los objetos de Preferencias específicos utilizando


las propiedades Pantalla, Dibujo, Archivos, AbrirAhorro, Salida, Perfil, Selección, Sistema y
Usuario.

Set the crosshairs to full screen

Establecer el punto de mira a pantalla completa

Sub Ch2_PrefsSetCursor()

' This example sets the crosshairs of the AutoCAD drawing cursor

' to full screen.

' Access the Preferences object

Dim acadPref As AcadPreferences

Set acadPref = ThisDrawing.Application.Preferences

' Use the CursorSize property to set the size of the crosshairs

acadPref.Display.CursorSize = 100

End Sub

Display the screen menu and scroll bars

Mostrar el menú de la pantalla y las barras de desplazamiento

Sub Ch2_PrefsSetDisplay()

' This example disables the scroll

' bars with the DisplayScrollBars

' properties.

' Access the Preferences object

Dim acadPref As AcadPreferences


Set acadPref = ThisDrawing.Application.Preferences

' Display the and disable scroll bars

acadPref.Display.DisplayScrollBars = False

End Sub

About Controlling the Application Window (VBA/ActiveX)

The ability to control the Application window allows developers the flexibility to create effective and
intelligent applications.

There will be times when it is appropriate for your application to minimize the AutoCAD window,
perhaps while your code is performing work in another application such as Excel. Additionally, you
will often want to verify the state of the AutoCAD window before performing such tasks as
prompting for input from the user.

Using methods and properties found on the Application object, you can change the position,
size, and visibility of the Application window. You can also use the WindowState property to
minimize, maximize, and check the current state of the Application window.

Acerca del control de la ventana de la aplicación (VBA / ActiveX)

La capacidad de controlar la ventana de la aplicación permite a los desarrolladores la flexibilidad


para crear aplicaciones efectivas e inteligentes.

Habrá momentos en los que sea apropiado que su aplicación minimice la ventana de AutoCAD,
tal vez mientras su código esté funcionando en otra aplicación como Excel. Además, a menudo
querrá verificar el estado de la ventana de AutoCAD antes de realizar tareas como solicitar ayuda
del usuario.

Con los métodos y las propiedades que se encuentran en el objeto Aplicación, puede cambiar la
posición, el tamaño y la visibilidad de la ventana de la Aplicación. También puede usar la
propiedad WindowState para minimizar, maximizar y verificar el estado actual de la ventana de la
Aplicación.

Position and size the Application window


This example uses the WindowTop, WindowLeft, Width, and Height properties to position the
AutoCAD Application window in the upper-left corner of the screen and size it to 400 pixels wide
by 400 pixels high.

Posiciona y dimensiona la ventana de la aplicación


Este ejemplo utiliza las propiedades WindowTop, WindowLeft, Width y Height para posicionar la
ventana de la aplicación AutoCAD en la esquina superior izquierda de la pantalla y dimensionarla
a 400 píxeles de ancho por 400 píxeles de alto.

Sub Ch3_PositionApplicationWindow()

ThisDrawing.Application.WindowTop = 0

ThisDrawing.Application.WindowLeft = 0

ThisDrawing.Application.width = 400

ThisDrawing.Application.height = 400

End Sub

Maximize the Application window

Maximiza la ventana de la aplicación

Sub Ch3_MaximizeApplicationWindow()

ThisDrawing.Application.WindowState = acMax

End Sub

Minimize the Application window

Sub Ch3_MinimizeApplicationWindow()

ThisDrawing.Application.WindowState = acMin

End Sub

Find the current state of the Application window


This example queries the state of the Application window and displays the state in a message box
to the user.

Encuentre el estado actual de la ventana de la aplicación

Este ejemplo consulta el estado de la ventana de la Aplicación y muestra el estado en un cuadro


de mensaje para el usuario.

Sub Ch3_CurrentWindowState()

Dim CurrWindowState As Integer


Dim msg As String

CurrWindowState = ThisDrawing.Application.WindowState

msg = Choose(CurrWindowState, "normal", "minimized", "maximized")

MsgBox "The application window is " + msg

End Sub

Make the Application window invisible


The following code uses the Visible property to make the AutoCAD application invisible to the
end user.

Hacer que la ventana de la aplicación sea invisible

El siguiente código usa la propiedad Visible para hacer que la aplicación AutoCAD sea invisible
para el usuario final.

Sub Ch3_HideWindowState()

ThisDrawing.Application.Visible = False

End Sub

About Controlling the Drawing Windows (VBA/ActiveX)

You can minimize, maximize, reposition, resize, and check the state of any Document window.

The way a drawing is displayed within a window by using views, viewports, and zooming methods
can also be manipulated with the Document object.

AutoCAD ActiveX provides many ways to display views of your drawing. You can control the
drawing display to move quickly to different areas of your drawing while you track the overall effect
of your changes. You can zoom to change magnification or pan to reposition the view in the
graphics area, save a view and then restore it when you need to plot or refer to specific details, or
display several views at one time by splitting the screen into several tiled viewports.

Acerca del control del dibujo de Windows (VBA / ActiveX)

Puede minimizar, maximizar, cambiar la posición, cambiar el tamaño y verificar el estado de


cualquier ventana de documento.
La forma en que se muestra un dibujo dentro de una ventana mediante el uso de vistas, ventanas
gráficas y métodos de acercamiento también se puede manipular con el objeto Documento.

AutoCAD ActiveX proporciona muchas formas de mostrar vistas de su dibujo. Puede controlar la
visualización del dibujo para moverse rápidamente a diferentes áreas de su dibujo mientras
rastrea el efecto general de sus cambios. Puede hacer zoom para cambiar la ampliación o
panorámica para cambiar la posición de la vista en el área de gráficos, guardar una vista y
restaurarla cuando necesite trazar o referirse a detalles específicos, o mostrar varias vistas a la
vez dividiendo la pantalla en varias ventanas de visualización en mosaico .
About Resetting Active Objects (VBA/ActiveX)

Changes to most active objects, such as the active layer and active linetype, appear immediately.

However, there are several active objects that must be reset for changes to appear. These objects
are the active text style, the active user coordinate system (UCS), and the active viewport. If
changes are made to any of these objects, the object must be reset, and the Regen method must
be called for the changes to appear.

To reset these objects, simply set the ActiveTextStyle, ActiveUCS,


or ActiveViewport property, using the updated object.

Reset the active viewport


The following example changes the display of the grid in the active viewport and then resets the
viewport as the active viewport to display the change.

Acerca del restablecimiento de objetos activos (VBA / ActiveX)

Los cambios en la mayoría de los objetos activos, como la capa activa y el tipo de línea activa,
aparecen de inmediato.

Sin embargo, hay varios objetos activos que deben restablecerse para que aparezcan los
cambios. Estos objetos son el estilo de texto activo, el sistema de coordenadas del usuario activo
(UCS) y la ventana gráfica activa. Si se realizan cambios a cualquiera de estos objetos, el objeto
debe restablecerse y se debe solicitar el método Regen para que aparezcan los cambios.

Para restablecer estos objetos, simplemente configure la propiedad ActiveTextStyle, ActiveUCS o


ActiveViewport, utilizando el objeto actualizado.

Restablecer la ventana activa

El siguiente ejemplo cambia la visualización de la cuadrícula en la ventana activa y luego


restablece la vista como la ventana activa para mostrar el cambio.

Sub Ch3_ResetActiveViewport()
' Toggle the setting of the grid display

' for the active viewport

ThisDrawing.ActiveViewport.GridOn = Not
(ThisDrawing.ActiveViewport.GridOn)

' Reset the active viewport

ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport

End Sub

About Setting and Returning System Variables (VBA/ActiveX)

The Document object provides the SetVariable and GetVariable methods for setting and
retrieving AutoCAD system variables.

For example, to assign an integer to the AutoCAD MAXSORT system variable, use the following
code:

Acerca del establecimiento y la devolución de variables del sistema (VBA / ActiveX)

El objeto Document proporciona los métodos SetVariable y GetVariable para establecer y


recuperar variables del sistema AutoCAD.

Por ejemplo, para asignar un número entero a la variable del sistema AutoCAD MAXSORT, use el
siguiente código:

ThisDrawing.SetVariable "MAXSORT", 100

About Drawing with Precision (VBA/ActiveX)

With AutoCAD you can create your drawings with precise geometry without performing tedious
calculations.

Often you can specify precise points without knowing the coordinates. Without leaving the drawing
screen, you can perform calculations on your drawing and display various types of status
information.

At this time, AutoCAD ActiveX Automation does not provide a method for the following AutoCAD
capabilities:

 Setting object snaps


 Specifying measured intervals on objects or dividing objects into segments

Acerca del dibujo con precisión (VBA / ActiveX)

Con AutoCAD puede crear sus dibujos con geometría precisa sin realizar cálculos tediosos.

A menudo puede especificar puntos precisos sin conocer las coordenadas. Sin salir de la pantalla
de dibujo, puede realizar cálculos en su dibujo y visualizar varios tipos de información de estado.

En este momento, AutoCAD ActiveX Automation no proporciona un método para las siguientes
capacidades de AutoCAD:

Configuración de snaps de objetos

Especificar intervalos medidos en objetos o dividir objetos en segmentos


About Prompting for User Input (VBA/ActiveX)

The Utility object, which is a child of the Document object, defines the user input methods.

The user input methods display a prompt on the AutoCAD command line and request input of
various types. This type of user input is most useful for interactive input of screen coordinates,
entity selection, and short-string or numeric values. If your application requires the input of
numerous options or values, a dialog box may be more appropriate than individual prompts.

Each user input method displays a prompt on the AutoCAD command line and returns a value
specific to the type of input requested. For example, GetString returns a
string, GetPoint returns a variant (which contains a three-element array of doubles),
and GetInteger returns an integer value. You can further control the input from the user with
the InitializeUserInput method. This method lets you control things such as NULL input
(pressing Enter), input of zero or negative numbers, and input of arbitrary text values.

To force the prompt to be displayed on a line by itself, use the carriage return/linefeed constant
(vbCrLf) at the beginning of your prompt strings.

Acerca de la solicitud de entrada de usuario (VBA / ActiveX)

El objeto de utilidad, que es un elemento secundario del objeto de documento, define los métodos
de entrada del usuario.

Los métodos de entrada del usuario muestran un mensaje en la línea de comandos de AutoCAD
y solicitan la entrada de varios tipos. Este tipo de entrada de usuario es más útil para la entrada
interactiva de coordenadas de pantalla, selección de entidades y valores numéricos o de cadena
corta. Si su aplicación requiere la entrada de numerosas opciones o valores, un cuadro de diálogo
puede ser más apropiado que las solicitudes individuales.

Cada método de entrada de usuario muestra un mensaje en la línea de comandos de AutoCAD y


devuelve un valor específico para el tipo de entrada solicitada. Por ejemplo, GetString devuelve
una cadena, GetPoint devuelve una variante (que contiene una matriz de tres elementos de
dobles) y GetInteger devuelve un valor entero. Puede controlar aún más la entrada del usuario
con el método InitializeUserInput. Este método le permite controlar cosas tales como la entrada
NULL (presionando Enter), la entrada de números cero o negativos, y la entrada de valores de
texto arbitrarios.

Para forzar que el mensaje se muestre solo en una línea, use la constante de retorno de carro /
avance de línea (vbCrLf) al principio de las cadenas de aviso.
About Accessing the AutoCAD Command Line (VBA/ActiveX)

You can send commands directly to the AutoCAD command line by using
the SendCommand method.

The SendCommand method sends a single string to the command line. The string must contain the
arguments to the command listed in the order expected by the prompt sequence of the executed
command. A blank space or the ASCII equivalent of a carriage return in the string is equivalent to
pressing Enter on the keyboard. Unlike the AutoLISP environment, invoking
the SendCommandmethod with no argument is invalid.

Send a command to the AutoCAD command line


The following example creates a circle with a center of (2, 2, 0) and a radius of 4. The drawing is
then zoomed to all the geometry in the drawing. Notice that there is a space at the end of the
string which represents the final Enter to begin execution of the command.

Acerca del acceso a la línea de comandos de AutoCAD (VBA / ActiveX)

Puede enviar comandos directamente a la línea de comandos de AutoCAD utilizando el método


SendCommand.

El método SendCommand envía una sola cadena a la línea de comando. La cadena debe
contener los argumentos del comando enumerado en el orden esperado por la secuencia de
solicitud del comando ejecutado. Un espacio en blanco o el equivalente ASCII de un retorno de
carro en la cadena es equivalente a presionar Enter en el teclado. A diferencia del entorno
AutoLISP, invocar el método SendCommand sin argumento no es válido.

Enviar un comando a la línea de comando de AutoCAD


El siguiente ejemplo crea un círculo con un centro de (2, 2, 0) y un radio de 4. El dibujo se acerca
a toda la geometría del dibujo. Observe que hay un espacio al final de la cadena que representa
el Enter final para comenzar la ejecución del comando.

Sub Ch3_SendACommandToAutoCAD()

ThisDrawing.SendCommand "_Circle 2,2,0 4 "

ThisDrawing.SendCommand "_zoom a "

End Sub

About Working with No Documents Open (VBA/ActiveX)

AutoCAD always starts up with a new or existing document open. It is possible, however, to close
all documents during the current session.

If you close all the documents in the AutoCAD user interface, you will notice a few changes to the
application window. The available menus are reduced to simply the File, View, Window, and Help
menus. These menus also have reduced available options on them. You will also notice that there
is no command line.

Similarly, the ActiveX interface only allows the following actions when no documents are open:

 You can open a document.


 You can create a new document.
 You can import a document.
 You can exit out of AutoCAD.

Acerca del trabajo sin documentos abiertos (VBA / ActiveX)

AutoCAD siempre se inicia con un documento nuevo o existente abierto. Sin embargo, es posible
cerrar todos los documentos durante la sesión actual.

Si cierra todos los documentos en la interfaz de usuario de AutoCAD, notará algunos cambios en
la ventana de la aplicación. Los menús disponibles se reducen simplemente a los menús Archivo,
Vista, Ventana y Ayuda. Estos menús también tienen opciones disponibles reducidas. También
notará que no hay línea de comando.

Del mismo modo, la interfaz ActiveX solo permite las siguientes acciones cuando no hay
documentos abiertos:

Puedes abrir un documento.

Puedes crear un nuevo documento.

Puedes importar un documento.


Puede salir de AutoCAD.
These actions are all available from the Documents collection. The methods and properties of
the Documents collection, in addition to a limited set of methods and properties of
the Applicationobject, are the only valid interface available when there are no documents
open. If you perform any other action, such as attempting to access user options, your actions will
result in an error.

Use the Count property on the Documents collection to determine if AutoCAD is in a zero
document state. If Documents.Count = 0, then AutoCAD is in a zero document state.
If Documents.Count > 0, then there is at least one drawing open.

It is also important to note that in VBA the ThisDrawing object is not defined when AutoCAD is
in a zero document state. This makes sense since ThisDrawing normally refers to the active
drawing and in the zero document state there are no drawings open. Attempting to execute a
macro that uses ThisDrawing will result in a runtime error. To avoid the error, use the
VBA GetObjectfunction, and specify the AutoCAD version, to obtain a connection to AutoCAD
when there are no documents open.

Estas acciones están todas disponibles en la colección Documentos. Los métodos y propiedades
de la colección Documentos, además de un conjunto limitado de métodos y propiedades del
objeto Aplicación, son la única interfaz válida disponible cuando no hay documentos abiertos. Si
realiza cualquier otra acción, como intentar acceder a las opciones del usuario, sus acciones
generarán un error.

Use la propiedad Count en la colección Documentos para determinar si AutoCAD está en un


estado de documento cero. Si Documents.Count = 0, AutoCAD está en un estado de documento
cero. Si Documents.Count> 0, entonces hay al menos un dibujo abierto.

También es importante tener en cuenta que en VBA el objeto ThisDrawing no está definido
cuando AutoCAD está en un estado de documento cero. Esto tiene sentido ya que ThisDrawing
normalmente se refiere al dibujo activo y en el estado de documento cero no hay dibujos abiertos.
Intentar ejecutar una macro que use ThisDrawing dará como resultado un error de tiempo de
ejecución. Para evitar el error, use la función GetObject de VBA y especifique la versión de
AutoCAD para obtener una conexión a AutoCAD cuando no haya documentos abiertos.

About Importing Other File Formats (VBA/ActiveX)

You can use drawings or images from other applications by opening them in specific formats.

AutoCAD handles some form of conversion for drawing interchange format (DXF)™, SAT, and
WMF files. For all versions, you can import the file by using the Import method. This method takes
three values as input: the name of the file to import, the insertion point in the drawing to place the
file, and the scale factor to use when placing the imported drawing.

Acerca de la importación de otros formatos de archivo (VBA / ActiveX)

Puede usar dibujos o imágenes de otras aplicaciones abriéndolos en formatos específicos.


AutoCAD maneja alguna forma de conversión para formatos de intercambio de dibujo (DXF) ™,
SAT y archivos WMF. Para todas las versiones, puede importar el archivo utilizando el método de
importación. Este método toma tres valores como entrada: el nombre del archivo a importar, el
punto de inserción en el dibujo para colocar el archivo y el factor de escala que se utilizará al
colocar el dibujo importado.

About Exporting to Other File Formats (VBA/ActiveX)

If you need to use an AutoCAD drawing in another application, you can convert it to a specific
format by using the Export method.

The Export method exports a AutoCAD drawing to a WMF, SAT, EPS, DXF, or BMP format.
The Export method takes three values as input: the name for the new file to be created, the
extension for the new file, and the selection set of objects to export.

When exporting to WMF, SAT, or BMP format, you must provide a nonempty selection set. This
selection set specifies the objects from the drawing to export. If no selection set is specified,
nothing is exported and a trappable invalid argument error results.

When exporting to EPS and DXF formats, Export ignores the selection set argument, but it is still
required. The entire drawing is automatically exported for these formats.

Export a drawing as a DXF file and import it again


This example creates a circle in the current drawing. It then exports the drawing to a file
called DXFExprt.dxf, opens a new drawing, and imports the file. Note that an empty selection set
is provided as an argument to Export. The Export method ignores selection set information when
exporting a DXF file, but a syntax error results if the argument is omitted.

Acerca de la exportación a otros formatos de archivo (VBA / ActiveX)

Si necesita utilizar un dibujo de AutoCAD en otra aplicación, puede convertirlo a un formato


específico mediante el método Exportar.

El método de exportación exporta un dibujo de AutoCAD a formato WMF, SAT, EPS, DXF o BMP.
El método de exportación toma tres valores como entrada: el nombre para el nuevo archivo que
se creará, la extensión para el nuevo archivo y el conjunto de selección de objetos para exportar.

Al exportar a formato WMF, SAT o BMP, debe proporcionar un conjunto de selección no vacío.
Este conjunto de selección especifica los objetos del dibujo para exportar. Si no se especifica
ningún conjunto de selección, no se exporta nada y se produce un error de argumento no válido
detectable.
Al exportar a formatos EPS y DXF, Exportar ignora el argumento del conjunto de selección, pero
aún así es necesario. El dibujo completo se exporta automáticamente para estos formatos.

Exporte un dibujo como un archivo DXF y vuelva a importarlo

Este ejemplo crea un círculo en el dibujo actual. A continuación, exporta el dibujo a un archivo
llamado DXFExprt.dxf, abre un nuevo dibujo e importa el archivo. Tenga en cuenta que se
proporciona un conjunto de selección vacío como argumento para Exportar. El método de
exportación ignora la información del conjunto de selección al exportar un archivo DXF, pero se
produce un error de sintaxis si se omite el argumento.

Sub Ch3_ImportingAndExporting()

' Create the circle for visual representation

Dim circleObj As AcadCircle

Dim centerPt(0 To 2) As Double

Dim radius As Double

centerPt(0) = 2: centerPt(1) = 2: centerPt(2) = 0

radius = 1

Set circleObj = ThisDrawing.ModelSpace.AddCircle(centerPt, radius)

ThisDrawing.Application.ZoomAll

' Create an empty selection set

Dim sset As AcadSelectionSet

Set sset = ThisDrawing.SelectionSets.Add("NEWSSET")

' Export the current drawing to a DXF file in the

' AutoCAD temporary file directory

Dim tempPath As String

Dim exportFile As String

Const dxfname As String = "DXFExprt"

tempPath = ThisDrawing.Application.preferences.Files.TempFilePath

exportFile = tempPath & dxfname

ThisDrawing.Export exportFile, "DXF", sset


' Delete the empty selection set

ThisDrawing.SelectionSets.Item("NEWSSET").Delete

' Open a new drawing

ThisDrawing.Application.Documents.Add "acad.dwt"

' Define the import

Dim importFile As String

Dim insertPoint(0 To 2) As Double

Dim scalefactor As Double

importFile = tempPath & dxfname & ".dxf"

insertPoint(0) = 0: insertPoint(1) = 0: insertPoint(2) = 0

scalefactor = 2#

' Import the file

ThisDrawing.Import importFile, insertPoint, scalefactor

ThisDrawing.Application.ZoomAll

End Sub

Creating and Editing Entities

About Creating Objects (VBA/ActiveX)

While there are often several different ways to create the same graphical object in AutoCAD®,
ActiveX Automation offers only one creation method per object.

For example, in AutoCAD there are four different ways you can create a circle: (1) by specifying
the center and radius, (2) by two points defining the diameter, (3) by three points defining the
circumference, or (4) by two tangents and a radius. However, in ActiveX Automation there is only
one creation method provided to create a circle, and that method uses the center and radius.

Note: The VB and VBA methods of creating objects using either CreateObject or Dim with
the New keyword can only be used to create the AutoCAD Application object. All other AutoCAD
objects must be created using the Add or Add<objectname> method provided in the AutoCAD
interface.
Acerca de la creación de objetos (VBA / ActiveX)
Aunque a menudo hay varias formas diferentes de crear el mismo objeto gráfico en
AutoCAD®, ActiveX Automation ofrece solo un método de creación por objeto.

Por ejemplo, en AutoCAD hay cuatro maneras diferentes de crear un círculo: (1)
especificando el centro y el radio, (2) dos puntos que definen el diámetro, (3) tres puntos
que definen la circunferencia, o (4) por dos tangentes y un radio. Sin embargo, en ActiveX
Automation solo se proporciona un método de creación para crear un círculo, y ese
método usa el centro y el radio.

Nota: Los métodos VB y VBA para crear objetos utilizando CreateObject o Dim con la
palabra clave New solo se pueden usar para crear el objeto Aplicación de AutoCAD. Todos
los demás objetos de AutoCAD se deben crear utilizando el método Agregar o Agregar
<nombre de objeto> proporcionado en la interfaz de AutoCAD.

About Working with Selection Sets (VBA/ActiveX)

A selection set can consist of a single object, or it can be a more complex grouping: for example,
the set of objects of a certain layer.

Defining a selection set is a two-step process. First, you must create a new selection set and add
it to the SelectionSets collection. Once created, you then populate the selection set with the
objects you want to process.

Acerca de trabajar con conjuntos de selección (VBA / ActiveX)


Un conjunto de selección puede consistir en un único objeto, o puede ser una agrupación
más compleja: por ejemplo, el conjunto de objetos de una determinada capa.

La definición de un conjunto de selección es un proceso de dos pasos. Primero, debe crear


un nuevo conjunto de selección y agregarlo a la colección SelectionSets. Una vez creado,
usted puebla el conjunto de selección con los objetos que desea procesar.

About Modifying Objects (VBA/ActiveX)

To modify an existing object, use the methods and properties associated with that object. If you
modify a visible property of a graphic object, use the Update method to redraw the object on
screen.

Acerca de la modificación de objetos (VBA / ActiveX)


Para modificar un objeto existente, use los métodos y propiedades asociados con ese
objeto. Si modifica una propiedad visible de un objeto gráfico, use el método Actualizar
para volver a dibujar el objeto en la pantalla.

About Assigning Layers, Colors, and Linetypes to Objects (VBA/ActiveX)

Once you have defined layers, colors, and linetypes, you can assign them to objects in your
drawing.

You can group associated components of a drawing by assigning objects to layers. You can
control layer visibility, color, and linetype and specify whether objects on a layer can be edited.
You can move objects from one layer to another and change the name of a layer.
The number of layers in a drawing and the number of objects per layer are virtually unlimited. You
can assign a name to each layer and select any combination of layers for display.

You can define blocks from objects that were originally drawn on different layers with different
colors and linetypes. You can preserve the layer, color, and linetype information of objects in a
block. Then, each time you insert the block, you have each object drawn on its original layer with
its original color and linetype.

Acerca de la asignación de capas, colores y tipos de línea a objetos (VBA / ActiveX)


Una vez que haya definido capas, colores y tipos de línea, puede asignarlos a objetos en
su dibujo.

Puede agrupar componentes asociados de un dibujo asignando objetos a capas. Puede


controlar la visibilidad, el color y el tipo de línea de la capa y especificar si se pueden editar
los objetos en una capa. Puede mover objetos de una capa a otra y cambiar el nombre de
una capa.

La cantidad de capas en un dibujo y la cantidad de objetos por capa son virtualmente


ilimitadas. Puede asignar un nombre a cada capa y seleccionar cualquier combinación de
capas para visualizar.

Puede definir bloques a partir de objetos que se dibujaron originalmente en diferentes


capas con diferentes colores y tipos de línea. Puede conservar la información de capa,
color y tipo de línea de los objetos en un bloque. Luego, cada vez que insertas el bloque,
tienes cada objeto dibujado en su capa original con su color original y tipo de línea.

About Saving and Restoring Layer Settings (VBA/ActiveX)

You can save layer settings in a drawing and restore them later.

Saving layer settings makes it easy to return to specified settings for all layers during different
stages when completing a drawing or when plotting a drawing.

Layer settings include whether or not a layer is turned on, frozen, locked, plotted, and
automatically frozen in new viewports, and the layer's color, linetype, lineweight, and plot style.
You can specify which settings you want to save, and you can save different groups of settings for
a drawing.

A special object, the LayerStateManager, provides functions for working with layer settings
using ActiveX.

Acerca de cómo guardar y restaurar la configuración de capa (VBA / ActiveX)


Puede guardar configuraciones de capa en un dibujo y restaurarlas más tarde.

Al guardar los ajustes de capa, es más fácil regresar a las configuraciones especificadas para
todas las capas durante las diferentes etapas al completar un dibujo o al trazar un dibujo.

Las configuraciones de capa incluyen si una capa está encendida, congelada, bloqueada, trazada
y congelada automáticamente en las nuevas vistas, y el color de la capa, el tipo de línea, el grosor
de línea y el estilo de trazado. Puede especificar qué configuraciones desea guardar y puede
guardar diferentes grupos de configuraciones para un dibujo.

Un objeto especial, el LayerStateManager, proporciona funciones para trabajar con la


configuración de capas mediante ActiveX.
About Adding Text to Drawings (VBA/ActiveX)

Text conveys important information in your drawing. Use text for title blocks, to label parts of the
drawing, to give specifications, or to make annotations.

AutoCAD provides various ways to create text. For short, simple entries, use line text. For longer
entries with internal formatting, use multiline text (MText). Although all entered text uses the
current text style, which establishes the default font and format settings, you can use several
methods to customize the text appearance.

Acerca de agregar texto a dibujos (VBA / ActiveX)


El texto transmite información importante en su dibujo. Use texto para los bloques de título, para
etiquetar partes del dibujo, para dar especificaciones o para hacer anotaciones.

AutoCAD proporciona varias formas de crear texto. Para entradas cortas y simples, use texto de
línea. Para entradas más largas con formato interno, use texto de línea múltiple (MText). Aunque
todos los textos ingresados usan el estilo de texto actual, que establece la configuración
predeterminada de fuente y formato, puede usar varios métodos para personalizar la apariencia
del texto.

About Positioning and Sizing the Document Window (VBA/ActiveX)

Use the Document object to modify the position and size of any document window.

The Document window can be minimized or maximized by using the WindowState property, and
you can find the current state of the Document window by using the WindowState property.

Position a Document window


This example uses the Width and Height properties to set the active Document window to 400
pixels wide by 400 pixels high.

Acerca del posicionamiento y dimensionamiento de la ventana del documento (VBA / ActiveX)


Use el objeto Documento para modificar la posición y el tamaño de cualquier ventana de
documento.

La ventana de documento puede minimizarse o maximizarse utilizando la propiedad


WindowState, y puede encontrar el estado actual de la ventana de documento utilizando la
propiedad WindowState.

Posicionar una ventana de documento


Este ejemplo utiliza las propiedades Ancho y Alto para establecer la ventana del documento
activo en 400 píxeles de ancho por 400 píxeles de alto.

Sub Ch3_SizeDocumentWindow()

ThisDrawing.Width = 400

ThisDrawing.Height = 400
End Sub

Maximize the active Document window

Sub Ch3_MaximizeDocumentWindow()

ThisDrawing.WindowState = acMax

End Sub

Minimize the active Document window

Sub Ch3_MinimizeDocumentWindow()

ThisDrawing.WindowState = acMin

End Sub

Find the current state of the active Document window

Sub Ch3_CurrentWindowState()

Dim CurrWindowState As Integer

Dim msg As String

CurrWindowState = ThisDrawing.WindowState

msg = Choose(CurrWindowState, "normal", "minimized", "maximized")

MsgBox "The document window is " + msg

End Sub

About Using Zoom (VBA/ActiveX)

A view is a specific magnification, position, and orientation of a drawing.

The most common way to change a view is to use one of the many AutoCAD Zoom options, which
increases or decreases the size of the image displayed in the graphics area.

Acerca del uso de Zoom (VBA / ActiveX)

Una vista es una ampliación, posición y orientación específicas de un dibujo.


La forma más común de cambiar una vista es usar una de las muchas opciones de Zoom de
AutoCAD, lo que aumenta o disminuye el tamaño de la imagen que se muestra en el área de
gráficos.
About Using Named Views (VBA/ActiveX)

You can name and save a view you want to reuse. When you no longer need the view, you can
delete it.

To create a new view, use the Add method to add a new view to the Views collection. When you
save the drawing, the viewing position and scale of the view are saved.

You name the view when you create it. The name of the view can be up to 255 characters long
and contain letters, digits, and the special characters dollar sign ($), hyphen (-), and underscore
(_).

To delete a named view, simply use the Delete method. The Delete method for the View object
lies on the View object, not its parent.

Acerca del uso de vistas con nombre (VBA / ActiveX)

Puede nombrar y guardar una vista que quiera volver a utilizar. Cuando ya no necesita la vista,
puede eliminarla.

Para crear una nueva vista, use el método Agregar para agregar una nueva vista a la colección
Vistas. Cuando guarda el dibujo, se guardan la posición de visualización y la escala de la vista.

Usted nombra la vista cuando la crea. El nombre de la vista puede tener hasta 255 caracteres y
contener letras, dígitos y los caracteres especiales signo de dólar ($), guión (-) y guión bajo (_).

Para eliminar una vista con nombre, simplemente use el método Eliminar. El método Delete para
el objeto View se encuentra en el objeto View, no en su elemento primario.

Add a View object


The following example adds a View object (viewObj).

Agregar un objeto de vista

El siguiente ejemplo agrega un objeto View (viewObj).

Sub Ch3_AddView()

' Add a named view to the views collection

Dim viewObj As AcadView


Set viewObj = ThisDrawing.Views.Add("View1")

End Sub

Delete a View object


The following example deletes a View object (viewObj).

Sub Ch3_DeleteView()

Dim viewObj As AcadView

Set viewObj = ThisDrawing.Views("View1")

' Delete the view

viewObj.Delete

End Sub

Delete a named view from the Views collection


This example deletes a named view from the Views collection.

Sub Ch3_DeleteViewFromCollection()

ThisDrawing.Views("View1").Delete

End Sub

About Using Tiled Viewports (VBA/ActiveX)

Model space can contain one or more viewports.

AutoCAD usually begins a new drawing using a single viewport that fills the entire graphics area.
You can split the drawing area to display several viewports simultaneously. For example, if you
keep both the full and the detail views visible, you can see the effects of your detail changes on
the entire drawing. In each tiled viewport, you can do the following:

 Zoom, set the Snap, Grid, and UCS icon modes, and restore named views in individual viewports
 Draw from one viewport to another when executing a command
 Name a configuration of viewports so you can reuse it
You can display tiled viewports in various configurations. How you display the viewports depends
on the number and size of the views you need to see.

Acerca del uso de ventanas gráficas (VBA / ActiveX)

El espacio modelo puede contener una o más ventanas gráficas.


AutoCAD por lo general comienza un nuevo dibujo con una sola ventana que llena toda el área de
gráficos. Puede dividir el área de dibujo para mostrar varias ventanas gráficas simultáneamente.
Por ejemplo, si mantiene visibles las vistas completa y detallada, puede ver los efectos de los
cambios detallados en todo el dibujo. En cada vista en mosaico, puede hacer lo siguiente:

Zoom, configure los modos de icono Ajustar, Cuadrícula y UCS y restaurar vistas con nombre en
ventanas gráficas individuales

Dibuje de una ventana gráfica a otra al ejecutar un comando

Nombra una configuración de ventanas gráficas para que puedas reutilizarla

Puede visualizar ventanas gráficas en mosaico en diversas configuraciones. La forma de mostrar


las ventanas depende del número y el tamaño de las vistas que necesita ver.
About Requesting for a String (VBA/ActiveX)

The GetString method prompts the user for input of a string at the AutoCAD Command prompt.

This method accepts two parameters. The first parameter controls the input of spaces in the input
string. If it is set to 0, spaces are not allowed (Spacebar terminates the input); if set to 1, the string
can contain spaces (Enter must be used to terminate the input). The second parameter is the
prompt string.

Get a string value from the user at the AutoCAD Command prompt
The following example displays the Enter Your Name prompt, and requires that the input from the
user be terminated by pressing Enter (spaces are allowed in the input string). The string value is
stored in the retVal variable and is displayed using a message box.

Sub Ch3_GetStringFromUser()

Dim retVal As String

retVal = ThisDrawing.Utility.GetString(1, vbCrLf & "Enter your name:


")

MsgBox "The name entered was: " & retVal

End Sub

The GetString method does not honor a prior call to the InitializeUserInput method.

Acerca de solicitar una cadena (VBA / ActiveX)

El método GetString solicita al usuario la introducción de una cadena en el símbolo del sistema de
AutoCAD.
Este método acepta dos parámetros. El primer parámetro controla la entrada de espacios en la
cadena de entrada. Si se establece en 0, los espacios no están permitidos (la barra espaciadora
finaliza la entrada); si se establece en 1, la cadena puede contener espacios (Enter debe usarse
para finalizar la entrada). El segundo parámetro es la cadena de solicitud.

Obtenga un valor de cadena del usuario en el símbolo del sistema de AutoCAD

El siguiente ejemplo muestra el mensaje Ingrese su nombre, y requiere que la entrada del usuario
finalice presionando Enter (se permiten espacios en la cadena de entrada). El valor de cadena se
almacena en la variable retVal y se muestra mediante un cuadro de mensaje.

El método GetString no respeta una llamada previa al método InitializeUserInput.


About Requesting a Point (VBA/ActiveX)

The GetPoint method prompts the user for the specification of a point at the AutoCAD Command
prompt.

This method accepts two parameters, an optional from point and the prompt string. If the from
point is provided, AutoCAD draws a rubber-band line from that point. To control the user input, this
method can be preceded by a call to the InitializeUserInput method.

Get a point selected by the user


The following example prompts the user for two points, then draws a line using those points as the
start point and endpoint.

Acerca de solicitar un punto (VBA / ActiveX)

El método GetPoint solicita al usuario la especificación de un punto en el símbolo del sistema de


AutoCAD.

Este método acepta dos parámetros, un punto opcional desde el punto y la cadena de solicitud. Si
se proporciona el punto desde, AutoCAD dibuja una línea de banda elástica desde ese punto.
Para controlar la entrada del usuario, este método puede ir precedido de una llamada al método
InitializeUserInput.

Obtener un punto seleccionado por el usuario

El siguiente ejemplo solicita al usuario dos puntos, luego dibuja una línea usando esos puntos
como el punto de inicio y el punto final.

Sub Ch3_GetPointsFromUser()

Dim startPnt As Variant

Dim endPnt As Variant


Dim prompt1 As String

Dim prompt2 As String

prompt1 = vbCrLf & "Enter the start point of the line: "

prompt2 = vbCrLf & "Enter the end point of the line: "

' Get the first point without entering a base point

startPnt = ThisDrawing.Utility.GetPoint(, prompt1)

' Use the point entered above as the base point

endPnt = ThisDrawing.Utility.GetPoint(startPnt, prompt2)

' Create a line using the two points entered

ThisDrawing.ModelSpace.AddLine startPnt, endPnt

ThisDrawing.Application.ZoomAll

End Sub

About Requesting a Keyword (VBA/ActiveX)

The GetKeyword method prompts the user for input of a keyword at the AutoCAD Command
prompt.

This method accepts only one parameter, which is the prompt string. The keywords and input
parameters are defined with a call to the InitializeUserInput method.

Get a keyword from the user at the AutoCAD Command prompt


The following example forces the user to enter a keyword by setting the first parameter
of InitializeUserInput to 1, which disallows NULL input (pressing Enter). The second
parameter establishes the list of valid keywords.

Acerca de la solicitud de una palabra clave (VBA / ActiveX)

El método GetKeyword solicita al usuario que ingrese una palabra clave en el indicador de
comandos de AutoCAD.
Este método acepta solo un parámetro, que es la cadena de solicitud. Las palabras clave y los
parámetros de entrada se definen con una llamada al método InitializeUserInput.

Obtenga una palabra clave del usuario en el símbolo del sistema de AutoCAD

El siguiente ejemplo obliga al usuario a ingresar una palabra clave configurando el primer
parámetro de InitializeUserInput en 1, que no permite la entrada NULL (presionando Enter). El
segundo parámetro establece la lista de palabras clave válidas.

Sub Ch3_KeyWord()

Dim keyWord As String

ThisDrawing.Utility.InitializeUserInput 1, "Line Circle Arc"

keyWord = ThisDrawing.Utility.GetKeyword(vbCrLf & "Enter an option


(Line/Circle/Arc): ")

MsgBox keyWord, , "GetKeyword Example"

End Sub

A more user-friendly keyword prompt is one that provides a default value if the user presses Enter
(NULL input). Notice the minor modifications to the following example:

Una solicitud de palabra clave más fácil de usar es aquella que proporciona un valor
predeterminado si el usuario presiona Intro (entrada nula). Observe las modificaciones menores al
siguiente ejemplo:

Sub Ch3_KeyWord2()

Dim keyWord As String

ThisDrawing.Utility.InitializeUserInput 0, "Line Circle Arc"

keyWord = ThisDrawing.Utility.GetKeyword(vbCrLf & "Enter an option


(Line/Circle/<Arc>): ")

If keyWord = "" Then keyWord = "Arc"

MsgBox keyWord, , "GetKeyword Example"

End Sub
About Controlling User Input (VBA/ActiveX)

You can use the InitializeUserInput method to define keywords or restrict the type of input
to the user input method.

The use and parameter values are similar to the


AutoLISP initget function. InitializeUserInput can be used with the following
methods: GetAngle, GetCorner, GetDistance, GetInteger, GetKeyword, GetOrientati
on, GetPoint, and GetReal. InitializeUserInput cannot be used with
the GetString method. Use the GetInput method to retrieve the string value (keyword or
arbitrary input) when the user input method does not return a string value.

The InitializeUserInput method accepts two parameters. The first parameter is a bit-coded
integer value that determines the input options for the user input method. The second parameter is
a string that defines the valid keywords.

Get an integer value or a keyword from the user at the AutoCAD Command prompt
The following example prompts the user for a positive, non-negative integer value or a keyword:

Acerca del control de la entrada del usuario (VBA / ActiveX)

Puede utilizar el método InitializeUserInput para definir palabras clave o restringir el tipo de
entrada al método de entrada del usuario.

Los valores de uso y de parámetros son similares a la función de inicio de AutoLISP.


InitializeUserInput se puede utilizar con los siguientes métodos: GetAngle, GetCorner,
GetDistance, GetInteger, GetKeyword, GetOrientation, GetPoint y GetReal. InitializeUserInput no
se puede usar con el método GetString. Utilice el método GetInput para recuperar el valor de
cadena (palabra clave o entrada arbitraria) cuando el método de entrada del usuario no devuelve
un valor de cadena.

El método InitializeUserInput acepta dos parámetros. El primer parámetro es un valor entero


codificado por bits que determina las opciones de entrada para el método de entrada del usuario.
El segundo parámetro es una cadena que define las palabras clave válidas.

Obtenga un valor entero o una palabra clave del usuario en el símbolo del sistema de AutoCAD

El siguiente ejemplo solicita al usuario un valor entero positivo, no negativo o una palabra clave:

Sub Ch3_UserInput()

' The first parameter of InitializeUserInput (6)

' restricts input to positive and non-negative


' values. The second parameter is the list of

' valid keywords.

ThisDrawing.Utility.InitializeUserInput 6, "Big Small Regular"

' Set the prompt string variable

Dim promptStr As String

promptStr = vbCrLf & "Enter the size or (Big/Small/<Regular>):"

' At the GetInteger prompt, entering a keyword or pressing

' ENTER without entering a value results in an error. To allow

' your application to continue and check for the error

' description, you must set the error handler to resume on error.

On Error Resume Next

' Get the value entered by the user

Dim returnInteger As Integer

returnInteger = ThisDrawing.Utility.GetInteger(promptStr)

' Check for an error. If the error number matches the

' one shown below, then use GetInput to get the returned

' string; otherwise, use the value of returnInteger.

If Err.Number = -2145320928 Then

Dim returnString As String

Debug.Print Err.Description

returnString = ThisDrawing.Utility.GetInput()

If returnString = "" Then 'ENTER returns null string

returnString = "Regular" 'Set to default

End If

Err.Clear
Else 'Otherwise,

returnString = returnInteger 'Use the value entered

End If

' Display the result

MsgBox returnString, , "InitializeUserInput Example"

End Sub

About the Document Object (VBA/ActiveX)

The Document object, which is actually an AutoCAD drawing, is found in


the Documents collection and provides access to all of the graphical and most of the nongraphical
AutoCAD objects.

Access to the graphical objects (lines, circles, arcs, and so forth) is provided through
the ModelSpace and PaperSpace collections, and access to nongraphical objects (layers,
linetypes, text styles, and so forth) is provided through like-named collections such
as Layers, Linetypes, and TextStyles. The Document object also provides access to
the Plot and Utility objects.

To access drawing properties, use the SummaryInfo property of the Document object.

Acerca del objeto de documento (VBA / ActiveX)

El objeto Documento, que en realidad es un dibujo de AutoCAD, se encuentra en la colección


Documentos y proporciona acceso a todos los objetos gráficos y la mayoría de los objetos de
AutoCAD no gráficos.

El acceso a los objetos gráficos (líneas, círculos, arcos, etc.) se proporciona a través de las
colecciones ModelSpace y PaperSpace, y el acceso a objetos no gráficos (capas, tipos de línea,
estilos de texto, etc.) se proporciona a través de colecciones con el mismo nombre. como Capas,
Tipos de línea y TextStyles. El objeto Documento también proporciona acceso a los objetos
Gráfico y Utilidad.

Para acceder a las propiedades del dibujo, use la propiedad SummaryInfo del objeto Document.
About Determining the Container Object (VBA/ActiveX)

Graphical objects are created in either the ModelSpace collection, the PaperSpace collection, or
a Block object.

The ModelSpace collection is returned by the ModelSpace property and


the PaperSpace collection by the PaperSpace property.

You can reference these objects directly, or through a user-defined variable. To reference the
objects directly, include the object in the calling hierarchy. For example, the following statement
adds a line to the model space:

Acerca de la determinación del objeto contenedor (VBA / ActiveX)

Los objetos gráficos se crean en la colección ModelSpace, la colección PaperSpace o un objeto


Block.
La propiedad ModelSpace devuelve la colección ModelSpace y la propiedad PaperSpace la
colección PaperSpace.

Puede hacer referencia a estos objetos directamente, o a través de una variable definida por el
usuario. Para hacer referencia a los objetos directamente, incluya el objeto en la jerarquía de
llamadas. Por ejemplo, la siguiente declaración agrega una línea al espacio modelo:

Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)

To reference the objects through a user-defined variable, define the variable as


type AcadModelSpace or AcadPaperSpace, and then set the variable to the appropriate
property of the active document. The following example defines two variables and sets them equal
to the current model space and paper space, respectively:

Para hacer referencia a los objetos a través de una variable definida por el usuario, defina la
variable como tipo AcadModelSpace o AcadPaperSpace, y luego establezca la variable en la
propiedad apropiada del documento activo. El siguiente ejemplo define dos variables y las
establece igual al espacio modelo y espacio de papel actual, respectivamente:

Dim moSpace As AcadModelSpace

Dim paSpace As AcadPaperSpace

Set moSpace = ThisDrawing.ModelSpace

Set paSpace = ThisDrawing.PaperSpace

The following statement adds a line to the model space using the user-defined variable:

La siguiente declaración agrega una línea al espacio modelo utilizando la variable definida por el
usuario:

Set lineObj = moSpace.AddLine(startPoint,endPoint)

About Creating Lines (VBA/ActiveX)

The line is the most basic object in AutoCAD. You can create a variety of lines—single lines, and
multiple line segments with and without arcs.

In general, you draw lines by specifying coordinate points. The default linetype is CONTINUOUS,
an unbroken line, but various linetypes are available that use dots and dashes.

To create a line, use one of the following methods:

AddLine
Creates a line passing through two points.

AddLightweightPolyline
Creates a 2D lightweight polyline from a list of vertices.

AddMLine
Creates a multiline.

AddPolyline
Creates a 2D or 3D polyline.

Standard lines and multilines are created on the XY plane of the world coordinate system.
Polylines and Lightweight Polylines are created in the object coordinate system (OCS).

Create a Polyline object


This example uses the AddLightweightPolyline method to create a simple two-
segment polyline using the 2D coordinates (2,4), (4,2), and (6,4).

Acerca de la creación de líneas (VBA / ActiveX)

La línea es el objeto más básico en AutoCAD. Puede crear una variedad de líneas, líneas simples
y múltiples segmentos de línea con y sin arcos.

En general, dibuja líneas especificando puntos de coordenadas. El tipo de línea predeterminado


es CONTINUO, una línea continua, pero varios tipos de línea están disponibles que usan puntos y
guiones.

Para crear una línea, use uno de los siguientes métodos:

Añadir línea

Crea una línea que pasa por dos puntos.

AddLightweightPolyline

Crea una polilínea ligera 2D en una lista de vértices.

AddMLine

Crea una línea múltiple.

AddPolyline

Crea una polilínea 2D o 3D.

Las líneas estándar y multilíneas se crean en el plano XY del sistema de coordenadas del mundo.
Las polilíneas y las polilíneas livianas se crean en el sistema de coordenadas del objeto (OCS).
Crear un objeto Polyline

Este ejemplo utiliza el método AddLightweightPolyline para crear una polilínea simple de dos
segmentos utilizando las coordenadas 2D (2,4), (4,2) y (6,4).

Sub Ch4_AddLightWeightPolyline()

Dim plineObj As AcadLWPolyline

Dim points(0 To 5) As Double

' Define the 2D polyline points

points(0) = 2: points(1) = 4

points(2) = 4: points(3) = 2

points(4) = 6: points(5) = 4

' Create a light weight Polyline object in model space

Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)

ThisDrawing.Application.ZoomAll

End Sub

About Creating Curved Objects (VBA/ActiveX)

You can create a variety of curved objects with AutoCAD, including spline curves, circles, arcs,
and ellipses.

All curves are created on the XY plane of the current WCS.

To create a curve, use one of the following methods:

AddArc
Creates an arc given the center, radius, start and end angles.

AddCircle
Creates a circle given the center point and radius.

AddEllipse
Creates an ellipse given the center point, a point on the major axis, and the radius ratio.

AddSpline
Creates a quadratic or cubic NURBS (nonuniform rational B-spline) curve.
Create a Spline object
This example creates a spline in model space using three points (0, 0, 0), (5, 5, 0), and (10,
0, 0). The spline has start and end tangents of (0.5, 0.5, 0.0).

Acerca de la creación de objetos curvados (VBA / ActiveX)

Puede crear una variedad de objetos curvos con AutoCAD, incluyendo curvas de spline, círculos,
arcos y elipses.

Todas las curvas se crean en el plano XY del WCS actual.

Para crear una curva, use uno de los siguientes métodos:

AddArc

Crea un arco dado el centro, el radio, el inicio y el final de los ángulos.

AddCircle

Crea un círculo dado el punto central y el radio.

AddEllipse

Crea una elipse dado el punto central, un punto en el eje mayor y la relación de radio.

AddSpline

Crea una curva NURBS cuadrática o cúbica (B-spline racional no uniforme).

Crear un objeto Spline

Este ejemplo crea una spline en el espacio modelo utilizando tres puntos (0, 0, 0), (5, 5, 0) y (10,
0, 0). La spline tiene tangentes de inicio y final de (0.5, 0.5, 0.0).

Sub Ch4_CreateSpline()

' This example creates a spline object in model space.

' Declare the variables needed

Dim splineObj As AcadSpline

Dim startTan(0 To 2) As Double

Dim endTan(0 To 2) As Double

Dim fitPoints(0 To 8) As Double


' Define the variables

startTan(0) = 0.5: startTan(1) = 0.5: startTan(2) = 0

endTan(0) = 0.5: endTan(1) = 0.5: endTan(2) = 0

fitPoints(0) = 1: fitPoints(1) = 1: fitPoints(2) = 0

fitPoints(3) = 5: fitPoints(4) = 5: fitPoints(5) = 0

fitPoints(6) = 10: fitPoints(7) = 0: fitPoints(8) = 0

' Create the spline

Set splineObj = ThisDrawing.ModelSpace.AddSpline(fitPoints, startTan,


endTan)

ZoomAll

End Sub

About Creating Point Objects (VBA/ActiveX)

Point objects can be useful, for example, as node or reference points that you can snap to and
offset objects from.

You can set the style of the point and its size relative to the screen or in absolute units.

The AutoCAD PDMODE and PDSIZE system variables control the appearance of Point objects.
The PDMODE values 0, 2, 3, and 4 specify a figure to draw through the point. A value of 1 selects
nothing to be displayed.

Acerca de la creación de objetos de punto (VBA / ActiveX)

Los objetos de punto pueden ser útiles, por ejemplo, como puntos de nodo o de referencia a los
que puede ajustar y compensar objetos.

Puede establecer el estilo del punto y su tamaño relativo a la pantalla o en unidades absolutas.

Las variables del sistema AutoCAD PDMODE y PDSIZE controlan la apariencia de los objetos
Point. Los valores de PDMODE 0, 2, 3 y 4 especifican una figura para dibujar a través del punto.
Un valor de 1 no selecciona nada para mostrar.
Adding 32, 64, or 96 to the previous value selects a shape to draw around the point in addition to
the figure drawn through it:

Agregar 32, 64 o 96 al valor anterior selecciona una forma para dibujar alrededor del punto
además de la figura dibujada a través de él:

PDSIZE controls the size of the point figures, except for PDMODE values 0 and 1. A 0 setting
generates the point at 5 percent of the graphics area height. A positive PDSIZE value specifies an
absolute size for the point figures. A negative value is interpreted as a percentage of the viewport
size. The size of all points is recalculated when the drawing is regenerated.

After you change PDMODE and PDSIZE, the appearance of existing points changes the next time
the drawing is regenerated.

To set PDMODE and PDSIZE, use the SetVariable method.

Create a Point object and change its appearance


The following code example creates a Point object in model space at the coordinate (5, 5, 0). The
PDMODE and PDSIZE system variables are then updated.

PDSIZE controla el tamaño de las cifras de puntos, a excepción de los valores PDMODE 0 y 1.
Una configuración de 0 genera el punto al 5 por ciento de la altura del área de gráficos. Un valor
PDSIZE positivo especifica un tamaño absoluto para las figuras de puntos. Un valor negativo se
interpreta como un porcentaje del tamaño de la ventana gráfica. El tamaño de todos los puntos se
vuelve a calcular cuando el dibujo se regenera.

Después de cambiar PDMODE y PDSIZE, la aparición de los puntos existentes cambia la próxima
vez que se regenera el dibujo.

Para establecer PDMODE y PDSIZE, use el método SetVariable.

Crea un objeto Point y cambia su apariencia

El siguiente ejemplo de código crea un objeto Point en el espacio modelo en la coordenada (5, 5,
0). Las variables del sistema PDMODE y PDSIZE se actualizan.

Sub Ch4_CreatePoint()
Dim pointObj As AcadPoint

Dim location(0 To 2) As Double

' Define the location of the point

location(0) = 5#: location(1) = 5#: location(2) = 0#

' Create the point

Set pointObj = ThisDrawing.ModelSpace.AddPoint(location)

ThisDrawing.SetVariable "PDMODE", 34

ThisDrawing.SetVariable "PDSIZE", 1

ZoomAll

End Sub

About Creating Solid-Filled Areas (VBA/ActiveX)

You can create triangular and quadrilateral areas filled with a color.

For quicker results, create these areas with the AutoCAD FILLMODE system variable off, then
turn FILLMODE on to fill the finished area.

When you create a quadrilateral solid-filled area, the sequence of the third and fourth points
determines its shape. Compare the following illustrations:

Acerca de la creación de áreas llenas de sólidos (VBA / ActiveX)

Puede crear áreas triangulares y cuadriláteras llenas de un color.

Para obtener resultados más rápidos, cree estas áreas con la variable de sistema AutoCAD
FILLMODE desactivada, luego active FILLMODE para llenar el área terminada.

Cuando crea un área cuadrilátera llena de sólidos, la secuencia de los puntos tercero y cuarto
determina su forma. Compare las siguientes ilustraciones:
The first two points define one edge of the polygon. The third point is defined diagonally opposite
from the second. If the fourth point is set equal to the third point, then a filled triangle is created.

To create a solid-filled area, use the AddSolid method.

Los primeros dos puntos definen un borde del polígono. El tercer punto se define diagonalmente
opuesto al segundo. Si el cuarto punto se establece igual al tercer punto, entonces se crea un
triángulo relleno.

Para crear un área llena de sólidos, use el método AddSolid.

Create a solid-filled object


The following code example creates a quadrilateral solid in model space using the coordinates (0,
0, 0), (5, 0, 0), (5, 8, 0), and (0, 8, 0).

Sub Ch4_CreateSolid()

Dim solidObj As AcadSolid

Dim point1(0 To 2) As Double

Dim point2(0 To 2) As Double

Dim point3(0 To 2) As Double

Dim point4(0 To 2) As Double

' Define the solid

point1(0) = 0#: point1(1) = 0#: point1(2) = 0#

point2(0) = 5#: point2(1) = 0#: point2(2) = 0#

point3(0) = 5#: point3(1) = 8#: point3(2) = 0#

point4(0) = 0#: point4(1) = 8#: point4(2) = 0#

' Create the solid object in model space

Set solidObj = ThisDrawing.ModelSpace.AddSolid(point1, point2, point3,


point4)

ZoomAll

End Sub
About Working with Regions (VBA/ActiveX)

Regions are two-dimensional enclosed areas you create from closed shapes called loops.

A loop is a curve or a sequence of connected curves that defines an area on a plane with a
boundary that does not intersect itself. Loops can be combinations of lines, lightweight polylines,
circles, arcs, ellipses, elliptical arcs, splines, 3D faces, traces, and solids. The objects that make
up the loops must either be closed or form closed areas by sharing endpoints with other objects.
They must also be coplanar (on the same plane). The loops that make up a region must be
defined as an array of objects.

Acerca del trabajo con Regions (VBA / ActiveX)

Las regiones son áreas cerradas bidimensionales que se crean a partir de formas cerradas
llamadas bucles.

Un bucle es una curva o una secuencia de curvas conectadas que define un área en un plano con
un límite que no se intersecta. Los bucles pueden ser combinaciones de líneas, polilíneas
livianas, círculos, arcos, elipses, arcos elípticos, splines, caras 3D, trazas y sólidos. Los objetos
que componen los bucles deben estar cerrados o formar áreas cerradas al compartir los puntos
finales con otros objetos. También deben ser coplanares (en el mismo plano). Los bucles que
componen una región se deben definir como una matriz de objetos.
About Creating Hatches (VBA/ActiveX)

Hatching fills a specified area in a drawing with a pattern.

When creating the Hatch object, you specify the hatch pattern type, the hatch pattern name, and
the associativity. Once the Hatch object has been created, you will not be able to change the
hatch associativity.

The following explains the order in which a Hatch object is created and defined:

1. Create the Hatch object.


2. Specify the outer loop, which is the outermost boundary for the hatch.
3. Specify any inner loops that may exist in the hatch.
To create a Hatch object, use the AddHatch method.

Associative Hatch
You can create associative or nonassociative hatches. Associative hatches are linked to their
boundaries and updated when the boundaries are modified. Nonassociative hatches are
independent of their boundaries.

Associativity can only be set when a hatch is created. Once a hatch has been created, you can
unassociate it, but you cannot associate it again.

To make a hatch associative, set the Associativity parameter of the AddHatch method to TRUE.
To make a hatch nonassociative, set the Associativity parameter of the AddHatch method to
FALSE.
Acerca de la creación de sombreados (VBA / ActiveX)

El sombreado llena un área específica en un dibujo con un patrón.

Al crear el objeto Hatch, especifica el tipo de patrón de sombreado, el nombre del patrón de
sombreado y la asociatividad. Una vez que se haya creado el objeto Hatch, no podrá cambiar la
asociatividad de sombreado.

A continuación, se explica el orden en que se crea y define un objeto Hatch:

Crea el objeto Hatch.

Especifique el bucle externo, que es el límite más externo para la escotilla.

Especifique cualquier bucle interno que pueda existir en la escotilla.

Para crear un objeto Hatch, use el método AddHatch.

Sombreado asociativo

Puede crear sombreados asociativos o no asociativos. Las compuertas asociativas están


vinculadas a sus límites y se actualizan cuando se modifican los límites. Las escotillas
nasoasociativas son independientes de sus límites.

La asociatividad solo puede establecerse cuando se crea una escotilla. Una vez que se ha creado
una escotilla, puede desasociarla, pero no puede volver a asociarla.

Para crear un asociativo de sombreado, establezca el parámetro Asociatividad del método


AddHatch en TRUE. Para hacer que un sombreado sea no asociativo, establezca el parámetro
Asociatividad del método AddHatch en FALSE.
About Modifying Objects (VBA/ActiveX)

To modify an existing object, use the methods and properties associated with that object. If you
modify a visible property of a graphic object, use the Update method to redraw the object on
screen.

Acerca de la modificación de objetos (VBA / ActiveX)


Para modificar un objeto existente, use los métodos y propiedades asociados con ese objeto. Si
modifica una propiedad visible de un objeto gráfico, use el método Actualizar para volver a dibujar
el objeto en la pantalla.
About Creating a Selection Set (VBA/ActiveX)

To create a named selection set, use the Add method. This method requires only a single
parameter—the name of the selection set.

If a selection set of the same name already exists, AutoCAD returns an error message. It is a good
programming practice to delete a selection set when you no longer need it. Use
the Deletemethod to delete a selection set, as in the following example:

Acerca de la creación de un conjunto de selección (VBA / ActiveX)

Para crear un conjunto de selección con nombre, use el método Agregar. Este método requiere
solo un parámetro único: el nombre del conjunto de selección.

Si ya existe un conjunto de selección con el mismo nombre, AutoCAD devuelve un mensaje de


error. Es una buena práctica de programación eliminar un conjunto de selección cuando ya no lo
necesita. Use el método Eliminar para eliminar un conjunto de selección, como en el siguiente
ejemplo:

ThisDrawing.SelectionSets.Item("NewSelectionSet").Delete

Create an empty selection set


This example creates a new selection set.

Sub Ch4_CreateSelectionSet()

Dim selectionSet1 As AcadSelectionSet

Set selectionSet1 = ThisDrawing.SelectionSets.Add("NewSelectionSet")

End Sub

About Adding Objects to a Selection Set (VBA/ActiveX)

You can add objects to the active selection set.

Use any of the following methods to add an object to a selection set:

AddItems
Adds one or more objects to the specified selection set.

Select
Selects objects and places them into the active selection set. You can select all objects,
objects within and crossing a rectangular area, objects within and crossing a polygon area,
all objects crossing a fence, the most recently created object, the objects in the most recent
selection set, objects within a window, or objects within a window polygon.

SelectAtPoint
Selects objects passing through a given point and places them into the active selection set.

SelectByPolygon
Selects objects within a fence and adds them to the active selection set.

SelectOnScreen
Prompts the user to pick objects from the screen and adds them into the active selection
set.

Add selected objects to a selection set


This example prompts the user to select objects, then adds those objects to the selection
set.

Acerca de la adición de objetos a un conjunto de selección (VBA / ActiveX)

Puede agregar objetos al conjunto de selección activo.

Utilice cualquiera de los siguientes métodos para agregar un objeto a un conjunto de selección:

AddItems

Agrega uno o más objetos al conjunto de selección especificado.

Seleccionar

Selecciona objetos y los coloca en el conjunto de selección activo. Puede seleccionar todos los
objetos, objetos dentro y cruzando un área rectangular, objetos dentro y cruzando un área de
polígono, todos los objetos que cruzan una cerca, el objeto creado más recientemente, los objetos
en el conjunto de selección más reciente, objetos dentro de una ventana u objetos dentro de un
polígono de ventana.

SelectAtPoint

Selecciona los objetos que pasan por un punto determinado y los coloca en el conjunto de
selección activo.

SelectByPolygon

Selecciona los objetos dentro de una cerca y los agrega al conjunto de selección activo.

SelectOnScreen

Solicita al usuario que seleccione objetos de la pantalla y los agregue al conjunto de selección
activo.
Agregar objetos seleccionados a un conjunto de selección

Este ejemplo solicita al usuario seleccionar objetos y luego agrega esos objetos al conjunto de
selección.

Sub Ch4_AddToASelectionSet()

' Create a new selection set

Dim sset As AcadSelectionSet

Set sset = ThisDrawing.SelectionSets.Add("SS1")

' Prompt the user to select objects

' and add them to the selection set.

' To finish selecting, press ENTER.

sset.SelectOnScreen

End Sub

About Defining Rules for Selection Sets (VBA/ActiveX)

You can limit selection sets by property or by object type using filter lists.

For example, you can copy only the blue objects in a circuit board drawing, or only objects on a
certain layer. You can also combine selection criteria in your filter list. For example, you can tell
AutoCAD to include an object in a selection set only if it is a blue circle on a specific layer. Filter
lists can be specified for the Select, SelectAtPoint, SelectByPolygon,
and SelectOnScreenmethods.

Note: Filtering recognizes only linetypes explicitly assigned to objects, not those inherited by the
layer.

Acerca de la definición de reglas para conjuntos de selección (VBA / ActiveX)

Puede limitar los conjuntos de selección por propiedad o por tipo de objeto utilizando listas de
filtros.

Por ejemplo, puede copiar solo los objetos azules en un dibujo de placa de circuito o solo objetos
en una determinada capa. También puede combinar criterios de selección en su lista de filtros.
Por ejemplo, puede indicar a AutoCAD que incluya un objeto en un conjunto de selección solo si
se trata de un círculo azul en una capa específica. Las listas de filtros se pueden especificar para
los métodos Select, SelectAtPoint, SelectByPolygon y SelectOnScreen.
Nota: El filtrado solo reconoce tipos de línea explícitamente asignados a objetos, no aquellos
heredados por la capa.
About Displaying Information About a Selection Set (VBA/ActiveX)

To refer to an existing selection set whose name you know, refer to it by name.

The following example refers to a selection set named “SS10:”

Acerca de la visualización de información sobre un conjunto de selección (VBA / ActiveX)

Para hacer referencia a un conjunto de selección existente cuyo nombre conoce, refiérase a él
por su nombre.

El siguiente ejemplo se refiere a un conjunto de selección llamado "SS10:"

Sub GetObjInSet()

Dim selset As AcadSelectionSet

Set selset = ThisDrawing.SelectionSets("SS10")

MsgBox ("Selection set " & selset.Name & " contains " & _

selset.Count & " items")

End Sub

Each selection set in a drawing is a member of the SelectionSets collection. You can use
the For Each statement to iterate through a drawing's SelectionSets collection and collect
information about each selection set.

Cada selección establecida en un dibujo es un miembro de la colección SelectionSets. Puede


usar la instrucción For Each para iterar a través de la colección SelectionSets de un dibujo y
recopilar información sobre cada conjunto de selección.

Display the name of each selection set in a drawing


The following code displays the name of each selection set in a drawing, and lists the types of
objects included in each selection set:

Muestra el nombre de cada conjunto de selección en un dibujo

El siguiente código muestra el nombre de cada conjunto de selección en un dibujo, y enumera los
tipos de objetos incluidos en cada conjunto de selección:

Sub ListSelectionSets()
Dim selsetCollection As AcadSelectionSets

Dim selset As AcadSelectionSet

Dim ent As Object

Dim i, j As Integer

Set selsetCollection = ThisDrawing.SelectionSets

' Find each selection set in the drawing

i = 0

For Each selset In selsetCollection

MsgBox "Selection set " & CStr(i) & " is: " & selset.Name

' Now find each object in the selection set, and say what it is

j = 0

For Each ent In selset

MsgBox "Item " & CStr(j + 1) & " in " & selset.Name _

& "is: " & ent.EntityName

j = j + 1

Next

i = i + 1

Next

End Sub

About Removing Objects from a Selection Set (VBA/ActiveX)

After you create a selection set, you can choose to remove individual objects, or all the objects
from that set.

For example, you can select an entire group of densely grouped objects and remove specific
objects within the group, leaving only the objects you want to be in the set.

Use the following methods to remove items from the selection set:

RemoveItems
The RemoveItems method removes one or more items from a selection set. The removed
items still exist, but they no longer reside in the selection set.

Clear
The Clear method will empty the selection set. The selection set will still exist, but contains
no items. The items that previously resided in the selection still exist, but they no longer
reside in the selection set.

Erase
The Erase method deletes all items in a selection set. The selection set still exists, but will
contain no items. The items that previously resided in the selection set no longer exist.

Delete
The Delete method deletes a selection set and all items in the selection set. Neither the
selection set nor the items previously in the selection set will exist after a call to
the Delete method.

Acerca de la eliminación de objetos de un conjunto de selección (VBA / ActiveX)

Después de crear un conjunto de selección, puede optar por eliminar objetos individuales o todos
los objetos de ese conjunto.

Por ejemplo, puede seleccionar un grupo completo de objetos agrupados densamente y eliminar
objetos específicos dentro del grupo, dejando solo los objetos que desea que estén en el
conjunto.

Use los siguientes métodos para eliminar elementos del conjunto de selección:

Eliminar elementos

El método RemoveItems elimina uno o más elementos de un conjunto de selección. Los


elementos eliminados aún existen, pero ya no residen en el conjunto de selección.

Claro

El método Clear vaciará el conjunto de selección. El conjunto de selección seguirá existiendo,


pero no contiene elementos. Los elementos que anteriormente residían en la selección todavía
existen, pero ya no residen en el conjunto de selección.

Borrar

El método Erase borra todos los elementos en un conjunto de selección. El conjunto de selección
todavía existe, pero no contendrá ningún elemento. Los elementos que anteriormente residían en
el conjunto de selección ya no existen.

Borrar
El método Delete elimina un conjunto de selección y todos los elementos en el conjunto de
selección. Ni el conjunto de selección ni los elementos previamente en el conjunto de selección
existirán después de una llamada al método Eliminar.
About Working with Named Objects (VBA/ActiveX)

In addition to the graphic objects used by AutoCAD, there are several types of nongraphical
objects stored in drawing files.

These objects have descriptive designations associated with them, for example, blocks, layers,
groups, and dimension styles. In most cases, you name objects as you create them, and rename
them later. Names are stored in symbol tables. When you specify a named object, you are
referencing the name and associated data of the object in the symbol table.

Acerca del trabajo con objetos con nombre (VBA / ActiveX)

Además de los objetos gráficos utilizados por AutoCAD, hay varios tipos de objetos no gráficos
almacenados en los archivos de dibujo.

Estos objetos tienen designaciones descriptivas asociadas a ellos, por ejemplo, bloques, capas,
grupos y estilos de dimensión. En la mayoría de los casos, nombra objetos a medida que los crea
y los renombra más tarde. Los nombres se almacenan en tablas de símbolos. Cuando especifica
un objeto con nombre, está haciendo referencia al nombre y los datos asociados del objeto en la
tabla de símbolos.
About Copying Objects (VBA/ActiveX)

You can copy single or multiple objects within the current drawing.

Offsetting creates new objects at a specified distance from selected objects, or through a specified
point. Mirroring creates a mirror image of objects in a specified mirror line. Arraying creates sets of
copied objects in a rectangular or circular pattern.

Note: You cannot perform any of the copy methods while simultaneously iterating through a
collection. An iteration will open the workspace for a read-only operation while these methods
attempt to perform a read-write operation. Complete any iteration of a collection before you call
these methods.

Acerca de la copia de objetos (VBA / ActiveX)

Puede copiar objetos individuales o múltiples dentro del dibujo actual.

La compensación crea nuevos objetos a una distancia específica de los objetos seleccionados, o
a través de un punto específico. La creación de reflejos crea una imagen especular de los objetos
en una línea especular especificada. La creación de conjuntos crea conjuntos de objetos copiados
en un patrón rectangular o circular.
Nota: No puede realizar ninguno de los métodos de copia mientras itera simultáneamente en una
colección. Una iteración abrirá el espacio de trabajo para una operación de solo lectura mientras
estos métodos intentan realizar una operación de lectura y escritura. Complete cualquier iteración
de una colección antes de llamar a estos métodos.
About Offsetting Objects (VBA/ActiveX)

Offsetting an object creates a new object at a specified offset distance from the original object.

You can offset arcs, circles, ellipses, lines, lightweight polylines, polylines, splines, and xlines.

To offset an object, use the Offset method provided for that object. The only input to this method
is the distance to offset the object. If this distance is negative, it is interpreted by AutoCAD as
being an offset to make a “smaller” curve (that is, for an arc it would offset to a radius that is the
given distance less than the starting curve's radius). If “smaller” has no meaning, then AutoCAD
would offset in the direction of smaller X,Y,Z WCS coordinates. If the offset distance is invalid,
then an error is returned.

Acerca de los objetos de compensación (VBA / ActiveX)

Al desplazar un objeto se crea un nuevo objeto a una distancia de desplazamiento especificada


del objeto original.

Puede desplazar arcos, círculos, elipses, líneas, polilíneas livianas, polilíneas, splines y xlines.

Para compensar un objeto, use el método de compensación proporcionado para ese objeto. La
única entrada a este método es la distancia para compensar el objeto. Si esta distancia es
negativa, AutoCAD la interpreta como un desplazamiento para hacer una curva "más pequeña"
(es decir, para un arco, se compensaría con un radio que es la distancia dada menor que el radio
de la curva de inicio). Si "más pequeño" no tiene significado, AutoCAD se desplazará en la
dirección de las coordenadas X, Y, Z WCS más pequeñas. Si la distancia de desplazamiento no
es válida, se devuelve un error.

For many objects, the result of this operation will be a single new curve (which may not be of the
same type as the original curve). For example, offsetting an ellipse will result in a spline because
the result does fit the equation of an ellipse. In some cases it may be necessary for the offset
result to be several curves. Because of this, the method returns the new object, or array of objects,
as a variant.

Para muchos objetos, el resultado de esta operación será una sola curva nueva (que puede no
ser del mismo tipo que la curva original). Por ejemplo, compensar una elipse dará como resultado
una spline porque el resultado se ajusta a la ecuación de una elipse. En algunos casos, puede ser
necesario que el resultado del desplazamiento sea de varias curvas. Debido a esto, el método
devuelve el nuevo objeto, o conjunto de objetos, como una variante.

Offset a polyline
This example creates a lightweight polyline and then offsets the polyline.

Sub Ch4_OffsetPolyline()

' Create the polyline

Dim plineObj As AcadLWPolyline

Dim points(0 To 11) As Double

points(0) = 1: points(1) = 1

points(2) = 1: points(3) = 2

points(4) = 2: points(5) = 2

points(6) = 3: points(7) = 2

points(8) = 4: points(9) = 4

points(10) = 4: points(11) = 1

Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)

plineObj.Closed = True

ZoomAll

' Offset the polyline

Dim offsetObj As Variant

offsetObj = plineObj.Offset(0.25)

ZoomAll

End Sub

About Mirroring Objects (VBA/ActiveX)

Mirroring creates a mirror image copy of an object around an axis or mirror line. You can mirror all
drawing objects.

To mirror an object, use the Mirror method provided for that object. This method requires two
coordinates as input. The two coordinates specified become the endpoints of the mirror line
around which the base object is reflected. In 3D, this line orients a mirroring plane perpendicular to
the XY plane of the UCS containing the mirror line.

Unlike the MIRROR command in AutoCAD, this method places the reflected image into the
drawing and retains the original object. (To remove the original object, use the Erase method.)

Acerca de Mirroring Objects (VBA / ActiveX)

La duplicación crea una copia de imagen especular de un objeto alrededor de un eje o línea de
espejo. Puedes reflejar todos los objetos de dibujo.

Para duplicar un objeto, use el método Mirror proporcionado para ese objeto. Este método
requiere dos coordenadas como entrada. Las dos coordenadas especificadas se convierten en
los puntos finales de la línea del espejo alrededor de la cual se refleja el objeto base. En 3D, esta
línea orienta un plano de espejo perpendicular al plano XY del UCS que contiene la línea de
espejo.

A diferencia del comando MIRROR en AutoCAD, este método coloca la imagen reflejada en el
dibujo y conserva el objeto original. (Para eliminar el objeto original, use el método de Borrar).

To manage the reflection properties of Text objects, use the AutoCAD MIRRTEXT system
variable. The default setting of MIRRTEXT is On (1), which causes Text objects to be mirrored just
as any other object. When MIRRTEXT is Off (0), text is not mirrored. Use
the GetVariable and SetVariable methods to query and set the MIRRTEXT setting.

Para administrar las propiedades de reflexión de los objetos de texto, use la variable del sistema
AutoCAD MIRRTEXT. La configuración predeterminada de MIRRTEXT es On (1), lo que hace
que los objetos de texto se reflejen como cualquier otro objeto. Cuando MIRRTEXT está
desactivado (0), el texto no se refleja. Use los métodos GetVariable y SetVariable para consultar y
establecer la configuración de MIRRTEXT.

You can mirror a Viewport object in paper space, although doing so has no effect on its model
space view or on model space objects.

Puede reflejar un objeto de ventana en espacio de papel, aunque al hacerlo no tiene ningún
efecto en su vista de espacio modelo o en objetos de espacio modelo.
Mirror a polyline about an axis
This example creates a lightweight polyline and mirrors that polyline about an axis. The newly
created polyline is colored blue.

Sub Ch4_MirrorPolyline()

' Create the polyline

Dim plineObj As AcadLWPolyline

Dim points(0 To 11) As Double

points(0) = 1: points(1) = 1

points(2) = 1: points(3) = 2

points(4) = 2: points(5) = 2

points(6) = 3: points(7) = 2

points(8) = 4: points(9) = 4

points(10) = 4: points(11) = 1

Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)

plineObj.Closed = True

ZoomAll

' Define the mirror axis

Dim point1(0 To 2) As Double

Dim point2(0 To 2) As Double

point1(0) = 0: point1(1) = 4.25: point1(2) = 0

point2(0) = 4: point2(1) = 4.25: point2(2) = 0

' Mirror the polyline

Dim mirrorObj As AcadLWPolyline

Set mirrorObj = plineObj.Mirror(point1, point2)

Dim col As New AcadAcCmColor

Call col.SetRGB(125, 175, 235)

mirrorObj.TrueColor = col
ZoomAll

End Sub

About Creating Polar Arrays (VBA/ActiveX)

You can array all drawing objects to fill a circular pattern.

To create a polar array, use the ArrayPolar method provided for that object. This method
requires you to provide the number of objects to create, the angle-to-fill, and the center point for
the array. The number of objects must be a positive integer greater than 1. The angle-to-fill must
be in radians. A positive value specifies counterclockwise rotation. A negative value specifies
clockwise rotation. An error is returned for an angle that equals 0. The center point is a variant
array containing three doubles. These doubles represent the 3D WCS coordinate specifying the
center point for the polar array.

Acerca de la creación de matrices polares (VBA / ActiveX)

Puede organizar todos los objetos de dibujo para completar un patrón circular.

Para crear una matriz polar, use el método ArrayPolar proporcionado para ese objeto. Este
método requiere que proporcione el número de objetos para crear, el ángulo para rellenar y el
punto central para la matriz. El número de objetos debe ser un entero positivo mayor que 1. El
ángulo de llenado debe ser en radianes. Un valor positivo especifica la rotación en sentido
antihorario. Un valor negativo especifica la rotación en el sentido de las agujas del reloj. Se
devuelve un error para un ángulo que es igual a 0. El punto central es una matriz variante que
contiene tres dobles. Estos dobles representan la coordenada 3D WCS que especifica el punto
central de la matriz polar.

AutoCAD determines the distance from the array's center point to a reference point on the original
object. The reference point used depends on the type of object. AutoCAD uses the center point of
a circle or arc, the insertion point of a block or shape, the start point of text, and one endpoint of a
line or trace.

This method does not support the Rotate While Copying option of the AutoCAD ARRAY
command.

AutoCAD determina la distancia desde el punto central de la matriz a un punto de referencia en el


objeto original. El punto de referencia utilizado depende del tipo de objeto. AutoCAD utiliza el
punto central de un círculo o arco, el punto de inserción de un bloque o forma, el punto de inicio
del texto y un punto final de una línea o trazado.

Este método no admite la opción Girar durante la copia del comando AutoCAD ARRAY.

Create a polar array


This example creates a circle, and then performs a polar array of the circle. This creates four
circles filling 180 degrees around a base point of (4, 4, 0).

Sub Ch4_ArrayingACircle()

' Create the circle

Dim circleObj As AcadCircle

Dim center(0 To 2) As Double

Dim radius As Double

center(0) = 2#: center(1) = 2#: center(2) = 0#

radius = 1

Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)

ZoomAll

' Define the polar array

Dim noOfObjects As Integer

Dim angleToFill As Double

Dim basePnt(0 To 2) As Double

noOfObjects = 4

angleToFill = 3.14 ' 180 degrees

basePnt(0) = 4#: basePnt(1) = 4#: basePnt(2) = 0#

' The following example will create 4 copies

' of an object by rotating and copying it about

' the point (3,3,0).

Dim retObj As Variant

retObj = circleObj.ArrayPolar(noOfObjects, angleToFill, basePnt)


ZoomAll

End Sub

About Creating Rectangular Arrays (VBA/ActiveX)

To create a 2D or 3D rectangular array, use the ArrayRectangular method provided for that
object.

This method requires you to provide the number of rows, number of columns, distance between
rows, and distance between columns. When creating a 3D array, you must also specify the
number of levels and distance between levels as well.

A rectangular array is constructed by replicating the object in the selection set the appropriate
number of times. If you define one row, you must specify more than one column and vice versa.

The original object is assumed to be in the lower-left corner, and the array is generated up and to
the right. If the distance between rows is a negative number, rows are added downward. If the
distance between columns is a negative number, the columns are added to the left.

Acerca de la creación de matrices rectangulares (VBA / ActiveX)

Para crear una matriz rectangular 2D o 3D, use el método ArrayRectangular proporcionado para
ese objeto.

Este método requiere que proporciones el número de filas, el número de columnas, la distancia
entre filas y la distancia entre columnas. Al crear una matriz 3D, también debe especificar la
cantidad de niveles y la distancia entre niveles.

Una matriz rectangular se construye al replicar el objeto en la selección establecer el número


apropiado de veces. Si define una fila, debe especificar más de una columna y viceversa.

Se supone que el objeto original está en la esquina inferior izquierda, y la matriz se genera hacia
arriba y hacia la derecha. Si la distancia entre filas es un número negativo, las filas se agregan
hacia abajo. Si la distancia entre columnas es un número negativo, las columnas se agregan a la
izquierda.
AutoCAD builds the rectangular array along a baseline defined by the current snap rotation angle.
This angle is 0 by default, so the rows and columns of a rectangular array are orthogonal with
respect to the X and Y drawing axes. You can change this angle and create a rotated array by
setting the snap rotation angle to a nonzero value. To do this, use
the SnapRotationAngle property.

AutoCAD construye la matriz rectangular a lo largo de una línea de base definida por el ángulo de
rotación instantánea actual. Este ángulo es 0 por defecto, por lo que las filas y columnas de una
matriz rectangular son ortogonales con respecto a los ejes de dibujo X e Y. Puede cambiar este
ángulo y crear una matriz girada estableciendo el ángulo de rotación de ajuste a un valor distinto
de cero. Para hacer esto, use la propiedad SnapRotationAngle.

Create a rectangular array


This example creates a circle and then performs a rectangular array of the circle, creating five
rows and five columns of circles.

Sub Ch4_ArrayRectangularExample()

' Create the circle

Dim circleObj As AcadCircle

Dim center(0 To 2) As Double

Dim radius As Double

center(0) = 2#: center(1) = 2#: center(2) = 0#

radius = 0.5

Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)

ZoomAll

' Define the rectangular array

Dim numberOfRows As Long

Dim numberOfColumns As Long

Dim numberOfLevels As Long

Dim distanceBwtnRows As Double

Dim distanceBwtnColumns As Double


Dim distanceBwtnLevels As Double

numberOfRows = 5

numberOfColumns = 5

numberOfLevels = 2

distanceBwtnRows = 1

distanceBwtnColumns = 1

distanceBwtnLevels = 1

' Create the array of objects

Dim retObj As Variant

retObj = circleObj.ArrayRectangular _

(numberOfRows, numberOfColumns, numberOfLevels, _

distanceBwtnRows, distanceBwtnColumns, distanceBwtnLevels)

ZoomAll

End Sub

About Moving Objects Along a Vector (VBA/ActiveX)

You can move all drawing objects and attribute reference objects along a specified vector.

To move an object, use the Move method provided for that object. This method requires two
coordinates as input. These coordinates define a displacement vector indicating how far the given
object is to be moved and in what direction.

Acerca de mover objetos a lo largo de un vector (VBA / ActiveX)

Puede mover todos los objetos de dibujo y los objetos de referencia de atributo a lo largo de un
vector especificado.

Para mover un objeto, use el método Move proporcionado para ese objeto. Este método requiere
dos coordenadas como entrada. Estas coordenadas definen un vector de desplazamiento que
indica qué tan lejos debe moverse el objeto dado y en qué dirección.
Move a circle along a vector
This example creates a circle and then moves that circle two units along the X axis.

Sub Ch4_MoveCircle()

' Create the circle

Dim circleObj As AcadCircle

Dim center(0 To 2) As Double

Dim radius As Double

center(0) = 2#: center(1) = 2#: center(2) = 0#

radius = 0.5

Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)

ZoomAll

' Define the points that make up the move vector.

' The move vector will move the circle 2 units

' along the x axis.

Dim point1(0 To 2) As Double

Dim point2(0 To 2) As Double

point1(0) = 0: point1(1) = 0: point1(2) = 0

point2(0) = 2: point2(1) = 0: point2(2) = 0

' Move the circle

circleObj.Move point1, point2

circleObj.Update

End Sub
About Rotating Objects (VBA/ActiveX)

You can rotate all drawing objects and attribute reference objects.

To rotate an object, use the Rotate method provided for that object. This method requires as
input a base point and a rotation angle. The base point is a variant array with three doubles. These
doubles represent a 3D WCS coordinate specifying the point through which the axis of rotation is
defined. The angle of rotation is specified in radians. This angle determines how far an object
rotates around the base point relative to its current location.

Acerca de la rotación de objetos (VBA / ActiveX)

Puede rotar todos los objetos de dibujo y atribuir objetos de referencia.

Para rotar un objeto, use el método Girar proporcionado para ese objeto. Este método requiere
como entrada un punto base y un ángulo de rotación. El punto base es una matriz variante con
tres dobles. Estos dobles representan una coordenada 3D WCS que especifica el punto a través
del cual se define el eje de rotación. El ángulo de rotación se especifica en radianes. Este ángulo
determina qué tan lejos gira un objeto alrededor del punto base relativo a su ubicación actual.

Rotate a polyline about a base point


This example creates a closed lightweight polyline, and then rotates the polyline 45 degrees about
the base point (4, 4.25, 0).

Gira una polilínea alrededor de un punto base

Este ejemplo crea una polilínea ligera cerrada y luego gira la polilínea 45 grados sobre el punto
base (4, 4.25, 0).

Sub Ch4_RotatePolyline()

' Create the polyline

Dim plineObj As AcadLWPolyline

Dim points(0 To 11) As Double

points(0) = 1: points(1) = 2

points(2) = 1: points(3) = 3

points(4) = 2: points(5) = 3
points(6) = 3: points(7) = 3

points(8) = 4: points(9) = 4

points(10) = 4: points(11) = 2

Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)

plineObj.Closed = True

ZoomAll

' Define the rotation of 45 degrees about a

' base point of (4, 4.25, 0)

Dim basePoint(0 To 2) As Double

Dim rotationAngle As Double

basePoint(0) = 4: basePoint(1) = 4.25: basePoint(2) = 0

rotationAngle = 0.7853981 ' 45 degrees

' Rotate the polyline

plineObj.Rotate basePoint, rotationAngle

plineObj.Update

End Sub

About Erasing or Deleting Objects (VBA/ActiveX)

You can erase or delete individual objects by using the Delete method.

Note: The Collection objects in ActiveX Automation have a Delete method due to the manner in
which these objects have been defined in the type library. However, the Collection objects, such
as ModelSpace collection, Layers collection, and Dictionaries collection, should never be
deleted. An error will result if you attempt to delete a collection.

Create and delete a polyline


This example creates a lightweight polyline, then deletes it.

Acerca del borrado o eliminación de objetos (VBA / ActiveX)

Puede borrar o eliminar objetos individuales utilizando el método Eliminar.


Nota: Los objetos Collection en ActiveX Automation tienen un método Delete debido a la forma en
que se han definido estos objetos en la biblioteca de tipos. Sin embargo, los objetos Collection,
como la colección ModelSpace, la colección Layers y la colección Dictionaries, nunca se deben
eliminar. Se producirá un error si intenta eliminar una colección.

Crear y eliminar una polilínea

Este ejemplo crea una polilínea ligera y luego la elimina.

Sub Ch4_DeletePolyline()

' Create the polyline

Dim lwpolyObj As AcadLWPolyline

Dim vertices(0 To 5) As Double

vertices(0) = 2: vertices(1) = 4

vertices(2) = 4: vertices(3) = 2

vertices(4) = 6: vertices(5) = 4

Set lwpolyObj =
ThisDrawing.ModelSpace.AddLightWeightPolyline(vertices)

ZoomAll

' Erase the polyline

lwpolyObj.Delete

ThisDrawing.Regen acActiveViewport

End Sub

About Scaling Objects (VBA/ActiveX)

You scale an object by specifying a base point and a length, which is used as a scale factor based
on the current drawing units. You can scale all the drawing objects, as well as attribute reference
objects.

To scale an object, use the ScaleEntity method provided for that object. This method scales
the object equally in the X, Y, and Z directions. It takes as input the base point for the scale and a
scale factor. The base point is a variant array with three doubles. These doubles represent a 3D
WCS coordinate specifying the point from which the scale begins. The scale factor is the factor by
which to scale the object. The dimensions of the object are multiplied by the scale factor. A scale
factor greater than 1 enlarges the object. A scale factor between 0 and 1 reduces the object.
Scale a polyline
This example creates a closed lightweight polyline and then scales the polyline by 0.5.

Acerca de Escalar objetos (VBA / ActiveX)

Escala un objeto especificando un punto base y una longitud, que se usa como un factor de
escala basado en las unidades de dibujo actuales. Puede escalar todos los objetos de dibujo, así
como los objetos de referencia de atributos.

Para escalar un objeto, use el método ScaleEntity proporcionado para ese objeto. Este método
escala el objeto por igual en las direcciones X, Y y Z. Toma como entrada el punto base para la
escala y un factor de escala. El punto base es una matriz variante con tres dobles. Estos dobles
representan una coordenada 3D WCS que especifica el punto desde el que comienza la escala.
El factor de escala es el factor por el cual escalar el objeto. Las dimensiones del objeto se
multiplican por el factor de escala. Un factor de escala mayor que 1 amplía el objeto. Un factor de
escala entre 0 y 1 reduce el objeto.

Escalar una polilínea

Este ejemplo crea una polilínea ligera cerrada y luego escala la polilínea en 0.5.

Sub Ch4_ScalePolyline()

' Create the polyline

Dim plineObj As AcadLWPolyline

Dim points(0 To 11) As Double

points(0) = 1: points(1) = 2

points(2) = 1: points(3) = 3

points(4) = 2: points(5) = 3

points(6) = 3: points(7) = 3

points(8) = 4: points(9) = 4

points(10) = 4: points(11) = 2

Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)


plineObj.Closed = True

ZoomAll

' Define the scale

Dim basePoint(0 To 2) As Double

Dim scalefactor As Double

basePoint(0) = 4: basePoint(1) = 4.25: basePoint(2) = 0

scalefactor = 0.5

' Scale the polyline

plineObj.ScaleEntity basePoint, scalefactor

plineObj.Update

End Sub

About Transforming Objects (VBA/ActiveX)

You move, scale, or rotate an object given a 4 by 4 transformation matrix using


the TransformBy method.

The following table demonstrates the transformation matrix configuration, where R = Rotation
and T = Translation:

Transformation matrix configuration

R00 R01 R02 T0

R10 R11 R12 T1

R20 R21 R22 T2


Transformation matrix configuration

0 0 0 1

To transform an object, first initialize the transformation matrix. The following example shows a
transformation matrix, assigned to the variable tMatrix, which will rotate an entity by 90 degrees
about the point (0, 0, 0):

Acerca de Transformar objetos (VBA / ActiveX)

Mueve, escala o gira un objeto con una matriz de transformación de 4 por 4 utilizando el método
TransformBy.

La siguiente tabla muestra la configuración de la matriz de transformación, donde R = Rotación y


T = Traducción:

Configuración de la matriz de transformación

R00 R01 R02 T0

R10 R11 R12 T1

R20 R21 R22 T2

0001

Para transformar un objeto, primero inicialice la matriz de transformación. El siguiente ejemplo


muestra una matriz de transformación, asignada a la variable tMatrix, que rotará una entidad 90
grados alrededor del punto (0, 0, 0):

tMatrix(0,0) = 0.0

tMatrix(0,1) = -1.0

tMatrix(0,2) = 0.0

tMatrix(0,3) = 0.0

tMatrix(1,0) = 1.0

tMatrix(1,1) = 0.0

tMatrix(1,2) = 0.0
tMatrix(1,3) = 0.0

tMatrix(2,0) = 0.0

tMatrix(2,1) = 0.0

tMatrix(2,2) = 1.0

tMatrix(2,3) = 0.0

tMatrix(3,0) = 0.0

tMatrix(3,1) = 0.0

tMatrix(3,2) = 0.0

tMatrix(3,3) = 1.0

After the transformation matrix is complete, apply the matrix to the object using
the TransformBy method. The following line of code demonstrates applying a matrix
(tMatrix) to an object (anObj):

Una vez completada la matriz de transformación, aplique la matriz al objeto utilizando el método
TransformBy. La siguiente línea de código demuestra la aplicación de una matriz (tMatrix) a un
objeto (anObj):

anObj.TransformBy tMatrix

Rotate a line with a transformation matrix


This example creates a line and rotates it 90 degrees using a transformation matrix.

Girar una línea con una matriz de transformación

Este ejemplo crea una línea y la gira 90 grados usando una matriz de transformación.

Sub Ch4_TransformBy()

' Create a line

Dim lineObj As AcadLine

Dim startPt(0 To 2) As Double

Dim endPt(0 To 2) As Double

startPt(0) = 2

startPt(1) = 1

startPt(2) = 0

endPt(0) = 5
endPt(1) = 1

endPt(2) = 0

Set lineObj = ThisDrawing.ModelSpace.AddLine(startPt, endPt)

ZoomAll

' Initialize the transMat variable with a

' transformation matrix that will rotate

' an object by 90 degrees about the point(0,0,0)

Dim transMat(0 To 3, 0 To 3) As Double

transMat(0, 0) = 0#: transMat(0, 1) = -1#

transMat(0, 2) = 0#: transMat(0, 3) = 0#

transMat(1, 0) = 1#: transMat(1, 1) = 0#

transMat(1, 2) = 0#: transMat(1, 3) = 0#

transMat(2, 0) = 0#: transMat(2, 1) = 0#

transMat(2, 2) = 1#: transMat(2, 3) = 0#

transMat(3, 0) = 0#: transMat(3, 1) = 0#

transMat(3, 2) = 0#: transMat(3, 3) = 1#

' Transform the line using the defined transformation matrix

lineObj.TransformBy transMat

lineObj.Update

End Sub

The following are more examples of transformation matrices:

Rotation Matrix: 90 degrees about point (0, 0, 0)

0.0 -1.0 0.0 0.0


Rotation Matrix: 90 degrees about point (0, 0, 0)

1.0 0.0 0.0 0.0

0.0 0.0 1.0 0.0

0.0 0.0 0.0 1.0

Rotation Matrix: 45 degrees about point (5, 5, 0)

0.707107 -0.707107 0.0 5.0

0.707107 0.707107 0.0 -2.071068

0.0 0.0 1.0 0.0

0.0 0.0 0.0 1.0

Translation Matrix: move an entity by (10, 10, 0)

1.0 0.0 0.0 10.0

0.0 1.0 0.0 10.0

0.0 0.0 1.0 0.0


Translation Matrix: move an entity by (10, 10, 0)

0.0 0.0 0.0 1.0

Scaling Matrix: scale by 10,10 at point (0, 0, 0)

10.0 0.0 0.0 0.0

0.0 10.0 0.0 0.0

0.0 0.0 10.0 0.0

0.0 0.0 0.0 1.0

Scaling Matrix: scale by 10,10 at point (2, 2, 0)

10.0 0.0 0.0 -18.0

0.0 10.0 0.0 -18.0

0.0 0.0 10.0 0.0

0.0 0.0 0.0 1.0

Los siguientes son más ejemplos de matrices de transformación:


Matriz de rotación: 90 grados sobre el punto (0, 0, 0)

0.0 -1.0 0.0 0.0

1.0 0.0 0.0 0.0

0.0 0.0 1.0 0.0

0.0 0.0 0.0 1.0

Matriz de rotación: 45 grados sobre el punto (5, 5, 0)

0.707107 -0.707107 0.0 5.0

0.707107 0.707107 0.0 -2.071068

0.0 0.0 1.0 0.0

0.0 0.0 0.0 1.0

Matriz de traducción: mover una entidad por (10, 10, 0)

1.0 0.0 0.0 10.0

0.0 1.0 0.0 10.0

0.0 0.0 1.0 0.0

0.0 0.0 0.0 1.0

Escala de Matriz: escala por 10,10 en el punto (0, 0, 0)

10.0 0.0 0.0 0.0

0.0 10.0 0.0 0.0

0.0 0.0 10.0 0.0

0.0 0.0 0.0 1.0

Matriz de escala: escala por 10,10 en el punto (2, 2, 0)

10.0 0.0 0.0 -18.0

0.0 10.0 0.0 -18.0

0.0 0.0 10.0 0.0

0.0 0.0 0.0 1.0


About Extending and Trimming Objects (VBA/ActiveX)

You can change the angle of arcs and you can change the length of open lines, arcs, open
polylines, elliptical arcs, and open splines. The results are similar to both extending and trimming
objects.
You can extend or trim an object by editing its properties. For example, to lengthen a line, simply
change the coordinates of the StartPoint or EndPoint properties. To change the angle of an
arc, change the StartAngle or EndAngle property of the arc. Once you have altered an object's
property or properties, use the Update method to see your changes in the drawing.

Lengthen a line
This example creates a line and then changes the endpoint of that line, resulting in a longer line.

Acerca de la extensión y recorte de objetos (VBA / ActiveX)

Puede cambiar el ángulo de arcos y puede cambiar la longitud de líneas abiertas, arcos,
polilíneas abiertas, arcos elípticos y splines abiertos. Los resultados son similares a los objetos de
extensión y recorte.

Puede extender o recortar un objeto editando sus propiedades. Por ejemplo, para alargar una
línea, simplemente cambie las coordenadas de las propiedades StartPoint o EndPoint. Para
cambiar el ángulo de un arco, cambie la propiedad StartAngle o EndAngle del arco. Una vez que
haya alterado la propiedad o las propiedades de un objeto, use el método Actualizar para ver sus
cambios en el dibujo.

Alargar una línea

Este ejemplo crea una línea y luego cambia el punto final de esa línea, lo que resulta en una línea
más larga.

Sub Ch4_LengthenLine()

' Define and create the line

Dim lineObj As AcadLine

Dim startPoint(0 To 2) As Double

Dim endPoint(0 To 2) As Double

startPoint(0) = 0

startPoint(1) = 0

startPoint(2) = 0

endPoint(0) = 1

endPoint(1) = 1

endPoint(2) = 1

Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)

lineObj.Update
' Lengthen the line by changing the

' endpoint to 4, 4, 4

endPoint(0) = 4

endPoint(1) = 4

endPoint(2) = 4

lineObj.endPoint = endPoint

lineObj.Update

End Sub

About Exploding Objects (VBA/ActiveX)

Exploding objects converts the objects from single objects to their constituent parts but has no
visible effect.

For example, exploding forms simple lines and arcs from 3D polygons, polylines, polygon meshes,
and regions. It replaces a block reference with copies of the simple objects that compose the
block.

Explode a polyline
This example creates a lightweight polyline object. It then explodes the polyline into separate
objects. The example then loops through the resulting objects and displays a message box
containing the name of each object and its index in the list of exploded objects.

Acerca de objetos explosivos (VBA / ActiveX)

La explosión de objetos convierte los objetos de objetos individuales a sus partes constituyentes,
pero no tiene un efecto visible.

Por ejemplo, la explosión forma líneas y arcos simples a partir de polígonos 3D, polilíneas, mallas
poligonales y regiones. Reemplaza una referencia de bloque con copias de los objetos simples
que componen el bloque.

Explotar una polilínea

Este ejemplo crea un objeto de polilínea ligero. A continuación, explota la polilínea en objetos
separados. El ejemplo luego recorre los objetos resultantes y muestra un cuadro de mensaje que
contiene el nombre de cada objeto y su índice en la lista de objetos explotados.

Sub Ch4_ExplodePolyline()
Dim plineObj As AcadLWPolyline

Dim points(0 To 11) As Double

' Define the 2D polyline points

points(0) = 1: points(1) = 1

points(2) = 1: points(3) = 2

points(4) = 2: points(5) = 2

points(6) = 3: points(7) = 2

points(8) = 4: points(9) = 4

points(10) = 4: points(11) = 1

' Create a light weight Polyline object

Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)

' Set the bulge on one segment to vary the

' type of objects in the polyline

plineObj.SetBulge 3, -0.5

plineObj.Update

' Explode the polyline

Dim explodedObjects As Variant

explodedObjects = plineObj.Explode

' Loop through the exploded objects

' and display a message box with

' the type of each object

Dim I As Integer

For I = 0 To UBound(explodedObjects)

explodedObjects(I).Update

MsgBox "Exploded Object " & I & ": " & explodedObjects(I).ObjectName
explodedObjects(I).Update

Next

End Sub

About Editing Polylines (VBA/ActiveX)

2D and 3D polylines, rectangles, polygons, and 3D polygon meshes are all polyline variants and
are edited in the same way.

AutoCAD recognizes both fit polylines and spline-fit polylines. A spline-fit polyline uses a curve fit,
similar to a B-spline. There are two kinds of spline-fit polylines: quadratic and cubic. Both polylines
are controlled by the AutoCAD SPLINETYPE system variable. A fit polyline uses standard curves
for curve fit and utilizes any tangent directions set on any given vertex.

To edit a polyline, use the properties and methods of


the LightweightPolyline or Polyline object. Use the following properties and methods to
open or close a polyline, change the coordinates of a polyline vertex, or add a vertex:

Closed property
Opens or closes the polyline.

Coordinates property
Specifies the coordinates for each vertex in the polyline.

Use the following methods to update the bulge or width of a polyline:

AddVertex
Adds a vertex to a lightweight polyline.

SetBulge
Sets the bulge of a polyline, given the segment index.

SetWidth
Sets the start and end width of a polyline, given the segment index.

Edit a polyline
This example creates a lightweight polyline. It then adds a bulge to the third segment of the
polyline, appends a vertex to the polyline, changes the width of the last segment, and finally
closes the polyline.

Acerca de la edición de polilíneas (VBA / ActiveX)

Las polilíneas, rectángulos, polígonos y mallas poligonales 3D y 2D son todas variantes de


polilíneas y se editan de la misma manera.

AutoCAD reconoce ambas polilíneas de ajuste y polilíneas spline-fit. Una polilínea Spline-fit utiliza
un ajuste de curva, similar a una B-spline. Hay dos tipos de polilíneas spline-fit: cuadrática y
cúbica. Ambas polilíneas están controladas por la variable del sistema AutoCAD SPLINETYPE.
Una polilínea en forma usa curvas estándar para ajuste de curva y utiliza cualquier dirección de
tangente establecida en cualquier vértice dado.

Para editar una polilínea, use las propiedades y métodos del objeto LightweightPolyline o Polyline.
Utilice las siguientes propiedades y métodos para abrir o cerrar una polilínea, cambiar las
coordenadas de un vértice de polilínea o agregar un vértice:

Propiedad cerrada

Abre o cierra la polilínea.

Coordenadas propiedad

Especifica las coordenadas para cada vértice en la polilínea.

Utilice los siguientes métodos para actualizar el abultamiento o el ancho de una polilínea:

AddVertex

Agrega un vértice a una polilínea ligera.

SetBulge

Establece el abultamiento de una polilínea, dado el índice del segmento.

SetWidth

Establece el ancho inicial y final de una polilínea, dado el índice del segmento.

Editar una polilínea

Este ejemplo crea una polilínea ligera. Luego agrega un abultamiento al tercer segmento de la
polilínea, agrega un vértice a la polilínea, cambia el ancho del último segmento y finalmente cierra
la polilínea.

Sub Ch4_EditPolyline()

Dim plineObj As AcadLWPolyline

Dim points(0 To 9) As Double

' Define the 2D polyline points

points(0) = 1: points(1) = 1

points(2) = 1: points(3) = 2
points(4) = 2: points(5) = 2

points(6) = 3: points(7) = 2

points(8) = 4: points(9) = 4

' Create a light weight Polyline object

Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)

' Add a bulge to segment 3

plineObj.SetBulge 3, -0.5

' Define the new vertex

Dim newVertex(0 To 1) As Double

newVertex(0) = 4: newVertex(1) = 1

' Add the vertex to the polyline

plineObj.AddVertex 5, newVertex

' Set the width of the new segment

plineObj.SetWidth 4, 0.1, 0.5

' Close the polyline

plineObj.Closed = True

plineObj.Update

End Sub

About Editing Splines (VBA/ActiveX)

Existing spline objects can be edited using the object's properties and methods.

Use the following editable properties to change splines:

ControlPoints
Specifies the control points of a spline.
EndTangent
Specifies the end tangent of the spline as a directional vector.

FitPoints
Specifies all the fit points of a spline.

FitTolerance
Refits the spline to the existing points with new tolerance values.

Knots
Specifies the knots vector for the spline.

StartTangent
Specifies the start tangent for the spline.

In addition, you can use the following methods to edit splines:

AddFitPoint
Adds a single fit point to the spline at a given index.

DeleteFitPoint
Deletes the fit point of a spline at a given index.

ElevateOrder
Elevates the order of the spline to the given order.

GetFitPoint
Gets the fit point of the spline at a given index. (Gets one fit point only. To query all the fit
points of the spline, use the FitPoints property.)

Reverse
Reverses the direction of a spline.

SetControlPoint
Sets the control point of the spline at a given index.

SetFitPoint
Sets the fit point of the spline at a given index. (Sets one fit point only. To change all the fit
points of the spline, use the FitPoints property.)

SetWeight
Sets the weight of the control point at a given index.

Use the following read-only properties to query splines:

Area
Gets the enclosed area of a spline.

Closed
Indicates whether the spline is open or closed.
Degree
Gets the degree of the spline's polynomial representation.

IsPeriodic
Specifies if the given spline is periodic.

IsPlanar
Specifies if the given spline is planar.

IsRational
Specifies if the given spline is rational.

NumberOfControlPoints
Gets the number of control points of the spline.

NumberOfFitPoints
Gets the number of fit points of the spline.

Change a control point on a spline


This example creates a spline and then changes the first control
point for the spline.

Acerca de la edición de Splines (VBA / ActiveX)

Los objetos spline existentes se pueden editar utilizando las propiedades y métodos del objeto.

Use las siguientes propiedades editables para cambiar las splines:

Puntos de control

Especifica los puntos de control de una spline.

EndTangent

Especifica la tangente final de la spline como un vector direccional.

FitPoints

Especifica todos los puntos de ajuste de una spline.

FitTolerance

Ajusta la spline a los puntos existentes con nuevos valores de tolerancia.

Nudos

Especifica el vector de nudos para la spline.


StartTangent

Especifica la tangente de inicio para la spline.

Además, puede usar los siguientes métodos para editar splines:

AddFitPoint

Agrega un único punto de ajuste a la spline en un índice dado.

DeleteFitPoint

Elimina el punto de ajuste de una spline en un índice dado.

ElevateOrder

Eleva el orden de la spline al orden dado.

GetFitPoint

Obtiene el punto de ajuste de la spline en un índice dado. (Obtiene un solo punto de ajuste. Para
consultar todos los puntos de ajuste de la spline, use la propiedad FitPoints).

Marcha atrás

Invierte la dirección de una spline.

SetControlPoint

Establece el punto de control de la spline en un índice dado.

SetFitPoint

Establece el punto de ajuste de la spline en un índice dado. (Establece un solo punto de ajuste.
Para cambiar todos los puntos de ajuste de la spline, use la propiedad FitPoints).

SetWeight

Establece el peso del punto de control en un índice dado.

Utilice las siguientes propiedades de solo lectura para consultar splines:

Zona

Obtiene el área cerrada de una spline.

Cerrado

Indica si la spline está abierta o cerrada.

La licenciatura
Obtiene el grado de representación polinomial de la spline.

IsPeriodic

Especifica si la spline dada es periódica.

IsPlanar

Especifica si la spline dada es plana.

IsRational

Especifica si la spline dada es racional.

NumberOfControlPoints

Obtiene la cantidad de puntos de control de la spline.

NumberOfFitPoints

Obtiene la cantidad de puntos de ajuste de la spline.

Cambiar un punto de control en una spline

Este ejemplo crea una spline y luego cambia el primer punto de control para la spline.

Sub Ch4_ChangeSplineControlPoint()

' Create the spline

Dim splineObj As AcadSpline

Dim startTan(0 To 2) As Double

Dim endTan(0 To 2) As Double

Dim fitPoints(0 To 8) As Double

startTan(0) = 0.5: startTan(1) = 0.5: startTan(2) = 0

endTan(0) = 0.5: endTan(1) = 0.5: endTan(2) = 0

fitPoints(0) = 1: fitPoints(1) = 1: fitPoints(2) = 0

fitPoints(3) = 5: fitPoints(4) = 5: fitPoints(5) = 0

fitPoints(6) = 10: fitPoints(7) = 0: fitPoints(8) = 0

Set splineObj = ThisDrawing.ModelSpace.AddSpline(fitPoints, startTan,


endTan)

splineObj.Update
' Change the coordinate of the first fit point

Dim controlPoint(0 To 2) As Double

controlPoint(0) = 0

controlPoint(1) = 3

controlPoint(2) = 0

splineObj.SetControlPoint 0, controlPoint

splineObj.Update

End Sub

About Editing Hatches (VBA/ActiveX)

You can edit both hatch boundaries and hatch patterns.

If you edit the boundary of an associative hatch, the pattern is updated as long as the editing
results in a valid boundary. Associative hatches are updated even if they're on layers that are
turned off. You can modify hatch patterns or choose a new pattern for an existing hatch, but
associativity can only be set when a hatch is created. You can check to see if a Hatch object is
associative by using the AssociativeHatch property. (See the AddHatch method for more
information on creating a hatch.)

You must re-evaluate a hatch using the Evaluate method to see any edits to the hatch.

Acerca de la edición de sombreados (VBA / ActiveX)

Puede editar ambos límites de sombreado y patrones de sombreado.

Si edita el límite de una compuerta asociativa, el patrón se actualiza siempre que la edición dé
como resultado un límite válido. Los sombreados asociativos se actualizan incluso si están en
capas que están desactivadas. Puede modificar los patrones de sombreado o elegir un nuevo
patrón para un sombreado existente, pero la asociatividad solo puede establecerse cuando se
crea un sombreado. Puede verificar si un objeto Hatch es asociativo utilizando la propiedad
AssociativeHatch. (Consulte el método AddHatch para obtener más información sobre cómo crear
un sombreado).

Debe volver a evaluar una eclosión utilizando el método Evaluar para ver las ediciones de la
escotilla.
About Changing an Object's Layer (VBA/ActiveX)

Once you have created an object and assigned layer, color, and linetype properties to it, you may
wish to change the object's layer.
Changing an object's layer is useful if you accidentally create an object on the wrong layer or
decide to change your layer organization later.

To change an object's layer, use the Layer property provided for that object. The Layer property
takes the name of the layer as input.

Move an object to a different layer


This example creates a circle on the active layer and then creates a new layer called “ABC”. It
then moves the circle to the new layer.

Acerca del cambio de la capa de un objeto (VBA / ActiveX)

Una vez que haya creado un objeto y le haya asignado propiedades de capa, color y tipo de línea,
es posible que desee cambiar la capa del objeto.

Cambiar la capa de un objeto es útil si accidentalmente creas un objeto en la capa incorrecta o


decides cambiar tu organización de capa más tarde.

Para cambiar la capa de un objeto, use la propiedad Layer proporcionada para ese objeto. La
propiedad Layer toma el nombre de la capa como entrada.

Mueva un objeto a una capa diferente

Este ejemplo crea un círculo en la capa activa y luego crea una nueva capa llamada "ABC".
Luego mueve el círculo a la nueva capa.

Sub Ch4_MoveObjectNewLayer()

' Create a circle

Dim circleObj As AcadCircle

Dim center(0 To 2) As Double

Dim radius As Double

center(0) = 2: center(1) = 2: center(2) = 0

radius = 1

Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)

' Create a new layer called "ABC"

Dim layerObj As AcadLayer

Set layerObj = ThisDrawing.Layers.Add("ABC")


' Assign the circle to the "ABC" layer

circleObj.Layer = "ABC"

circleObj.Update

End Sub

About Changing an Object's Linetype (VBA/ActiveX)

By default, objects inherit the linetype of the layer on which they are created.

To change an object's linetype, use the Linetype property provided for that object.
The Linetype property takes the name of the linetype to assign to the object as input.

Note: Before you can assign a linetype to an object, the linetype must be loaded into the current
drawing. To load a linetype into the drawing, use the Load method.

Change the linetype of a circle


This example creates a circle. It then attempts to load the linetype “CENTER” from
the acad.lin file. If the linetype already exists, or the file does not exist, then a message is
displayed. Finally, it sets the linetype for the circle to be “CENTER.”

Acerca de Cambiar el tipo de línea de un objeto (VBA / ActiveX)

De forma predeterminada, los objetos heredan el tipo de línea de la capa en la que se crean.

Para cambiar el tipo de línea de un objeto, use la propiedad Linetype provista para ese objeto. La
propiedad Linetype toma el nombre del tipo de línea para asignar al objeto como entrada.

Nota: Antes de poder asignar un tipo de línea a un objeto, el tipo de línea debe cargarse en el
dibujo actual. Para cargar un tipo de línea en el dibujo, use el método Cargar.

Cambiar el tipo de línea de un círculo

Este ejemplo crea un círculo. Luego intenta cargar el tipo de línea "CENTER" del archivo acad.lin.
Si el tipo de línea ya existe o el archivo no existe, se muestra un mensaje. Finalmente, establece
el tipo de línea para que el círculo sea "CENTRAL".

Sub Ch4_ChangeCircleLinetype()

On Error Resume Next

' Create a circle


Dim circleObj As AcadCircle

Dim center(0 To 2) As Double

Dim radius As Double

center(0) = 2: center(1) = 2: center(2) = 0

radius = 1

Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)

Dim linetypeName As String

linetypeName = "CENTER"

' Load "CENTER" line type from acad.lin file

ThisDrawing.Linetypes.Load linetypeName, "acad.lin"

If Err.Description <> "" Then MsgBox Err.Description

' Assign the circle the linetype "CENTER"

circleObj.Linetype = "CENTER"

circleObj.Update

End Sub

About Working with Layers (VBA/ActiveX)

You are always drawing on a layer. It may be the default layer or a layer you create and name
yourself.

Each layer has an associated color and linetype. For example, you can create a layer on which
you draw only centerlines and assign the color blue and the linetype CENTER to that layer. Then,
whenever you want to draw centerlines you can switch to that layer and start drawing.

All layers and linetypes are kept within their parent Collection objects. Layers are kept within
the Layers collection, and linetypes are kept within the Linetypes collection.

Acerca del trabajo con capas (VBA / ActiveX)

Siempre estás dibujando en una capa. Puede ser la capa por defecto o una capa que usted crea y
se nombra a usted mismo.
Cada capa tiene un color y un tipo de línea asociados. Por ejemplo, puede crear una capa en la
que dibuje solo líneas centrales y asigne el color azul y el tipo de línea CENTER a esa capa.
Luego, cuando quiera dibujar líneas centrales, puede cambiar a esa capa y comenzar a dibujar.

Todas las capas y tipos de línea se mantienen dentro de sus objetos de colección padres. Las
capas se mantienen dentro de la colección Capas y los tipos de línea se mantienen dentro de la
colección Linetypes.
About Working with Colors (VBA/ActiveX)

You can assign true colors to individual objects in a drawing using the AcCmColor object.

Using an RGB value in the AcCmColor object, you can choose from millions of colors when you
set the color of lines, circles, and other individual objects. The AcCmColor object also contains
methods and properties for specifying color names, color books, color indexes, color values, and
color methods.

You can also assign colors to layers. Each color can be identified by a name or an AutoCAD Color
Index (ACI) number, an integer from 1 through 255. Any number of objects and layers can have
the same color number. You can assign each color number to a different pen on a pen plotter or
use the color numbers to identify certain objects in the drawing, even though you cannot see the
colors on your screen.

When specifying a color, you can enter the name of the color or its ACI number. The ACI provides
255 color numbers. Standard color names are available only for colors 1 through 7.

Acerca del trabajo con colores (VBA / ActiveX)

Puede asignar colores verdaderos a objetos individuales en un dibujo usando el objeto


AcCmColor.

Usando un valor RGB en el objeto AcCmColor, puede elegir entre millones de colores cuando
establece el color de las líneas, círculos y otros objetos individuales. El objeto AcCmColor
también contiene métodos y propiedades para especificar nombres de color, libros de colores,
índices de color, valores de color y métodos de color.

También puede asignar colores a las capas. Cada color puede identificarse con un nombre o un
número de índice de color de AutoCAD (ACI), un número entero de 1 a 255. Cualquier cantidad
de objetos y capas puede tener el mismo número de color. Puede asignar cada número de color a
un lápiz diferente en un trazador de plumillas o usar los números de color para identificar ciertos
objetos en el dibujo, aunque no pueda ver los colores en su pantalla.

Al especificar un color, puede ingresar el nombre del color o su número ACI. El ACI proporciona
255 números de color. Los nombres de colores estándar están disponibles solo para los colores 1
a 7.
Colors 1 through 7

Color number Color name

1 Red

2 Yellow

3 Green

4 Cyan

5 Blue

6 Magenta

7 Black/White

Colors 8 through 255 must be assigned by a number or by selecting the color in a dialog box. The
default color (7) is either white or black, depending on your background color.

About Working with Linetypes (VBA/ActiveX)

A linetype is a repeating pattern of dashes, dots, and blank spaces.

A complex linetype is a repeating pattern of symbols. To use a linetype you must first load it into
your drawing. A linetype definition must exist in a LIN library file before a linetype can be loaded
into a drawing. To load a linetype into your drawing, use the Load method.

Note: The linetypes used internally by AutoCAD should not be confused with the hardware
linetypes provided by some plotters. The two types of dashed lines produce similar results. Do not
use both types at the same time, however, because the results can be unpredictable.
Acerca del trabajo con tipos de línea (VBA / ActiveX)

Un tipo de línea es un patrón repetitivo de guiones, puntos y espacios en blanco.

Un tipo de línea complejo es un patrón repetitivo de símbolos. Para usar un tipo de línea, primero
debes cargarlo en tu dibujo. Debe existir una definición de tipo de línea en un archivo de
biblioteca LIN antes de que un tipo de línea pueda cargarse en un dibujo. Para cargar un tipo de
línea en su dibujo, use el método Cargar.

Nota: Los tipos de línea utilizados internamente por AutoCAD no deben confundirse con los tipos
de línea de hardware provistos por algunos trazadores. Los dos tipos de líneas punteadas
producen resultados similares. No use ambos tipos al mismo tiempo, sin embargo, porque los
resultados pueden ser impredecibles.

Linetype Descriptions
Linetypes can have a description associated with them. The description provides an ASCII
representation of the linetype. You can assign or change a linetype description by using
the Descriptionproperty.

A linetype description can have up to 47 characters. The description can be a comment or a series
of underscores, dots, dashes, and spaces to show a simple representation of the linetype pattern.
For example:

ThisDrawing.ActiveLinetype.Description = "Exterior Wall"

Descripciones de tipos de línea

Los tipos de línea pueden tener una descripción asociada a ellos. La descripción proporciona una
representación ASCII del tipo de línea. Puede asignar o cambiar una descripción de tipo de línea
utilizando la propiedad Descripción.

Una descripción de tipo de línea puede tener hasta 47 caracteres. La descripción puede ser un
comentario o una serie de guiones bajos, puntos, guiones y espacios para mostrar una
representación simple del patrón del tipo de línea. Por ejemplo:

Load a linetype into AutoCAD


This example attempts to load the linetype “CENTER” from the acad.lin file. If the linetype already
exists, or the file does not exist, then a message is displayed.

Sub Ch4_LoadLinetype()

On Error GoTo ERRORHANDLER


Dim linetypeName As String

linetypeName = "CENTER"

' Load "CENTER" line type from acad.lin file

ThisDrawing.Linetypes.Load linetypeName, "acad.lin"

Exit Sub

ERRORHANDLER:

MsgBox Err.Description

End Sub

Cargue un tipo de línea en AutoCAD

Este ejemplo intenta cargar el tipo de línea "CENTER" del archivo acad.lin. Si el tipo de línea ya
existe o el archivo no existe, se muestra un mensaje.