Vous êtes sur la page 1sur 194

 

Aide d'AutoCAD 2007 Page 1 of 194

Aide aux développeurs d'AutoCAD 2007

Guide de programmation ActiveX et VBA


Informations générales
Le Guide de programmation ActiveX et VBA  explique comment utiliser les contrôles Act iveX et VBA pour développer une application
 
afin de personnaliser AutoCAD. Ce manuel contient en outre des exemples de code et des procédures. Vous y trouverez les
rubriques suivantes :  Fichiers d'aide
 Introduction   Guide de personnalisation 
AutoLISP Reference 
 Démarrage avec VBA  AutoLISP Developer's Guide 
 Fondements de l'automatisation ActiveX   Didacticiel AutoLISP 
Référence DXF 
 Contrôle de l'environnement AutoCAD   Guide de programmation ActiveX
 Création et modification d'entités AutoCAD   et VBA 
ActiveX and VBA Reference 
 Cotation et tolérance   Sheet Set Objects Reference 
 Personnalisation des menus et barres d'outils   Connectivity Automation
Reference 
 Evénements   ObjectARX 
 Travail en 3D   Mon aide 

 Définition de présentations et traçage   Ressources sur le Web


 
 Techniques avancées de dessin et d'organisation  
 Développement d'applications avec VBA 
 Interaction avec d'autres applications et interfaces de programmation d'applications (API, Application Programming
Interface) de Windows  
 Conception du sentier de jardin--Un didacticiel ActiveX/VBA 
 Comparaison de Visual LISP avec ActiveX/VBA  

Introduction
 

Cette introduction décrit le concept d'exposition d'objets AutoCAD via une interface Automatisation ActiveX et leur programmation dans l'environnement Visual
Basic pour Applications (VBA).

Rubriques de cette section :

 Présentation de la technologie ActiveX d'AutoCAD  

 Présentation de l'interface Visual Basic pour Applications (VBA) d'AutoCAD 

 ActiveX et VBA d'AutoCAD utilisés ensemble 

 Structure du manuel 

 Informations complémentaires  

 Exemple de code  

 Migration de projets d'automatisation  

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Présentation de la technologie ActiveX d'AutoCAD


 

ActiveX® d'AutoCAD® vous permet de manipuler AutoCAD par programmation depuis AutoCAD ou depuis l'extérieur d'AutoCAD. Pour ce faire, le programme
affiche les objets AutoCAD dans un “environnement extérieur”.Une fois exposés, ces objets sont accessibles par différents langages et environnements de
programmation, ainsi que par d'autres programmes comme Microsoft® Word VBA ou Excel VBA.

ADD AX_INTRO graphic

La mise en œuvre d'une interface ActiveX pour AutoCAD présente deux avantages :

 L'accès par programmation aux dessins AutoCAD est possible sous de nombreux autres environnements de programmation. Avant Automatisation ActiveX,
les développeurs ne disposaient que d'une interface AutoLISP® ou C++.
 Le partage de données avec d'autres applications Windows®, telles que Microsoft Excel et Word, s'en trouve grandement facilité.

Un objet constitue le noyau de toute application ActiveX. Chaque objet exposé représente une partie spécifique d'AutoCAD. L'interface ActiveX d'AutoCAD est
constituée de différents types d'objets. Par exemple :

 Les objets graphiques comme des lignes, des arcs, du texte et des cotes sont des objets.
 Les paramètres de style comme des types de ligne et des styles de cotes sont des objets.
 Les éléments de structure comme des calques, d es groupes et des blocs sont des objets.
 Les éléments d'affichage graphique comme les vues et les fenêtres sont des objets.
 Même le dessin et l'application AutoCAD sont considérés comme des objets.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 2 of 194

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Présentation de l'interface Visual Basic pour Applications (VBA) d'AutoCAD


 

Microsoft VBA est un environnement de programmation orienté objet conçu pour fournir des fonctions de développement étendues semblables à celles de
Visual Basic 6 (VB). La principale différence entre VBA et VB est que VBA est exécuté dans l e même espace de traitement qu'AutoCAD et constitue ainsi un
environnement de programmation très rapide, capable d'interpréter des commandes AutoCAD.

VBA permet également l'intégration à d'autres applications utilisant VBA. Ainsi, en association avec d'autres bibliothèques d'objets d'application, AutoCAD peut
constituer un contrôleur d'automatisation pour d'autres applications comme Microsoft Word ou Excel.

Les modules de développement autonome de Visual Basic 6, qui sont vendus séparément, complètent AutoCAD VBA en proposant des composants
supplémentaires tels qu'un moteur de base de données externe ou un module de génération de rapports.

La mise en œuvre de VBA pour AutoCAD présente quatre avantages :

 VBA et son environnement sont d'un apprentissage et d'une utilisation aisés.


 VBA est exécuté parallèlement à AutoCAD. Cela signifie que les programmes sont très rapides.
 La création de boîtes de dialogue est rapide et efficace. Les d éveloppeurs peuvent ainsi créer des applications prototypes et recevoir rapidement des
informations en retour sur leur conception.
 Les projets peuvent être autonomes ou incorporés aux dessins. Ce choix donne aux développeurs une grande marge de manœuvre pour la distribution de
leurs applications.

Rubriques de cette section :

 Mise en œuvre de VBA dans AutoCAD 

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Mise en œuvre de VBA dans AutoCAD


 

VBA transmet les messages à AutoCAD via l 'interface ActiveX Automation. AutoCAD VBA permet d'exécuter l'environnement VBA et AutoCAD simultanément.
Elle offre également la possibilité d'un contrôle d'AutoCAD par programmation, grâce à l'interface Automatisation ActiveX. Le regroupement d'AutoCAD,
d'ActiveX Automation et de VBA constitue une interface extrêmement puissante, non seulement pour le traitement d'objets AutoCAD mais aussi pour l'envoi et
l'extraction de données vers et depuis d' autres applications.

Trois éléments fondamentaux définissent la programmation ActiveX et VBA dans AutoCAD. Le premier est le logiciel AutoCAD proprement dit, qui dispose d'un
riche ensemble d'objets encapsulant les entités, données et commandes AutoCAD. AutoCAD ayant été conçu en tant qu' application d'architecture ouverte avec
plusieurs niveaux d'interface, vous devez vous familiariser avec les possibilités de programmation de ce logiciel pour pouvoir exploiter VBA au mieux. Si vous
avez déjà utilisé AutoLISP pour contrôler AutoCAD par programmation, vous devez déjà avoir une bonne compréhension des fonctions d'AutoCAD. Toutefois,
l'approche VBA qui est fondée sur les objets est assez différente de celle d'AutoLISP.

Le second élément est l'interface Automatisation ActiveX d'AutoCAD, qui établit des messages (communication) avec les objets AutoCAD. La programmation
dans VBA nécessite une compréhension générale d'Automatisation ActiveX. Vous trouverez une description de l'interface Automatisation ActiveX d'AutoCAD
dans le manuel ActiveX and VBA Reference . Même les programmeurs VB expérimentés trouvent cette interface essentielle pour la compréhension et le
développement d'applications AutoCAD VBA.

Le troisième élément est l'environnement de programmation VBA ; il dispose de son propre ensemble d'objets, de mots clés, de constantes, etc., qui permettent
l'exécution, le débogage, le contrôle et le flux du programme. L'aide en ligne étendue Microsoft de VBA est fournie avec l'aide d'AutoCAD VBA ; vous pouvez y
accéder à partir de l'environnement VBA IDE de l'une des façons suivantes :

 En appuyant sur la touche F1 du clavier


 En choisissant l'option Aide dans la barre des menus VBA IDE
 En cliquant sur l'icône du point d'interrogation dans la barre d'outils de l'environnement VBA IDE.

Rubriques de cette section :

 Utilisation de Microsoft .NET Framework  

 Contraintes et limitations 

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Utilisation de Microsoft .NET Framework


 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 3 of 194

Pour accéder pleinement aux objets d'automatisation d'AutoCAD à partir de Microsoft Visual Studio® .NET, créez des références aux fichiers suivants :

 La bibliothèque de type AutoCAD 2007 acax17enu.tlb , placée sous c:\program files\common files\autodesk shared. 
 La bibliothèque de type AutoCAD/ObjectDBX Common 17.0, axdb17enu.tlb , placée sous c:\program files\common files\autodesk shared. 

Ces références mettront à disposition les assemblys avec i nteropérabilité principaux suivants : Autodesk.AutoCAD.Interop.dll (pour les types spécifiques à
AutoCAD) et Autodesk.AutoCAD.Interop.Common.dll (pour les types partagés par les applications hôtes ObjectDBXTM). Les assemblys avec interopérabilité
sont placés dans le cache d'assembly global ; ils établissent la correspondance des objets d'automatisation avec les équivalents .NET.

Après avoir référencé les bibliothèques de type, vous pouvez déclarer les variables basées sur AutoCAD dans Microsoft Visual Studio .NET, comme dans les
exemples suivants :

Dim objAcad As Autodesk.AutoCAD.Interop.AcadApplication


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

Vous pouvez charger une application .NET à l'aide de la commande NETLOAD dans AutoCAD.

Pour de plus amples informations sur l'utilisation d'une application .NET avec AutoCAD, visitez la section Developer Center (Centre des développeurs) du site
Web Autodesk.

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Contraintes et limitations
 

Si vous installez, réinstallez ou désinstallez Microsoft Office ou d'autres applications VBA après avoir installé AutoCAD, réinstallez AutoCAD et redémarrez
votre ordinateur.

Envoyez-nous vos commentaires sur cette page.  

Introduction  

ActiveX et VBA d'AutoCAD utilisés ensemble


 

Comparée aux autres environnements API d'AutoCAD, l'interface AutoCAD ActiveX/VBA présente plusieurs avantages :

 Vitesse. Exécutées dans le même processus que VBA, les applications ActiveX sont plus rapides que les applications AutoLISP.
 Facilité d'utilisation. Le langage de programmation ainsi que l'environnement de développement sont simples à utiliser et sont fournis, prêts à l'emploi, avec
AutoCAD.
 Interaction avec Windows. Les applications ActiveX et VBA sont conçues pour être utilisées avec d'autres programmes Windows et constituent ainsi un bon
outil d'échange d'informations entre différentes applications.
 Prototypage rapide. L'interface de développement rapide de VBA est parfaite pour la création de prototypes d'application, ceci même si l'application en
question doit être développée dans un a utre langage.
 Accessibilité aux programmeurs. Les technologies ActiveX et VBA d'AutoCAD permettent aux programmeurs Visual Basic 6 de personnaliser AutoCAD et
de développer des applications dédiées.

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Structure du manuel
 

Le présent manuel fournit des informations sur le développement d'applications ActiveX et VBA en vue de leur utilisation avec AutoCAD. Vous trouverez des
informations propres au développement d'applications à l'aide de VBA dans les chapitres “Démarrage avec VBA” et “Développement d'applications avec
VBA”.Les programmeurs utilisant ActiveX à partir d'un environnement de développement autre q ue VBA peuvent ignorer ces deux chapitres. N'oubliez pas que
tous les exemples de code donnés d ans ce manuel sont exécutés dans l' environnement VBA.

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Informations complémentaires
 

Ce guide suppose que vous disposez d' un savoir de niveau professionnel du langage de programmation Visual Basic 6 et que vous ne tenterez pas de
dupliquer ou de remplacer l'abondante documentation proposée sur Visual Basic 6. Pour de plus amples informations sur le langage ou l'utilisation de

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 4 of 194

l'environnement de développement Visual Basic 6, consultez le fichier d'aide Visual Basic pour Applications développé par Microsoft, disponible dans le menu
d'aide de l'environnement de développement interactif (IDE).

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Exemple de code
 

Ce guide et le manuel ActiveX and VBA Reference  contiennent à eux deux plus de 800 exemples de sous-programmes VBA qui montrent comment utiliser des
méthodes, des propriétés et des événements ActiveX.

De nombreuses applications sont également disponibles dans le répertoire Sample  d'AutoCAD. Ces applications présentent de nombreuses fonctionnalités qui
vont de l'extraction de données de dessin d'AutoCAD dans des feuilles Microsoft Excel jusqu'au tracé et à l'exécution d'analyses de contrainte sur un pylône
électrique.

Ces exemples vous montrent comment allier la polyvalence de l'environnement de programmation de Visual Basic pour Applications à la puissance de
l'interface ActiveX d'AutoCAD afin de créer des applications personnalisées.

De plus, il est possible de copier le code d'exemple du Guide de programmation ActiveX et VBA  et du manuel ActiveX and VBA Reference  depuis les fichiers
d'aide, de le coller directement dans l'environnement AutoCAD VBA, puis de l'exécuter à la seule condition suivante : le dessin courant actif dans AutoCAD doit
être un dessin vide ouvert dans l'espace objet.

1. Copiez l'exemple du fichier d'aide dans un module de code VBA vide.


2. Vérifiez qu'un dessin vierge est ouvert dans l'espace objet d'AutoCAD.
3. Ouvrez la boîte de dialogue Macros en entrant la commande EXECVBA.
4. Choisissez une macro et cliquez sur Exécuter.
Vous trouverez des informations supplémentaires sur l'exécution de macros et la boîte de dialogue Macros à la section “Exécution d'une macro”.

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Migration de projets d'automatisation


 

Vous pouvez utiliser les fonctionnalités d'AutoCAD avec les o bjets et les méthodes ajoutés à l'interface Automatisation ActiveX. Cette section inclut les
modifications applicables aux projets d'automatisation créés avec Visual Basic pour Applications (VBA), Vi sual Basic 6 (VB) et d'autres environnements
compatibles avec l'automatisation.

Pour plus d'informations sur l'utilisation des fonctions dans AutoCAD, reportez-vous à la section correspondante.

Rubriques de cette section :

 Nouveaux objets 

 Eléments modifiés  

 Procédure de migration des projets  

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Nouveaux objets
 

Les objets suivants sont nouveaux dans AutoCAD 2007. Pour de plus amples informations sur ces objets, reportez-vous au manuel ActiveX and VBA Reference  
et à l'Explorateur d'objets dans l'environnement VBA IDE.

 SortentsTable. Contient et manipule des informations d'ordre de dessin.


 Table. Ajoute et modifie des tableaux dans un dessin.
 TableStyle. Ajoute et modifie du formatage de tableaux comme la visibilité de grille, l'épaisseur de ligne et la couleur.

Par ailleurs, AutoCAD 2007 contient des objets pour l'automatisation du Gestionnaire du jeu de feuilles. Pour de plus amples informations sur ces objets,
reportez-vous au manuel Sheet Set Objects Reference .

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 5 of 194

Introduction  

Eléments modifiés
 

Cette section décrit les éléments existants qui ont changé.

Eléments modifiés
Elément AutoCAD Elément AutoCAD Description du changement
2004 2007
BeginClose, Evénement Vous pouvez utiliser l'événement BeginDocClose pour empêcher la fermeture d'un dessin.
événement BeginDocClose
Layer, objet Layer, objet Ajout de la propriété Description et de la propriété Used
Layers, collection Layers, collection Ajout de la méthode GenerateUsageData
Collection Collection Ajout de la méthode AddTable à toutes les collections et à l'objet ; ajout de la propriété Path dans l'objet Block.
ModelSpace ModelSpace
Collection Collection
PaperSpace PaperSpace
Block, objet Block, objet
Objet MText, objet Objet MText, objet Ajout de la propriété BackgroundFill à l'objet MText ; ajout de la méthode FieldCode à l'objet MText et à l'objet Text.
Text Text
Plot, objet Plot, objet La propriété BatchPlotProgress et la propriété StartBatchMode sont obsolètes. Il est recommandé d'utiliser les applications
Microsoft .NET pour le traçage en différé. La méthode DisplayPlotPreview ne prend plus en charge l'aperçu partiel.
Objet Objet Ajout de la propriété PlotLogFilePath, de la propriété PageSetupOverridesTemplateFile et de la propriété
PreferencesFiles PreferencesFiles QNewTemplateFile.
Objet Objet Ajout de la propriété AutomaticPlotLog, de la propriété DefaultPlotToFilePath et de la propriété ContinuousPlotLog.
PreferencesOutput PreferencesOutput
Viewport, objet Viewport, objet Ajout de la propriété ModelView, de la propriété SheetView, de la propriété LabelBlockId, de la propriété HasSheetView et
de la méthode SyncModelView.
Objet View Objet View Ajout de la propriété CategoryName, de la propriété LayoutId, de la propriété LayerState et de la propriété
HasVpAssociation.

Envoyez-nous vos commentaires sur cette page.  

Introduction  

Procédure de migration des projets


 

En règle générale, un projet d'automatisation AutoCAD créé dans l'environnement VBA IDE ou avec Visual Basic 6 fonctionne avec AutoCAD 2007.

Les projets d'automatisation AutoCAD 2007 utilisent la même bibliothèque de type (acax17enu.tlb) que les projets d'automatisation AutoCAD. La bibliothèque
de type est placée sous C:\Program Files\Common Files\Autodesk Shared .

Les projets d'automatisation AutoCAD 2007 utilisent également le même ProgID dépendant d'une version pour les méthodes CreateObject, GetObject et
GetInterfaceObject. Par exemple, si vous utilisez la fonction CreateObject dans u n projet d'automatisation AutoCAD, vous utilisez CreateObject
("AutoCAD.Application.17"). Si un projet d'automatisation utilise des ProgID indépendants d'une version, changez le projet pour utiliser des ProgID dépendants
d'une version.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA


 

Ce chapitre présente les projets AutoCAD Visual Basic pour Applications (VBA) et l'environnement VBA IDE (environnement de d éveloppement interactif). Bien
que la plupart des environnements VBA se comportent de la même façon, l'environnement VBA IDE pour AutoCAD présente des caractéristiques uniques.
Certaines commandes AutoCAD peuvent par ailleurs être utilisées pour charger et exécuter des projets, ou ouvrir l'environnement VBA IDE. Ce chapitre définit
l'utilisation de projets et de commandes VBA, et de l'environnement VBA IDE en général.

Rubriques de cette section :

 Définition des projets VBA intégrés et globaux  

 Organisation de projets avec le Gestionnaire VBA  

 Gestion de macros

 Modification de projets avec VBA IDE  

 Exercice préparatoire

 Informations complémentaires

 Termes du projet AutoCAD VBA 

 Commandes AutoCAD VBA 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 6 of 194

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Définition des projets VBA intégrés et globaux


 

Un projet AutoCAD ® VBA est une collection de modules de code, de modules de classe et de feuilles qui, ensemble, exécutent une fonction donnée. Des projets
peuvent être enregistrés dans un dessin AutoCAD ou en tant que fichier distinct.

Les projets intégrés sont enregistrés dans un dessin AutoCAD. Ils sont chargés automatiquement lorsque le dessin dans lequel ils se trouvent est ouvert dans
AutoCAD, ce qui facilite la distribution des projets. Ces projets sont limités et ne permettent pas d'ouvrir ni de fermer des dessins AutoCAD, car ils ne
fonctionnent que dans le document dans lequel ils résident. Les utilisateurs de projets intégrés n'ont ainsi pas à rechercher et à charger des fichiers de projet
avant d'exécuter un programme. Un rapport horaire activé lorsque le dessin est ouvert constitue un exemple de projet intégré à un dessin. Cette macro permet
à l'utilisateur d'ouvrir une session et d'enregistrer la durée passée à la réalisation du dessin. Il n'a ainsi pas besoin de charger le projet avant d'ouvrir le dessin,
car cette opération est effectuée automatiquement.

Les projets globaux sont enregistrés dans des fichiers distincts et sont d'utilisation plus souple, car ils permettent d'ouvrir, de fermer et d'utiliser des dessins
AutoCAD ; ils ne sont toutefois pas chargés automatiquement lorsqu'un dessin est ouvert. L'utilisateur doit savoir quel fichier de projet contient la macro requise,
puis charger ce fichier avant d'exécuter la macro. Les projets globaux n'en restent pas moins plus faciles à p artager avec d'autres utilisateurs et constituent de
parfaites bibliothèques de macros communes. Une macro qui recueille la nomenclature de nombreux dessins est un exemple de projet que vous pouvez
enregistrer dans un fichier de projet. Cette macro peut être exécutée par un administrateur à la fin du cycle de travail et recueillir des informations de nombreux
dessins.

A un moment donné, l'utilisateur peut a voir à la fois des projets intégrés et globaux dans sa session AutoCAD.

Les projets AutoCAD VBA ne sont pas "binairement" compatibles avec des projets Visual Basic 6 autonomes. Toutefois, vous pouvez échanger des feuilles,
des modules et des classes entre des projets à l'aide des commandes IMPORTER et EXPORTER dans l'environnement VBA IDE. Pour de plus amples
informations sur l'environnement VBA IDE, reportez-vous à la section Modification de projets avec VBA IDE .

L'utilisation de Visual Studio .NET pour conduire et personnaliser AutoCAD via l'automatisation COM est prise en charge.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Organisation de projets avec le Gestionnaire VBA


 

Vous pouvez afficher tous les projets VBA chargés dans la session AutoCAD active en utilisant le Gestionnaire VBA. Il s'agit d'un outil AutoCAD qui vous
permet de charger, décharger, enregistrer, créer, incorporer et extraire des projets VBA.

Pour ouvrir le Gestionnaire VBA

Vous pouvez ouvrir le Gestionnaire VBA à partir du menu Outils ou, dans AutoCAD, en appelant la commande GESTVBA

Rubriques de cette section :

 Chargement d'un projet existant

 Déchargement d'un projet

 Incorporation d'un projet dans un dessin  

 Extraction d'un projet d'un dessin  

 Création d'un projet  

 Enregistrement de projet  

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Chargement d'un projet existant

Lorsque vous chargez un projet dans AutoCAD, tous les sous-programmes publics, également appelés macros, deviennent disponibles. Les projets intégrés à
un dessin sont chargés lors de l'ouverture du dessin. Les projets enregistrés dans d es fichiers DVB doivent être chargés explicitement.

Dès que vous chargez un projet, tous les autres projets référencés par le premier sont chargés automatiquement. AutoCAD charge automatiquement au
démarrage tout fichier de projet portant le nom acad.dvb .

Pour charger un fichier de projet VBA existant


1. Dans le Gestionnaire VBA, cliquez sur Charger pour afficher la boîte de dialogue Ouvrir un projet VBA.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 7 of 194

2. Dans cette boîte de dialogue, sélectionnez le fichier de projet à ouvrir. Vous ne pouvez ouvrir que des fichiers DVB corrects. Si vous essayez d'ouvrir un
autre type de fichier, un message d'erreur s'affiche.
3. Cliquez sur Ouvrir.

Vous pouvez charger un fichier projet en utilisant l'une des méthodes suivantes :

 Entrez la commande CHARGVBA pour ouvrir la boîte de dialogue Ouvrir un projet VBA.
 Faites glisser un fichier DVB depuis l 'Explorateur Windows et déposez-le sur un dessin ouvert dans la fenêtre AutoCAD.

Rubriques de cette section :

 Signalisation de virus 

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Signalisation de virus
 

Chaque fois que vous chargez un projet, vous pouvez activer ou désactiver le code de protection antivirus contenu dans ce projet. Si vous l'activez, l'exécution
des virus dans le code peut commencer. Si vous le désactivez, le projet est toujours chargé, mais le code qu'il contient n'est pas exécuté. La signalisation de
virus n'est pas activée lorsque vous faites glisser un fichier DVB depuis l'Explorateur Windows et le déposez dans un dessin ouvert de la fenêtre AutoCAD.

Pour plus d'informations sur la signalisation de virus, reportez-vous à la section Définition des options de projet .

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Déchargement d'un projet

Le déchargement d'un projet libère de l a mémoire et conserve la liste des projets chargés à une taille raisonnable, ce qui facilite nettement la g estion.

Vous ne pouvez pas décharger des projets intégrés ou référencés par d'autres projets chargés.

Pour décharger un projet VBA

Vous pouvez décharger le projet VBA de votre choix en le sélectionnant et en cliquant sur Décharger, ou à l'aide de la commande DECHARGVBA, qui vous
demande de spécifier le projet à décharger.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Incorporation d'un projet dans un dessin


 

Lorsque vous incorporez un projet, vous placez une copie de ce projet dans la base de données du dessin. Ce projet est ensuite chargé et déchargé lorsque le
dessin qui le contient est ouvert ou fermé.

Un dessin ne peut contenir qu'un seul projet intégré à la fois. Si un dessin contient déjà un projet intégré, vous devez d'abord l'extraire avant d'incorporer un
autre projet au dessin.

Pour incorporer un projet à un dessin AutoCAD


1. Ouvrez le Gestionnaire VBA et sélectionnez le projet à incorporer.
2. Cliquez sur Incorporer.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Extraction d'un projet d'un dessin


 

Lorsque vous extrayez un projet, vous le supprimez de la base de données du dessin et vous pouvez l'enregistrer dans un fichier de projet externe. Si vous
n'enregistrez pas le fichier dans un fichier de projet externe, les données de ce projet sont supprimées.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 8 of 194

Pour extraire un projet d'un dessin AutoCAD


1. Ouvrez le Gestionnaire VBA et sélectionnez le dessin duquel le projet doit être extrait.
2. Cliquez sur Extraire.
3. Si vous voulez enregistrer les informations de projet dans un fichier de projet externe, choisissez Oui à l'invite “Voulez-vous exporter le projet VBA avant
de le supprimer?”. La boîte de dialogue Enregistrer sous s'affiche, elle vous permet d'enregistrer le fichier.
Si vous ne voulez pas enregistrer les informations de projet dans un fichier externe, choisissez Non à l'invite “Voulez-vous exporter le projet VBA avant de
le supprimer?”. Les informations de projet sont supprimées du dessin et ne sont pas enregistrées.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Création d'un projet


 

Les nouveaux projets sont créés sous forme de projets globaux non enregistrés. Une fois un projet créé, vous pouvez l'incorporer à un dessin ou l'enregistrer
dans un fichier de projet.

Pour créer un nouveau projet VBA


1. Ouvrez le Gestionnaire VBA.
2. Cliquez sur le bouton Nouveau.
Un projet est créé avec le nom par défaut ACADProject . Vous pouvez changer le nom du projet dans l'environnement VBA IDE. Pour de plus amples
informations sur l'attribution d'un nom à un projet dans l'environnement VBA IDE, reportez-vous à la section Attribution d'un nom à un projet .

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Enregistrement de projet
 

Les projets intégrés sont enregistrés avec le dessin. Les projets globaux doivent être enregistrés dans le Gestionnaire VBA ou l'environnement VBA IDE.

Pour enregistrer un projet dans le Gestionnaire VBA


1. Ouvrez le gestionnaire et sélectionnez le projet à enregistrer.
2. Cliquez sur Enreg. sous. La boîte de dialogue Enregistrer sous apparaît.
3. Choisissez le nom sous lequel le projet sera enregistré.
4. Cliquez sur Enregistrer.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Gestion de macros

Une macro est un sous-programme public (exécutable). Chaque projet contient généralement au moins une macro.

Rubriques de cette section :

 Utilisation de la boîte de dialogue Macros  

 Exécution d'une macro  

 Modification d'une macro  

 Entrée dans une macro  

 Définition des options de projet  

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Utilisation de la boîte de dialogue Macros


 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 9 of 194

Cette boîte de dialogue permet d'exécuter, de modifier, de supprimer, de créer des macros et de définir les options du projet VBA. Pour ouvrir la boîte de
dialogue Macros depuis le menu Outils d'AutoCAD, choisissez Macro » Macros ou exécutez EXECVBA à l'invite de commande AutoCAD.

Les noms de toutes les macros situées dans l'intervalle correspondant apparaissent dans la boîte de dialogue. Vous pouvez changer d'intervalle dans la zone
de liste déroulante Emplacement. Cette zone donne la liste des projets ou des dessins dont les macros sont affichées. Vous pouvez afficher les macros dans :

 Tous les dessins et projets actifs


 Tous les dessins actifs
 Tous les projets actifs
 Tout dessin actuellement ouvert dans AutoCAD
 Tout projet actuellement chargé dans AutoCAD

En limitant l'intervalle de sélection, vous pouvez contrôler le nombre de noms de macros affichés dans la liste. Ceci est utile lorsque de nombreuses macros
sont disponibles dans les dessins et les projets chargés.

Pour créer une nouvelle macro


1. Ouvrez la boîte de dialogue Macros et saisissez le nom de la nouvelle macro.
2. Dans la zone de liste déroulante Emplacement, sélectionnez le projet dans lequel vous voulez créer la macro.
3. Cliquez sur Créer.

Si une macro existante porte déjà ce nom, AutoCAD vous demande si vous souhaitez l a remplacer.

Si vous choisissez Oui, le code de la macro existante est supprimé et une nouvelle macro vide est créée sous le nom spécifié.

Si vous répondez Non, vous retournez alors à la boîte de dialogue Macros pour saisir un nouveau nom.

Si vous cliquez sur Annuler, la boîte de dialogue Macros disparaît et aucune macro n'est créée.

Pour supprimer une macro


1. Ouvrez la boîte de dialogue Macros et sélectionnez la macro à supprimer.
2. Cliquez sur Supprimer. Le système vous demande de confirmer la suppression.
3. Cliquez sur Oui pour supprimer la macro ou sur Non pour annuler sa suppression.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Exécution d'une macro


 

Lors de l'exécution d'une macro, son code est exécuté dans le contexte de la session AutoCAD active. Le dessin actif est le dessin ouvert qui est sélectionné au
moment de l'exécution de la macro. Pour des macros contenues dans des projets globaux, toutes les références VBA à l'objet ThisDrawing sont dirigées vers
le dessin actif. Pour des macros contenues dans des projets intégrés, l'objet ThisDrawing se rapporte toujours au dessin dans lequel la macro est incorporée.

1. Ouvrez la boîte de dialogue Macros et sélectionnez la macro à exécuter.


2. Cliquez sur Exécuter.

Pour exécuter une macro à partir de l'environnement VBA IDE


 Dans le menu Exécution, choisissez l'option Exécuter la Macro.
Si aucune macro ou feuille n'est active, vous devez choisir la macro à exécuter dans la boîte de dialogue qui s'affiche.
Si une macro est active (le curseur se trouve dans une procédure), elle est exécutée.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Modification d'une macro


 

Lorsque vous modifiez une macro, l'environnement VBA IDE s'ouvre et la macro choisie apparaît dans la fenêtre Code. Pour de plus amples informations sur la
modification de macros dans l'environnement VBA IDE, reportez-vous à la section Modification de projets avec VBA IDE .

Pour modifier une macro


1. Ouvrez la boîte de dialogue Macros et sélectionnez la macro à modifier.
2. Cliquez sur Modifier.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 10 of 194

Entrée dans une macro


 

L'entrée dans une macro lance son exécution puis l'interrompt sur la première ligne d u code. L'environnement VBA IDE s'ouvre avec la macro choisie affichée
dans la fenêtre Code à la ligne d'exécution.

Pour entrer dans une macro


1. Dans la boîte de dialogue Macros, sélectionnez la macro dans laquelle vous voulez entrer.
2. Cliquez sur Pas à pas.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Définition des options de projet


 

Trois options peuvent être définies pour des projets AutoCAD VBA :

 Activation de l'incorporation automatique


 Autoriser arrêts sur les erreurs
 Activation de la protection antivirus des macros

Activation de l'incorporation automatique

La fonction d'incorporation automatique crée automatiquement un projet VBA intégré pour tous les dessins lorsque le dessin est ouvert.

Autoriser arrêts sur les erreurs

Permet à VBA de passer en mode Arrêt lorsqu'une erreur est rencontrée. Ce mode interrompt provisoirement l'exécution du programme dans l'environnement
de développement interactif. Dans ce mode, vous pouvez examiner le programme, le déboguer, le réinitialiser, l'exécuter pas à pas ou poursuivre son
exécution.

Lorsque cette option est activée, les erreurs non gérées rencontrées pendant l'exécution d'une macro VBA interrompent l'exécution de cette macro et affichent
l'environnement VBA IDE à l'endroit où l' erreur s'est produite dans la macro.

Lorsque cette option est désactivée, le système affiche une boîte de message pour vous signaler des erreurs non capturées rencontrées pendant l'exécution
d'une macro VBA, puis termine l'exécution de cette macro.

Activation de la protection antivirus des macros

Le mécanisme de protection antivirus affiche un message d 'avertissement intégré lorsque vous ouvrez un dessin qui risque de contenir des virus de macro.

1. Dans le menu Outils, sélectionnez Macro » Macros pour ouvrir la boîte de dialogue Macro VBA.
2. Dans cette boîte de dialogue, cliquez sur Options pour ouvrir la boîte de dialogue Options.
3. Sélectionnez alors les options à activer.
4. Cliquez sur OK.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Modification de projets avec VBA IDE


 

Une fois le projet chargé dans AutoCAD, vous pouvez modifier le code, les feuilles et les références le concernant à l'aide de l'environnement de
développement interactif VBA. Vous pouvez également déboguer et exécuter des projets depuis cet environnement. Une fois ouvert, l'environnement VBA IDE
permet d'accéder à tous les projets chargés.

Pour ouvrir l'environnement VBA IDE sur demande

Vous pouvez ouvrir l'environnement VBA IDE depuis la ligne de commande ou la barre de menus.

 Depuis la ligne de commande, tapez VBAIDE ou, dans le menu Outils, choisissez Macro » Editeur Visual Basic.

Rubriques de cette section :

 Affichage des données de projet 

 Définition des composants d'un projet  

 Importation de composants existants  

 Modification de composants  

 Attribution d'un nom à un projet  

 Enregistrement de projet  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 11 of 194

 Référence à d'autres projets VBA 

 Définition des options VBA IDE  

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Affichage des données de projet


 

L'environnement VBA IDE contient un Explorateur de projet q ui affiche la liste de tous les projets VBA chargés. Il affiche également les modules de code, de
classe et de feuille contenus dans un projet, le document associé au projet, tous les autres projets VBA auxquels il est fait référence dans le projet et
l'emplacement physique (chemin) du projet.

L'Explorateur de projet possède sa propre barre d'outils que vous pouvez utiliser pour ouvrir divers composants de projet et les modifier. Cliquez sur le bouton
Afficher le code pour ouvrir le code du module sélectionné. Cliquez sur le bouton Afficher l'objet pour afficher les objets sélectionnés, par exemple les feuilles.

L'Explorateur de projet apparaît par défaut. S'il n'est pas visible, choisissez Explorateur de projet dans le menu Affichage, ou appuyez sur les touches CTRL+R.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Définition des composants d'un projet


 

Chaque projet peut contenir différents composants. Il peut s' agir d'objets, de feuilles, de modules standard, de modules de classe et de références.

Rubriques de cette section :

 Objets 

 Feuilles  

 Modules standard 

 Modules de classe  

 Références 

 Ajout de nouveaux composants  

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Objets
 

Ce composant correspond au type d'objet ou au document auquel le code VBA va accéder. Pour des projets AutoCAD VBA, cet objet représente le dessin
AutoCAD actif.

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 12 of 194

Démarrage avec VBA  

Feuilles
 

Ce composant contient les boîtes de dialogue p ersonnalisées construites pour être utilisées avec votre projet.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Modules standard
 

Le module de code contient des procédures et fonctions génériques. Un module standard est également appelé module de code, ou tout simplement module.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Modules de classe
 

Ce composant contient tous vos objets définis comme classes.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Références
 

Ce composant contient toutes vos références à d'autres projets ou bibliothèques.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Ajout de nouveaux composants


 

Lorsque vous ajoutez un nouveau composant, un composant vierge est créé dans votre projet. Vous pouvez ajouter de nouveaux modules, feuilles et modules
de classe à un projet. Vous devez mettre à jour toutes les propriétés du composant (notamment son nom) et spécifier le code approprié. Lorsque vous nommez
de nouveaux composants, n'oubliez pas que d'autres développeurs voudront sans doute les utiliser dans de futures applications. C'est pourquoi, vous devez
suivre les conventions de désignation utilisées par votre équipe de développement.

Pour ajouter un nouveau composant à un projet


1. Dans l'Explorateur de projet de l'environnement VBA IDE, sélectionnez le projet auquel vous allez ajouter le composant.
2. Dans le menu Insertion, choisissez UserForm, Module ou Module de classe pour ajouter le nouveau composant au projet.
Le nouveau composant est ajouté au projet et apparaît dans l'Explorateur de projet.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Importation de composants existants


 

L'importation vous permet d'ajouter un composant existant à un projet. Vous pouvez importer des feuilles, des modules ou des modules de classe. Les feuilles
sont importées en tant que fichiers FRM, les modules en tant que fichiers BAS et les modules de classe en tant que fichiers CLS.

Lorsque vous importez un fichier composant, une copie de ce fichier est ajoutée a u projet. Le fichier d'origine est laissé intact. Ainsi, les modifications apportées
au composant importé ne modifient pas le fichier composant d'origine.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 13 of 194

Si vous importez un composant portant le même nom qu'un composant existant, le fichier est ajouté au projet avec un numéro supplémentaire.

Le composant importé est ajouté au projet et apparaît dans l'Explorateur de projet. Pour modifier les propriétés du composant, sélectionnez-le dans
l'Explorateur de projet. Les propriétés du composant sélectionné apparaissent et peuvent être modifiées dans la fenêtre Propriétés.

Pour importer un composant existant dans un projet


1. Dans l'Explorateur de projet de l'environnement VBA IDE, sélectionnez le projet auquel vous allez ajouter le composant.
2. Dans le menu Fichier, sélectionnez Importer un fichier pour ouvrir la boîte de dialogue Importer le fichier.
3. Dans cette boîte de dialogue, sélectionnez le fichier à importer et cliquez sur Ouvrir.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Modification de composants
 

Vous pouvez modifier des modules standard, des modules de classe et des feuilles dans l'environnement VBA I DE. Les modules standard et de cl asse sont
modifiés dans la fenêtre Code. Les feuilles sont modifiées dans la fenêtre UserForm à l'aide d'une boîte à outils spéciale.

Vous pouvez ouvrir autant de fenêtres Code que vous avez de modules afin de visualiser facilement le code dans les différentes feuilles ou modules, et
d'effectuer des copier-coller entre eux.

1. Dans l'Explorateur de projet de l'environnement VBA IDE, sélectionnez le composant à modifier.


2. Cliquez sur le bouton Afficher le code pour ouvrir une fenêtre Code.
3. Cliquez sur le bouton Afficher l'objet pour ouvrir une fenêtre UserForm et la boîte à outils correspondante.

Pour accéder au code associé à une feuille


 Pour accéder à la fenêtre Code d'un contrôle, cliquez deux fois sur ce contrôle dans la fenêtre Form. Le code associé à ce contrôle s'ouvre dans une fenêtre
Code.

Rubriques de cette section :

 Utilisation de la fenêtre Code  

 Utilisation de la fenêtre UserForm 

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Utilisation de la fenêtre Code


 

La fenêtre Code contient deux listes déroulantes, une barre de fractionnement, un indicateur de marge et les icônes Affichage complet et Affichage de
procédure.

Les deux zones de listes déroulantes en haut de la fenêtre affichent l'objet et la procédure actifs. Vous pouvez changer le projet en modifiant l'objet ou la
procédure figurant dans ces zones de liste.

La barre de fractionnement, à droite de la fenêtre, vous permet de fractionner la fenêtre horizontalement. Il vous suffit de la faire glisser vers le bas pour créer
un nouveau panneau. Vous pouvez ainsi afficher simultanément deux p arties du code d'un même module. Pour refermer le panneau, remettez la barre de
fractionnement à sa place initiale.

L'indicateur de marge est situé en bas à gauche de la fenêtre Code. Il sert à afficher les marges utilisées pendant la modification et le débogage du code.

Les icônes Affichage complet et Affichage de procédure sont situées en bas à gauche de la fenêtre Code ; elles permettent d'afficher une seule procédure à la
fois ou le module entier.

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 14 of 194

Démarrage avec VBA  

Utilisation de la fenêtre UserForm


 

La fenêtre UserForm vous permet de créer des boîtes de dialogue personnalisées dans un projet.

Pour ajouter un contrôle, faites-le glisser de la boîte à outils et placez-le sur la feuille. Dans l'onglet Général de la boîte de dialogue Options, vous pouvez définir
vos contrôles de façon à ce qu'ils soient alignés sur la grille de la feuille. Vous pouvez afficher la grille afin de déterminer la taille de ses lignes. (Reportez-vous
à la section Définition des options VBA IDE pour de plus amples i nformations sur la boîte de dialogue Options.)

Chaque feuille conçue affiche automatiquement les boutons Agrandissement, Réduction et Fermeture. Le système les configure pour vous.

Pour ajouter du code au contrôle, cliquez deux fois sur ce contrôle après l'avoir placé sur la feuille. Une fenêtre Code correspondant au contrôle s'ouvre alors.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Attribution d'un nom à un projet


 

Le nom du projet et le nom du fichier .dvb  dans lequel le projet est enregistré constituent deux valeurs différentes. Vous définissez le nom du fichier . dvb  au
moment de l'enregistrement du projet. Le nom du projet, quant à lui, est attribué dans la fenêtre Propriétés de l'environnement VBA IDE.

Si vous ne définissez pas de noms de projet et de fichier, AutoCAD assigne automatiquement les noms par défaut suivants :

Nom du projet : ACADProject  

Nom du fichier : Project.dvb  

1. Dans l'Explorateur de projet de l'environnement VBA IDE, sélectionnez le projet dont vous souhaitez changer le nom.
2. Dans la fenêtre Propriétés, modifiez la propriété Name du projet.

1. Dans l'environnement VBA IDE, choisissez l'option Enregistrer du menu Fichier.


2. Dans la boîte de dialogue Enregistrer sous, entrez le nouveau nom et l'emplacement du fichier de projet.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Enregistrement de projet

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 15 of 194

Aucune commande SAUVEGRD explicite n'est disponible dans AutoCAD pour des projets VBA. Toutefois, une commande SAUVEGRD est disponible dans le
menu Fichier de l'environnement VBA IDE et dans le Gestionnaire VBA. Toute modification apportée à un projet VBA ouvre la boîte de dialogue standard
Enregistrer sous dès que l'un des événements suivants se produit :

 Vous sélectionnez la commande SAUVEGRD dans l'environnement VBA IDE.


 Vous sélectionnez l'option Enregistrer sous du Gestionnaire VBA.
 La session AutoCAD va se terminer ou vous allez la quitter et le projet VBA n'est pas enregistré.

Remarque Avant d'enregistrer un projet, le nom par défaut project.dvb  lui est assigné. Toutefois, vous devez lui attribuer un nouveau nom lorsque vous
l'enregistrez. En effet, si vous enregistrez un projet avec le nom de fichier par défaut project.dvb , vous ne pourrez plus créer de projets vides. Chaque fois que
vous créez un projet, vous chargez le projet enregistré appelé project.dvb .

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Référence à d'autres projets VBA


 

Lorsqu'un projet VBA est référencé par un autre projet VBA, les développeurs peuvent partager du code plus facilement. Ils peuvent créer des bibliothèques de
macros utilisées fréquemment et faire référence à cette bibliothèque selon leurs besoins. Ainsi, le code partagé reste centralisé et un grand nombre de
développeurs peuvent l'utiliser.

Lorsqu'un projet est correctement référencé, un nouveau dossier apparaît dans l'Explorateur de projet de l'environnement VBA IDE. Ce dossier est intitulé
References  et contient le nom du projet auquel il est fait référence.

Une fois le projet référencé, vous pouvez utiliser un code public ou un composant de feuille dans ce projet.

Lorsque vous chargez dans AutoCAD un projet faisant référence à un autre projet, ce dernier est également chargé automatiquement. Il ne peut être refermé
que si les projets y faisant référence sont aussi fermés.

Vous ne pouvez pas effectuer de références circulaires. En d'autres termes, vous ne pouvez pas faire référence à un projet contenant une référence au premier
projet. Si vous créez par mégarde une référence circulaire, VBA vous le signale.

La fonction de référence à des projets est une fonction standard de Microsoft VBA. Elle n'a pas été étendue dans AutoCAD. Vous trouverez de plus amples
informations sur les références à des projets dans l'aide de Microsoft VBA. Vous pouvez ouvrir l'aide de Microsoft VBA à partir du menu Aide de
l'environnement VBA IDE.

Remarque Vous ne pouvez pas faire référence à des projets intégrés ou à des projets VBA à partir d'autres applications.

Pour faire référence à un autre projet VBA


1. Dans l'Explorateur de projet de l'environnement VBA IDE, sélectionnez le projet auquel vous allez ajouter la référence.
2. Dans le menu Outils, choisissez Références pour ouvrir la boîte de dialogue Références.
3. Dans cette boîte de dialogue, cliquez sur le bouton Parcourir pour ouvrir la boîte de dialogue Ajouter une référence.
4. Dans cette boîte de dialogue, sélectionnez le fichier de projet auquel vous voulez faire référence et cliquez sur le bouton Ouvrir.
5. Cliquez ensuite sur le bouton OK pour finir d'ajouter la référence.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Définition des options VBA IDE


 

Vous pouvez changer les caractéristiques de l'environnement VBA IDE dans la boîte de dialogue Options. Pour ouvrir cette boîte de dialogue, dans le menu
Outils, choisissez Options.

La boîte de dialogue Options comporte quatre onglets : Editeur, Format de l'éditeur, Général et Ancrage.

Rubriques de cette section :

 Editeur 

 Format de l'éditeur  

 Général 

 Ancrage 

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 16 of 194

Editeur
 

Cet onglet spécifie les paramètres de la fenêtre Code et de l'Explorateur de projet.

Les paramètres de code sont les suivants :

 Vérification automatique de la syntaxe


 Déclaration des variables obligatoires
 Complément automatique des instructions
 Info express automatique
 Info-bulles automatiques
 Retrait automatique
 Largeur de la tabulation

Les paramètres de fenêtre sont les suivants :

 Edition de texte par glisser-déplacer


 Affichage du module complet par défaut
 Séparation des procédures

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Format de l'éditeur
 

L'onglet Format de l'éditeur spécifie l'aspect de votre code.

Vous pouvez

 Changer les couleurs du code


 Changer les éléments de liste de texte
 Changer le premier plan
 Changer l'arrière-plan
 Changer les indicateurs de marge
 Changer la taille et la police du texte
 Afficher ou masquer l'indicateur de marge
 Afficher ou masquer le texte exemple pour les paramètres que vous définissez

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Général
 

Cet onglet spécifie les paramètres, la gestion des erreurs et les paramètres de compilation du projet VBA actif .

Vous pouvez

 Changer les paramètres de la grille de la feuille


 Afficher ou masquer les info-bulles
 Définir la réduction automatique des fenêtres
 Demander la réception de notifications de perte d'état
 Déterminer de quelle façon les erreurs sont traitées
 Définir le projet à compiler sur demande ou effectuer des compilations en arrière-plan

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Ancrage
 

Cet onglet vous permet de choisir q uelles fenêtres vous souhaitez pouvoir ancrer.

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 17 of 194

Démarrage avec VBA  

Exercice préparatoire

Maintenant que vous connaissez les bases de la programmation dans VBA AutoCAD, essayez de créer un exercice simple intitulé “Hello World”. Dans cet
exercice, nous allons créer un dessin AutoCAD, y ajouter une ligne de texte et l'enregistrer depuis l'environnement VBA.

Pour créer l'objet texte “Hello World”


1. Ouvrez l'environnement VBA IDE en tapant la commande suivante sur la ligne de commande AutoCAD.
Commande : VBAIDE 
2. Ouvrez la fenêtre Code en choisissant l'option Code du menu Affichage dans l'environnement VBA IDE.
3. Créez une procédure dans le projet en choisissant l'option Procédure du menu Insertion dans l'environnement VBA IDE.
4. Lorsque le système vous demande d'entrer des informations de procédure, entrez par exemple le nom Hello. Vérifiez que le type choisi est Sub et la
Portée Public.
5. Cliquez sur OK.
6. Entrez le code suivant (qui ouvre un nouveau dessin) entre les lignes Public Sub Hello() et End Sub.
ThisDrawing.Application.Documents.Add

7. Entrez le code suivant (qui crée la chaîne de texte et définit à quel endroit elle doit être insérée) immédiatement après le code saisi à l'étape 6.
Dim insPoint(0 To 2) As Double 'Declare insertion point
Dim textHeight As Double 'Declare text height
Dim textStr As String 'Declare text string
Dim textObj As AcadText 'Declare text object
insPoint(0) = 2 'Set insertion point x coordinate
insPoint(1) = 4 'Set insertion point y coordinate
insPoint(2) = 0 'Set insertion point z coordinate
textHeight = 1 'Set text height to 1.0
textStr = "Hello World!" 'Set the text string
'Create the Text object
Set textObj = ThisDrawing.ModelSpace.AddText _
(textStr, insPoint, textHeight)

8. Entrez le code (qui enregistre le dessin) immédiatement après le code saisi à l'étape 7.
ThisDrawing.SaveAs("Hello.dwg")

9. Exécutez le programme en choisissant l'option Exécuter Sub/UserForm du menu Exécution dans l'environnement VBA IDE.
Une fois le programme exécuté, faites passer l'a pplication AutoCAD au premier plan. Le texte “Hello World!” doit apparaître sur le dessin. Par ailleurs,
votre dessin doit s'appeler Hello.dwg .

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Informations complémentaires

Vous trouverez de plus amples informations sur le langage de programmation VBA et VBA IDE dans les fichiers d'aide fournis par Microsoft. Pour accéder à ces
fichiers, sélectionnez Aide de Microsoft Visual Basic dans le menu d'aide de l'environnement VBA IDE.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Termes du projet AutoCAD VBA


 

Projet global
Projet VBA enregistré dans un fichier .dvb .
Projet intégré
Projet VBA enregistré dans un dessin AutoCAD.
Document normal
Dessin AutoCAD ne contenant pas de projets VBA intégrés.
Document intelligent
Dessin AutoCAD contenant un ou plusieurs projets VBA intégrés.
Projet actif
Projet actuellement sélectionné dans l'environnement VBA IDE.
ThisDrawing
Terme de programmation VBA utilisé pour désigner le dessin actif. Pour les projets globaux, ThisDrawing désigne toujours le document actif dans AutoCAD.
Pour les projets intégrés, ThisDrawing désigne toujours le document contenant le projet.
VBA IDE
VBA IDE (Interactive Development Environment - Environnement de développement interactif VBA). Cette application vous permet de modifier le code et les
feuilles d'un projet, ou de copier le code et les feuilles d'autres projets. Elle vous permet également de définir des références à d'autres modèles d'objet
d'application.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 18 of 194

Gestionnaire VBA
Le Gestionnaire VBA vous permet de gérer des projets. Vous pouvez notamment créer, supprimer, incorporer ou extraire des projets. Vous pouvez
également afficher les projets intégrés, le cas échéant, à un dessin ouvert.
Boîte de dialogue Macros
Cette boîte de dialogue permet d'exécuter, de supprimer et de créer des macros. Elle permet également d'accéder aux options de p rojet VBA.

Envoyez-nous vos commentaires sur cette page.  

Démarrage avec VBA  

Commandes AutoCAD VBA


 

VBAIDE
Ouvre l'environnement VBA IDE
Il vous permet de modifier, d'exécuter et de déboguer des programmes en interactif. Cet environnement ne peut être appelé que si AutoCAD est exécuté.
Vous pouvez toutefois le réduire, l'ouvrir et le fermer indépendamment de la fenêtre de l'application AutoCAD.
CHARGVBA
Charge un projet VBA dans la session AutoCAD active.
EXECVBA
Exécute une macro VBA depuis la boîte de dialogue Macros ou la ligne de commande AutoCAD.
DECHARGVBA
Décharge un projet VBA de la session AutoCAD active.
Si le projet VBA est modifié mais pas enregistré, le système vous demande de l'enregistrer dans la boîte de dialogue Enregistrer le projet (ou sur la ligne de
commande équivalente).
GESTVBA
Affiche le Gestionnaire VBA qui vous permet d'afficher, de créer, de charger, de fermer, d'incorporer et d'extraire des projets.
VBAINSTR
Exécute une instruction VBA depuis la ligne de commande AutoCAD.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX


 

Pour utiliser efficacement l'Automatisation ActiveX d'AutoCAD, vous devez connaître les entités, les objets et les fonctions AutoCAD relatifs au type
d'application développée. En effet, mieux vous connaissez les propriétés graphiques et non graphiques d'un objet, plus vous pouvez les manipuler facilement
via l'Automatisation ActiveX d'AutoCAD.

N'oubliez pas que pour accéder au fichier d'aide de l'Automatisation ActiveX d'AutoCAD, il vous suffit d'appuyer sur la touche F1. Si un objet, une méthode ou
une propriété vous pose problème, sélectionnez-la (le) dans l 'environnement VBA IDE et appuyez sur la touche F1.

Rubriques de cette section :

 Modèle d'objet AutoCAD  

 Accès à la hiérarchie de l'objet 

 Objets Collection 

 Propriétés et méthodes 

 Objets parent 

 Localisation de la bibliothèque de type  

 Utilisation de variants dans les méthodes et les propriétés  

 Utilisation d'autres langages de programmation

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Modèle d'objet AutoCAD


 

Un objet constitue le noyau de l'interface ActiveX ®  d'AutoCAD ® . Chaque objet exposé représente une partie spécifique d'AutoCAD. L'interface ActiveX
d'AutoCAD est constituée de différents types d'objets. Par exemple :

 Les objets graphiques comme des lignes, des arcs, du texte et des cotes sont des objets.
 Les paramètres de style comme des types de ligne et des styles de cotes sont des objets.
 Les éléments de structure comme des calques, d es groupes et des blocs sont des objets.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 19 of 194

 Les éléments d'affichage graphique comme les vues et les fenêtres sont des objets.
 Même le dessin et l'application AutoCAD sont considérés comme des objets.

Les objets sont structurés de façon hiérarchique, l'objet Application se trouvant à la racine. La vue de cette structure hiérarchique est appelée modèle d'objet. Le
modèle d'objet indique quel objet permet d'accéder au niveau d'objets suivant.

Rubriques de cette section :

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 20 of 194

 Objet Application 

 Objet Document 

 Objets Collection 

 Objets graphiques et non graphiques 

 Objets Preferences, Plot et Utility 

 Utilisation des nouvelles fonctionnalités d'AutoCAD  

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Objet Application
 

L'objet Application est l'objet Root du modèle d'objet de l'Automatisation ActiveX d'AutoCAD. Il permet d'accéder aux autres objets ou aux propriétés et
méthodes assignées à un objet.

Ainsi, l'objet Application a une propriété Preferences qui renvoie l'objet Preferences Cet objet permet d'accéder aux paramètres de la boîte de dialogue Options
enregistrés dans la base de registre. (Les paramètres enregistrés dans le dessin sont placés dans l'objet DatabasePreferences qui est décrit plus loin.) D'autres
propriétés de l'objet Application vous permettent d'accéder à des données propres à l'application comme son nom et sa version, la taille, l'emplacement et la
visibilité d'AutoCAD. Les méthodes de l'objet Application exécutent des actions propres à l'application comme l'établissement de la liste des applications ADS et
ARX, leur chargement et leur déchargement ainsi que la sortie d'AutoCAD.

L'objet Application établit également des liens vers les dessins AutoCAD via la collection Documents, vers les menus et barres d'outils AutoCAD via les
collections MenuBar et MenuGroups et vers l'environnement VBA IDE via une propriété appelée VBE.

L'objet Application est également l'objet Global de l'interface ActiveX. Cela signifie que toutes les méthodes et propriétés de cet objet sont disponibles dans
l'espace global.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Objet Document
 

L'objet Document, qui est en fait un dessin AutoCAD, se trouve dans la collection Documents et permet d'accéder à tous les objets graphiques et à la plupart
des objets non graphiques d'AutoCAD. Les collections ModelSpace et PaperSpace permettent d'accéder à des objets graphiques (lignes, arcs, cercles, etc.) et
des collections de noms similaires comme Layers, Linetypes et TextStyles permettent d'accéder à des objets non graphiques. L'objet Document permet
également d'accéder aux objets Plot et Utility

Pour accéder aux propriétés des dessins, utilisez la propriété SummaryInfo de l'objet Document.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 21 of 194

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Objets Collection
 

AutoCAD regroupe la plupart des objets dans des collections. Bien qu'elles contiennent des types de données différents, ces collections peuvent être traitées à
partir de techniques semblables. Chaque collection possède sa propre méthode d'ajout d'objets. La plupart d'entre elles utilisant la méthode Add Toutefois, les
objets entité sont généralement ajoutés via une méthode d'ajout intitulée Add<Entityname>. Par exemple, pour ajouter une ligne, vous devez utiliser la méthode
AddLine

Les collections ont d'autres méthodes et propriétés en commun. Ainsi, la propriété Count sert à effectuer un calcul d'origine zéro du nombre d'objets figurant
dans une collection. La méthode Item sert à extraire un objet d'une collection.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Objets graphiques et non graphiques


 

Les objets graphiques, également appelés entités, sont des objets visibles (lignes, cercles, images tramées, etc.) qui constituent le dessin. Pour les créer, vous
devez utiliser la méthode Add<Entityname> appropriée. Pour modifier ou rechercher ces objets, utilisez les méthodes ou propriétés de l'objet lui-même. Chaque
objet graphique possède des méthodes qui permettent à une application d'exécuter la plupart des commandes d'édition AutoCAD comme la copie, la
suppression, le déplacement, la mise en miroir, etc. Les objets disposent par ailleurs de méthodes pour définir et extraire des données étendues (xdata), pour
mettre en surbrillance, mettre à jour et extraire la zone de délimitation de l'objet. Les objets graphiques ont des p ropriétés types comme Layer, Linetype, Color
et Handle. En fonction de leur type, ils possèdent en outre des propriétés spécifiques, comme Center, Radius et Area.

Les objets non graphiques sont des objets invisibles (pour information) qui font partie d'un dessin comme Layers, Linetypes, DimStyles, SelectionSets, etc. Pour
créer ces objets, utilisez la méthode Add de l'objet Collection parent. Pour modifier ou rechercher ces objets, utilisez les méthodes ou propriétés de l'objet lui-
même. Chaque objet non graphique possède des méthodes et des propriétés qui lui sont propres, notamment pour définir et extraire des données étendues
(xdata) et pour se supprimer.

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 22 of 194

Fondements de l'Automatisation ActiveX  

Objets Preferences, Plot et Utility


 

Sous l'objet Preferences se trouve un ensemble d'objets, chacun correspondant à un onglet de la boîte de dialogue Options. Ces objets permettent d'accéder à
tous les paramètres de la boîte de dialogue Options enregistrés dans la base de registre. Les paramètres enregistrés dans le dessin se trouvent dans l'objet
DatabasePreferences Vous pouvez également définir et modifier des options (et des variables système qui ne font pas partie de la boîte de dialogue Options) à
l'aide des méthodes SetVariable et GetVariable Pour de plus amples informations sur la définition d'options, voir Définir les préférences AutoCAD .

L'objet Plot permet d'accéder aux paramètres de la boîte de dialogue Tracer et offre aux applications la possibilité de tracer le dessin en appliquant des
méthodes différentes. Pour de plus amples informations sur le traçage, voir Traçage du dessin.

L'objet Utility fournit des fonctions d'entrée utilisateur et de conversion. Les fonctions d'entrée utilisateur sont des méthodes qui invitent l'utilisateur à entrer
différents types de données comme des chaînes, des entiers, des réels, des points, etc., sur la ligne de commande AutoCAD. Les fonctions de conversion,
quant à elles, sont des méthodes qui opèrent sur des types de données propres à AutoCAD comme des points et des angles, et qui traitent des chaînes et des
nombres. Pour de plus amples informations sur les fonctions d'entrée utilisateur, voir Demande d'entrée utilisateur.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Utilisation des nouvelles fonctionnalités d'AutoCAD


 

Si votre projet d'automatisation utilise une fonctionnalité qui n'existait pas dans une version précédente d'AutoCAD, vous devez déclarer explicitement l'interface
AutoCAD utilisée dans le projet.

Si un projet d'automatisation contient des déclarations explicites des nouvelles interfaces dans une version spécifique d'AutoCAD, n'utilisez pas ce projet avec
des versions antérieures d'AutoCAD.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Accès à la hiérarchie de l'objet


 

Vous pouvez accéder facilement à la hiérarchie de l'objet depuis VBA. VBA est exécuté parallèlement à la session AutoCAD courante et il n'y a, par
conséquent, pas besoin de le connecter à l'application.

VBA établit un lien vers le dessin actif dans la session AutoCAD courante vi a l'objet ThisDrawing. Lorsque vous utilisez l'objet ThisDrawing, vous accédez
immédiatement à l'objet Document courant ainsi qu'à toutes ses méthodes et propriétés et à tous les autres objets de la hiérarchie.

Pour les projets globaux, ThisDrawing désigne toujours le document actif dans AutoCAD. Pour les projets intégrés, ThisDrawing désigne toujours le
document contenant le projet. Par exemple, la l igne de code suivante d'un projet global enregistre le dessin actuellement actif dans AutoCAD :

ThisDrawing.Save

Rubriques de cette section :

 Référence à des objets dans la hiérarchie de l'objet 

 Accès à l'objet Application 

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Référence à des objets dans la hiérarchie de l'objet

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 23 of 194

Vous pouvez faire référence à des o bjets directement ou via une variable définie par l'utilisateur. Pour référencer les objets directement, incluez l'objet dans la
hiérarchie appelante. Par exemple, l'instruction suivante ajoute une ligne dans modelspace. Notez que la hiérarchie commence à l'objet ThisDrawing, passe
par l'objet ModelSpace, puis appelle la méthode AddLine

Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double


Dim LineObj as AcadLine
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0
Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)

Pour faire référence aux objets via u ne variable définie par l'utilisateur, définissez le type souhaité pour cette variable, puis attribuez-la à l' objet approprié. Par
exemple, le code suivant définit une variable ( moSpace) de type  AcadModelSpace, puis la rend égale à l'espace objet courant :

Dim moSpace As AcadModelSpace


Set moSpace = ThisDrawing.ModelSpace

L'instruction suivante ajoute ensuite une ligne à l'espace objet en utilisant la variable définie par l'utilisateur :

Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double


Dim LineObj as AcadLine
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0
Set LineObj = moSpace.AddLine(startPoint,endPoint)

Extraction de la première entité de l'espace objet

L'exemple suivant renvoie le premier objet entité de l'espace objet. Un code similaire peut effectuer la même opération pour des entités de l'espace papier.
Notez que tous les objets d'un dessin peuvent être définis comme des objets AcadEntity :

Sub Ch2_FindFirstEntity()
' This example returns the first entity in model space
On Error Resume Next
Dim entity As AcadEntity
If ThisDrawing.ModelSpace.count <> 0 Then
Set entity = ThisDrawing.ModelSpace.Item(0)
MsgBox entity.ObjectName + _
" is the first entity in model space."
Else
MsgBox "There are no objects in model space."
End If
End Sub

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Accès à l'objet Application


 

La propriété Application de l'objet Document permet d'accéder à l'objet Application. L'objet Application est au-dessus de l'objet Document dans la hiérarchie
d'objets.

L'objet ThisDrawing permet d'accéder à l'objet Document. Par exemple, la ligne de code suivante met à jour l'application :

ThisDrawing.Application.Update

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX 

Objets Collection
 

Un objet Collection est un objet prédéfini qui contient (est un objet parent pour) toutes les instances d'un objet similaire. Voici une liste d'objets Collection :

Collection
Contient tous les documents ouverts dans la session AutoCAD active.
Collection ModelSpace
Contient tous les objets graphiques (entités) de l'espace objet.
Collection PaperSpace
Contient tous les objets graphiques (entités) de l'espace papier actif.
Objet Block
Contient toutes les entités d'une définition de bloc donnée
Collection Blocks
Contient tous les blocs du dessin.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 24 of 194

Collection Dictionaries
Contient tous les dictionnaires du dessin.
Collection DimStyles
Contient tous les styles de cotes du dessin.
Collection FileDependencies
Contient tous les éléments de la liste des dépendances de fichier.
Collection Groups
Contient tous les groupes du dessin.
Collection Hyperlinks
Contient tous les hyperliens d'une entité donnée.
Collection Layers
Contient tous les calques du dessin.
Collection Layouts
Contient toutes les présentations du dessin.
Collection Linetypes
Contient tous les types de ligne du dessin.
Collection MenuBar
Contient tous les menus actuellement affichés dans AutoCAD.
Collection MenuGroups
Contient tous les menus et barres d'outils actuellement chargés dans AutoCAD.
Collection PlotConfigurations
Contient les configurations de tracé nommées du dessin.
Collection RegisteredApplications
Contient toutes les applications enregistrées dans le dessin.
Collection SelectionSets
Contient tous les jeux de sélection du dessin.
Collection TextStyles
Contient tous les styles de texte du dessin.
Collection UCSs
Contient tous les systèmes de coordonnées utilisateur (SCU) du dessin.
Collection Views
Contient toutes les vues du dessin.
Collection Viewports
Contient toutes les fenêtres du dessin.

Rubriques de cette section :

 Accès à une collection  

 Ajout d'un nouveau membre à un objet Collection.  

 Itération via un objet Collection 

 Suppression d'un membre d'un objet Collection  

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Accès à une collection


 

Vous accédez à la plupart des objets Collection à partir de l'objet Document Cet objet contient une propriété pour chaque objet Collection. Par exemple, le code
suivant définit une variable et l'attribue à la collection Layers du dessin courant :

Dim layerCollection as AcadLayers


Set layerCollection = ThisDrawing.Layers

Vous accédez aux collections Documents, MenuBar et MenuGroups via l'objet Application. Cet objet contient une propriété pour chaque objet Collection. Par
exemple, le code suivant définit une variable et l'attribue à la collection MenuGroups de l'application :

Dim MenuGroupsCollection as AcadMenuGroups


Set MenuGroupsCollection = ThisDrawing.Application.MenuGroups

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Ajout d'un nouveau membre à un objet Collection.


 

Pour ajouter un membre à la collection, utilisez la méthode Add. Par exemple, le code suivant crée un calque et l'ajoute à la collection Layers :

Dim newLayer as AcadLayer


Set newLayer = ThisDrawing.Layers.Add("MyNewLayer")

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 25 of 194

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Itération via un objet Collection


 

Pour sélectionner un membre donné d'un objet Collection, utilisez la méthode Item Cette méthode requiert un identificateur sous la forme d'un numéro d'index
désignant l'emplacement de l'élément au sein de la collection ou d'une chaîne représentant le nom de l'élément.

Il s'agit de la méthode par défaut pour une collection. Si vous ne spécifiez pas le nom de la méthode lorsque vous faites référence à une collection, c'est la
méthode Item qui est activée par défaut. Les instructions suivantes sont équivalentes :

ThisDrawing.Layers.Item("ABC")
ThisDrawing.Layers("ABC")

Remarque N'utilisez pas les méthodes de modification d'entités (copie, tableau, miroir, etc.) sur un objet pendant que vous procédez à une itération via une
collection à l'aide de la variable de contrôle For Each. Terminez l'itération avant d'essayer de modifier un objet de la collection ou de créer un tableau provisoire
et de le rendre égal à la collection. Vous pouvez alors itérer via le tableau copié et effectuer les modifications souhaitées.

Itération dans une collection Layers

L'exemple suivant procède à une itération à partir d'une collection et affiche les noms de tous les calques de cette collection :

Sub Ch2_IterateLayer()
' Iterate through the collection
On Error Resume Next
Dim I As Integer
Dim msg As String
msg = ""
For I = 0 To ThisDrawing.Layers.count - 1
msg = msg + ThisDrawing.Layers.Item(I).Name + vbCrLf
Suivant
MsgBox msg
End Sub

Recherche du calque MyLayer

L'exemple suivant fait référence à un calque appelé MyLayer, et affiche un message d'erreur si ce calque n'existe pas :

Sub Ch2_FindLayer()
' Use the Item method to find a layer named MyLayer
On Error Resume Next
Dim ABCLayer As AcadLayer
Set ABCLayer = ThisDrawing.Layers("MyLayer")
If Err <> 0 Then
MsgBox "The layer 'MyLayer' does not exist."
End If
End Sub

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Suppression d'un membre d'un objet Collection


 

Pour supprimer un style de cote donné, utilisez la méthode Delete de l'objet membre. Par exemple, le code suivant supprime le calque ABC :

Dim ABCLayer as AcadLayer


Set ABCLayer = ThisDrawing.Layers.Item("ABC")
ABCLayer.Delete

Une fois un objet supprimé, vous ne devez pas essayer d'y accéder à nouveau dans le programme.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Propriétés et méthodes
 

Des propriétés et des méthodes sont associées à chaque objet. Les propriétés décrivent des aspects d'un objet individuel, alors que les méthodes sont des
actions qui peuvent être exécutées sur cet objet. Une fois un objet créé, vous pouvez le rechercher et le modifier via ses propriétés et ses méthodes.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 26 of 194

Par exemple, un objet Circle a la propriété Center Cette propriété représente la coordonnée du système de coordonnées général 3D au centre de ce cercle.
Pour changer le centre du cercle, a ttribuez la nouvelle coordonnée à cette propriété. Par exemple, l'objet Circle a une méthode Offset. Cette méthode crée un
nouvel objet à la distance de décalage spécifiée du cercle existant. Pour afficher la liste de toutes les propriétés et méthodes de l'objet Circle, reportez-vous à la
section sur l'objet Circle du manuel ActiveX and VBA Reference d'AutoCAD.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Objets parent
 

Chaque objet a un objet parent auquel il est lié de façon permanente. Tous les objets proviennent d'un objet parent unique appelé objet Root. Vous p ouvez
accéder à tous les objets de l'interface en suivant les liens de l'objet racine à l'objet enfant. Par ailleurs, les objets ont une propriété Application qui renvoie
directement à l'objet Root.

L'objet Root de l'interface AutoCAD est l 'application AutoCAD.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Localisation de la bibliothèque de type


 

Les objets, propriétés et méthodes exposés par des objets Automation sont enregistrés dans une bibliothèque de type. Il s'agit d'un fichier ou d'une partie d'un
fichier qui décrit le type d'un ou de plusieurs objets.

Les bibliothèques de type n'enregistrent pas des objets, mais des informations. En y accédant, l es applications et les navigateurs peuvent déterminer les
caractéristiques d'un objet comme les interfaces prises en ch arge par l'objet, et les noms et adresses des membres de chaque interface.

Avant d'utiliser l'objet Automation exposé par une application, vous devez faire référence à sa bibliothèque de type. La référence est définie automatiquement
dans VBA IDE. Si vous utilisez un autre environnement de développement interactif, vous devez créer une référence au fichier de bibliothèque de type
AutoCAD, acax17enu.tlb , placé sous c:\program files\common files\autodesk shared . Pour accéder aux objets de Gestionnaire de jeu de feuilles dans
l'environnement VBA IDE ou dans d'autres environnements, vous devez créer une référence au fichier de bibliothèque de type AcSmComponents17 1.0,
AcSmComponents17.tlb , placé sous c:\program files\common files\autodesk shared .

Vous pouvez utiliser les objets d'une a pplication sans faire référence à la bibliothèque de type de cette application. Toutefois, il est préférable d'ajouter la
référence de la bibliothèque de type pour les raisons suivantes :

 Vous pouvez accéder directement à des fonctions accessibles globalement sans qualification.
 L'adéquation des appels de fonctions, de propriétés et de méthodes peut être contrôlée au moment de la compilation et ces appels peuvent être, par
conséquent, exécutés plus rapidement.
 Vous pouvez déclarer des variables avec les types définis dans la bibliothèque, ce qui permet d'obtenir une fiabilité et une lisibilité accrues au moment de
l'exécution.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Utilisation de variants dans les méthodes et les propriétés


 

L'Automatisation ActiveX utilise des variants pour transmettre des tableaux de données. Bien que cela paraisse déroutant pour un utilisateur inexpérimenté,
cette pratique est simple une fois les bases assimilées. Par ailleurs, l'Automatisation ActiveX d'AutoCAD fournit des utilitaires qui vous aident à convertir vos
types de données.

Rubriques de cette section :

 Définition d'un variant  

 Utilisation de variants comme données d'un tableau  

 Conversion de tableaux en variants 

 Interprétation des tableaux de type Variant 

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Définition d'un variant

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 27 of 194

Un variant est un type d e données spécial qui peut contenir t oute sorte de données sauf des d onnées de type chaîne de longueur fixe et des données définies
par l'utilisateur. Il peut également contenir les valeurs spéciales Empty, Error, Nothing et NULL. Vous pouvez déterminer de quelle façon les données d'un
variant sont traitées en utilisant la fonction VBA VarType ou TypeName.

Pour plus de souplesse dans le traitement des données, le type de données Variant peut être utilisé à la place de la plupart des types de données.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Utilisation de variants comme données d'un tableau


 

Des variants sont utilisés pour échanger des données de tableau avec l'Automatisation ActiveX d'AutoCAD. Pour être acceptés par les méthodes et propriétés
d'Automatisation ActiveX d'AutoCAD, le tableau doit être un variant. Les données de tableau doivent être traitées par l'Automatisation ActiveX d'AutoCAD sous
forme de variant.

Remarque Dans AutoCAD, les tableaux d'entrée VBA sont convertis automatiquement en variants. Ainsi, vous n'avez pas à fournir un tableau d e type Variant
en tant qu'entrée des méthodes et propriétés de l'Automatisation ActiveX lorsque vous les utilisez à partir de VBA. Toutefois, tous les tableaux de sortie seront
sous forme de Variants et vous devez les traiter en conséquence.

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Conversion de tableaux en variants


 

L'Automatisation ActiveX d'AutoCAD fournit un utilitaire qui permet de convertir un tableau de données en variant. Il s'agit de la méthode CreateTypedArray, qui
crée un variant contenant un tableau de nombres entiers, de nombres à virgule flottante, de doubles, etc. Vous pouvez transmettre le variant ainsi obtenu dans
une méthode ou propriété AutoCAD qui accepte un tableau de nombres en tant que variant.

La méthode CreateTypedArray prend comme entrée le type de valeurs figurant dans le tableau et le tableau de données à convertir. Elle renvoie le tableau de
valeurs en tant que variant.

Création d'une courbe spline avec la méthode CreateTypedArray

Le code suivant convertit trois tableaux à l'aide de CreateTypedArray : les coordonnées des points de lissage d'une spline, ainsi que la tangente de début et de
fin de la spline. Il transmet ensuite le variant à la méthode AddSpline pour créer la courbe.

Sub Ch2_CreateSplineUsingTypedArray()
' This example creates a spline object in model space
' using the CreateTypedArray method.
Dim splineObj As AcadSpline
Dim startTan As Variant
Dim endTan As Variant
Dim fitPoints As Variant
Dim utilObj As Object ' late bind the Utility object
Set utilObj = ThisDrawing.Utility
' Define the Spline Object
utilObj.CreateTypedArray _
startTan, vbDouble, 0.5, 0.5, 0
utilObj.CreateTypedArray _
endTan, vbDouble, 0.5, 0.5, 0
utilObj.CreateTypedArray _
fitPoints, vbDouble, 0, 0, 0, 5, 5, 0, 10, 0, 0
Set splineObj = ThisDrawing.ModelSpace.AddSpline _
(fitPoints, startTan, endTan)
' Zoom in on the newly created spline
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Interprétation des tableaux de type Variant


 

Les données de tableau sont renvoyées par l'Automatisation ActiveX d'AutoCAD sous forme de variant. Si vous connaissez le type de données du tableau, il
vous suffit d'accéder au variant en tant que tableau. Mais si vous ne connaissez pas le type de données contenu dans le variant, utilisez les fonctions VBA
VarType ou Typename. Elles renvoient le type de données dans le variant Pour itérer via le tableau, vous pouvez utiliser l'instruction VBA For Each 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 28 of 194

Calcul de la distance entre deux points

Le code suivant montre comment calculer la d istance entre deux points définis par l'utilisateur. Dans cet exemple, le type de données est connu parce que
toutes les coordonnées sont des doubles. Les coordonnées 3D représentent un tableau de doubles à trois éléments et les coordonnées 2D un tableau de
doubles à deux éléments.

Sub Ch2_CalculateDistance()
Dim point1 As Variant
Dim point2 As Variant
' Get the points from the user
point1 = ThisDrawing.Utility.GetPoint _
(, vbCrLf & "First point: ")
point2 = ThisDrawing.Utility.GetPoint _
(point1, vbCrLf & "Second point: ")
' Calculate the distance between point1 and point2
Dim x As Double, y As Double, z As Double
Dim dist As Double
x = point1(0) - point2(0)
y = point1(1) - point2(1)
z = point1(2) - point2(2)
dist = Sqr((Sqr((x ^ 2) + (y ^ 2)) ^ 2) + (z ^ 2))
'Display the resulting distance
MsgBox "The distance between the points is: " _
& dist, , "Calculate Distance"
End Sub

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Utilisation d'autres langages de programmation

Ce manuel a été rédigé p our le langage de programmation VBA. Ainsi, les exemples de programmation et d'application sont écrits en langage VBA. Pour
appliquer le même code dans d'autres environnements de programmation, vous devez le mettre à jour en fonction de cet environnement.

Reportez-vous à la documentation de votre environnement de développement pour vous aider à convertir les exemples de code.

Remarque La clé de registre pour l'accès à l'application COM pour AutoCAD 2007 est AutoCAD.Application.17.

Rubriques de cette section :

 Conversion du code VBA en code VB  

Envoyez-nous vos commentaires sur cette page.  

Fondements de l'Automatisation ActiveX  

Conversion du code VBA en code VB


 

Pour mettre à jour un exemple de code afin de l 'utiliser dans VB, vous devez faire référence à la bibliothèque de type d 'AutoCAD. Pour effectuer cette opération
dans VB, choisissez l'option Références du menu Outils pour ouvrir la boîte de dialogue Références. Dans cette boîte de dialogue, sélectionnez la bibliothèque
de type pour AutoCAD, puis cliquez sur OK.

Dans l'exemple de code, remplacez toutes les références à ThisDrawing par une variable définie par l'utilisateur faisant référence au document actif. Pour
cela, définissez une variable pour l'application AutoCAD (acadApp) et pour le document actif (acadDoc). Définissez ensuite la variable d'application sur
l'application AutoCAD courante.

Si AutoCAD est exécuté, la fonction GetObject extrait l'objet Application AutoCAD lorsque vous indiquez le numéro de version d'AutoCAD. Sinon, une erreur se
produit (dans cet exemple) ; elle est récupérée et supprimée. La fonction CreateObject essaie ensuite de créer un objet Application AutoCAD. Si elle y parvient,
AutoCAD est démarré ; sinon, une boîte de message s'affiche avec une description de l'erreur.

Lorsque vous exécutez plusieurs sessions d'AutoCAD, la fonction GetObject renvoie la première instance d'AutoCAD dans la Table des objets en cours
d'exécution de Windows. Reportez-vous au paragraphe sur la Table des objets en cours d'exécution et la fonction GetObject dans la documentation de
Microsoft VBA pour savoir comment vérifier la session renvoyée par GetObject.

Vous devez paramétrer la propriété Visible d'AutoCAD sur TRUE afin d'afficher la fenêtre de dessin d'&PRODNAME.

Si GetObject crée une nouvelle occurrence d'AutoCAD (autrement dit, AutoCAD n'était pas encore lancé lorsque vous avez exécuté la fonction GetObject), il
n'est pas possible de définir Visible sur TRUE. Par conséquent, l'application AutoCAD est invisible et n'apparaît même pas dans la barre des tâches de
Windows.

Remarque Utilisez des identificateurs ProgID dépendants d'une version. Si une fonction CreateObject ou GetObject utilise un identificateur ProgID indépendant
d'une version, changez de fonction pour en utiliser un qui soit dépendant d'une version. Par exemple, si vous utilisez CreateObject, remplacez CreateObject
("AutoCAD.Application") par CreateObject ("AutoCAD.Application.17"). De plus, si une méthode GetInterfaceObject utilise un identificateur ProgID indépendant
d'une version, vous devez changer de méthode afin d'en utiliser un qui soit dépendant d'une version.

Connexion à AutoCAD à partir de Visual Basic 6

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 29 of 194

L'exemple de code suivant utilise les propriétés Clear et Description de Err. Si votre environnement de développement ne prend pas en charge ces propriétés,
vous devez modifier l'exemple en conséquence.

Sub Ch2_ConnectToAcad()
Dim acadApp As AcadApplication
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application.17")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application.17")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
MsgBox "Now running " + acadApp.Name + _
" version " + acadApp.Version
End Sub

Définissez ensuite la variable de document sur l' objet Document dans l'application AutoCAD. Cet objet est renvoyé par la propriété ActiveDocument de l'objet
Application.

Dim acadDoc as AcadDocument


Set acadDoc = acadApp.ActiveDocument

A ce stade, vous devez utiliser la variable acadDoc pour faire référence au dessin AutoCAD courant.

Exemple de code comparatif VBA / VB

L'exemple de code suivant montre comment créer une ligne dans VBA et VB :

Création d'une ligne avec VBA :

Sub Ch2_AddLineVBA()
' This example adds a line
' in model space
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
' Define the start and end
' points for the line
startPoint(0) = 1
startPoint(1) = 1
startPoint(2) = 0
endPoint(0) = 5
endPoint(1) = 5
endPoint(2) = 0
' Create the line in model space
Set lineObj = ThisDrawing. _
ModelSpace.AddLine _
(startPoint, endPoint)
' Zoom in on the newly created line
ZoomAll
End Sub

Création d'une ligne avec VB :

Sub Ch2_AddLineVB()
On Error Resume Next
' Connect to the AutoCAD application
Dim acadApp As AcadApplication
Set acadApp = GetObject _
(, "AutoCAD.Application.17")
If Err Then
Err.Clear
Set acadApp = CreateObject _
("AutoCAD.Application0.17")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
' Connect to the AutoCAD drawing
Dim acadDoc As AcadDocument
Set acadDoc = acadApp.ActiveDocument
' Establish the endpoints of the line
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
startPoint(0) = 1
startPoint(1) = 1
startPoint(2) = 0
endPoint(0) = 5
endPoint(1) = 5
endPoint(2) = 0
' Create a Line object in model space
Set lineObj = acadDoc.ModelSpace.AddLine _
(startPoint, endPoint)

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 30 of 194

  ZoomAll
acadApp.visible = True
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD


 

Ce chapitre présente les fondements du développement d'une application dans AutoCAD. Il explique comment contrôler et utiliser efficacement l'environnement
AutoCAD.

Rubriques de cette section :

 Ouverture, enregistrement et fermeture de dessins  

 Définir les préférences AutoCAD  

 Contrôle de la fenêtre d'application 

 Contrôle des fenêtres de dessin  

 Redéfinition des objets actifs  

 Définition et renvoi de variables système 

 Dessin avec précision 

 Demande d'entrée utilisateur 

 Accès à la ligne de commande d'AutoCAD 

 Etat sans document ouvert  

 Importation d'autres formats de fichier  

 Exportation vers d'autres formats de fichier 

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Ouverture, enregistrement et fermeture de dessins


 
 
La collection Documents et l'objet Document permettent d'accéder aux fonctions du fichier AutoCAD  ® .

Pour créer un dessin ou ouvrir un dessin existant, utilisez les méthodes de la collection Documents La méthode Add crée un dessin et l'ajoute à la collection
Documents. La méthode Open ouvre un dessin existant. Il existe également une méthode Close dans la collection Documents qui ferme tous les dessins
ouverts dans la session AutoCAD.

Utilisez la méthode Save ou SaveAs pour enregistrer un dessin. Vous souhaiterez parfois vérifier que le dessin active ne comporte pas de modifications non
enregistrées. Cette vérification est conseillée avant de quitter la session AutoCAD ou de commencer un nouveau dessin. Utilisez la propriété Saved pour vérifier
que le dessin actif ne contient pas de modifications non enregistrées.

Pour importer ou exporter un dessin, appliquez les méthodes Import et Export à l'objet Document.

Ouverture d'un dessin existant

Cet exemple utilise la méthode Open pour ouvrir un dessin existant. La fonction VBA Dir sert à vérifier que le fichier existe avant d'essayer de l'ouvrir. Vous
devez renommer le fichier de dessin ou modifier son chemin pour désigner un fichier AutoCAD existant sur votre système.

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

Création d'un nouveau dessin

L'exemple suivant utilise la méthode Add pour créer un dessin à partir du gabarit par défaut.

Sub Ch3_NewDrawing()
Dim docObj As AcadDocument
Set docObj = ThisDrawing.Application.Documents.Add
End Sub

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 31 of 194

Enregistrement du dessin actif

Cet exemple enregistre le dessin actif sous son nom actuel, puis sous un nouveau nom.

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

Recherche de modifications non enregistrées dans un dessin

L'exemple ci-après vérifie si des modifications n'ont pas été enregistrées, puis demande à l'utilisateur si le dessin peut être enregistré. S'il ne peut pas l'être,
passez directement à la fin; s'il peut l'être, utilisez la méthode Save pour l'enregistrer comme indiqué ci-après:

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

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Définir les préférences AutoCAD


 

Neuf objets se rapportent à des options, chacun d'eux représentant un onglet de la boîte de dialogue Options. Ces objets permettent d'accéder à toutes les
options de la boîte de dialogue Options enregistrées dans la base de registre. Vous pouvez personnaliser de nombreux paramètres d'AutoCAD à l'aide des
propriétés trouvées sous ces objets. Il s'agit des objets suivants :

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

Ces objets sont accessibles par l'objet Preferences Pour accéder à l'objet Preferences, utilisez la propriété Preferences de l'objet Application :

Dim acadPref as AcadPreferences


Set acadPref = ThisDrawing.Application.Preferences

Vous pouvez ensuite accéder à l'un des objets Preferences en faisant appel aux propriétés Display, Drafting, Files, OpenSave, Output, Profile, Selection,
System et User.

Affichage des réticules en plein écran


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

Affichage du menu écran et des barres de défilement


Sub Ch2_PrefsSetDisplay()
' This example enables the screen menu and disables the scroll
' bars with the DisplayScreenMenu and DisplayScrollBars
' properties.
' Access the Preferences object
Dim acadPref As AcadPreferences
Set acadPref = ThisDrawing.Application.Preferences
' Display the screen menu and disable scroll bars
acadPref.Display.DisplayScreenMenu = True
acadPref.Display.DisplayScrollBars = False
End Sub

Rubriques de cette section :

 Préférences de base de données 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 32 of 194

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Préférences de base de données


 

Outre les neuf objets Preferences, il existe un objet DatabasePreferences qui contient toutes les options enregistrées dans le dessin. Cet objet distinct a pour
rôle de rendre les options enregistrées dans le dessin disponibles pour les applications qui accèdent aux dessins AutoCAD, sans lancer au préalable
l'application AutoCAD (applications ObjectDBX).

L'objet DatabasePreferences se trouve sous l'objet Document.

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Contrôle de la fenêtre d'application


 

La possibilité de contrôler la fenêtre d'application permet aux développeurs de créer des applications intelligentes et performantes. Il faudra parfois, pour votre
application, réduire la fenêtre AutoCAD, notamment lorsque le code exécute des tâches dans une autre application comme Excel. Vous devrez, en outre,
vérifier fréquemment l'état de la fenêtre AutoCAD avant d'exécuter des tâches comme l'appel de saisie par l'utilisateur.

A l'aide des méthodes et des propriétés trouvées sous l'objet Application, vous pouvez modifier la position, la taille et la visibilité de la fenêtre d'application.
Vous pouvez également utiliser la propriété WindowState pour réduire ou agrandir la fenêtre d'application ou encore, vérifier son état courant.

Positionnement et dimension de la fenêtre d'application

Cet exemple utilise les propriétés WindowTop, WindowLeft, Width et Height pour placer la fenêtre d'application AutoCAD dans l'angle supérieur gauche de
l'écran et lui donner une largeur et une hauteur de 400 pixels.

Sub Ch3_PositionApplicationWindow()
ThisDrawing.Application.WindowTop = 0
ThisDrawing.Application.WindowLeft = 0
ThisDrawing.Application.width = 400
ThisDrawing.Application.height = 400
End Sub

Agrandissement de la fenêtre d'application


Sub Ch3_MaximizeApplicationWindow()
ThisDrawing.Application.WindowState = acMax
End Sub

Réduction de la fenêtre d'application


Sub Ch3_MinimizeApplicationWindow()
ThisDrawing.Application.WindowState = acMin
End Sub

Lecture de l'état de la fenêtre d'application

Le code suivant vérifie l'état de la fenêtre d'application et l'indique à l'utilisateur dans une boîte de message.

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

Masquage de la fenêtre d'application

Le code suivant utilise la propriété Visible pour rendre l'application AutoCAD invisible pour l'utilisateur final.

Sub Ch3_HideWindowState()
ThisDrawing.Application.Visible = False
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Contrôle des fenêtres de dessin

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 33 of 194

A l'instar de la fenêtre d'application d'AutoCAD, vous pouvez réduire, agrandir, repositionner, redimensionner et contrôler l'état d'une fenêtre de document. Vous
pouvez aussi changer l'affichage du dessin dans u ne fenêtre en utilisant des vues, des fenêtres et des méthodes de zoom.

ActiveX d'AutoCAD propose de nombreuses méthodes permettant d'afficher des vues du dessin. Vous pouvez ainsi contrôler l'affichage du dessin pour passer
rapidement d'une zone à l'autre et visualiser le résultat des modifications sur la totalité du dessin. Vous pouvez effectuer un zoom pour modifier
l'agrandissement ou un panoramique pour réorganiser l'affichage dans la zone graphique ; de même, vous pouvez enregistrer une vue puis la restaurer pour
effectuer le tracé ou afficher des détails spécifiques. Enfin, vous pouvez afficher plusieurs vues simultanément dans des fenêtres en mosaïque.

Rubriques de cette section :

 Positionnement et dimension de la fenêtre de document  

 Utilisation du zoom  

 Utilisation de vues nommées  

 Disposition des fenêtres en mosaïque 

 Mise à jour de la géométrie de la fenêtre de document  

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Positionnement et dimension de la fenêtre de document


 

Utilisez l'objet Document pour changer la position et la taille d'une fenêtre de document. La fenêtre de document peut être réduite ou agrandie à l'aide de la
propriété WindowState; son état courant peut être lu à l'aide de cette même propriété.

Positionnement de la fenêtre de document

Par exemple, à l'aide des propriétés Width et Height, le code suivant attribue à la fenêtre Document active une largeur et une hauteur de 400 pixels.

Sub Ch3_SizeDocumentWindow()
ThisDrawing.Width = 400
ThisDrawing.Height = 400
End Sub

Agrandissement de la fenêtre de document active


Sub Ch3_MaximizeDocumentWindow()
ThisDrawing.WindowState = acMax
End Sub

Réduction de la fenêtre de document active


Sub Ch3_MinimizeDocumentWindow()
ThisDrawing.WindowState = acMin
End Sub

Lecture de l'état de la fenêtre Document active


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

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Utilisation du zoom
 

Une vue correspond à un agrandissement, à une position et à une orientation spécifiques d'un dessin. La méthode la plus simple pour changer de vue consiste
à agrandir ou réduire la taille de l'image affichée dans la zone graphique à l'aide de l'une des nombreuses options de zoom proposées par AutoCAD. Pour de
plus amples informations sur les options de zoom dans AutoCAD, reportez-vous à la section “Agrandissement d'une vue (zoom)” du Manuel d'utilisation .

Rubriques de cette section :

 Définition d'une fenêtre de zoom  

 Mise à l'échelle d'une vue  

 Centrage des objets 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 34 of 194

 Affichage des limites et de l'étendue du dessin  

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Définition d'une fenêtre de zoom


 

Pour effectuer rapidement un zoom avant sur u ne zone, il suffit d'indiquer les coins qui définissent cette zone. Pour effectuer un zoom avant sur une zone en
spécifiant ses contours, utilisez la méthode ZoomWindow ou ZoomPickWindow La méthode ZoomWindow vous permet de définir, par programmation, deux
points représentant la fenêtre de zoom. La méthode ZoomPickWindow a besoin de deux points, choisis p ar l'utilisateur. Ces deux points deviennent la fenêtre
de zoom.

Zoom du dessin actif dans une fenêtre définie par deux points
Sub Ch3_ZoomWindow()
' ZoomWindow
MsgBox "Perform a ZoomWindow with:" & vbCrLf & _
"1.3, 7.8, 0" & vbCrLf & _
"13.7, -2.6, 0", , "ZoomWindow"
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
point1(0) = 1.3: point1(1) = 7.8: point1(2) = 0
point2(0) = 13.7: point2(1) = -2.6: point2(2) = 0
ThisDrawing.Application.ZoomWindow point1, point2
' ZoomPickWindow
MsgBox "Perform a ZoomPickWindow", , "ZoomPickWindow"
ThisDrawing.Application.ZoomPickWindow
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Mise à l'échelle d'une vue


 

AutoCAD permet d'agrandir ou de réduire la taille de l'image en fonction d 'une échelle déterminée. Il suffit d'indiquer un facteur de zoom, que vous pouvez
définir de trois façons:

 Par rapport aux limites du dessin


 Par rapport à la vue courante
 Par rapport aux unités de l'espace papier

Pour mettre une vue à l 'échelle, utilisez la méthode ZoomScaled Cette méthode requiert la saisie de deux paramètres : l'échelle et le type d'échelle. L'échelle
est représentée par un simple nombre. Il est interprété par AutoCAD selon le type d'échelle choisi.

Le type d'échelle indique si la valeur d'échelle est déterminée en fonction des limites du dessin, de la vue courante ou des unités de l'espace papier. Pour
effectuer une mise à l'échelle en fonction des limites du dessin, utilisez la constante acZoomScaledAbsolute. Pour effectuer une mise à l'échelle en fonction
de la vue courante, utilisez la constante acZoomScaledRelative. Pour effectuer une mise à l'échelle en fonction des unités de l'espace papier, utilisez la
constante acZoomScaledRelativePSpace.

Zoom avant sur le dessin actif à l'aide d'une échelle spécifique


Sub Ch3_ZoomScaled()
MsgBox "Perform a ZoomScaled using:" & vbCrLf & _
"Scale Type: acZoomScaledRelative" & vbCrLf & _
"Scale Factor: 2", , "ZoomScaled"
Dim scalefactor As Double
Dim scaletype As Integer
scalefactor = 2
scaletype = acZoomScaledRelative
ThisDrawing.Application.ZoomScaled scalefactor, scaletype
End Sub

Envoyez-nous vos commentaires sur cette page.

Contrôle de l'environnement AutoCAD  

Centrage des objets


 

Zoom avant sur le dessin actif vers le centre spécifié Vous pouvez déplacer un point spécifique de votre dessin au centre de la zone graphique. La méthode
ZoomCenter s'avère très utile pour redimensionner un objet et le placer au centre d e la fenêtre. Elle vous permet de spécifier une taille d'échelle en entrant un
facteur d'agrandissement relatif à la vue courante.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 35 of 194

Zoom avant du dessin actif sur un point central spécifique

L'exemple suivant montre le résultat obtenu après utilisation de la méthode ZoomCenter pour afficher une vue de la même taille, puis d eux fois plus grande :

Sub Ch3_ZoomCenter()
MsgBox "Perform a ZoomCenter using:" & vbCrLf & _
"Center 3, 3, 0" & vbCrLf & _
"Magnification: 10", , "ZoomCenter"
Dim Center(0 To 2) As Double
Dim magnification As Double
Center(0) = 3: Center(1) = 3: Center(2) = 0
magnification = 10
ThisDrawing.Application.ZoomCenter Center, magnification
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Affichage des limites et de l'étendue du dessin


 

Utilisez la méthode ZoomAll, ZoomExtents ou ZoomPrevious pour afficher une vue en fonction des limites du dessin ou de l'étendue des objets.

La méthode ZoomAll affiche le dessin entier. Si les objets s'étendent au-delà des limites d e ce dessin, elle affiche l'étendue des objets. En revanche, elle affiche
les limites du dessin si vous avez créé les objets à l'intérieur de ces limites.

La méthode ZoomExtents calcule les facteurs de zoom en fonction de l'étendue de la fenêtre active et non de la vue courante. La fenêtre active étant en
général entièrement visible, vous pouvez percevoir les résultats aisément et intuitivement. Néanmoins, si vous utilisez les méthodes Zoom dans l'espace objet
tout en travaillant dans une fenêtre de l'espace papier et que vous effectuez un zoom avant au-delà des contours de cette fenêtre, une partie de la zone sur
laquelle vous avez effectué le zoom peut ne pas être visible.

La méthode ZoomExtents modifie la vue afin d'englober l'étendue du dessin courant. Dans certains cas (pour les méthodes ZoomAll et ZoomExtents), cela peut
entraîner une régénération. Or, la commande de régénération ne s'effectue pas sur les calques gelés ou désactivés. Si le dessin ne contient pas d'objet,
ZoomExtents en affiche les limites.

Dans les vues en 3D, les méthodes ZoomAll et ZoomExtents aboutissent au même résultat. Les lignes de construction infinies (droites) et les demi-droites n'ont
aucune incidence sur le mode de fonctionnement de ces options.

ZoomPrevious redonne son étendue précédente à la fenêtre courante.

Reportez-vous à la section “Agrandissement d'une vue (zoom)” du Manuel d'utilisation  pour voir des illustrations montrant le fonctionnement des options de
zoom.

Zoom avant sur le dessin actif pour affichage de l'intégralité du contenu et de l'étendue du dessin
Sub Ch3_ZoomAll()
' ZoomAll
MsgBox "Perform a ZoomAll", , "ZoomAll"
ThisDrawing.Application.ZoomAll
' ZoomExtents
MsgBox "Perform a ZoomExtents", , "ZoomExtents"
ThisDrawing.Application.ZoomExtents
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Utilisation de vues nommées


 

AutoCAD permet de nommer et d'enregistrer les vues que vous souhaitez réutiliser. Vous pouvez supprimer toute vue dont vous n'avez plus besoin.

Pour créer une vue, utilisez la méthode Add, qui ajoute une nouvelle vue à la collection Views Lorsque vous enregistrez le dessin, la position de vi sualisation et
l'échelle de la vue sont enregistrées.

Une vue est nommée lors de sa création. Les noms de vues peuvent contenir jusqu'à 255 caractères, notamment des lettres, des chiffres, le signe dollar ($), le
trait d'union (–) et le caractère de soulignement (_).

Pour supprimer une vue nommée, utilisez la méthode Delete. Pour l'objet View, cette méthode repose sur l'objet et non sur son parent.

Ajout d'un objet View

Le code suivant ajoute un objet View ( viewObj).

Sub Ch3_AddView()
' Add a named view to the views collection
Dim viewObj As AcadView

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 36 of 194

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


End Sub

Suppression d'un objet View

Le code suivant supprime un objet View ( viewObj).

Sub Ch3_DeleteView()
Dim viewObj As AcadView
Set viewObj = ThisDrawing.Views("View1")
' Delete the view
viewObj.Delete
End Sub

Suppression d'une vue nommée de la collection Views

Cet exemple de code supprime une vue nommée de la collection Views.

Sub Ch3_DeleteViewFromCollection()
ThisDrawing.Views("View1").Delete
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Disposition des fenêtres en mosaïque


 

Lorsque vous commencez un nouveau dessin, AutoCAD utilise en principe une seule fenêtre, qui occupe toute la zone graphique. Vous pouvez diviser la zone
de dessin pour afficher simultanément plusieurs fenêtres. Par exemple, si la vue générale et la vue détaillée sont toutes deux visibles à l'écran, vous pouvez
vérifier l'aspect général du dessin au fur et à mesure que vous modifiez certains de ses détails. Dans chaque fenêtre de la mosaïque, vous avez la possibilité
d'effectuer les opérations suivantes :

 Zoom ou panoramique, activation des modes d'affichage de la grille, d'accrochage à la grille et d'icône SCU et restauration des vues nommées dans chaque
fenêtre
 Bascule d'une fenêtre à l'autre au cours de l'exécution d'une commande
 Désignation d'une configuration de fenêtres afin de pouvoir la réutiliser

AutoCAD permet de disposer les fenêtres en mosaïque selon diverses configurations. La disposition des fenêtres est fonction d u nombre et de la taille des vues
que vous souhaitez afficher.

Pour de plus amples informations et des illustrations sur les fenêtres, reportez-vous à la section “Définition des fenêtres de l'espace objet” du Manuel
d'utilisation .

Rubriques de cette section :

 Fractionnement de la fenêtre active 

 Sélection d'une autre fenêtre en mosaïque comme fenêtre courante 

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Fractionnement de la fenêtre active


 

Pour fractionner la fenêtre active, utilisez la méthode Split Cette méthode requiert un paramètre, à savoir le type de configuration choisi pour le fractionnement.
Pour spécifier la configuration de la fenêtre, utilisez l'une des constantes suivantes qui correspondent aux configurations par défaut illustrées précédemment :
acViewport2Horizontal, acViewport2Vertical, acViewport3Left, acViewport3Right, acViewport3Horizontal, acViewport3Vertical,
acViewport3Above, acViewport3Below ou acViewport4.

Pour de plus amples informations sur la modification de la configuration des fenêtres, reportez-vous à la section “Définition des fenêtres de l'espace objet” du
Manuel d'utilisation .

Fractionnement d'une fenêtre en deux panneaux horizontaux

L'exemple suivant crée une fenêtre et l a fractionne en deux fenêtres horizontales.

Sub Ch3_SplitAViewport()
' Create a new viewport
Dim vportObj As AcadViewport
Set vportObj = ThisDrawing.Viewports.Add("TEST_VIEWPORT")
' Split vportObj into 2 horizontal windows
vportObj.Split acViewport2Horizontal
' Now set vportObj to be the active viewport
ThisDrawing.ActiveViewport = vportObj
End Sub

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 37 of 194

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Sélection d'une autre fenêtre en mosaïque comme fenêtre courante


 

La fenêtre courante est celle dans l aquelle vous spécifiez des points et sélectionnez des objets. Pour rendre une fenêtre active, utilisez la propriété
ActiveViewport

Vous pouvez effectuer une itération via des fenêtres existantes afin de retrouver une fenêtre spécifique. Pour cela, spécifiez le nom de la configuration de
fenêtre dans laquelle se trouve la fenêtre voulue à l'aide de la propriété Name. S'il s'agit d' une configuration fractionnée, chaque fenêtre de cette configuration
peut être identifiée via les propriétés LowerLeftCorner et U pperRightCorner

Les propriétés LowerLeftCorner et UpperRightCorner représentent la position graphique de la fenêtre à l'écran. Ces propriétés sont définies d e la façon
suivante (en prenant un fractionnement en quatre fenêtres comme exemple) :

Dans cet exemple :

 Viewport 1-LowerLeftCorner = (0, .5), UpperRightCorner = (.5, 1)


 Viewport 2-LowerLeftCorner = (.5, .5), UpperRightCorner = (1, 1)
 Viewport 3-LowerLeftCorner = (0, 0), UpperRightCorner = (.5, .5)
 Viewport 4-LowerLeftCorner = (.5, 0), UpperRightCorner = (1, .5)

Fractionnement d'une fenêtre, puis lancement d'une itération sur les fenêtres

Dans cet exemple, une fenêtre est fractionnée en quatre panneaux. Une itération est ensuite effectuée sur toutes les fenêtres du dessin, puis le nom et l es
coins inférieur gauche et supérieur droit de chaque fenêtre sont affichés.

Sub Ch3_IteratingViewportWindows()
' Create a new viewport and make it active
Dim vportObj As AcadViewport
Set vportObj = ThisDrawing.Viewports.Add("TEST_VIEWPORT")
ThisDrawing.ActiveViewport = vportObj
' Split vport into 4 windows
vportObj.Split acViewport4
' Iterate through the viewports,
' highlighting each viewport and displaying
' the upper right and lower left corners
' for each.
Dim vport As AcadViewport
Dim LLCorner As Variant
Dim URCorner As Variant
For Each vport In ThisDrawing.Viewports
ThisDrawing.ActiveViewport = vport
LLCorner = vport.LowerLeftCorner
URCorner = vport.UpperRightCorner
MsgBox "Viewport: " & vport.Name & " is now active." & _
vbCrLf & "Lower left corner: " & _
LLCorner(0) & ", " & LLCorner(1) & vbCrLf & _
"Upper right corner: " & _
URCorner(0) & ", " & URCorner(1)
Next vport
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Mise à jour de la géométrie de la fenêtre de document


 

La plupart des actions réalisées par l'intermédiaire de l'Automatisation ActiveX d'AutoCAD modifient les éléments affichés dans le dessin AutoCAD. Or, toutes
ces actions ne mettent pas immédiatement à jour l'affichage du dessin. Vous pouvez en effet apporter plusieurs modifications au dessin sans devoir attendre
qu'il soit mis à jour après chacune d'elles. Vous pouvez aussi regrouper vos actions et effectuer un seul appel pour mettre à jour l'affichage lorsque vous avez
terminé.

Dans ce contexte, les méthodes Update et Regen mettent à jour l'affichage.

La méthode Update permet de mettre à jour l'affichage d'un seul objet à la fois. La méthode Regen régénère tout le dessin et recalcule les coordonnées de
l'écran et la résolution d'affichage de tous les objets. De plus, cette commande réindexe la base de données de dessins pour optimiser l'affichage et la sélection

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 38 of 194

des objets.

Mise à jour de l'affichage d'un objet

Dans cet exemple, l'utilisateur crée un cercle. Il est ensuite mis à jour à l'aide de la méthode Update de façon à être visible dans AutoCAD.

Sub Ch3_UpdateDisplay()
Dim circleObj As AcadCircle
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 1: center(1) = 1: center(2) = 0
radius = 1
' Create the circle
Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)
' Update the circle
circleObj.Update
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Redéfinition des objets actifs


 

Les modifications apportées aux objets actifs comme le calque et le type de ligne actifs apparaissent immédiatement. Toutefois, certains objets actifs doivent
être réinitialisés pour que les modifications soient visibles. Il s'agit notamment de la fenêtre, du style de texte, du système de coordonnées utilisateur (SCU)
actifs. Si des modifications sont apportées à l'un de ces objets, il doit être réinitialisé et la méthode Regen appliquée pour que les modifications prennent effet.

Pour réinitialiser ce type d'objet, définissez la propriété ActiveTextStyle, ActiveUCS ou ActiveViewport, en utilisant l'objet mis à jour.

Redéfinition de la fenêtre active

Dans l'exemple suivant, l'affichage de la grille est modifié dans la fenêtre active et la fenêtre est redéfinie en tant que fenêtre active pour faire apparaître le
changement.

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

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Définition et renvoi de variables système


 

L'objet Document fournit les méthodes SetVariable et GetVariable pour définir et extraire des variables système AutoCAD. Par exemple, pour assigner un entier
à la variable système MAXSORT, utilisez le code suivant :

ThisDrawing.SetVariable "MAXSORT", 100

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Dessin avec précision


 

Dans AutoCAD, vous pouvez créer des dessins comportant des figures géométriques exactes sans effectuer de calculs complexes. D'autre part, dans de
nombreux cas, vous pouvez spécifier des points précis sans même connaître leurs coordonnées. Sans quitter l'écran graphique, vous pouvez effectuer des
calculs sur votre dessin et afficher divers types d'informations d'état.

Actuellement, l'Automatisation ActiveX d'AutoCAD ne fournit pas de méthode pour les fonctions AutoCAD suivantes :

 Définition de l'accrochage aux objets


 Spécification d'intervalles mesurés sur des objets et fractionnement des objets en segments

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 39 of 194

Rubriques de cette section :

 Orientation de la grille d'accrochage et de la grille normale  

 Utilisation du mode orthogonal  

 Traçage de droites 

 Calcul de valeurs et de positions de points 

 Calcul d'aires 

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Orientation de la grille d'accrochage et de la grille normale


 

Vous pouvez utiliser la grille comme repère visuel et activer le mode résolution pour limiter les mouvements du curseur. Outre le réglage de l'espacement, vous
pouvez orienter la grille d'accrochage et la grille normale. Vous pouvez faire pivoter l'alignement ou le définir afin de pouvoir l 'utiliser avec des dessins
isométriques.

Lorsque vous devez tracer des éléments en respectant un alignement ou un angle spécifique, vous pouvez changer l'orientation de la grille d'accrochage.
Lorsque vous réorientez la grille d'accrochage, le centre de l'axe de rotation devient l e point de base. Si vous devez aligner un motif de hachures, vous pouvez
changer ce point de base (généralement le point de coordonnées 0,0).

Pour faire pivoter l'angle d'accrochage, utilisez la p ropriété SnapRotationAngle Pour changer le point de base de l'axe de rotation, utilisez la propriété
SnapBasePoint

Remarque Ces deux propriétés requièrent l'utilisation de la méthode Update pour mettre à jour la fenêtre AutoCAD.

Pour de plus amples informations sur l'utilisation et la configuration des grilles, et de la résolution, reportez-vous à la section “Réglage de la grille et de la
résolution” du Manuel d'utilisation .

Modification du point de base d'accrochage et de l 'angle de rotation

Dans cet exemple, le point de base d'accrochage est défini sur (1,1) et l'angle de rotation de la grille d'accrochage sur 30 degrés. La grille est activée de façon à
faire apparaître les changements.

Sub Ch3_ChangeSnapBasePoint()
' Turn on the grid for the active viewport
ThisDrawing.ActiveViewport.GridOn = True
' Change the snap base point to 1, 1
Dim newBasePoint(0 To 1) As Double
newBasePoint(0) = 1: newBasePoint(1) = 1
ThisDrawing.ActiveViewport.SnapBasePoint = newBasePoint
' Change the snap rotation angle to 30 degrees (0.575 radians)
Dim rotationAngle As Double
rotationAngle = 0,575
ThisDrawing.ActiveViewport.SnapRotationAngle = rotationAngle
' reset the viewport
ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Utilisation du mode orthogonal


 

Lorsque vous tracez des lignes ou déplacez des objets, le mode orthogonal permet de limiter les mouvements du curseur aux axes horizontal et vertical.
(L'alignement orthogonal dépend de l'angle appliqué à la grille d'accrochage ou du SCU courant.) Le mode orthogonal est utile pour effectuer des opérations
exigeant la sélection d'un deuxième point. Il sert non seulement à définir un alignement vertical ou horizontal, mais aussi à créer des éléments parallèles ou
placés à intervalles réguliers.

Le mode orthogonal d'AutoCAD permet de gagner du temps. Si, par exemple, vous souhaitez tracer u n ensemble de lignes perpendiculaires, il suffit d'activer ce
mode avant de commencer à dessiner. Vous pourrez ensuite dessiner les lignes très rapidement : elles seront nécessairement perpendiculaires, les seules
directions possibles étant celles des axes.

Pendant que vous déplacez le curseur, la ligne élastique qui matérialise les déplacements s'oriente selon la direction de l'axe le plus proche du curseur.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 40 of 194

AutoCAD ignore le mode orthogonal dans les vues en perspective ou lorsque vous tapez des coordonnées sur la ligne de commande ou activez un mode
d'accrochage aux objets.

Pour activer ou désactiver le mode orthogonal, utilisez la propriété OrthoOn Cette propriété requiert une valeur booléenne en entrée. Entrez TRUE pour activer
le mode orthogonal et FALSE pour le désactiver. Par exemple, l'instruction suivante active le mode orthogonal pour la fenêtre active :

ThisDrawing.ActiveViewport.OrthoOn = True

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Traçage de droites
 

AutoCAD permet de créer des lignes de construction s'étendant à l'infini dans une ou deux directions. Les lignes de construction qui s'étendent dans une
direction sont appelées des demi-droites. Les lignes de construction qui s'étendent dans les deux directions sont appelées des demi-droites. Ces droites
peuvent servir de référence pour créer d'autres o bjets. Elles sont, par exemple, utiles pour déterminer le centre d'un triangle, créer plusieurs vues d'un même
élément ou définir des intersections temporaires destinées aux opérations d'accrochage.

Rubriques de cette section :

 Construction de droites 

 Requête de droites 

 Création de demi-droites  

 Requête de demi-droites 

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Construction de droites
 

Une droite peut se situer n'importe où dans un espace 3D et s'étendre à l'infini dans les deux directions. Pour construire une droite, utilisez la méthode
AddXLine Cette méthode définit une ligne suivant une méthode à deux points ; vous entrez ou spécifiez deux points pour définir l'orientation de la ligne. Le
premier de ces points, l'origine, est considéré comme le milieu de la droite.

Ajout d'une ligne de construction

L'exemple de code suivant crée un objet XLine à partir des deux points (5, 0, 0) et (1,1,0).

Sub Ch3_AddXLine()
Dim xlineObj As AcadXline
Dim basePoint(0 To 2) As Double
Dim directionVec(0 To 2) As Double
' Define the xline
basePoint(0) = 2#: basePoint(1) = 2#: basePoint(2) = 0#
directionVec(0) = 1#: directionVec(1) = 1#: directionVec(2) = 0#
' Create the xline in model space
Set xlineObj = ThisDrawing.ModelSpace.AddXLine _
(basePoint, directionVec)
ThisDrawing.Application.ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Requête de droites
 

Une fois la droite construite, vous pouvez rechercher son premier point à l'aide de la propriété BasePoint Le second point utilisé pour construire la droite n' est
pas enregistré avec l'objet. C'est pourquoi vous devez utiliser la propriété DirectionVector pour obtenir le vecteur de direction de la l igne.

Requête dans une ligne de construction

Dans cet exemple, le point de base et le vecteur de direction de la ligne créée précédemment sont recherchés dans Ajout d'une ligne de construction 

Dim BPoint As Variant


Dim Vector As Variant
BPoint = xlineObj.basePoint

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 41 of 194

Vector = xlineObj.DirectionVector

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Création de demi-droites
 

Une demi-droite est une ligne de l'espace 3D commençant au niveau d'un point donné et s'étendant à l' infini. Contrairement aux droites qui partent dans deux
directions, les demi-droites s'étendent dans une seule direction. De ce fait, la création de demi-droites évite d'encombrer inutilement le dessin.

Les commandes qui affichent l'étendue du dessin ne tiennent pas compte des demi-droites, tout comme elles ne tiennent pas compte des droites.

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Requête de demi-droites
 

Une fois la demi-droite construite, vous pouvez rechercher son premier point à l'aide de la propriété BasePoint Le second point u tilisé pour construire la demi-
droite n'est pas enregistré avec l'objet. C'est pourquoi vous devez utiliser la propriété DirectionVector pour obtenir le vecteur de direction de la demi-droite.

Ajout, recherche et édition d'un objet Ray

L'exemple de code suivant crée un objet Ray à partir des deux points (5, 0, 0) et (1, 1, 0). Il recherche ensuite le point de base et le vecteur de direction
courants et affiche les résultats dans une boîte de message. Le vecteur de direction est modifié, et le point de base et le nouveau vecteur de direction sont
recherchés et affichés.

Sub Ch3_EditRay()
Dim rayObj As AcadRay
Dim basePoint(0 To 2) As Double
Dim secondPoint(0 To 2) As Double
' Define the ray
basePoint(0) = 3#: basePoint(1) = 3#: basePoint(2) = 0#
secondPoint(0) = 4#: secondPoint(1) = 4#: secondPoint(2) = 0#
' Creates a Ray object in model space
Set rayObj = ThisDrawing.ModelSpace.AddRay _
(basePoint, secondPoint)
ThisDrawing.Application.ZoomAll
' Find the current status of the Ray
MsgBox "The base point of the ray is: " & _
rayObj.basePoint(0) & ", " & _
rayObj.basePoint(1) & ", " & _
rayObj.basePoint(2) & vbCrLf & _
"The directional vector for the ray is: " & _
rayObj.DirectionVector(0) & ", " & _
rayObj.DirectionVector(1) & ", " & _
rayObj.DirectionVector(2), , "Edit Ray"
' Change the directional vector for the ray
Dim newVector(0 To 2) As Double
newVector(0) = -1
newVector(1) = 1
newVector(2) = 0
rayObj.DirectionVector = newVector
ThisDrawing.Regen False
MsgBox "The base point of the ray is: " & _
rayObj.basePoint(0) & ", " & _
rayObj.basePoint(1) & ", " & _
rayObj.basePoint(2) & vbCrLf & _
"The directional vector for the ray is: " & _
rayObj.DirectionVector(0) & ", " & _
rayObj.DirectionVector(1) & ", " & _
rayObj.DirectionVector(2), , "Edit Ray"
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Calcul de valeurs et de positions de points


 

L'utilisation des méthodes fournies par l'objet Utility permet de résoudre rapidement un problème mathématique ou de localiser des points sur le dessin. Elles

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 42 of 194

permettent d'exécuter les opérations suivantes :

 Retrouver l'angle d'une ligne à partir de l'axe X  à l'aide de la méthode AngleFromXAxis
 Convertir un angle d'une chaîne en valeur réelle (double) à l'aide de la méthode AngleToReal
 Convertir un angle d'une valeur réelle (double) en chaîne à l'aide de la méthode AngleToString
 Convertir une distance d'une chaîne en valeur réelle (double) à l'aide de la méthode DistanceToReal
 Créer un variant contenant un tableau de nombres entiers, de nombres à virgule flottante, de doubles, etc., à l'aide de la méthode CreateTypedArray
 Retrouver le point à un angle et une distance spécifiques d'un point donné à l'aide de la méthode PolarPoint
 Convertir un point d'un système de coordonnées dans un autre système de coordonnées à l'aide de la méthode TranslateCoordinates
 Retrouver la distance entre deux points saisis par l'utilisateur à l'aide de la méthode GetDistance

Calcul de la distance entre deux points par la méthode GetDistance

Cet exemple utilise la méthode GetDistance pour obtenir les coordonnées, et la fonction MsgBox pour afficher la distance calculée.

Sub Ch3_GetDistanceBetweenTwoPoints()
Dim returnDist As Double
' Return the value entered by user. A prompt is provided.
returnDist = ThisDrawing.Utility.GetDistance _
(, "Pick two points.")
MsgBox "The distance between the two points is: " & returnDist
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Calcul d'aires
 

Calcul de l'aire définie par des points entrés par l'utilisateur Vous pouvez déterminer l'aire d'un arc, cercle, ellipse, polyligne optimisée, polyligne, région ou
spline planaire fermée à l'aie de la propriété Area.

Pour calculer l'aire combinée de plusieurs objets, vous pouvez conserver un total cumulé au fur et à mesure que vous ajoutez ou utilisez la méthode Boolean
sur une série de régions pour obtenir une seule région représentant l'aire voulue. A partir de cette région unique, vous pouvez utiliser la propriété Area pour
obtenir cette aire.

L'aire calculée dépend du type d'objet recherché. Pour savoir comment est calculée l'aire de chaque type d'objet, reportez-vous à la section “Lecture
d'informations d'aire” du Manuel d'utilisation .

Rubriques de cette section :

 Calcul d'une aire délimitée par des points  

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Calcul d'une aire délimitée par des points


 

Calcul de l'aire définie par des points entrés par l'utilisateur Pour obtenir l'aire spécifiée par des points entrés par l'utilisateur Vous pouvez mesurer une région
fermée arbitraire définie par les points 2D ou 3D spécifiés par l'utilisateur. Il doit s'agir de points coplanaires.

Pour obtenir l'aire spécifiée par des points entrés par l'utilisateur
1. Utilisez la méthode GetPoint dans une boucle pour obtenir les points de l'utilisateur.
2. Créez une polyligne fine à partir des points entrés par l'utilisateur. Utilisez la méthode AddLightweightPolyline pour créer cette polyligne.
3. Utilisez la propriété Area pour obtenir l'aire de la nouvelle polyligne créée.
4. Effacez la polyligne à l'aide de la méthode Erase.

Calcul de l'aire définie par les points entrés par l'utilisateur

L'exemple suivant invite l'utilisateur à saisir cinq points. Une polyligne est ensuite créée à partir des points saisis. La polyligne est fermée et son aire est affichée
dans une boîte de message.

Sub Ch3_CalculateDefinedArea()
Dim p1 As Variant
Dim p2 As Variant
Dim p3 As Variant
Dim p4 As Variant
Dim p5 As Variant
' Get the points from the user
p1 = ThisDrawing.Utility.GetPoint(, vbCrLf & "First point: ")
p2 = ThisDrawing.Utility.GetPoint(p1, vbCrLf & "Second point: ")
p3 = ThisDrawing.Utility.GetPoint(p2, vbCrLf & "Third point: ")
p4 = ThisDrawing.Utility.GetPoint(p3, vbCrLf & "Fourth point: ")

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 43 of 194

  p5 = ThisDrawing.Utility.GetPoint(p4, vbCrLf & "Fifth point: ")


' Create the 2D polyline from the points
Dim polyObj As AcadLWPolyline
Dim vertices(0 To 9) As Double
vertices(0) = p1(0): vertices(1) = p1(1)
vertices(2) = p2(0): vertices(3) = p2(1)
vertices(4) = p3(0): vertices(5) = p3(1)
vertices(6) = p4(0): vertices(7) = p4(1)
vertices(8) = p5(0): vertices(9) = p5(1)
Set polyObj = ThisDrawing.ModelSpace.AddLightWeightPolyline _
(vertices)
polyObj.Closed = True
ThisDrawing.Application.ZoomAll
' Display the area for the polyline
MsgBox "The area defined by the points is " & _
polyObj.Area, , "Calculate Defined Area"
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Demande d'entrée utilisateur


 

L'objet Utility, qui est l'enfant de l'objet Document, définit les méthodes d'entrée utilisateur. Ces méthodes a ffichent un message sur la ligne de commande
d'AutoCAD pour demander différents types d'entrées. Ce type d' entrée utilisateur est particulièrement utile pour la saisie interactive de coordonnées d'affichage,
de sélection d'entités et de valeurs numériques et de type chaîne courte. Si votre application requiert l'entrée de nombreuses options et valeurs, une boîte de
dialogue sera sans doute plus appropriée que des messages individuels.

Chaque méthode d'entrée utilisateur affiche un message sur la ligne de commande d'AutoCAD et renvoie une valeur en fonction du type d'entrée requis. Par
exemple, GetString renvoie une chaîne, GetPoint renvoie un variant (contenant un tableau de doubles à trois éléments) et GetInteger renvoie un nombre entier.
Vous pouvez contrôler encore davantage les entrées de l'utilisateur grâce à la méthode InitializeUserInput Elle vous permet de contrôler des éléments comme
l'entrée de la valeur NULL (en appuyant sur ENTREE), de zéro ou de nombres négatifs et de valeurs de texte arbitraires.

Pour que le message soit affiché seul sur une ligne, entrez la constante retour chariot/interligne (vbCrLf) au début des chaînes de message.

Rubriques de cette section :

 Méthode GetString 

 Méthode GetPoint  

 Méthode GetKeyword 

 Contrôle de l'entrée utilisateur  

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Méthode GetString
 

La méthode GestString demande à l'utilisateur d'entrer une chaîne sur la ligne de commande d'AutoCAD. Elle accepte deux paramètres. Le premier contrôle
l'entrée d'espaces dans la chaîne d'entrée. S'il a la valeur 0, aucun espace n'est autorisé (ESPACE termine l'entrée) et s'il a la valeur 1, la chaîne peut contenir
des espaces (ENTREE doit être utilisé pour terminer l'entrée). Le second paramètre est la chaîne du message.

Saisie d'une valeur de chaîne par l'utilisateur dans la ligne de commande AutoCAD

L'exemple suivant montre l'invite à saisir un nom ; l'entrée doit ê tre validée par la touche ENTREE (les espaces sont autorisés dans la chaîne d'entrée). La
valeur de chaîne est enregistrée dans la variable retVal et affichée dans une boîte de message.

Sub Ch3_GetStringFromUser()
Dim retVal As String
retVal = ThisDrawing.Utility.GetString _
(1, vbCrLf & "Enter your name: ")
MsgBox "The name entered was: " & retVal
End Sub

La méthode GetString n'implique pas l'appel préalable de la méthode InitializeUserInput

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 44 of 194

Méthode GetPoint
 

La méthode GetPoint demande à l'utilisateur de spécifier un point sur la l igne de commande d'AutoCAD. Elle accepte deux paramètres: un point de départ
facultatif et la chaîne du message. Si le point de départ est spécifié, AutoCAD trace une ligne élastique depuis ce point. Pour contrôler l'entrée utilisateur, cette
méthode peut être précédée d'un appel de la méthode InitializeUserInput

Sélection d'un point par l'utilisateur

L'exemple suivant invite l'utilisateur à spécifier deux points, puis trace une ligne en utilisant ces points pour la délimiter.

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

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD 

Méthode GetKeyword
 

La méthode GetKeyword demande à l'utilisateur de taper un mot clé sur la ligne de commande d'AutoCAD. Elle accepte un seul paramètre, à savoir la chaîne
du message. Les mots clés et paramètres d'entrée sont définis par un appel de la méthode InitializeUserInput

Entrée d'un mot clé par l'utilisateur sur la ligne de commande d'AutoCAD

L'exemple suivant demande à l'utilisateur de taper un mot clé en attribuant la valeur 1 au premier paramètre de InitializeUserInput, ce qui interdit l'entrée de
valeurs NULL (en appuyant sur la touche ENTREE). Le second paramètre dresse la l iste des mots clés autorisés.

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

Une invite de saisie de mot clé plus conviviale fournit une valeur par défaut lorsque l'utilisateur appuie sur la touche ENTREE (entrée NULL). Notez les
modifications mineures apportées à l'exemple suivant :

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

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Contrôle de l'entrée utilisateur


 

Vous pouvez faire appel à la méthode InitializeUserInput pour définir des mots clés ou limiter le type d'entrée à la méthode d'entrée utilisateur choisie.
L'utilisation de cette méthode et les valeurs de paramètres appliquées sont semblables à celles de la fonction AutoLISP initget . InitializeUserInput peut être
utilisé avec les méthodes suivantes : GetAngle, GetCorner, GetDistance, GetInteger, GetKeyword, GetOrientation, GetPoint et GetReal. La méthode
InitializeUserInput ne peut pas être utilisée avec la méthode GetString. Utilisez la méthode GetInput pour extraire la valeur de chaîne (mot clé ou entrée
arbitraire) lorsque la méthode d'entrée utilisateur ne renvoie pas une valeur de chaîne.

La méthode InitializeUserInput accepte deux paramètres. Le premier est un entier binaire qui détermine les options d 'entrée de la méthode d'entrée utilisateur.
Le second paramètre est une chaîne qui définit les mots clés autorisés.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 45 of 194

Entrée d'un entier ou d'un mot clé par l'utilisateur sur la ligne de commande d'AutoCAD

L'exemple suivant demande à l'utilisateur d'entrer un entier positif, un entier non négatif ou un mot clé.

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
' ENTREE 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 'ENTREE 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

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Accès à la ligne de commande d'AutoCAD


 

Vous pouvez émettre des commandes directement sur la ligne de commande d'AutoCAD en utilisant la méthode SendCommand. Cette méthode envoie une
chaîne spécifique directement sur la ligne de commande d'AutoCAD. Cette chaîne doit contenir les arguments de la commande mentionnée dans l'ordre prévu
par la séquence de la commande exécutée. Un espace ou l'équivalent ASCII d'un retour chariot dans la chaîne équivaut à appuyer sur la touche ENTREE du
clavier. Contrairement à l'environnement AutoLISP, la méthode SendCommand prend obligatoirement un argument.

Envoi d'une commande sur la ligne de commande d'AutoCAD

Dans l'exemple suivant, un cercle est créé avec un centre de (2,2,0) et un rayon de 4. Un zoom est ensuite effectué sur tous les objets géométriques du dessin.
Notez l'espace à la fin de la chaîne : il correspond à l'activation finale de la touche ENTREE, qui lance l'exécution de la commande.

Sub Ch3_SendACommandToAutoCAD()
ThisDrawing.SendCommand "_Circle 2,2,0 4 "
ThisDrawing.SendCommand "_zoom a "
End Sub

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Etat sans document ouvert


 

Lorsque vous lancez AutoCAD, un document nouveau ou existant est systématiquement ouvert. Toutefois, vous pouvez refermer tous les documents au cours
de la session active.

Lorsque vous refermez tous les documents dans l'interface utilisateur d'AutoCAD, la fenêtre d'application apparaît un peu différemment. Seuls les menus
Fichier, Affichage, Fenêtre et Aide sont présents. Ces menus comportent un nombre d'options moins important. Par a illeurs, aucune ligne de commande
n'apparaît.

De même, vous ne pouvez exécuter que les opérations suivantes dans l'interface ActiveX lorsque aucun d ocument n'est ouvert :

 Ouvrir un document.
 Créer un document.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 46 of 194

 Importer un document.
 Quitter AutoCAD.

Ces opérations peuvent être exécutées depuis la collection Documents. Outre un jeu limité de méthodes et de propriétés de l'objet Application, les méthodes et
propriétés de la collection Documents sont les seules options d'interface disponibles lorsque aucun document n'est ouvert. Si vous exécutez une autre opération
et que vous essayez, par exemple, d'accéder à des options utilisateur, vous obtiendrez une erreur.

Utilisez la propriété Count de la collection Documents pour déterminer si AutoCAD est à l'état sans document ouvert. Si Documents.Count = 0, AutoCAD est
à l'état sans document. Si Documents.Count > 0, alors au moins un document est ouvert.

Notez que dans VBA, l'objet ThisDrawing n'est pas défini lorsque AutoCAD est à l'état sans document ouvert. Ce qui est logique car ThisDrawing fait
normalement référence au dessin actif et qu'aucun dessin ne peut être ouvert à l'état sans document ouvert. C'est pourquoi, si vous essayez d'exécuter une
macro utilisant l'objet ThisDrawing, vous obtiendrez une erreur d'exécution. Pour éviter ce problème, utilisez la fonction VBA GetObject et indiquez la
version d'AutoCAD afin d'obtenir une connexion à AutoCAD lorsque aucun document n'est ouvert.

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Importation d'autres formats de fichier


 

Vous pouvez utiliser des dessins ou des images provenant d'autres applications, en les ouvrant sous un format approprié. AutoCAD traite certaines formes de
conversion pour les fichiers DXF TM (Drawing Interchange Format), SAT et WMF. Dans toutes les versions d'AutoCAD, vous pouvez importer un fichier à l'aide
de la méthode Import. Cette méthode requiert la saisie de trois valeurs : le nom du fichier à importer, le point d'insertion du fichier dans le dessin et le facteur
d'échelle à utiliser pour placer le dessin importé.

Envoyez-nous vos commentaires sur cette page.  

Contrôle de l'environnement AutoCAD  

Exportation vers d'autres formats de fichier


 

Vous pouvez convertir les dessins AutoCAD dans divers formats, afin de les utiliser dans d'autres applications, en faisant appel à l a méthode Export. Celle-ci
permet d'exporter un dessin AutoCAD au format WMF, SAT, EPS, DXF ou BMP. La méthode Export requiert la saisie de trois valeurs : le nom du nouveau
fichier à créer, l'extension du nouveau fichier et le jeu de sélection des objets à exporter.

Lors de l'exportation au format WMF, SAT ou BMP, vous devez indiquer un jeu de sélection non vide. Ce jeu spécifie les objets du dessin à exporter. Si vous
n'indiquez pas de jeu de sélection, aucun objet n'est exporté : il en résulte une erreur d'argument piégeable incorrect.

Lors de l'exportation aux formats EPS ou DXF, le jeu de sélection, bien qu'ignoré par la commande, doit être précisé. L'ensemble du dessin est
automatiquement exporté lorsque vous choisissez ces formats.

Exportation d'un dessin en tant que fichier DXF et réimportation

Dans cet exemple, un cercle est créé dans le dessin actif. L e dessin est ensuite exporté vers un fichier DXFExprt.DXF , un nouveau dessin est ouvert et le fichier
est importé. Notez qu'un jeu de sélection vide est transmis comme argument lors de l'exportation. Bien que la méthode Export ignore les informations relatives
au jeu de sélection lors de la création d'un fichier DXF, une erreur de syntaxe est signalée si cet argument est omis.

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

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 47 of 194

  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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD


 

Vous pouvez créer une gamme d'objets, allant de simples lignes et cercles à des courbes splines, des ellipses et des aires hachurées associatives.
Généralement, vous ajoutez les objets à l'espace objet à l'aide de l'une des méthodes Add. Vous pouvez également créer des objets dans l'espace papier ou
dans un bloc.

Une fois un objet créé, vous pouvez modifier son calque, sa couleur et son type de ligne. Vous pouvez également ajouter du texte afin d'annoter le dessin.

Rubriques de cette section :

 Création d'objets 

 Utilisation des jeux de sélection  

 Modification d'objets  

 Utilisation de calques, couleurs et types de ligne  

 Enregistrement et restauration des paramètres des calques 

 Ajout de texte aux dessins  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création d'objets
 

Bien qu'il existe souvent plusieurs méthodes pour créer le même objet graphique dans AutoCAD  ® , l'automatisation ActiveX ne propose qu'une seule méthode
de création par objet. Par exemple, dans AutoCAD, il existe quatre manières différentes de créer un cercle : (1) en spécifiant le centre et le rayon, (2) à l'aide de
deux points définissant le diamètre, (3) à l'aide de trois points définissant la circonférence ou (4) à l'aide de deux tangentes et d'un rayon. Toutefois,
l'automatisation ActiveX n'offre qu'une méthode de création de cercle, qui consiste à utiliser le centre et le rayon.

Remarque Les méthodes VB et VBA de création d'objets à l'aide de CreateObject ou Dim et du mot-clé New peuvent uniquement être utilisées pour créer
l'objet Application AutoCAD. Tous les autres objets AutoCAD doivent être créés à l'aide de la méthode Add ou Add< nom_objet > fournie par l'interface AutoCAD.

Rubriques de cette section :

 Définition de l'objet incorporant  

 Création de lignes  

 Création d'objets de type courbe 

 Création d'objets Point  

 Création de zones pleines 

 Utilisation des régions  

 Création de hachures 

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Définition de l'objet incorporant


 

Les objets graphiques sont créés dans la collection ModelSpace, la collection PaperSpace ou un objet Block

La collection ModelSpace est renvoyée par la propriété ModelSpace et la collection PaperSpace par la propriété PaperSpace

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 48 of 194

Vous pouvez référencer ces objets directement ou via une variable définie par l'utilisateur. Pour référencer les objets directement, incluez l'objet dans la
hiérarchie appelante. Par exemple, l'instruction suivante ajoute une ligne à l'espace objet :

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

Pour référencer les objets via une variable définie par l'utilisateur, attribuez le type AcadModelSpace ou AcadPaperSpace à cette variable, puis a ssignez-lui
la propriété appropriée en dehors du document actif. L'exemple suivant définit deux variables et les rend égales à l'espace objet et à l'espace papier,
respectivement:

Dim moSpace As AcadModelSpace


Dim paSpace As AcadPaperSpace
Set moSpace = ThisDrawing.ModelSpace
Set paSpace = ThisDrawing.PaperSpace

L'instruction suivante ajoute une ligne à l'espace objet en utilisant la variable définie par l'utilisateur :

Set lineObj = moSpace.AddLine(startPoint,endPoint)

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création de lignes
 

La ligne est l'élément de base du dessin dans AutoCAD. Vous pouvez créer une grande variété de lignes : lignes uniques, segments de ligne multiples avec ou
sans arcs. En général, il suffit de spécifier des points de coordonnées pour tracer des lignes. Le type de ligne utilisé par défaut correspond à une ligne continue
(CONTINUOUS) mais divers types de lignes utilisant des points et des tirets sont disponibles.

Pour créer une ligne, utilisez l'une des méthodes suivantes :

AddLine
Crée une ligne passant par deux points.
AddLightweightPolyline
Crée une polyligne fine 2D à partir d'une liste de sommets.
AddMLine
Crée une multiligne.
AddPolyline
Crée une polyligne 2D ou 3D.

Les lignes et les multilignes standard sont créées sur le plan XY  du système de coordonnées général. Les polylignes et les polylignes fines sont créées dans le
système de coordonnées de l'objet (SCO). Pour plus d'informations sur la conversion des coordonnées SCO, reportez-vous à la section Conversion de
coordonnées.

Création d'un objet Polyline

L'exemple suivant utilise la méthode AddLightweightPolyline pour créer une polyligne simple à deux segments en utilisant les coordonnées 2D (2,4), (4,2) et
(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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création d'objets de type courbe


 

AutoCAD permet de créer différents types d'objets incurvés, y compris des courbes splines, des cercles, des arcs et des ellipses. Toutes les courbes sont
créées sur le plan XY  du SCG courant.

Pour créer une courbe, utilisez l'une des méthodes suivantes :

AddArc
Crée un arc suivant un centre, un rayon et des angles de départ et de fin.
AddCircle

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 49 of 194

Crée un cercle suivant le centre et le rayon.


AddEllipse
Crée une ellipse suivant un point de centre, un point sur le grand axe et le rapport des rayons.
AddSpline
Crée une courbe NURBS (spline B rationnelle non uniforme) quadratique ou cubique.

Création d'un objet Spline

L'exemple suivant crée une spline dans l'espace objet à l'aide des coordonnées (0, 0, 0), (5, 5, 0) et (10, 0, 0). La courbe spline possède des tangentes de
départ et de fin (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

Pour de plus amples informations sur les splines, reportez-vous à la documentation relative à l'objet Spline et à la méthode AddSpline dans le manuel ActiveX
and VBA Reference  d'AutoCAD.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création d'objets Point


 

Vous pouvez utiliser ce type d'objet comme points d'ancrage du curseur ou pour décaler des objets. AutoCAD permet non seulement de définir le style du point
mais aussi sa taille (exprimée par rapport aux dimensions de l'écran ou en unités absolues).

Les variables système PDMODE et PDSIZE contrôlent l'aspect des objets Point. Les valeurs PDMODE 0, 2, 3 et 4 spécifient une figure à dessiner à l'aide du
point. La valeur 1 ne sélectionne rien à afficher.

L'ajout de 32, 64 ou 96 à la valeur précédente sélectionne une forme à dessiner autour du point en plus de la figure dessinée au travers de celui-ci :

La variable système PDSIZE détermine la taille de la figure représentant un point, sauf pour les valeurs 0 et 1 de la variable PDMODE. Si PDSIZE est à 0, le
point à 5% de la hauteur du graphique est généré. Une valeur PDSIZE positive spécifie une taille absolue. Une valeur négative est interprétée comme un
pourcentage de la taille de la fenêtre. La taille de tous les points est recalculée au moment de la régénération du dessin.

Ainsi, quand vous modifiez la valeur de PDMODE et de PDSIZE, l'apparence des points existants change lors de la régénération suivante du dessin.

Pour définir les variables PDMODE et PDSIZE, utilisez la méthode SetVariable.

Création d'un objet Point et modification de son aspect

L'exemple de code suivant crée un objet Point dans l'espace objet à la coordonnée (5, 5, 0). Les variables système PDMODE et PDSIZE sont ensuite mises à
 jour.

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

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 50 of 194

End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création de zones pleines


 

Il est possible d'appliquer une couleur de remplissage à des zones fermées (en forme de triangle ou de quadrilatère). Pour obtenir des résultats plus
rapidement, créez ces zones en désactivant la variable système FILLMODE, puis activez FILLMODE pour remplir la zone finie.

Lorsque vous définissez une zone quadrilatérale remplie, l'ordre dans lequel vous désignez le troisième et le quatrième points détermine l'aspect final de la
zone. Comparez les deux illustrations suivantes :

Les deux premiers points définissent un côté du polygone. Le troisième point est défini diagonalement par rapport au second. Si le quatrième point est défini
comme étant égal au troisième point, un triangle rempli est créé.

Pour créer une zone pleine, utilisez la méthode AddSolid

Pour de plus amples informations sur le remplissage de solides, reportez-vous à la section “Création de zones pleines” du Manuel d'utilisation .

Création d'un objet plein

L'exemple de code suivant crée une zone remplie ayant la forme d'un quadrilatère dans l'espace objet à l'aide des coordonnées (0, 0, 0), (5, 0, 0), (5, 8, 0) et (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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation des régions


 

Les régions sont des zones délimitées par des contours en deux dimensions, définis à partir d'objets fermés appelés boucles. Une boucle est une courbe ou
une séquence de courbes reliées qui définit une aire plane dont le contour ne comporte pas d'auto-intersection. Les boucles peuvent être des combinaisons de
lignes, de polylignes fines, de cercles, d'arcs, d'ellipses, d'arcs elliptiques, de splines, de faces 3D, de traces et de solides. Les objets composant une boucle
doivent être fermés ou former une zone délimitée avec d'autres objets dont ils partagent l es extrémités. Ils doivent également être coplanaires (sur un même
plan). Les boucles constituant une région doivent être définies sous forme de réseau d'objets.

Pour de plus amples informations sur l'utilisation de régions, reportez-vous à la section “Création et combinaison d'aires (régions)” du Manuel d'utilisation .

Rubriques de cette section :

 Création de régions  

 Création de régions composées  

 Union de régions  

 Recherche de l'intersection de deux régions 

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 51 of 194

Création et modification d'entités AutoCAD  

Création de régions
 

Pour créer une région, utilisez la méthode AddRegion Cette méthode crée une région à partir de chaque boucle fermée, formée par le réseau d'entrées des
courbes. AutoCAD convertit les polylignes 2D fermées et 3 D planaires afin de séparer les régions puis convertit les polylignes, lignes et courbes qui forment les
boucles planaires fermées. Si plus de deux courbes partagent une extrémité, la région résultante peut être arbitraire. Pour cette raison, plusieurs régions
peuvent en fait être créées lors de l'utilisation de la méthode AddRegion. Utilisez un variant pour contenir le réseau de régions créé.

Pour calculer le nombre total d'objets Region créés, utilisez les fonctions UBound et LBound de VBA, comme dans l'e xemple suivant :

UBound(objRegions) - LBound(objRegions) + 1

où objRegions est un variant contenant la variable renvoyée par la méthode AddRegion. Cette instruction permet de calculer le nombre total d e régions
créées.

Création d'une région simple

L'exemple de code suivant crée une région à partir d'un cercle.

Sub Ch4_CreateRegion()
' Define an array to hold the
' boundaries of the region.
Dim curves(0 To 0) As AcadCircle
' Create a circle to become a
' boundary for the region.
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 2
center(1) = 2
center(2) = 0
radius = 5#
Set curves(0) = ThisDrawing.ModelSpace.AddCircle _
(center, radius)
' Create the region
Dim regionObj As Variant
regionObj = ThisDrawing.ModelSpace.AddRegion(curves)
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création de régions composées


 

Vous pouvez créer des régions composées en soustrayant, combinant ou recherchant l'intersection de régions ou solides 3D. Vous pouvez ensuite appliquer
une extrusion ou une révolution aux régions composées afin de créer des solides complexes. Pour créer une région composée, utilisez la méthode Boolean

Lorsque vous soustrayez une région à une autre, vous appelez la méthode Boolean à partir de la première région. Il s'agit de la région depuis laquelle effectuer
la soustraction. Par exemple, pour calculer la taille de moquette requise pour un p lancher, appelez la méthode Boolean à partir du contour externe de l'espace
au sol et utilisez les zones sans moquette, tels que les colonnes et les comptoirs, en tant qu'objet dans la liste des paramètres booléens.

Création d'une région composée


Sub Ch4_CreateCompositeRegions()
' Create two circles, one representing a room,
' the other a pillar in the center of the room
Dim RoomObjects(0 To 1) As AcadCircle
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 4
center(1) = 4
center(2) = 0
radius = 2#
Set RoomObjects(0) = ThisDrawing.ModelSpace. _
AddCircle(center, radius)
radius = 1#
Set RoomObjects(1) = ThisDrawing.ModelSpace. _
AddCircle(center, radius)
' Create a region from the two circles
Dim regions As Variant
regions = ThisDrawing.ModelSpace.AddRegion(RoomObjects)
' Copy the regions into the region variables for ease of use
Dim RoundRoomObj As AcadRegion
Dim PillarObj As AcadRegion
If regions(0).Area > regions(1).Area Then
' The first region is the room
Set RoundRoomObj = regions(0)
Set PillarObj = regions(1)
Else

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 52 of 194

  ' The first region is the pillar


Set PillarObj = regions(0)
Set RoundRoomObj = regions(1)
End If
' Subtract the pillar space from the floor space to
' get a region that represents the total carpet area.
RoundRoomObj.Boolean acSubtraction, PillarObj
' Use the Area property to determine the total carpet area
MsgBox "The carpet area is: " & RoundRoomObj.Area
End Sub

Recherchez l'aire de la région résultante à l'aide de la propriété Area.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Union de régions
 

Pour unir des régions, appelez la méthode Boolean et entrez la constante acUnion pour l'opération au lieu de acSubtraction. Vous pouvez combiner les
régions comme vous l'entendez afin de les unir.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Recherche de l'intersection de deux régions


 

Pour rechercher l'intersection de deux régions, utilisez la constante acIntersection. Vous pouvez combiner les régions comme vous l'entendez afin de créer
une intersection entre elles.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création de hachures
 

Les hachures permettent la mise en évidence de certaines parties du dessin.

Lors de la création d'une hachure, vous ne spécifiez pas initialement la zone à remplir. Vous devez d'abord créer l 'objet Hatch. Une fois cette opération
effectuée, vous pouvez spécifier la boucle externe, qui est le contour externe de la hachure. Vous pouvez ensuite spécifier des b oucles internes qui peuvent
exister dans la hachure.

Pour de plus amples informations sur l'utilisation de hachures, reportez-vous à la section “Présentation des motifs de hachures et des remplissages” du Manuel
d'utilisation .

Rubriques de cette section :

 Création de l'objet Hatch 

 Association d'une hachure  

 Assignation du type et du nom d'un motif de hachure  

 Définition des contours de hachure  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création de l'objet Hatch


 

Lors de la création de l'objet Hatch, vous devez spécifier le type de motif de hachure, le nom du motif de hachure et l'associativité. Une fois l'objet Hatch créé,
vous ne pouvez plus modifier l'associativité de la hachure.

Pour créer un objet Hatch, utilisez la méthode AddHatch

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 53 of 194

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Association d'une hachure


 

Vous pouvez créer des hachures associatives ou non associatives. Les hachures associatives sont liées à leurs contours et mises à jour lorsque les contours
sont modifiés. Les hachures non associatives sont indépendantes de leurs contours.

L'associativité peut uniquement être définie lors de la création d'une hachure. Une fois une hachure créée, vous pouvez la dissocier mais vous ne pouvez pas
l'associer de nouveau.

Pour rendre une hachure associative, attribuez la valeur TRUE au paramètre Associativité de la méthode AddHatch. Pour rendre une hachure non
associative, attribuez la valeur FALSE au paramètre Associativité de la méthode AddHatch.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Assignation du type et du nom d'un motif de hachure


 

AutoCAD comporte un remplissage plein et plus de cinquante motifs de hachure de norme industrielle. Les motifs de hachure servent à distinguer différentes
parties ou caractéristiques d'un dessin. Ils permettent, par exemple, de différencier les parties d'un objet en trois dimensions ou de représenter les matières
utilisées pour créer un objet.

Vous pouvez utiliser les motifs de hachures fournis avec AutoCAD ou ceux d'une b ibliothèque externe. Pour obtenir un tableau des motifs de hachures fournis
avec AutoCAD, reportez-vous au manuel Présentation des commandes  d'AutoCAD.

Pour spécifier un motif unique, vous devez entrer un type et un nom de motif lors de la création de l'objet Hatch. Le type de motif spécifie l'emplacement du nom
du motif. Lors de la saisie du type de motif, utilisez l'une des constantes suivantes :

acHatchPatternTypePredefined
Sélectionne le nom du motif parmi ceux définis dans le fichier acad.pat .
acHatchPatternTypeUserDefined
Définit un motif de lignes en utilisant le type de ligne courant.
acHatchPatternTypeCustomDefined
Sélectionne le nom du motif à partir d'un fichier PAT autre que le fichier acad.pat .

Lors de la saisie du nom de motif, utilisez un nom de fichier autorisé pour le fichier spécifié par le type de motif.

Envoyez-nous vos commentaires sur cette page.

Création et modification d'entités AutoCAD  

Définition des contours de hachure


 

Une fois l'objet Hatch créé, vous pouvez ajouter les contours de hachure. Il peut s'agir d'une combinaison de lignes, d'arcs, de cercles, de polylignes 2D,
d'ellipses, de splines et de régions.

Le premier contour hachuré doit être le contour externe qui définit les limites externes à remplir par la hachure. Pour ajouter le contour externe, utilisez la
méthode AppendOuterLoop

Une fois le contour externe défini, vous pouvez ajouter des contours internes. Ajoutez les contours internes avec la méthode AppendInnerLoop

Les contours internes définissent les îlots au sein de la hachure. La gestion de ces îlots par l'objet Hatch est fonction de la définition de la propriété HatchStyle
La propriété HatchStyle peut être définie sur l'une des conditions suivantes :

Définitions des styles de hachure


HatchStyle Condition Description
Normal Spécifie un style standard ou normal. Cette option permet de réaliser des hachures internes à partir du contour le plus éloigné. Si AutoCAD
rencontre un contour interne, le hachurage est désactivé jusqu'au prochain contour. Il s'agit de la valeur par défaut de la propriété HatchStyle.

Extérieur Remplit uniquement les zones les plus éloignées. Il s'effectue également vers l'intérieur à partir du contour, mais il est définitivement désactivé
lorsqu'un contour interne est rencontré.

Ignorer La structure interne est ignorée. Cette option hachure tous les objets internes.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 54 of 194

Une fois la définition de l a hachure terminée, elle doit être é valuée avant de pouvoir être affichée. Pour ce faire, utilisez la méthode Evaluate.

Création d'un objet Hatch

Dans cet exemple, une hachure associée est créée dans l'espace objet. Une fois la hachure créée, vous pouvez modifier la taille du cercle auquel elle est
associée. La hachure s'adapte alors à l a taille du cercle sélectionné.

Sub Ch4_CreateHatch()
Dim hatchObj As AcadHatch
Dim patternName As String
Dim PatternType As Long
Dim bAssociativity As Boolean
' Define the hatch
patternName = "ANSI31"
PatternType = 0
bAssociativity = True
' Create the associative Hatch object
Set hatchObj = ThisDrawing.ModelSpace.AddHatch _
(PatternType, patternName, bAssociativity)
' Create the outer boundary for the hatch. (a circle)
Dim outerLoop(0 To 0) As AcadEntity
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 3: center(1) = 3: center(2) = 0
radius = 1
Set outerLoop(0) = ThisDrawing.ModelSpace. _
AddCircle(center, radius)
' Append the outerboundary to the hatch
' object, and display the hatch
hatchObj.AppendOuterLoop (outerLoop)
hatchObj.Evaluate
ThisDrawing.Regen True
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation des jeux de sélection


 

Un jeu de sélection peut être composé d'un seul objet ou d'un groupement plus complexe : par exemple, le jeu d'objets d'un certain calque.

La définition d'un jeu de sélection se fait en deux étapes. Tout d'abord, vous devez créer un jeu de sélection et l'ajouter à la collection SelectionSets Une fois ce
 jeu créé, vous pouvez le remplir avec les objets à traiter.

Rubriques de cette section :

 Création d'un jeu de sélection  

 Ajout d'objets à un jeu de sélection 

 Définition de règles pour les jeux de sélection  

 Affichage des informations concernant les jeux de sélection  

 Suppression d'objets d'un jeu de sélection  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création d'un jeu de sélection


 

Pour créer un jeu de sélection nommé, utilisez la méthode Add Cette méthode ne requiert qu'un paramètre : le nom du jeu de sélection.

Si un jeu de sélection porte déjà ce nom, AutoCAD affiche un message d'erreur. Nous vous conseillons de supprimer les jeux de sélection dont que vous
n'utilisez plus. Utilisez la méthode Delete pour supprimer un jeu de sélection :

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

Création d'un jeu de sélection vide

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 55 of 194

Cet exemple crée un nouveau jeu de sélection.

Sub Ch4_CreateSelectionSet()
Dim selectionSet1 As AcadSelectionSet
Set selectionSet1 = ThisDrawing.SelectionSets. _
Add("NewSelectionSet")
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Ajout d'objets à un jeu de sélection


 

Vous pouvez ajouter des objets au jeu de sélection actif en utilisant l'une des méthodes suivantes :

AddItems
Ajoute un ou plusieurs objets au jeu de sélection spécifié.
Select
Sélectionne des objets et les place dans le jeu de sélection actif. Vous pouvez sélectionner tous les objets, des objets au sein ou croisant une zone
rectangulaire, des objets au sein ou croisant une zone polygone, tous les objets croisant un trajet, l'objet créé le plus récent, les objets du jeu de sélection le
plus récent, les objets au sein d'une fenêtre ou les objets au sein d'un polygone de fenêtre.
SelectAtPoint
Sélectionne des objets passant par un point donné et les place dans le jeu de sélection actif.
SelectByPolygon
Sélectionne des objets au sein d'un trajet et les ajoute au jeu de sélection actif.
SelectOnScreen
Invite l'utilisateur à sélectionner des objets à l'écran et les ajoute au jeu de sélection actif.

Ajout d'objets à un jeu de sélection

Dans cet exemple, l'utilisateur doit sélectionner des objets, puis les ajouter au jeu de sélection.

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 ENTREE.
sset.SelectOnScreen
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Définition de règles pour les jeux de sélection


 

Vous pouvez limiter les jeux de sélection par propriété ou par type d'objet à l'aide de listes de filtre. Vous pouvez, par exemple, copier uniquement les objets
bleus d'un circuit imprimé ou uniquement les objets faisant partie du même calque. Vous pouvez également combiner les critères de sélection dans vos filtres.
Ainsi, vous pouvez demander à AutoCAD de n'inclure un objet dans un jeu de sélection que s'il s'agit d'un cercle bleu situé sur un calque spécifique. Les listes
de filtre peuvent être utilisées avec l es méthodes Select, SelectAtPoint, SelectByPolygon et SelectOnScreen.

Remarque Le filtrage reconnaît uniquement les types de ligne explicitement assignés aux objets, et non ceux hérités par le calque.

Rubriques de cette section :

 Utilisation de listes de filtre pour définir les règles des jeux de sélection  

 Utilisation de plusieurs critères dans une liste de filtre  

 Multiplication des conditions dans la liste de filtre  

 Utilisation de caractères génériques dans les critères de filtre  

 Filtrage des données étendues  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation de listes de filtre pour définir les règles des jeux de sélection

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 56 of 194

Les listes de filtre se composent de deux arguments. Le premier identifie le type du filtre (un objet, par exemple), le second spécifie la valeur sur laquelle vous
souhaitez effectuer le filtrage (les cercles, par exemple). Le type de filtre est un code de groupe DXF qui spécifie le filtre à utiliser. Certains types de filtres
courants sont répertoriés ici.

Codes DXF pour filtres ordinaires


Code DXF Type de filtre
0 Type d'objet (chaîne)
Par exemple, “Line”, “Circle”, “Arc,”, etc.
2 Nom d'objet (chaîne)
Le nom de table (attribué) d'un objet nommé.
8 Nom de calque (chaîne)
Par exemple, “Calque 0”.
60 Visibilité de l'objet (entier)
0 = visible, 1 = invisible.
62 Numéro de couleur (entier)
Valeur d'index numérique comprise entre 0 et 256.
Zéro indique la propriété DUBLOC. 256 indique DUCALQUE. Une valeur négative indique que le calque est désactivé.
67 Indicateur d'espace objet/papier (entier)
0 ou omis = espace objet, 1 = espace papier.

Pour connaître les codes de groupe DXF, reportez-vous à la section relative aux types de valeur de code de groupe dans le manuel Référence DXF .

Les arguments de filtres sont déclarés en tant que tableaux ("arrays"). Le type du filtre est déclaré comme entier, sa valeur comme variant. Tout type d e filtre
doit être combiné à une valeur. Par exemple :

FilterType(0) = 0 'Indicates filter refers to an object type


FilterData(0) = "Circle" 'Indicates the object type is "Circle"

Utilisation d'un critère de sélection unique dans un jeu de sélection

Dans l'exemple suivant, l'utilisateur choisit les objets devant être inclus dans un jeu de sélection, mais seuls les cercles sont effectivement ajoutés :

Sub Ch4_FilterMtext()
Dim sstext As AcadSelectionSet
Dim FilterType(0) As Integer
Dim FilterData(0) As Variant
Set sstext = ThisDrawing.SelectionSets.Add("SS2")
FilterType(0) = 0
FilterData(0) = "Circle"
sstext.SelectOnScreen FilterType, FilterData
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation de plusieurs critères dans une liste de filtre


 

Pour spécifier plusieurs critères de sélection, déclarez un tableau composé de suffisamment d'éléments pour représenter tous les critères, p uis affectez chaque
critère à un élément.

Sélection d'objets répondant à trois critères

Le code suivant spécifie deux critères : l'objet doit être un cercle et il doit résider sur le calque 0. Le code déclare FilterType et FilterData comme tableaux de
deux éléments et affecte chaque critère à un élément :

Sub Ch4_FilterBlueCircleOnLayer0()
Dim sstext As AcadSelectionSet
Dim FilterType(1) As Integer
Dim FilterData(1) As Variant
Set sstext = ThisDrawing.SelectionSets.Add("SS4")
FilterType(0) = 0
FilterData(0) = "Circle"
FilterType(1) = 8
FilterData(1) = "0"
sstext.SelectOnScreen FilterType, FilterData
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Multiplication des conditions dans la liste de filtre


 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 57 of 194

Lorsque vous spécifiez plusieurs critères de sélection, AutoCAD suppose que l'objet sélectionné répond à chacun des critères. Il est cependant possible de
qualifier vos critères d'une autre façon. Dans le cas d'éléments numériques, vous pouvez spécifier des opérations relationnelles (par exemple, le rayon d'un
cercle devant être supérieur ou égal  à 5). En outre, pour tous les éléments, vous pouvez utiliser des opérations logiques (par exemple, Text ou  Mtext).

Utilisez un code -4 DXF pour placer un opérateur relationnel dans votre filtre. Cet opérateur est spécifié sous forme de chaîne. Le tableau qui suit indique q uels
sont les opérateurs relationnels autorisés.

Opérateurs relationnels utilisables dans les listes de filtre des jeux de sélection
Opérateur Description
"*"  Tout est sélectionné (toujours vrai)

"="  Egal à

"!="  Différent de

"/="  Différent de

"<>"  Différent de

"<"  Inférieur à

"<="  Inférieur ou égal à

">"  Supérieur à

">="  Supérieur ou égal à

"&"  ET binaire (groupes d'entiers uniquement)

"&="  Egalité de masque binaire (groupes d'entiers uniquement)

Les opérateurs logiques dans les listes de filtre sont également indiqués par un code de groupe –4, et l'opérateur est une chaîne, mais les opérateurs doivent
être groupés par paires. Le premier opérateur e st précédé du symbole d'infériorité (<), le second par le symbole de supériorité (> ). Le tableau qui suit dresse la
liste des opérateurs logiques que vous pouvez u tiliser pour filtrer les jeux de sélection.

Opérateurs de regroupement logique pour les listes de filtre de jeu de sélection


Opérateur Inclut Opérateur

de début final
"<AND" Un ou plusieurs opérandes "AND>"
"<OR" Un ou plusieurs opérandes "OR>"
"<XOR" Deux opérandes "XOR>"
"<NOT" Un opérande "NOT>"

Sélection d'un cercle dont le rayon est supérieur ou égal à 5

L'exemple ci-dessous spécifie que l'objet sélectionné doit être un cercle de rayon au moins égal à 5 :

Sub Ch4_FilterRelational()
Dim sstext As AcadSelectionSet
Dim FilterType(2) As Integer
Dim FilterData(2) As Variant
Set sstext = ThisDrawing.SelectionSets.Add("SS5")
FilterType(0) = 0
FilterData(0) = "Circle"
FilterType(1) = -4
FilterData(1) = ">="
FilterType(2) = 40
FilterData(2) = 5#
sstext.SelectOnScreen FilterType, FilterData
End Sub

Sélection d'un objet Text ou Mtext

Dans l'exemple suivant, seuls les objets Text ou Mtext peuvent être sélectionnés :

Sub Ch4_FilterOrTest()
Dim sstext As AcadSelectionSet
Dim FilterType(3) As Integer
Dim FilterData(3) As Variant
Set sstext = ThisDrawing.SelectionSets.Add("SS6")
FilterType(0) = -4
FilterData(0) = "<or"
FilterType(1) = 0
FilterData(1) = "TEXT"
FilterType(2) = 0
FilterData(2) = "MTEXT"
FilterType(3) = -4
FilterData(3) = "or>"
sstext.SelectOnScreen FilterType, FilterData
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation de caractères génériques dans les critères de filtre

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 58 of 194

Dans les listes de filtre, les noms de symboles et les chaînes peuvent contenir des caractères génériques.

Le tableau qui suit recense les caractères génériques reconnus par AutoCAD, ainsi que leur signification en contexte de chaîne :

Caractères génériques
Caractère Fonction
# (dièse) Représente un chiffre.

@ (arobas) Représente un caractère alphabétique.

. (point) Représente un caractère autre qu'alphanumérique.

* (astérisque) Représente tout groupe de caractères, y compris un groupe vide, et peut être utilisé n'importe où dans la séquence de recherche : au début, au
milieu ou à la fin
? (point Représente tout caractère unique
d'interrogation)
~ (tilde) S'il s'agit du premier caractère de la séquence, représente tout SAUF la séquence.

[...]  Représente tout caractère encadré par les crochets

[~...]  Représente tout caractère unique non encadré par les crochets.

- (trait d'union) Placé entre crochets, représente une plage de valeurs pour un caractère unique.

, (virgule) Sépare deux séquences

` (guillemet inversé) Annule les caractères spéciaux (le caractère suivant est lu littéralement).

Utilisez l'apostrophe (`) lorsque vous souhaitez indiquer que l e caractère suivant n'est pas un caractère générique. Par exemple, pour indiquer que seul un bloc
anonyme appelé “*U2” doit être inclus dans la sélection, utilisez les arguments suivants :

FilterType(0) = 2
FilterData(0) = "`*U2"

Sélection d'un objet Mtext contenant un mot précis

Dans l'exemple suivant, les critères permettent de sélectionner tous les objets Mtext contenant le mot “Les”. En outre, la méthode de sélection SelectByPolygon
est utilisée.

Sub Ch4_FilterPolygonWildcard()
Dim sstext As AcadSelectionSet
Dim FilterType(1) As Integer
Dim FilterData(1) As Variant
Dim pointsArray(0 To 11) As Double
Dim mode As Integer
mode = acSelectionSetWindowPolygon
pointsArray(0) = -12#: pointsArray(1) = -7#: pointsArray(2) = 0
pointsArray(3) = -12#: pointsArray(4) = 10#: pointsArray(5) = 0
pointsArray(6) = 10#: pointsArray(7) = 10#: pointsArray(8) = 0
pointsArray(9) = 10#: pointsArray(10) = -7#: pointsArray(11) = 0
Set sstext = ThisDrawing.SelectionSets.Add("SS10")
FilterType(0) = 0
FilterData(0) = "MTEXT"
FilterType(1) = 1
FilterData(1) = "*Les*"
sstext.SelectByPolygon mode, pointsArray, FilterType, FilterData
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Filtrage des données étendues


 

Les applications externes peuvent associer aux objets AutoCAD des données telles que des chaînes de t exte, des valeurs numériques, des points 3D, des
distances et des noms de calques. Ces données sont appelées "données étendues" (xdata). Il est possible de filtrer les entités contenant ces données étendues
pour une application précise.

Reportez-vous à la section Filtrage des données étendues pour de plus amples informations sur ce type de données.

Sélection de cercles contenant des données étendues

L'exemple suivant permet de filtrer les cercles contenant des données étendues ajoutées par l'application “MY_APP” :

Sub Ch4_FilterXdata()
Dim sstext As AcadSelectionSet
Dim mode As Integer
Dim pointsArray(0 To 11) As Double
mode = acSelectionSetWindowPolygon
pointsArray(0) = -12#: pointsArray(1) = -7#: pointsArray(2) = 0
pointsArray(3) = -12#: pointsArray(4) = 10#: pointsArray(5) = 0
pointsArray(6) = 10#: pointsArray(7) = 10#: pointsArray(8) = 0
pointsArray(9) = 10#: pointsArray(10) = -7#: pointsArray(11) = 0

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 59 of 194

  Dim FilterType(1) As Integer


Dim FilterData(1) As Variant
Set sstext = ThisDrawing.SelectionSets.Add("SS9")
FilterType(0) = 0
FilterData(0) = "Circle"
FilterType(1) = 1001
FilterData(1) = "MY_APP"
sstext.SelectByPolygon mode, pointsArray, FilterType, FilterData
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Affichage des informations concernant les jeux de sélection


 

Si vous devez faire référence à un jeu de sélection dont vous connaissez le nom, vous pouvez le faire en utilisant ce nom. L'exemple suivant fait référence au
 jeu de sélection “SS10”

Sub GetObjInSet()
Dim selset As AcadSelectionSet
Set selset = ThisDrawing.SelectionSets("SS10")
MsgBox ("Selection set " & selset.Name & " contains " & _
selset.Count & " items")
End Sub

Tous les jeux de sélection d'un dessin sont des membres de la collection SelectionSets Vous pouvez utiliser l'instruction For Each pour parcourir la collection
SelectionSets d'un dessin afin de recueillir des informations sur tous les jeux de sélection.

Affichage du nom des jeux de sélection d'un dessin

L'exemple suivant affiche le nom de tous les jeux de sélection d'un dessin et indique le type des objets contenus dans chacun :

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
Suivant
i = i + 1
Suivant
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Suppression d'objets d'un jeu de sélection


 

Une fois un jeu de sélection créé, vous pouvez décider de supprimer des objets individuels ou l'ensemble des objets de ce jeu. Par exemple, vous p ouvez
sélectionner un groupe entier d'objets groupés par densité et supprimer des objets spécifiques au sein du groupe, en conservant uniquement les objets
souhaités dans le jeu.

Pour supprimer des éléments d'un jeu de sélection, utilisez l'une des méthodes suivantes :

RemoveItems
La méthode RemoveItems supprime un ou plusieurs éléments d'un jeu de sélection. Les éléments supprimés existent toujours mais ne résident plus dans le
 jeu de sélection.
Clear
La méthode Clear vide le jeu de sélection. Le jeu de sélection existe toujours mais ne contient aucun élément. Les éléments qui résidaient précédemment
dans le jeu de sélection existent toujours mais sont désormais absents de ce dernier.
Erase
La méthode Erase supprime tous les éléments dans le jeu de sélection. Le jeu de sélection existe toujours mais ne contient aucun élément. Les éléments qui
résidaient précédemment dans le jeu de sélection n'existent p lus.
Delete

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 60 of 194

La méthode Delete supprime un jeu d e sélection et tous les éléments qu'il contient. Une fois la méthode Delete appelée, le jeu de sélection et les éléments
qu'il contenait précédemment n'existent plus.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification d'objets
 

Pour modifier un objet existant, utilisez les méthodes et propriétés qui lui sont associées. Si vous modifiez une propriété visible d'u n objet graphique, utilisez la
méthode Update pour redessiner l'objet à l'écran.

Cette section décrit la méthode de modification d'objets 2D.

Rubriques de cette section :

 Utilisation des objets nommés 

 Copie d'objets  

 Décalage des objets 

 Copie miroir d'objets  

 Copie en réseau d'objets 

 Déplacement d'objets 

 Rotation des objets 

 Suppression d'objets  

 Mise à l'échelle des objets  

 Transformation d'objets 

 Prolongement ou ajustement d'objet 

 Décomposition des objets 

 Modification des polylignes  

 Modification des splines  

 Modification de hachures  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation des objets nommés


 

En plus des objets graphiques utilisés par AutoCAD, il existe plusieurs types d'objets non graphiques stockés dans les fichiers dessin. Ces objets possèdent
une désignation descriptive associée tels que des blocs, calques, groupes et styles de cote. Dans la plupart des cas, vous nommez les objets lorsque vous les
créez, puis vous les renommez ultérieurement. Les noms sont stockés dans des tables de symboles. Lorsque vous spécifiez un objet nommé, vous faites
référence au nom et aux données associées de l'objet dans la table de symboles.

Rubriques de cette section :

 Purge des objets nommés  

 Modification du nom des objets  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Purge des objets nommés


 

Au cours d'une session de modification, vous pouvez supprimer d'un dessin les objets nommés auxquels aucun autre objet ne fait ré férence. Cette opération
offre l'avantage de réduire la taille du fichier dessin. Il est impossible de supprimer des objets référencés par d'autres. Par exemple, un fichier police peut être lié
à un style de texte. De même, un calque est référencé par les objets du calque.

Pour purger un dessin, utilisez la méthode PurgeAll

ThisDrawing.PurgeAll

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 61 of 194

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification du nom des objets


 

Lorsque le dessin devient plus complexe, vous pouvez modifier le nom des objets pour qu'il soit plus explicite ou pour éviter tout conflit avec les noms contenus
dans d'autres dessins que vous avez insérés dans le dessin principal.

Vous pouvez renommer tout objet nommé à l'exception de ceux nommés par défaut par AutoCAD (par exemple, le calque 0 ou le type de ligne CONTINUOUS).

Les noms peuvent contenir 255 caractères. Outre les lettres et les chiffres, vous pouvez insérer des espaces (bien qu'AutoCAD supprime les espaces q ui
apparaissent directement avant et après un nom) et des caractères spéciaux non utilisés à d'autres fins par Microsoft Windows ou AutoCAD. Vous ne pouvez
pas utiliser les symboles de supériorité et d'infériorité (< >), les barres obliques et les barres obliques inversées (/ \), les guillemets ("), les deux-points (:), les
points-virgule (;), les points d'interrogation (?), les virgules (,), les astérisques (*), les barres verticales (| ), les signes d'égalité (=) et les apostrophes ('). Il n'est
pas possible non plus d'utiliser des caractères spéciaux créés avec les polices Unicode.

Pour renommer un objet, utilisez sa propriété Name

Modification du nom d'un calque

Cet exemple crée un calque intitulé “NewLayer”, puis le renomme “MyLayer”.

Sub Ch4_RenamingLayer()
' Create a layer
Dim layerObj As AcadLayer
Set layerObj = ThisDrawing.Layers.Add("NewLayer")
' Change the name of the layer
layerObj.Name = "MyLayer"
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Copie d'objets
 

Vous pouvez copier un ou plusieurs objets au sein du dessin courant. La fonction de décalage permet de créer des objets à une distance et dans une direction
données des objets sélectionnés, ou par rapport à un point donné. La fonction de copie-miroir permet de reproduire le même objet en fonction d'un axe de
symétrie. La fonction de copie en réseau permet de disposer les différents exemplaires en forme de cercle ou de rectangle.

Pour de plus amples informations sur la copie des objets, reportez-vous à la section “Copie, décalage et reproduction en miroir des o bjets” du Manuel
d'utilisation .

Remarque Aucune des méthodes de copie suivantes n'est disponible lors de l'itération simultanée dans une collection. Une itération ouvre l'espace de travail
pour une opération en lecture seule, alors que ces méthodes tentent d'effectuer une opération de type écriture-lecture. Terminez toute itération d'une collection
avant d'appeler ces méthodes.

Rubriques de cette section :

 Copie d'un objet vers le même emplacement  

 Copie de plusieurs objets  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Copie d'un objet vers le même emplacement


 

Pour copier un seul objet, utilisez la méthode Copy fournie pour cet objet. Cette méthode crée un nouvel objet qui est un duplicata de l'objet source. Le nouvel
objet est placé à la même position que l'original et est renvoyé par la méthode.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Copie de plusieurs objets

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 62 of 194

Pour copier plusieurs objets, faites appel à la méthode CopyObjects ou créez un réseau des objets à utiliser avec la méthode Copy (Pour copier les objets dans
un jeu de sélection, itérez via le jeu de sélection et enregistrez les objets dans un réseau.) Itérez via le réseau en copiant chaque objet individuellement et
placez les objets créés dans un deuxième réseau.

Pour copier plusieurs objets dans un autre dessin, utilisez la méthode CopyObjects et définissez le paramètre Propriétaire sur l'espace objet du dessin.

Copie de deux objets Circle

Dans cet exemple, l'utilisateur crée deux cercles et fait appel à la méthode CopyObjets pour en faire une copie.

Sub Ch4_CopyCircleObjects()
Dim DOC1 As AcadDocument
Dim circleObj1 As AcadCircle
Dim circleObj2 As AcadCircle
Dim circleObj1Copy As AcadCircle
Dim circleObj2Copy As AcadCircle
Dim centerPoint(0 To 2) As Double
Dim radius1 As Double
Dim radius2 As Double
Dim radius1Copy As Double
Dim radius2Copy As Double
Dim objCollection(0 To 1) As Object
Dim retObjects As Variant
' Define the Circle object
centerPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0
radius1 = 5#: radius2 = 7#
radius1Copy = 1#: radius2Copy = 2#
' Create a new drawing
Set DOC1 = ThisDrawing.Application.Documents.Add
' Add two circles to the drawing
Set circleObj1 = DOC1.ModelSpace.AddCircle _
(centerPoint, radius1)
Set circleObj2 = DOC1.ModelSpace.AddCircle _
(centerPoint, radius2)
ZoomAll
' Put the objects to be copied into a form
' compatible with CopyObjects
Set objCollection(0) = circleObj1
Set objCollection(1) = circleObj2
' Copy object and get back a collection of
' the new objects (copies)
retObjects = DOC1.CopyObjects(objCollection)
' Get newly created object and apply
' new properties to the copies
Set circleObj1Copy = retObjects(0)
Set circleObj2Copy = retObjects(1)
circleObj1Copy.radius = radius1Copy
circleObj1Copy.Color = acRed
circleObj2Copy.radius = radius2Copy
circleObj2Copy.Color = acRed
ZoomAll
End Sub

Copie d'objets dans un autre dessin

Dans cet exemple, l'utilisateur crée des cercles, puis fait appel à la méthode CopyObjects pour les copier dans un nouveau dessin.

Sub Ch4_Copy_to_New_Drawing()
Dim DOC0 As AcadDocument
Dim circleObj1 As AcadCircle, circleObj2 As AcadCircle
Dim centerPoint(0 To 2) As Double
Dim radius1 As Double, radius2 As Double
Dim radius1Copy As Double, radius2Copy As Double
Dim objCollection(0 To 1) As Object
Dim retObjects As Variant
' Define the Circle object
centerPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0
radius1 = 5#: radius2 = 7#
radius1Copy = 1#: radius2Copy = 2#
' Add two circles to the current drawing
Set circleObj1 = ThisDrawing.ModelSpace.AddCircle _
(centerPoint, radius1)
Set circleObj2 = ThisDrawing.ModelSpace.AddCircle _
(centerPoint, radius2)
ThisDrawing.Application.ZoomAll
' Save pointer to the current drawing
Set DOC0 = ThisDrawing.Application.ActiveDocument
' Copy objects
'
' First put the objects to be copied into a form compatible
' with CopyObjects
Set objCollection(0) = circleObj1
Set objCollection(1) = circleObj2
' Create a new drawing and point to its model space
Dim Doc1MSpace As AcadModelSpace
Dim DOC1 As AcadDocument

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 63 of 194

  Set DOC1 = Documents.Add


Set Doc1MSpace = DOC1.ModelSpace
' Copy the objects into the model space of the new drawing. A
' collection of the new (copied) objects is returned.
retObjects = DOC0.CopyObjects(objCollection, Doc1MSpace)
Dim circleObj1Copy As AcadCircle, circleObj2Copy As AcadCircle
' Get the newly created object collection and apply new
' properties to the copies.
Set circleObj1Copy = retObjects(0)
Set circleObj2Copy = retObjects(1)
circleObj1Copy.radius = radius1Copy
circleObj1Copy.Color = acRed
circleObj2Copy.radius = radius2Copy
circleObj2Copy.Color = acRed
ThisDrawing.Application.ZoomAll
MsgBox "Circles copied."
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Décalage des objets


 

Le décalage d'un objet crée un nouvel objet à la distance de décalage spécifiée de l'objet source. Vous pouvez décaler des arcs, cercles, ellipses, lignes,
polylignes fines, polylignes, splines et droites.

Pour décaler un objet, utilisez la méthode Offset fournie pour cet objet. La seule entrée requise par cette méthode est la distance de décalage de l'objet. Si cette
distance est négative, elle est interprétée par AutoCAD en tant que décalage destiné à rendre une courbe “plus petite” (ce qui, dans le cas d'un arc, décale un
rayon égal à la distance donnée moins le rayon de la courbe de départ). Si “plus petite” n'a aucune signification, AutoCAD effectue un décalage dans la
direction des coordonnées X, Y, Z  les plus faibles du SCG. Si la valeur du décalage n'est pas valide, une erreur est renvoyée.

Dans le cas de plusieurs objets, le résultat de cette opération sera une nouvelle courbe unique (dont le type peut être différent de la courbe source). Par
exemple, le décalage d'une ellipse résulte en une spline car le résultat correspond à l'équation d'une ellipse. Dans certains cas, il peut s'avérer nécessaire que
le décalage résulte en plusieurs courbes. C'est pourquoi, la méthode renvoie le nouvel objet, ou un réseau d'objets, en tant que variant.

Pour de plus amples informations sur le décalage des objets, reportez-vous à la section “Copie, décalage et reproduction en miroir des objets” du Manuel
d'utilisation .

Décalage d'une polyligne

Dans cet exemple, l'utilisateur crée une polyligne fine qu'il décale ensuite.

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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Copie miroir d'objets


 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 64 of 194

La copie-miroir crée une copie miroir de l'image d'un objet autour d'un axe (ligne de symétrie). Vous pouvez effectuer une copie-miroir de tous les objets d'un
dessin.

Pour effectuer une copie-miroir d'un objet, utilisez la méthode Mirror fournie pour cet objet. Cette méthode requiert la saisie de deux coordonnées. Les deux
coordonnées spécifiées deviennent les extrémités de la ligne de symétrie autour de laquelle l'objet de base est réfléchi. En 3D, cette ligne définit l'orientation
d'un plan miroir perpendiculaire au plan XY  du SCU qui contient la ligne de symétrie.

A la différence de la commande Miroir d'AutoCAD, cette méthode place l'image réfléchie dans le dessin et conserve l'objet source. (Pour supprimer l'objet
source, utilisez la méthode Erase.

Pour gérer les propriétés de réflexion des objets Text, utilisez la variable système MIRRTEXT. La valeur par défaut de MIRRTEXT est 1 (actif) : les objets texte
sont répétés comme les autres objets. Si la variable MIRRTEXT est désactivée (0), le texte n'est pas répété. Utilisez les méthodes GetVariable et SetVariable
pour interroger et définir le paramètre MIRRTEXT.

Vous pouvez refléter un objet Viewport dans l'espace papier, bien que ceci n'ait aucun effet sur la vue en espace objet ou sur les objets de l'espace objet.

Pour de plus amples informations sur la création de copies-miroirs d'objets, reportez-vous à la section “Copie, décalage et reproduction en miroir des objets” du
Manuel d'utilisation .

Copie-miroir d'une polyligne autour d'un axe

Dans cet exemple, l'utilisateur crée une polyligne fine dont il fait une copie-miroir par rapport à un axe. La nouvelle polyligne apparaît en bleu.

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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Copie en réseau d'objets


 

Vous pouvez copier un objet sous forme de réseau polaire ou rectangulaire. Dans l e cas d'un réseau polaire, vous devez indiquer le nombre de copies souhaité
et l'angle de référence. Pour créer un réseau rectangulaire, il suffit de préciser le nombre de rangées et de colonnes voulues et de spécifier la distance qui les
sépare les unes des autres.

Pour de plus amples informations sur les réseaux, reportez-vous à la section “Création d'un réseau d'objets” du Manuel d'utilisation .

Rubriques de cette section :

 Création de réseaux polaires  

 Création de réseaux rectangulaires 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 65 of 194

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création de réseaux polaires


 

Vous pouvez copier en réseau tous les objets d'un dessin. Pour créer un réseau polaire, utilisez la méthode ArrayPolar fournie pour cet objet. Cette méthode
requiert la saisie du nombre d'objets à créer, de l'angle à décrire et du centre du réseau. Le nombre d'objets doit être un nombre entier positif supérieur à 1.
L'angle à décrire doit être exprimé en radians. Une valeur positive indique une rotation trigonométrique, tandis qu'une valeur négative indique une rotation
horaire. Une erreur est renvoyée pour un angle égal à 0. Le centre est un tableau de type Variant qui contient trois coordonnées doubles. Ces coordonnées
doubles représentent les coordonnées SCG 3D qui spécifient le centre du réseau polaire.

AutoCAD détermine la distance du centre du réseau à un point de référence sur l'objet source. Le point de référence utilisé dépend du type d'objet. AutoCAD
utilise le centre d'un cercle ou d'un arc, le point d'insertion d'un bloc ou d'une forme, le point de départ d'un texte et l'extrémité d'une ligne ou d'un tracé.

Cette méthode ne prend pas en charge l'option Rotation des objets en réseau de la commande RESEAU d'AutoCAD.

Création d'un réseau polaire

Cet exemple crée un cercle auquel il applique un réseau polaire. Vous obtenez alors quatre cercles couvrant 180 degrés à partir du centre (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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création de réseaux rectangulaires


 

Pour créer un réseau rectangulaire 2D ou 3D, utilisez la méthode ArrayRectangular fournie pour cet objet. Cette méthode requiert la saisie du nombre de lignes,
du nombre de colonnes, de la distance entre les lignes et de la distance entre les colonnes. Lors de la création d'un réseau 3 D, vous devez également spécifier
le nombre de niveaux ainsi que la distance entre les niveaux.

Pour construire un réseau rectangulaire, il suffit de copier l'objet sélectionné le nombre de fois requis. Si vous spécifiez une rangée, vous devez spécifier
plusieurs colonnes et inversement.

En principe, l'élément source se trouve dans le coin inférieur gauche et le réseau est généré vers le haut et la droite. Si la distance entre les lignes est négative,
les lignes sont ajoutées vers le bas. De même, si la distance entre les colonnes est négative, les colonnes sont ajoutées à gauche.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 66 of 194

AutoCAD construit le réseau rectangulaire suivant une ligne de base définie par l'angle de rotation appliqué au mode d'accrochage. Cet angle étant de 0 par
défaut, les lignes et colonnes d'un réseau rectangulaire sont orthogonales aux axes du dessin X  et Y . Vous pouvez modifier cet angle et créer un réseau pivoté
en définissant l'angle de rotation d'accrochage sur une valeur non nulle. Pour ce faire, utilisez la propriété SnapRotationAngle.

Création d'un réseau rectangulaire

Dans cet exemple, l'utilisateur crée un cercle auquel il applique un réseau rectangulaire en créant 5 rangées et 5 colonnes de cercles.

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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Déplacement d'objets
 

Vous pouvez déplacer des objets le long d'un vecteur sans modifier leur orientation ni leur taille. Vous pouvez également faire pivoter des objets autour d'un
point de base.

Pour de plus amples informations sur le déplacement d'objets, reportez-vous à la section “Déplacement d'objets” du Manuel d'utilisation .

Rubriques de cette section :

 Déplacement d'objets le long d'un vecteur  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Déplacement d'objets le long d'un vecteur


 

Vous pouvez déplacer tous les objets d'un dessin et les objets de référence d'attribut le long d'un vecteur spécifié.

Pour déplacer un objet, utilisez la méthode Move fournie pour cet objet. Cette méthode requiert la saisie de deux coordonnées. Ces coordonnées définissent un
vecteur de déplacement qui indique la distance et la direction du déplacement de l'objet.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 67 of 194

 
Déplacement d'un cercle sur un vecteur

Dans cet exemple, l'utilisateur crée un cercle qu'il déplace de 2 unités le long de l'axe X .

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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Rotation des objets


 

Vous pouvez faire pivoter tous les objets d'un dessin et les objets de référence d'attribut.

Pour faire pivoter un objet, utilisez la méthode Rotate fournie pour cet objet. Cette méthode requiert la saisie d'un point de base et d'un angle de rotation. Le
point de base est un tableau de type Variant avec trois coordonnées doubles. Ces coordonnées doubles représentent une coordonnée SCG 3D qui spécifie le
point au travers duquel est défini l'axe de rotation. L'angle de rotation est exprimé en radians. Il détermine la distance de rotation d'un objet autour du point de
base par rapport à son e mplacement actuel.

Pour de plus amples informations sur la rotation des objets, reportez-vous à la section “Rotation des objets” du Manuel d'utilisation .

Rotation d'une polyligne autour d'un point de base

Dans cet exemple, l'utilisateur crée une polyligne fine fermée qu'il fait pivoter de 45 degrés le long du point de 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

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 68 of 194

  rotationAngle = 0.7853981 ' 45 degrees


' Rotate the polyline
plineObj.Rotate basePoint, rotationAngle
plineObj.Update
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Suppression d'objets
 

Vous pouvez supprimer des objets individuels à l' aide de la méthode Delete

Remarque Les objets Collection dans l'automatisation ActiveX possèdent une méthode Delete en raison de la manière dont ils ont été définis dans la
bibliothèque de type. Toutefois, les objets Collection, tels que les collections ModelSpace, Layers et Dictionaries, ne doivent pas être supprimés. La tentative de
suppression d'une collection entraîne une erreur.

Création et suppression d'une polyligne

Dans cet exemple, l'utilisateur crée une polyligne fine, puis la supprime.

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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Mise à l'échelle des objets


 

Vous pouvez mettre à l'échelle un objet en spécifiant un point de base et une longueur utilisée en tant que facteur d'échelle basé sur les unités de dessin
actuelles. Vous pouvez mettre à l'échelle tous les objets d'un dessin ainsi que les objets de référence d'attribut.

Pour modifier l'échelle d'un objet, utilisez la méthode ScaleEntity fournie pour cet objet. Cette méthode modifie les dimensions de l'objet de façon homothétique
sur les axes X , Y  et Z . Elle requiert la saisie du point de base pour l'échelle et un facteur d'échelle. Le point de base est un tableau de type Variant avec trois
coordonnées doubles. Ces coordonnées doubles représentent une coordonnée SCG 3D qui spécifie le point à partir duquel l'échelle commence. Le facteur
d'échelle est le facteur de mise à l'échelle de l'objet. Les cotes de l'objet sont multipliées par le facteur d'échelle. Un facteur d'échelle supérieur à 1 agrandit
l'objet. Un facteur d'échelle compris entre 0 et 1 le réduit.

Pour de plus amples informations sur la mise à l'échelle, reportez-vous à la section “Modification de la taille ou de la forme des objets” du Manuel d'utilisation .

Mise à l'échelle d'une polyligne

Dans cet exemple, l'utilisateur crée une polyligne fine fermée qu'il met à l'échelle selon un facteur de 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

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 69 of 194

  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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Transformation d'objets
 

Vous pouvez déplacer, mettre à l'échelle et faire pivoter un objet avec une matrice de transformation 4 x 4 à l'aide de la méthode TransformBy.

Le tableau suivant décrit la configuration d'une matrice de transformation, où R = Rotation et T = Translation :

Configuration de matrice de transformation


R00 R01 R02 T0
R10 R11 R12 T1
R20 R21 R22 T2
0 0 0 1

Pour transformer un objet, initialisez d'abord la matrice de transformation. L'exemple suivant présente une matrice de transformation, attribuée à la variable
tMatrix, qui fait pivoter une entité de 90 degrés par rapport au point (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

Une fois la matrice de transformation créée, appliquez-la à l'objet à l'aide de la méthode TransformBy. La ligne de code suivante présente l'application d'une
matrice ( tMatrix) à un objet ( anObj):

anObj.TransformBy tMatrix

Rotation d'une ligne avec matrice de transformation

Dans cet exemple, l'utilisateur crée une ligne qu'il fait pivoter de 90 degrés en utilisant une matrice de transformation.

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#

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 70 of 194

  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

Voici d'autres exemples de matrices de transformation :

Matrice de rotation : 90 degrés autour du point (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

Matrice de rotation : 45 degrés autour du 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

Matrice de transposition : déplacer une entité par (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

Matrice de mise à l'échelle : échelle par 10,10 au 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

Matrice de mise à l'échelle : échelle par 10,10 au 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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Prolongement ou ajustement d'objet


 

Vous pouvez modifier la longueur des objets (lignes ouvertes, arcs de cercle, polylignes ouvertes, arcs e lliptiques et splines ouvertes) et l'angle décrit par les
arcs. Vous obtenez ainsi des résultats similaires à l'application des commandes permettant de prolonger ou d'ajuster les objets.

Vous pouvez prolonger ou ajuster un objet en modifiant ses propriétés. Par exemple, pour allonger une ligne, modifiez les coordonnées de la propriété
StartPoint ou EndPoint. Pour modifier l'angle d'un arc, modifiez la propriété StartAngle ou EndAngle de l'arc. Une fois que vous avez modifié une ou plusieurs
propriétés d'un objet, utilisez la méthode Update pour visualiser vos modifications dans le dessin.

Pour de plus amples informations sur le prolongement et l'ajustement d'objets, reportez-vous à la section “Modification de l a taille ou de la forme des objets” du
Manuel d'utilisation .

Allongement d'une ligne

Dans cet exemple, l'utilisateur crée une ligne dont il modifie l'extrémité pour obtenir une ligne plus longue.

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

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 71 of 194

  ' endpoint to 4, 4, 4
endPoint(0) = 4
endPoint(1) = 4
endPoint(2) = 4
lineObj.endPoint = endPoint
lineObj.Update
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Décomposition des objets


 

Cette fonction permet de séparer les différents éléments qui constituent les objets sans que leur décomposition soit visible à l'écran. Vous pouvez, par exemple,
décomposer des lignes simples et des arcs à partir de polygones 3D, de polylignes, de maillages et de ré gions. La décomposition remplace une référence de
bloc par des copies des objets simples qui composent ce bloc.

Pour de plus amples informations sur la décomposition des objets, reportez-vous à la section “Dissociation des objets composés (Décomposer)” du Manuel
d'utilisation .

Décomposition d'une polyligne

Dans cet exemple, l'utilisateur crée une polyligne fine. Ensuite, il la décompose en objets distincts. L'exemple est alors répété pour les objets résultants, et une
boîte de message s'affiche avec le nom de chaque objet et son index dans la liste des objets décomposés.

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
Suivant
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification des polylignes


 

Les polylignes 2D et 3D, les rectangles, les polygones et les maillages 3D font partie de la famille des polylignes et peuvent donc être modifiés de la même
manière.

AutoCAD reconnaît les polylignes et les polylignes de type spline. Une polyligne de type spline utilise une courbe similaire à une courbe B-spline. Il existe deux
types de polylignes de type spline : quadratiques et cubiques. Ces deux polylignes sont gérées par la variable système SPLINETYPE. Une polyligne utilise des
courbes standard pour le lissage et adopte des directions de tangentes quelconques définies en fonction d'un sommet donné.

Pour modifier une polyligne, utilisez les propriétés et méthodes de l'objet LightweightPolyline ou Polyline Utilisez les propriétés suivantes pour ouvrir ou fermer
une polyligne, modifier les coordonnées d'un sommet de polyligne ou ajouter un sommet:

Closed, propriété
Ouvre ou ferme la polyligne.
Coordinates, propriété

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 72 of 194

Spécifie les coordonnées de chaque sommet dans la polyligne.


Méthode AddVertex
Ajoute un sommet à une polyligne fine.

Utilisez les méthodes suivantes pour mettre à jour la courbure ou la largeur d'une polyligne :

SetBulge
Définit la courbure d'une polyligne, suivant l'index de segment.
SetWidth
Définit le début et la fin d'une polyligne, suivant l'index de segment.

Pour de plus amples informations sur la modification des polylignes, reportez-vous à la section “Modification ou jonction des polylignes” du Manuel d'utilisation .

Modification d'une polyligne

Dans cet exemple, l'utilisateur crée une polyligne fine. Il ajoute ensuite une courbure au troisième segment de la polyligne, ajoute un sommet à la polyligne,
modifie la largeur du dernier segment et referme la polyligne.

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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification des splines


 

Utilisez les propriétés modifiables suivantes pour modifier les splines :

ControlPoints
Spécifie les points de contrôle d'une spline.
EndTangent
Spécifie la tangente de fin de la spline en tant que vecteur directionnel.
FitPoints
Spécifie tous les points de contrôle d'une spline.
FitTolerance
Lisse à nouveau la spline sur les points existants, avec de nouvelles valeurs de tolérance.
Knots
Spécifie les vecteurs de noeuds de l a spline.
StartTangent
Spécifie la tangente de début de la spline.

Vous pouvez également utiliser les méthodes suivantes pour modifier les splines:

AddFitPoint
Ajoute un point de lissage sur la spline à un index donné.
DeleteFitPoint
Supprime le point de lissage d'une spline à un index donné.
ElevateOrder
Elève l'ordre de la spline à l'ordre donné.
GetFitPoint
Obtient le point de lissage d'une spline à un index donné. (Obtient un seul point de lissage. Pour interroger tous les points de lissage de la spline, utilisez la
propriété FitPoints.)
Reverse
Inverse la direction d'une spline.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 73 of 194

SetControlPoint
Définit le point de contrôle de la spline à un index donné.
SetFitPoint
Définit le point de lissage de la spline à un index donné. (Définit un seul point de lissage. Pour modifier tous les points de lissage de la spline, utilisez la
propriété FitPoints.)
SetWeight
Définit le poids du point de contrôle à un index donné.

Utilisez les propriétés en lecture seule suivantes pour interroger les splines :

Area
Définit la zone fermée d'une spline.
Closed
Indique si la spline est ouverte ou fermée.
Degré
Obtient le degré de la représentation du polynôme de la spline.
IsPeriodic
Indique si la spline spécifiée est périodique.
IsPlanar
Indique si la spline spécifiée est planaire.
IsRational
Indique si la spline spécifiée est rationnelle.
NumberOfControlPoints
Obtient le nombre de points de contrôle de la spline.
NumberOfFitPoints
Obtient le nombre de points de lissage de la spline.

Pour de plus amples informations sur la modification des splines, reportez-vous à la section “Modification des splines” du Manuel d'utilisation .

Modification d'un point de contrôle d'une spline

Dans cet exemple, l'utilisateur crée une spline dont il modifie le premier point de contrôle.

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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification de hachures
 

Vous pouvez modifier aussi bien les contours q ue les motifs de hachures. S'il s'agit de hachures associatives, elles s'adaptent automatiquement au contour de
la zone à condition que les changements effectués figurent dans un contour approprié. Les hachures associatives s'adaptent au contour même si elles figurent
sur des calques désactivés. Vous pouvez modifier les motifs de hachure ou appliquer un nouveau motif à une zone hachurée, mais l'associativité peut
uniquement être définie lors de la création d'une hachure. Vous pouvez savoir si un objet Hatch est associatif en utilisant la propriété AssociativeHatch (Pour de
plus amples informations sur la création d'une hachure, reportez-vous à la méthode AddHatch

Vous devez réévaluer une hachure en utilisant l a méthode Evaluate afin de visualiser toutes l es modifications apportées à la hachure.

Pour de plus amples informations sur la modification des hachures, reportez-vous à la section “Modification des zones hachurées et des zones de remplissage
plein” du Manuel d'utilisation .

Rubriques de cette section :

 Modification de contours de hachures  

 Modification de motifs de hachures  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 74 of 194

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification de contours de hachures


 

Vous pouvez ajouter ou insérer des boucles dans les contours de hachures. Les hachures associatives sont mises à jour en fonction des modifications
apportées à leur contour. En revanche, les hachures non associatives ne tiennent pas compte de ces changements.

Pour modifier un contour de hachure, utilisez l'une des méthodes suivantes :

AppendInnerLoop
Ajoute une boucle interne à la hachure.
AppendOuterLoop
Ajoute une boucle externe à la hachure.
InsertLoopAt
Insère une boucle à un index donné d'une hachure.

Ajout d'une boucle interne à une hachure

Dans cet exemple, l'utilisateur crée une hachure a ssociative. Il crée ensuite un cercle qu'il ajoute à la hachure comme boucle interne.

Sub Ch4_AppendInnerLoopToHatch()
Dim hatchObj As AcadHatch
Dim patternName As String
Dim PatternType As Long
Dim bAssociativity As Boolean
' Define and create the hatch
patternName = "ANSI31"
PatternType = 0
bAssociativity = True
Set hatchObj = ThisDrawing.ModelSpace. _
AddHatch(PatternType, patternName, bAssociativity)
' Create the outer loop for the hatch.
Dim outerLoop(0 To 1) As AcadEntity
Dim center(0 To 2) As Double
Dim radius As Double
Dim startAngle As Double
Dim endAngle As Double
center(0) = 5: center(1) = 3: center(2) = 0
radius = 3
startAngle = 0
endAngle = 3.141592
Set outerLoop(0) = ThisDrawing.ModelSpace. _
AddArc(center, radius, startAngle, endAngle)
Set outerLoop(1) = ThisDrawing.ModelSpace. _
AddLine(outerLoop(0).startPoint, outerLoop(0).endPoint)
' Append the outer loop to the hatch object
hatchObj.AppendOuterLoop (outerLoop)
' Create a circle as the inner loop for the hatch.
Dim innerLoop(0) As AcadEntity
center(0) = 5: center(1) = 4.5: center(2) = 0
radius = 1
Set innerLoop(0) = ThisDrawing.ModelSpace. _
AddCircle(center, radius)
' Append the circle as an inner loop to the hatch
hatchObj.AppendInnerLoop (innerLoop)
' Evaluate and display the hatch
hatchObj.Evaluate
ThisDrawing.Regen True
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification de motifs de hachures


 

Vous pouvez modifier l'orientation et l'espacement d'un motif de hachures ou le remplacer par un objet plein ou un des motifs prédéfinis dans AutoCAD. Dans la
boîte de dialogue Hachures de contour, si vous cliquez sur le bouton Motif, une liste de motifs s'affiche. Pour réduire la taille des fichiers, la hachure est définie
dans un dessin comme un seul objet graphique.

Utilisez les propriétés et méthodes suivantes pour modifier les motifs de hachure :

PatternAngle
Spécifie l'angle du motif de hachure.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 75 of 194

PatternDouble
Indique si la hachure définie par l'utilisateur est hachurée deux fois.
PatternName
Spécifie le nom du motif de hachure (ne modifie pas le type du motif).
PatternScale
Spécifie l'échelle du motif de hachure.
PatternSpace
Spécifie l'espacement du motif de hachure défini p ar l'utilisateur.
SetPattern
Définit le nom et le type de motif de la hachure.

Modification de l'espacement du motif de hachure

Dans cet exemple, l'utilisateur crée une hachure. I l augmente ensuite de deux l'espacement du motif courant de la hachure.

Sub Ch4_ChangeHatchPatternSpace()
Dim hatchObj As AcadHatch
Dim patternName As String
Dim PatternType As Long
Dim bAssociativity As Boolean
' Define the hatch
patternName = "ANSI31"
PatternType = 0
bAssociativity = True
' Create the associative Hatch object
Set hatchObj = ThisDrawing.ModelSpace. _
AddHatch(PatternType, patternName, bAssociativity)
' Create the outer loop for the hatch.
Dim outerLoop(0 To 0) As AcadEntity
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 5
center(1) = 3
center(2) = 0
radius = 3
Set outerLoop(0) = ThisDrawing.ModelSpace. _
AddCircle(center, radius)
hatchObj.AppendOuterLoop (outerLoop)
hatchObj.Evaluate
' Change the spacing of the hatch pattern by
' adding 2 to the current spacing
hatchObj.patternSpace = hatchObj.patternSpace + 2
hatchObj.Evaluate
ThisDrawing.Regen True
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation de calques, couleurs et types de ligne


 

Les calques sont similaires à des couches transparentes dans lesquelles vous pouvez organiser et grouper différents types d'informations relatives au dessin.
Les objets que vous créez possèdent des propriétés telles que des calques, des couleurs et des types de ligne. La couleur vous permet de distinguer des
éléments similaires dans vos dessins et les types de ligne vous aident à différencier facilement les éléments de dessin tels que les axes ou les lignes cachées.
L'utilisation de plusieurs calques permet de définir votre propre système d'organisation des objets du dessin et de simplifier leur manipulation.

Pour de plus amples informations à ce sujet, reportez-vous à la section “Contrôle des propriétés des objets” du Manuel d'utilisation .

Rubriques de cette section :

 Utilisation des calques 

 Utilisation des couleurs  

 Utilisation des types de ligne  

 Affectation de calques, de couleurs et de types de ligne aux objets  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation des calques


 

Lorsque vous dessinez dans AutoCAD, vous travaillez systématiquement sur un calque. Il peut s'agir du calque proposé par défaut ou d'un autre que vous avez
créé et nommé. Chaque calque est associé à une couleur et à un type de ligne. Vous pouvez, par exemple, créer un calque destiné exclusivement aux axes et

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 76 of 194

lui attribuer le type de ligne CENTER et la couleur bleue. Ensuite, lorsque vous souhaitez tracer des axes, vous pouvez accéder à ce calque et commencer à
dessiner.

Tous les calques et types de ligne sont conservés au sein de leurs objets Collection parent. Les calques sont conservés dans la collection Layers et les types
de ligne dans la collection Linetypes

Pour de plus amples informations sur les calques, reportez-vous à la section “Utilisation des calques” du Manuel d'utilisation .

Rubriques de cette section :

 Tri des calques et des types de ligne  

 Création et appellation des calques  

 Activation d'un calque  

 Activation et désactivation des calques 

 Gel et libération des calques  

 Verrouillage et déverrouillage des calques  

 Affectation d'une couleur à un calque  

 Affectation d'un type de ligne à un calque 

 Suppression de calques  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Tri des calques et des types de ligne


 

Vous pouvez lancer une itération dans les collections Layers et Linetypes pour rechercher tous les calques et tous les types de lignes d'un dessin.

Itération via la collection Layers

Le code suivant itère via la collection Layers pour rassembler les noms de tous les calques dans le dessin. Les noms sont ensuite affichés dans une boîte de
message.

Sub Ch4_IteratingLayers()
Dim layerNames As String
Dim entry As AcadLayer
layerNames = ""
For Each entry In ThisDrawing.Layers
layerNames = layerNames + entry.Name + vbCrLf
Suivant
MsgBox "The layers in this drawing are: " + _
vbCrLf + layerNames
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création et appellation des calques


 

Vous pouvez créer des calques et l eur affecter des propriétés de couleur et de type de ligne. Chaque calque individuel fait partie de la collection Layers Utilisez
la méthode Add pour créer un calque et l'ajouter à la collection Layers.

Une fois un calque créé, vous pouvez lui attribuer un nom. Pour modifier le nom d'un calque après sa création, utilisez la propriété Name Les noms de calques
peuvent inclure jusqu'à 31 caractères et contenir d es lettres, des chiffres et les caractères spéciaux signe dollar ($), tiret (–) et caractère de soulignement (_),
mais ne peuvent pas  contenir d'espaces.

Pour de plus amples informations sur la création de calques, reportez-vous à la section “Création et appellation des calques” du Manuel d'utilisation .

Créez un calque, donnez-lui la couleur rouge et ajoutez-lui un objet

Le code suivant crée un cercle et un calque. Le calque se voit attribuer la couleur rouge. Le cercle est attribué au calque, et la couleur du cercle est modifiée en
conséquence.

Sub Ch4_NewLayer()
' 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

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 77 of 194

  Set circleObj = ThisDrawing.ModelSpace. _


AddCircle(center, radius)
' Create a color object
Dim col As New AcadAcCmColor
col.ColorMethod = AutoCAD.acColorMethodForeground
' Set the layer to the color
Dim layColor As AcadAcCmColor
Set layColor =
AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")
Call layColor.SetRGB(122, 199, 25)
ThisDrawing.ActiveLayer.TrueColor = layColor
col.ColorMethod = AutoCAD.acColorMethodByLayer
' Assign the circle the color "ByLayer" so
' that the circle will automatically pick
' up the color of the layer on which it resides
circleObj.Color = acByLayer
circleObj.Update
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Activation d'un calque


 

Lorsque vous dessinez, vous travaillez systématiquement sur le calque courant. Vous avez la possibilité de rendre actif un calque et d'y ajouter des objets. Si
vous rendez un autre calque actif, les nouveaux objets que vous créez seront associés à ce calque et adopteront sa couleur et son type de ligne. Vous ne
pouvez pas activer un calque s'il est gelé.

Pour rendre un calque actif, utilisez la propriété ActiveLayer Cette propriété est définie sur le dessin courant. Par exemple :

Dim newlayer As AcadLayer


Set newlayer = ThisDrawing.Layers.Add("LAYER1")
ThisDrawing.ActiveLayer = newlayer

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Activation et désactivation des calques


 

Les calques désactivés sont régénérés, mais ils ne sont ni affichés ni tracés. En désactivant les calques, vous évitez de régénérer le dessin à chaque fois que
vous libérez un calque. Lors de l'activation d'un calque désactivé, AutoCAD redessine les objets de ce calque.

Pour activer et désactiver les calques, utilisez la propriété LayerOn Si vous définissez cette propriété sur la valeur TRUE, le calque est activé. Si vous définissez
cette propriété sur la valeur FALSE, le calque est désactivé.

Désactivation d'un calque

Dans cet exemple, l'utilisateur crée un nouveau calque auquel il ajoute un cercle, puis désactive le calque de sorte que le cercle ne soit plus visible.

Sub Ch4_LayerInvisible()
' 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
' Turn off layer "ABC"
layerObj.LayerOn = False
ThisDrawing.Regen acActiveViewport
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 78 of 194

Gel et libération des calques


 

Vous pouvez geler des calques pour accélérer l 'exécution de commandes d'affichage, faciliter les opérations de sélection des objets et gagner du temps lors de
la régénération de dessins complexes. Les objets des calques gelés ne sont ni affichés, ni tracés, ni régénérés. Gelez les calques que vous voulez masquer
pendant une longue période. Lorsque vous libérez un calque gelé, AutoCAD régénère et affiche les objets qui s'y trouvent.

Pour geler ou libérer un calque, utilisez la propriété Freeze Si vous donnez la valeur TRUE à cette propriété, le calque est gelé. Si vous lui donnez la valeur
FALSE, le calque est libéré.

Gel d'un calque

Cet exemple crée un calque intitulé “ABC”, puis le gèle.

Sub Ch4_LayerFreeze()
' Create a new layer called "ABC"
Dim layerObj As AcadLayer
Set layerObj = ThisDrawing.Layers.Add("ABC")
' Freeze layer "ABC"
layerObj.Freeze = True
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Verrouillage et déverrouillage des calques


 

Vous ne pouvez pas modifier les objets situés sur un calque verrouillé, mais ils restent visibles si ce calque est actif et libéré. Vous avez la possibilité de rendre
actif un calque verrouillé et d'y ajouter des objets. Vous pouvez aussi geler et masquer des calques verrouillés, et changer les couleurs et les types de ligne qui
leur sont associés.

Pour verrouiller ou déverrouiller un calque, utilisez la propriété Lock Si vous donnez à cette propriété la valeur TRUE, le calque est verrouillé. Si vous lui donnez
la valeur FALSE, le calque est déverrouillé.

Verrouillage d'un calque

Cet exemple crée un calque intitulé “ABC”, puis le verrouille.

Sub Ch4_LayerLock()
' Create a new layer called "ABC"
Dim layerObj As AcadLayer
Set layerObj = ThisDrawing.Layers.Add("ABC")
' Lock layer "ABC"
layerObj.Lock = True
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Affectation d'une couleur à un calque


 

Vous pouvez attribuer une couleur à un calque. Les couleurs sont identifiées par l'objet AcCmColor Celui-ci peut avoir une valeur RVB, un nombre ACI (un
entier de 1 à 255) ou une couleur nommée.

Pour attribuer une couleur à un calque, utilisez la propriété TrueColor

Des constantes ont été fournies pour les sept couleurs standard et les désignations DUBLOC et DUCALQUE.

Si vous utilisez acByBlock, AutoCAD dessine les nouveaux objets dans la couleur par défaut (blanc ou noir selon la configuration) jusqu'à ce qu'ils soient
regroupés dans un bloc. Dès l'insertion du bloc dans le dessin, les objets de ce bloc héritent du paramètre actif.

Si vous choisissez acByLayer, les nouveaux objets adoptent la couleur du calque sur lequel ils se trouvent.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Affectation d'un type de ligne à un calque

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 79 of 194

Lorsque vous définissez des calques, les types de ligne vous permettent de transmettre des informations visuelles d'une autre façon. Un type de l igne est un
motif répété de tirets, de points et d'espaces servant à distinguer l'utilisation des lignes.

Le nom et la définition du type de ligne décrivent l'aspect du motif de base (ordre des tirets et pointillés, longueur relative des tirets et des espaces,
caractéristiques du texte ou des formes éventuellement ajoutés à la définition).

Pour attribuer un type de ligne à un calque, utilisez la propriété Linetype Cette propriété prend le nom du type de ligne comme entrée.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Suppression de calques
 

Pour supprimer un calque, utilisez la méthode Delete

Vous pouvez supprimer un calque à tout moment au cours d'une session de dessin. Il n'est pas possible de supprimer le calque courant, le calque 0, un calque
dépendant d'une référence externe ou un calque contenant des objets.

Remarque De même, les calques ré férencés par des définitions de blocs, ainsi que le calque spécial appelé DEFPOINTS, ne peuvent pas être supprimés,
même s'ils ne contiennent aucun objet visible.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation des couleurs


 

AutoCAD offre la possibilité d'attribuer des paramètres Couleurs vraies aux différents objets d'un dessin à l'aide de l'objet AcCmColor En utilisant une valeur
RVB dans l'objet AcCmColor, vous pouvez choisir parmi des milliers de couleurs celles qui définiront les lignes, les cercles et autres objets. L'objet AcCmColor
contient également des méthodes et propriétés qui définissent les noms des couleurs, leurs carnets, leurs index, leurs valeurs et leurs méthodes.

AutoCAD offre également la possibilité d'attribuer des couleurs aux calques. Chaque couleur peut être identifiée par un nom ou un nombre de l'index des
couleurs AutoCAD (ACI, AutoCAD Color Index), à savoir u n nombre entier compris entre 1 e t 255. La même couleur peut être affectée à plusieurs objets et
calques. Vous pouvez affecter chaque numéro de couleur à une plume différente (si vous disposez d'un traceur à plumes) ou utiliser les numéros de couleur
pour identifier certains éléments du dessin, même si les couleurs ne sont pas visibles à l'écran.

Pour spécifier une couleur, vous pouvez entrer son nom ou son numéro ACI. L'index ACI propose 255 numéros de couleur. Les couleurs 1 à 7 sont les seules à
posséder un nom standard.

Couleurs 1 à 7
Numéro de couleur Nom de couleur
1 Rouge
2 Jaune
3 Vert
4 Cyan
5 Bleu
6 Magenta
7 Noir/Blanc

Pour associer les couleurs 8 à 255 à des objets ou à des calques, vous devez indiquer leur numéro ou les sélectionner dans une boîte de dialogue. La couleur
par défaut (7) est le blanc ou le noir, en fonction de la couleur de fond.

Pour de plus amples informations sur les couleurs, reportez-vous à la section “Utilisation des couleurs” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation des types de ligne


 

Un type de ligne est un motif composé d'une succession de tirets, de points et d'espaces. De même, un type de ligne complexe est une suite de combinaisons
de symboles. Si vous souhaitez utiliser un type de ligne particulier, vous devez d'abord le charger dans le dessin. Dans ce cas, il e st indispensable que sa
définition figure dans un fichier de bibliothèque .lin avant de le charger dans un dessin. Pour charger un type de ligne dans un dessin, utilisez la méthode Load

Pour de plus amples informations sur les types de ligne, reportez-vous à la section “Présentation des types de ligne” du Manuel d'utilisation .

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 80 of 194

Remarque Ne confondez pas les types de ligne propres à AutoCAD et les types de ligne matériels que peuvent produire certains traceurs. Ces deux types de
ligne discontinues produisent le même effet. Il est toutefois déconseillé  de les utiliser simultanément, les résultats p ouvant être imprévisibles.

Chargement d'un type de ligne dans AutoCAD

Dans cet exemple, l'utilisateur essaie de charger l e type de ligne “CENTER” à partir du fichier acad.lin . Si le type de ligne existe déjà ou si le fichier n'existe pas,
un message s'affiche.

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

Rubriques de cette section :

 Activation d'un type de ligne  

 Attribution d'un nouveau nom aux types de ligne

 Suppression des types de ligne 

 Changement des descriptions des types de ligne  

 Spécification de l'échelle d'un type de ligne  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Activation d'un type de ligne


 

Pour utiliser un type de ligne à dessiner sur le calque courant, vous devez le rendre actif. Tous les nouveaux objets utilisent le type de ligne courant.

Remarque Vous ne pouvez pas activer les types de ligne dépendant de références externes.

Pour rendre un type de l igne actif, utilisez la propriété ActiveLinetype Cette propriété est définie sur le dessin courant. Par exemple :

ThisDrawing.ActiveLinetype = ThisDrawing. _
Linetypes.Item("CONTINUOUS")

Pour de plus amples informations sur l'activation des types de ligne, reportez-vous à la section “Définition du type de ligne courant” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Attribution d'un nouveau nom aux types de ligne

Pour renommer un type de ligne, utilisez la propriété Name Lorsque vous renommez un type de ligne, vous ne renommez que la définition du type de ligne dans
votre dessin. Le nom dans le fichier bibliothèque LIN n'est cependant pas modifié.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Suppression des types de ligne


 

Pour supprimer un type de ligne, utilisez la méthode Delete Vous pouvez supprimer un type de ligne à tout moment au cours d'une session de dessin ; toutefois,
il est interdit de supprimer les types de ligne DUCALQUE, DUBLOC, CONTINUOUS, le type de ligne actif et les types de ligne dépendant d'une référence
externe. Notez également que les types de ligne référencés par des définitions de blocs ne peuvent pas être supprimés, même s' ils ne sont utilisés par aucun
objet.

Pour de plus amples informations sur la suppression des types de ligne, reportez-vous à la section “Définition du type de ligne courant” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 81 of 194

Création et modification d'entités AutoCAD  

Changement des descriptions des types de ligne


 

Une description peut être associée aux types de ligne. La description fournit une représentation ASCII du type de ligne. Vous pouvez attribuer ou modifier une
description de type de ligne à l'aide de la propriété Description

Une description de type de ligne peut comporter jusqu'à 47 caractères. Il peut s'agir d'un commentaire ou d'une série de tirets de soulignement, de points, de
tirets et d'espaces représentant le modèle du type de ligne. Par exemple :

ThisDrawing.ActiveLinetype.Description = "Exterior Wall"

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Spécification de l'échelle d'un type de ligne


 

AutoCAD vous offre la possibilité de spécifier l'échelle appliquée aux types de ligne pour les objets que vous créez. Plus cette échelle est réduite, plus les motifs
sont nombreux par unité de dessin. Par défaut, l'échelle appliquée aux types de lignes dans AutoCAD est de 1, ce qui correspond à une unité de dessin. Vous
pouvez modifier l'échelle des types de ligne pour tous les objets, références d'attribut et groupes d'un dessin.

Pour modifier l'échelle d'un type de ligne, utilisez la propriété LinetypeScale

La variable système CELTSCALE permet de choisir l'échelle du type de ligne associé aux nouveaux objets. LTSCALE modifie de façon globale l'échelle du type
de ligne pour les objets existants et les nouveaux objets. Pour modifier les valeurs des variables système à l'aide de l'automatisation ActiveX d'AutoCAD,
utilisez la méthode SetVariable.

Pour de plus amples informations sur l'échelle des types de ligne, reportez-vous à la section “Contrôle de l'échelle d'un type de ligne” du Manuel d'utilisation .

Modification de l'échelle d'un type de ligne pour un cercle


Sub Ch4_ChangeLinetypeScale()
' Save the current linetype
Set currLineType = ThisDrawing.ActiveLinetype
' Change the active linetype to Border, so the scale change will
' be visible.
' First see if the Border linetype is already loaded
On Error Resume Next 'Turn on error trapping
ThisDrawing.ActiveLinetype = ThisDrawing.Linetypes.Item("BORDER")
If Err.Number = -2145386476 Then
' Error indicates linetype is not currently loaded, so load it.
ThisDrawing.Linetypes.Load "BORDER", "acad.lin"
ThisDrawing.ActiveLinetype = _
ThisDrawing.Linetypes.Item("BORDER")
End If
On Error GoTo 0 'Turn off error trapping
' Create a circle object in model space
Dim center(0 To 2) As Double
Dim radius As Double
Dim circleObj As AcadCircle
center(0) = 2
center(1) = 2
center(2) = 0
radius = 4
Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)
circleObj.Update
MsgBox ("Here is the circle with the original linetype")
' Set the linetype scale of a circle to 3
circleObj.LinetypeScale = 3#
circleObj.Update
MsgBox ("Here is the circle with the new linetype")
' Restore original active linetype
ThisDrawing.ActiveLinetype = currLineType
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Affectation de calques, de couleurs et de types de ligne aux objets


 

Après avoir défini les calques, les couleurs et les types de ligne, vous pouvez les affecter aux objets de votre dessin. Les composants associés d'un dessin
peuvent être groupés en assignant des objets à différents calques. AutoCAD vous permet de contrôler l'affichage du calque, la couleur et le type de ligne et de
spécifier si les objets d'un calque peuvent être édités. Vous pouvez déplacer les objets d'un calque à un autre et changer le nom d'un calque.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 82 of 194

Un dessin peut comporter un nombre quelconque de calques et chaque calque peut comporter un nombre illimité d'objets. AutoCAD vous donne la possibilité
d'attribuer un nom à vos d ifférents calques et de choisir librement ceux que vous voulez afficher.

Les blocs peuvent être définis à partir d'objets initialement dessinés sur des calques différents à l'aide de couleurs et de types de ligne distincts. Vous pouvez
conserver les informations relatives aux calques, aux couleurs et aux types de lignes des objets dans un bloc. Lorsque vous insérez celui-ci dans le dessin,
chaque objet reste sur son calque d'origine et conserve sa couleur et son type de ligne initial.

Rubriques de cette section :

 Modification du calque d'un objet  

 Modification de la couleur d'un objet  

 Modification du type de ligne d'un objet  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification du calque d'un objet


 

Après avoir créé un objet et lui avoir affecté des propriétés de calque, de couleur et de type de ligne, vous pouvez souhaiter changer le calque de l'objet. Il est
utile de changer le calque d'un objet si vous créez un objet accidentellement sur un mauvais calque ou si vous décidez de modifier l'organisation de vos calques
ultérieurement.

Pour changer le calque d'un objet, utilisez la propriété Layer fournie pour cet objet. Cette propriété prend le nom du calque comme entrée.

Placement d'un objet sur un calque différent

Cet exemple crée un cercle sur le calque actif puis un nouveau calque intitulé “ABC”. Le cercle est ensuite placé sur le nouveau calque.

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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification de la couleur d'un objet


 

Pour changer la couleur d'un objet, utilisez la propriété TrueColor de cet objet. AutoCAD offre la possibilité d'attribuer des couleurs aux différents objets d'un
dessin. Chaque couleur est identifiée par un objet AcCmColor Celui-ci peut avoir une valeur RVB, un nombre ACI (un entier de 1 à 255) ou une couleur
nommée. En utilisant une valeur RVB, vous avez le choix entre des millions de couleurs.

Lorsque vous attribuez une couleur à un objet, celle-ci remplace la couleur associée au calque auquel l'objet appartient. AutoCAD vous permet de changer la
couleur d'un objet, si vous souhaitez le laisser sur un calque donné sans conserver la couleur associée à ce calque.

Modification de la couleur d'un cercle

Dans cet exemple, l'utilisateur crée un cercle qu'il colorie en bleu.

Sub Ch4_ColorCircle()
Dim color As AcadAcCmColor
Set color = _
AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")
Call color.SetRGB(80, 100, 244)
Dim circleObj As AcadCircle
Dim centerPoint(0 To 2) As Double
Dim radius As Double
centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
radius = 5#
Set circleObj = _
ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 83 of 194

  circleObj.TrueColor = color
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification du type de ligne d'un objet


 

Par défaut, les objets héritent du type de ligne du calque sur lequel ils sont créés. Pour changer le type de ligne d'un objet, utilisez la propriété Linetype fournie
pour cet objet. Elle prend comme entrée le nom du type de ligne et l'attribue à l'objet.

Remarque Avant de pouvoir attribuer un type de ligne à un objet, le type de ligne doit être chargé dans le dessin actif. Pour charger un type de ligne dans un
dessin, utilisez la méthode Load.

Pour de plus amples informations sur les types de ligne, reportez-vous à la section “Présentation des types de ligne” du Manuel d'utilisation .

Modification du type de ligne d'un cercle

Dans cet exemple, l'utilisateur crée un cercle. Il essaie ensuite de charger le type de ligne “CENTER” à partir du fichier acad.lin . Si le type de ligne existe déjà
ou si le fichier n'existe pas, un message s'affiche. Le type de ligne défini pour le cercle est “CENTER”..

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

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Enregistrement et restauration des paramètres des calques


 

Il est possible d'enregistrer les paramètres de calques et de les recharger ultérieurement. Ceci vous permet de réactiver rapidement des paramètres précis pour
tous les calques à diverses étapes de la création ou du traçage de vos dessins.

Les paramètres d'un calque comportent diverses informations : son activation, son gel, son verrouillage, son traçage, son gel automatique dans les nouvelles
fenêtres, ainsi que la couleur, le type et l'épaisseur de ligne et le style du tracé. Vous pouvez indiquer quels paramètres vous souhaitez enregistrer et créer
différents groupes de paramètres pour un même dessin.

Un objet spécial, LayerStateManager, offre des fonctions de manipulation de paramètres de calques via ActiveX.

Pour de plus amples informations sur l'enregistrement des paramètres de calques, reportez-vous à la section “Enregistrement et restauration des paramètres
des calques” du Manuel d'utilisation .

Rubriques de cette section :

 AutoCAD et l'enregistrement des paramètres de calques 

 Gestion des paramètres de calques avec LayerStateManager 

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

AutoCAD et l'enregistrement des paramètres de calques

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 84 of 194

AutoCAD enregistre les informations concernant les calques dans un d ictionnaire d'extensions au sein de la collection Layers du dessin. Lors du premier
enregistrement des paramètres de calques dans un dessin, AutoCAD effectue les opérations suivantes :

 Il crée un dictionnaire d'extensions dans la collection Layers.


 Il crée un objet Dictionary appelé ACAD_LAYERSTATE dans le dictionnaire d'extensions.
 Il stocke les propriétés de chaque calque du dessin dans un objet XRecord situé dans le dictionnaire ACAD_LAYERSTATE. AutoCAD place tous les
paramètres de calques dans l'objet XRecord, mais identifie les paramètres spécifiques que vous souhaitez enregistrer. Lorsque vous restaurez les
paramètres de calques, AutoCAD ne restaure que les paramètres que vous avez enregistrés.

A chaque fois que vous e nregistrez un nouveau paramètre de calque, AutoCAD crée un nouvel objet XRecord décrivant les paramètres enregistrés, puis le
place dans le dictionnaire ACAD_LAYERSTATE. Le diagramme ci-dessous illustre ce processus.

Il n'est pas nécessaire (ni même souhaitable) d'interpréter les objets XRecord lorsque vous manipulez les paramètres de calques avec ActiveX. Utilisez les
fonctions LayerStateManager pour accéder aux paramètres de calques enregistrés.

Affichage des paramètres de calques enregistrés d'un dessin

L'exemple suivant permet d'afficher le nom de tous les paramètres enregistrés du dessin actif :

Sub Ch4_ListStates()
On Error Resume Next
Dim oLSMDict As AcadDictionary
Dim XRec As Object
Dim layerstateNames As String
layerstateNames = ""
' Get the ACAD_LAYERSTATES dictionary, which is in the
' extension dictionary in the Layers object.
Set oLSMDict = ThisDrawing.Layers. _
GetExtensionDictionary.Item("ACAD_LAYERSTATES")
' List the name of each saved layer setting. Settings are
' stored as XRecords in the dictionary.
For Each XRec In oLSMDict
layerstateNames = layerstateNames + XRec.Name + vbCrLf
Next XRec
MsgBox "The saved layer settings in this drawing are: " + _
vbCrLf + layerstateNames
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Gestion des paramètres de calques avec LayerStateManager


 

L'objet LayerStateManager est semblable à l'objet Utility d'AutoCAD, en ce sens qu'il offre un ensemble de fonctions dédiées à la manipulation des données.
Ces fonctions sont des méthodes qui permettent d'utiliser les paramètres de calques enregistrés. Utilisez les méthodes LayerStateManager ci-dessous pour
manipuler les paramètres de calques enregistrés :

Delete
Supprime un paramètre enregistré.
Export
Exporte un paramètre enregistré dans un fichier.
Import
Importe un paramètre enregistré depuis le fichier spécifié.
Rename
Renomme un paramètre enregistré.
Restore
Charge un paramètre enregistré dans le dessin actif.
Save
Enregistre les états et les propriétés du calque spécifié.
SetDataBase
Associe une base de données AutoCAD à LayerStateManager.

Pour accéder à l'objet LayerStateManager, utilisez la méthode GetInterfaceObject

Dim oLSM As AcadLayerStateManager

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 85 of 194

Set oLSM = ThisDrawing.Application. _


GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")

Après avoir chargé l'objet LayerStateManager, vous devez lui associer une base de données pour pouvoir accéder à ses méthodes. Utilisez la méthode
SetDatabase pour associer une base de données à LayerStateManager.

oLSM.SetDatabase ThisDrawing.Database

Rubriques de cette section :

 Enregistrement des paramètres de calques  

 Restauration des paramètres de calques  

 Exportation et importation de paramètres enregistrés  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Enregistrement des paramètres de calques


 

La méthode Save permet d'enregistrer un ensemble de paramètres de calques dans un dessin. Elle demande deux paramètres. Le premier est une chaîne de
caractères représentant le nom des paramètres que vous enregistrez. Le second identifie les propriétés de calques que vous souhaitez enregistrer. Utilisez les
constantes du tableau suivant pour identifier ces propriétés.

Constantes à utiliser pour les propriétés de calques


Nom de la constante Layer, propriété
acLsAll Tous les paramètres de calques
acLsColor Color
acLsFrozen Gelé ou libéré
acLsLineType Linetype
acLsLineWeight Epaisseur de ligne
acLsLocked Verrouillé ou déverrouillé
acLsNewViewport Calques gelés ou libérés dans une nouvelle fenêtre
acLsNone Aucune
acLsOn Activé ou désactivé
acLsPlot Tracé activé ou désactivé
acLsPlotStyle Style du tracé

Ajoutez les constantes entre elles pour spécifier plusieurs propriétés.

Si vous tentez d'enregistrer les paramètres de calques sous un nom déjà attribué, u ne erreur est renvoyée. Vous devrez dans ce cas renommer ou supprimer
les paramètres précédemment enregistrés si vous souhaitez réutiliser ce nom.

Enregistrement des paramètres de couleur et de type de ligne d'un calque

L'exemple suivant permet d'enregistrer la couleur et le type de ligne du calque actif sous le nom ColorLinetype. 

Sub Ch4_SaveLayerColorAndLinetype()
Dim oLSM As AcadLayerStateManager
' Access the LayerStateManager object
Set oLSM = ThisDrawing.Application. _
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
' Associate the current drawing database with LayerStateManager
oLSM.SetDatabase ThisDrawing.Database
oLSM.Save "ColorLinetype", acLsColor + acLsLineType
End Sub

Modification du nom d'un paramètre de calque enregistré

L'exemple suivant renomme les paramètres ColorLinetypeOldColorLinetype.

Sub Ch4_RenameLayerSettings()
Dim oLSM As AcadLayerStateManager
Set oLSM = ThisDrawing.Application. _
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
oLSM.SetDatabase ThisDrawing.Database
oLSM.Rename "ColorLinetype", "OldColorLinetype"
End Sub

Suppression d'un paramètre enregistré

L'exemple suivant supprime des paramètres de calques enregistrés sous le nom ColorLinetype. 

Sub Ch4_DeleteColorAndLinetype()
Dim oLSM As AcadLayerStateManager
Set oLSM = ThisDrawing.Application. _

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 86 of 194

  GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
oLSM.SetDatabase ThisDrawing.Database
oLSM.Delete "ColorLinetype"
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Restauration des paramètres de calques


 

La méthode Restore charge, pour tous les paramètres de calques du dessin actif, les valeurs précédemment enregistrées. Par exemple, si vous enregistrez les
couleurs et les types de ligne d'un dessin sous le nom “ColorLinetype”, les modifiez, puis restaurez “ColorLinetype”, vos modifications seront perdues. Si vous
ajoutez des calques après avoir enregistré “ColorLinetype”, ils ne seront pas affectés par la restauration de “ColorLinetype”.

Restauration des paramètres de couleurs et de types de ligne des calques d'un dessin

Si les couleurs et les types de ligne des calques du dessin actif ont été enregistrés sous le nom “ColorLinetype”, l'exemple suivant permet de redonner à ces
paramètres (pour chaque calque du dessin) la valeur qu'ils avaient lors de la création du fichier “ColorLinetype”.

Sub Ch4_RestoreLayerSettings()
Dim oLSM As AcadLayerStateManager
Set oLSM = ThisDrawing.Application. _
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
oLSM.SetDatabase ThisDrawing.Database
oLSM.Restore "ColorLinetype"
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Exportation et importation de paramètres enregistrés


 

Vous pouvez exporter et importer les paramètres de calques enregistrés afin de les utiliser d ans d'autres dessins. Utilisez la méthode Export de l'objet
LayerStateManager pour exporter les paramètres dans un fichier et la méthode Import pour les importer dans un dessin.

Remarque Le fait d'importer des paramètres de calques ne les réinitialise pas ; vous devez utiliser la méthode Restore pour que vos calques prennent en
compte les paramètres importés.

La méthode Export attend deux paramètres. Le premier est une chaîne identifiant les paramètres enregistrés que vous exportez. Le second est le nom du
fichier dans lequel vous les exportez. Si vous ne spécifiez pas le chemin d'accès au fichier, il est placé dans le répertoire d'installation d'AutoCAD. Si un fichier
porte déjà le nom que vous spécifiez, il est écrasé. Utilisez l'extension . las  lorsque vous tapez le nom du fichier : il s'agit de l'extension qu'AutoCAD attribue par
défaut aux fichiers de paramètres de calques.

La méthode Import accepte un paramètre : une chaîne nommant le fichier qui contient les paramètres de calques que vous importez.

Lorsque vous importez les paramètres d'un calque, une erreur est signalée si certaines des propriétés référencées dans le fichier ne sont pas disponibles dans
le dessin actif. L'importation est cependant effectuée, bien que les propriétés par défaut soient u tilisées. Par exemple, si un calque exporté contient un type de
ligne qui n'est pas chargé dans le dessin dans lequel vous l'importez, une erreur est signalée et le type de ligne par défaut du dessin lui est substitué. Il est
conseillé de prévoir cette erreur dans votre programme, et de laisser le traitement se terminer.

Si le fichier importé contient des paramètres de calques qui n'existent pas dans le dessin actif, ces calques sont créés. Lorsque vous utilisez la méthode
Restore, les propriétés spécifiées au moment de l'enregistrement des paramètres sont affectées aux nouveaux calques ; les autres propriétés des nouveaux
calques prennent les paramètres par défaut.

Exportation des paramètres enregistrés

L'exemple suivant exporte les paramètres de calques enregistrés dans le fichier Colortype.las .

Sub Ch4_ExportLayerSettings()
Dim oLSM As AcadLayerStateManager
Set oLSM = ThisDrawing.Application. _
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
oLSM.SetDatabase ThisDrawing.Database
oLSM.Export "ColorLinetype", "c:\my documents\ColorLType.las"
End Sub

Importation de paramètres enregistrés

L'exemple suivant importe les paramètres de calques depuis le fichier Colortype.las .

Sub Ch4_ImportLayerSettings()
Dim oLSM As AcadLayerStateManager
Set oLSM = ThisDrawing.Application. _
GetInterfaceObject("AutoCAD.AcadLayerStateManager.17")
oLSM.SetDatabase ThisDrawing.Database

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 87 of 194

  ' If the drawing you're importing to does not contain


' all the linetypes referenced in the saved settings,
' an error is returned. The import is completed, though,
' and the default linetype is used.
On Error Resume Next
oLSM.Import "c:\my documents\ColorLType.las"
If Err.Number = -2145386359 Then
' Error indicates a linetype is not defined
MsgBox ("One or more linetypes specified in the imported " + _
"settings is not defined in your drawing")
End If
On Error GoTo 0
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Ajout de texte aux dessins


 

Le texte est un moyen d'enrichir vos dessins par des informations importantes. Vous avez besoin d'insérer du texte pour remplir les cartouches, identifier les
différentes parties d'un dessin, spécifier les caractéristiques techniques ou ajouter des annotations.

AutoCAD offre différentes méthodes de création de texte. Pour les entrées uniques et courtes, entrez de simples lignes de texte. Pour les entrées plus longues
comportant du formatage, utilisez des paragraphes de texte. Bien que le texte que vous entrez adopte par défaut les caractéristiques et la police définies par le
style courant, vous pouvez personnaliser la présentation du texte par diverses méthodes.

Pour de plus amples informations sur l'utilisation du texte, reportez-vous à la section “Création de texte” du Manuel d'utilisation .

Rubriques de cette section :

 Utilisation de styles de texte  

 Utilisation des lignes de texte  

 Utilisation de texte multiligne (Textmult)  

 Utilisation de caractères Unicode, de codes de contrôle et de caractères spéciaux 

 Polices de substitution  

 Vérification orthographique  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation de styles de texte


 

Tout texte contenu dans un dessin AutoCAD est associé à un style. Lorsque vous saisissez du texte, la police, la taille, l'angle, l'orientation et toutes les autres
caractéristiques spécifiques au texte sont déterminées par le style de texte courant. Vous pouvez utiliser ou modifier le style par défaut ou créer et charger un
nouveau style. Une fois un style créé, vous pouvez modifier ses attributs, changer son nom ou supprimer ce style s'il ne vous est plus utile.

Rubriques de cette section :

 Définition et modification des styles de texte  

 Affectation des polices 

 Utilisation de polices TrueType  

 Utilisation de polices Unicode et de polices de grande taille  

 Définition de la hauteur du texte  

 Définition de l'angle d'inclinaison 

 Configuration d'un drapeau de génération de texte 

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Définition et modification des styles de texte


 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 88 of 194

Le nouveau texte adopte les caractéristiques (hauteur, expansion ou compression, inclinaison, orientation, inscription à l'envers ou inversion et alignement) du
style de texte courant. Pour créer u n style de texte, utilisez la méthode Add pour créer un objet TextStyle et l'ajouter à la collection TextStyles La méthode Add
prend un nom de style d e texte comme entrée. Une fois un style de texte créé, vous ne pouvez pas modifier son nom via l'Automatisation ActiveX d'AutoCAD.

Les noms de styles peuvent contenir des lettres, des chiffres et des caractères spéciaux tels que le dollar ($), le trait d'union (-) et le trait de soulignement (_).
AutoCAD convertit le nom en lettres majuscules. Si vous n'entrez pas de nom de style, AutoCAD le nomme automatiquement Style n , n  étant un nombre
commençant à 1. Chaque nouveau style est incrémenté de 1.

Vous pouvez modifier un style existant en changeant les propriétés de l'objet TextStyle. Vous pouvez également mettre à jour le t exte présentant ce style afin
qu'il prenne vos modifications en compte. Pour modifier un objet TextStyle, utilisez les propriétés suivantes :

FontFile
Spécifie le fichier associé à une police (style des caractères).
BigFontFile
Spécifie le fichier de définition de la forme des caractères utilisé pour un jeu de caractères non-ASCII.
Height
Spécifie la hauteur des caractères.
Width
Spécifie l'extension ou la compression des caractères.
ObliqueAngle
Spécifie l'inclinaison des caractères.
TextGenerationFlag
Spécifie un texte écrit à l'envers, renversé ou les deux.

Lorsque vous modifiez la police ou l'orientation d'un style, AutoCAD régénère tout texte utilisant ce style en fonction de la nouvelle police ou orientation. La
modification de la hauteur du texte, du facteur d'extension/compression et de l'angle d'inclinaison n'affecte pas le texte existant, mais modifie les objets texte
créés ultérieurement.

Remarque Vous devez appeler la méthode Regen ou Update pour visualiser toutes les modifications apportées aux propriétés ci-dessus.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Affectation des polices


 

Une police définit un ensemble de caractères de même aspect. Une même police peut être utilisée par différents styles de texte. Pour affecter une police à un
style de texte, utilisez la propriété FontFile de l'objet TextStyle En entrant le fichier de police contenant une police SHX d'AutoCAD, vous attribuez cette police
au style de texte.

Définition des polices de texte

Cet exemple applique les valeurs de police courantes au style de texte actif, puis utilise la police “PlayBill”.La nouvelle police est alors définie à l'aide de la
méthode SetFont. Pour constater l'effet du changement de police, ajoutez un objet Mtext ou Text à votre dessin avant d'exécuter l'exemple. Si la police PlayBill
n'est pas installée sur votre ordinateur, utilisez l 'une de vos polices dans l' exemple.

Sub Ch4_UpdateTextFont()
MsgBox ("Look at the text now...")
Dim typeFace As String
Dim SavetypeFace As String
Dim Bold As Boolean
Dim Italic As Boolean
Dim charSet As Long
Dim PitchandFamily As Long
' Get the current settings to fill in the
' default values for the SetFont method
ThisDrawing.ActiveTextStyle.GetFont typeFace, _
Bold, Italic, charSet, PitchandFamily
' Change the typeface for the font
SavetypeFace = typeFace
typeFace = "PlayBill"
ThisDrawing.ActiveTextStyle.SetFont typeFace, _
Bold, Italic, charSet, PitchandFamily
ThisDrawing.Regen acActiveViewport
MsgBox ("Now see how it looks after changing the font...")
'Restore the original typeface
ThisDrawing.ActiveTextStyle.SetFont SavetypeFace, _
Bold, Italic, charSet, PitchandFamily
ThisDrawing.Regen acActiveViewport
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation de polices TrueType


 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 89 of 194

Les polices TrueType s'affichent toujours pleines dans le dessin ; cependant, lors du traçage, la variable système TEXTFILL régit le remplissage des polices.
Par défaut, TEXTFILL a pour valeur 1 pour tracer les polices pleines. Lorsque vous exportez votre dessin au format PostScript  ®  à l'aide de la méthode Export et
l'imprimez sur une imprimante PostScript, la police est tracée comme spécifié.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation de polices Unicode et de polices de grande taille


 

AutoCAD est compatible avec la norme de codage des caractères Unicode. Une police Unicode peut contenir 65535 caractères, avec des formes utilisées dans
de nombreuses langues. Toutes les polices SHX propres à AutoCAD sont à présent des polices Unicode.

Certains alphabets utilisent des fichiers texte comportant des milliers d e caractères non-ASCII. Pour gérer ces types de fichier, AutoCAD fournit un fichier de
définition des caractères particulier (fichier de grandes polices). Vous pouvez définir un style utilisant à la fois des fichiers de police normale et de grande police.
Pour spécifier des polices normales, utilisez la propriété FontFile Pour spécifier des polices de grande taille, utilisez la propriété BigFontFile

Remarque Les noms de fichiers de polices ne doivent pas contenir de virgules.

AutoCAD vous permet de remplacer une police par une autre et de choisir la police par défaut. Pour de plus amples informations à ce sujet, reportez-vous à la
section Polices de substitution.

Modification des fichiers de polices

Cet exemple modifie les propriétés FontFile et BigFontFile. Vous devez remplacer les informations de chemin d'accès données dans cet exemple par les noms
de chemin et de fichier a ppropriés à votre système.

Sub Ch4_ChangeFontFiles()
ThisDrawing.ActiveTextStyle.BigFontFile = _
"C:/AutoCAD/Fonts/bigfont.shx"
ThisDrawing.ActiveTextStyle.fontFile = _
"C:/AutoCAD/Fonts/italic.shx"
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Définition de la hauteur du texte


 

La hauteur de texte détermine, en unités de dessin, la taille des lettres dans la police utilisée. Cette valeur représente en général la taille des majuscules, sauf
dans le cas des polices TrueType.

Pour ces dernières, la valeur spécifiée correspondant à la hauteur du texte peut ne pas représenter la hauteur des lettres majuscules. La hauteur spécifiée
représente la hauteur d'une lettre majuscule plus une zone réservée aux accents et autres marques utilisées dans les langues autres que l'anglais. La partie
relative des zones affectées aux lettres majuscules et aux caractères accentués est déterminée par l'auteur de la police au moment de la conception de cette
dernière et par conséquent varie d'une police à l'autre.

En plus de la hauteur d'une lettre majuscule et de la zone d'ascension comprises dans la hauteur spécifiée par l'utilisateur, les polices TrueType ont une zone
de descente pour les parties de caractères qui se prolongent sous la ligne d'insertion de texte. Les caractères y, j, p, g et q en sont quelques exemples.

Pour spécifier la hauteur du texte, utilisez la propriété Height Cette propriété accepte uniquement des nombres positifs.

Modification de la hauteur d'un objet Text

Cet exemple crée une ligne de texte, puis modifie sa hauteur.

Sub Ch4_ChangeTextHeight()
Dim textObj As AcadText
Dim textString As String
Dim insertionPoint(0 To 2) As Double
Dim height As Double
' Define the text object
textString = "Hello, World."
insertionPoint(0) = 3
insertionPoint(1) = 3
insertionPoint(2) = 0
height = 0.5
' Create the text object in model space
Set textObj = ThisDrawing.ModelSpace. _
AddText(textString, insertionPoint, height)
' Change the value of the Height to 1
textObj.height = 1
textObj.Update
End Sub

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 90 of 194

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Définition de l'angle d'inclinaison


 

L'angle d'inclinaison fixe le degré d'inclinaison des caractères vers la droite ou la gauche. L'angle représente le décalage par rapport à son axe vertical (90
degrés). Pour définir l'angle d'inclinaison, utilisez la propriété ObliqueAngle L'angle d'inclinaison doit être exprimé en radians. Un a ngle positif spécifie une
inclinaison vers la droite, une valeur négative se voit ajouter 2*PI pour être convertie en son équivalent positif.

Création d'un texte oblique

Cet exemple crée un objet Text qui est ensuite incliné de 45 degrés.

Sub Ch4_ObliqueText()
Dim textObj As AcadText
Dim textString As String
Dim insertionPoint(0 To 2) As Double
Dim height As Double
' Define the text object
textString = "Hello, World."
insertionPoint(0) = 3
insertionPoint(1) = 3
insertionPoint(2) = 0
height = 0.5
' Create the text object in model space
Set textObj = ThisDrawing.ModelSpace. _
AddText(textString, insertionPoint, height)
' Change the value of the ObliqueAngle
' to 45 degrees (.707 radians)
textObj.ObliqueAngle = 0.707
textObj.Update
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Configuration d'un drapeau de génération de texte


 

Le drapeau de génération de texte indique si le texte est affiché de droite à gauche ou inversé. Pour définir ce drapeau, utilisez la propriété TextGenerationFlag
Pour afficher le texte de droite à gauche, entrez acTextFlagBackward pour cette propriété. Pour afficher le texte inversé, entrez acTextFlagUpsideDown 
pour cette propriété. Pour combiner ces deux attributs, entrez acTextFlagBackward+acTextFlagUpsidedown pour cette propriété.

Affichage de texte de droite à gauche

Cet exemple crée une ligne de texte, puis l'affiche de droite à gauche à l'aide de la propriété TextGenerationFlag.

Sub Ch4_ChangingTextGenerationFlag()
Dim textObj As AcadText
Dim textString As String
Dim insertionPoint(0 To 2) As Double
Dim height As Double
' Create the text object
textString = "Hello, World."
insertionPoint(0) = 3
insertionPoint(1) = 3
insertionPoint(2) = 0
height = 0.5
Set textObj = ThisDrawing.ModelSpace. _
AddText(textString, insertionPoint, height)
' Change the value of the TextGenerationFlag
textObj.TextGenerationFlag = acTextFlagBackward
textObj.Update
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation des lignes de texte


 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 91 of 194

Le texte que vous ajoutez aux dessins contient diverses informations. Il peut s'agir d'une spécification complexe, d'un cartouche, d'un libellé ou même d'une
partie du dessin. Pour des entrées plus courtes ne requérant pas plusieurs polices ou lignes, créez des lignes de texte à l'aide de l'objet Text. Les lignes de
texte conviennent davantage aux libellés.

Rubriques de cette section :

 Création d'une ligne de texte  

 Formatage des lignes de texte  

 Alignement des lignes de texte  

 Modification des lignes de texte  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création d'une ligne de texte


 

Lors de l'utilisation de lignes de texte, chaque ligne de texte individuelle est un objet distinct. Pour créer un objet LineText, utilisez la méthode AddText Cette
méthode requiert la saisie de trois valeurs : la chaîne de texte, le point d'insertion et la hauteur du texte.

La chaîne de texte est le texte lui-même à afficher. Les caractères Unicode, les codes de contrôle et les caractères spéciaux sont acceptés. Le point d' insertion
est un tableau de type Variant qui contient trois coordonnées doubles représentant les coordonnées SCG 3D où placer le texte dans le dessin. La hauteur du
texte est un nombre positif représentant la hauteur du texte en majuscules. Elle est mesurée en unités courantes.

Pour créer une ligne de texte

L'exemple suivant crée une ligne de texte dans l'espace objet à la coordonnée (2, 2, 0).

Sub Ch4_CreateText()
Dim textObj As AcadText
Dim textString As String
Dim insertionPoint(0 To 2) As Double
Dim height As Double
' Create the text object
textString = "Hello, World."
insertionPoint(0) = 2
insertionPoint(1) = 2
insertionPoint(2) = 0
height = 0.5
Set textObj = ThisDrawing.ModelSpace. _
AddText(textString, insertionPoint, height)
textObj.Update
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Formatage des lignes de texte


 

Un objet Text prend, lors de sa création, le style de texte actif. Vous pouvez modifier le formatage de l'objet Text en changeant son style de texte associé ou en
modifiant ses propriétés. Il est impossible  d'appliquer des formats à des mots et caractères individuels.

Pour modifier un style de texte associé à un objet Text individuel, définissez la propriété StyleName sur un nouveau style de texte. Une fois un style de texte
modifié, utilisez la méthode Update de l'objet Text pour visualiser les modifications dans le dessin.

En plus des propriétés modifiables standard des entités (couleur, calque, type de ligne, etc.), d' autres propriétés que vous pouvez modifier sur un objet Text
sont les suivantes :

Alignment
Spécifie l'alignement horizontal et vertical du texte.
InsertionPoint
Spécifie le point d'insertion du texte.
ObliqueAngle
Spécifie l'angle d'inclinaison de l'objet Text individuel.
Rotation
Spécifie l'angle de rotation en radians du texte.
ScaleFactor
Spécifie le facteur d'échelle du texte.
TextAlignmentPoint
Spécifie le point d'alignement du texte.
TextGenerationFlag
Indique si le texte est affiché de gauche à droite, inversé ou les deux simultanément.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 92 of 194

TextString
Spécifie la chaîne de texte affichée.

Une fois la propriété modifiée, utilisez la méthode Update pour visualiser les modifications dans le dessin.

Remarque Pour obtenir la liste complète des méthodes et propriétés, reportez-vous à la documentation sur l'objet Text dans le manuel AutoCADActiveX and
VBA Reference .

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Alignement des lignes de texte


 

Vous pouvez justifier horizontalement et verticalement des lignes de texte. L'alignement s'effectue à gauche par défaut. Pour définir les options d'alignement
horizontal et vertical, utilisez la propriété Alignment

Réalignement de texte

Dans cet exemple, l'utilisateur crée un objet Text et un objet Point. L'objet Point est défini sur le point d'alignement du texte et prend la forme d'un réticule rouge
pour être facilement repéré. L'alignement du texte est modifié et une boîte de message s'affiche pour suspendre l'exécution de la macro. Vous pouvez alors
constater la modification de l'alignement du texte.

Sub Ch4_TextAlignment()
Dim textObj As AcadText
Dim textString As String
Dim insertionPoint(0 To 2) As Double
Dim height As Double
' Define the new Text object
textString = "Hello, World."
insertionPoint(0) = 3
insertionPoint(1) = 3
insertionPoint(2) = 0
height = 0.5
' Create the Text object in model space
Set textObj = ThisDrawing.ModelSpace. _
AddText(textString, insertionPoint, height)
' Create a point over the text alignment point,
' so we can better visualize the alignment process
Dim pointObj As AcadPoint
Dim alignmentPoint(0 To 2) As Double
alignmentPoint(0) = 3
alignmentPoint(1) = 3
alignmentPoint(2) = 0
Set pointObj = ThisDrawing.ModelSpace. _
AddPoint(alignmentPoint)
pointObj.Color = acRed
' Set the point style to crosshair
ThisDrawing.SetVariable "PDMODE", 2
' Align the text to the Left
textObj.Alignment = acAlignmentLeft
ThisDrawing.Regen acActiveViewport
MsgBox "The Text object is now aligned left"
' Align the text to the Center
textObj.Alignment = acAlignmentCenter
' Align the text to the point (necessary for
' all but left aligned text.)
textObj.TextAlignmentPoint = alignmentPoint
ThisDrawing.Regen acActiveViewport
MsgBox "The Text object is now centered"
' Align the text to the Right
textObj.Alignment = acAlignmentRight
ThisDrawing.Regen acActiveViewport
MsgBox "The Text object is now aligned right"
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Modification des lignes de texte


 

L'objet Text peut subir les mêmes modifications que tous les autres objets d'AutoCAD (déplacement, rotation, suppression et copie). Vous pouvez également
créer une copie miroir d'un texte. Pour éviter que le texte soit inversé lors d'une opération de copie-miroir, affectez la valeur 0 à la variable système MIRRTEXT.

La liste suivante présente quelques méthodes d'édition d'un objet Text. Pour obtenir une liste complète, reportez-vous à la documentation sur l'objet Text dans
le manuel ActiveX and VBA Reference  d'AutoCAD.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 93 of 194

ArrayPolar
Crée un réseau polaire.
ArrayRectangular
Crée un réseau rectangulaire.
Copy
Copie l'objet Text.
Erase
Efface l'objet Text.
Mirror
Réfléchit l'objet Text.
Move
Déplace l'objet Text.
Rotate
Fait pivoter l'objet Text.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation de texte multiligne (Textmult)


 

Pour les entrées longues et complexes, créez des paragraphes de texte à l'aide de la commande textmult. Un texte multiligne occupe une largeur spécifiée
mais peut s'étendre verticalement de façon indéfinie. Il est possible d'appliquer un format particulier à chacun des mots ou caractères au sein du paragraphe.

Rubriques de cette section :

 Création d'un texte multiligne  

 Formatage d'un texte multiligne  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Création d'un texte multiligne


 

Vous pouvez créer un paragraphe de texte (objet MText) à l'aide de la méthode AddMText Cette méthode requiert la saisie de trois valeurs : la chaîne de texte,
le point d'insertion dans le dessin où placer le texte et la largeur de la zone de contour du texte.

La chaîne de texte est le texte lui-même à afficher. Les caractères Unicode, les codes de contrôle et les caractères spéciaux sont acceptés. Le point d' insertion
est un tableau de type Variant qui contient trois coordonnées doubles représentant les coordonnées SCG 3D où placer le texte dans le dessin. La largeur du
texte est un nombre positif représentant la largeur de la zone de délimitation du texte. Elle est mesurée en unités courantes.

Après avoir créé un objet MText, vous pouvez lui appliquer une hauteur de texte, une justification, un angle de rotation et un style, ou appliquer un formatage à
des caractères sélectionnés.

Reportez-vous à la section traitant de MText dans le manuel ActiveX and VBA Reference  d'AutoCAD pour obtenir la liste des méthodes et propriétés des objets
MText.

Pour créer un texte multiligne

L'exemple de code suivant crée un objet MText dans l'espace objet à la coordonnée (2, 2, 0).

Sub Ch4_CreateMText()
Dim mtextObj As AcadMText
Dim insertPoint(0 To 2) As Double
Dim width As Double
Dim textString As String
insertPoint(0) = 2
insertPoint(1) = 2
insertPoint(2) = 0
width = 4
textString = "This is a text string for the mtext object."
' Create a text Object in model space
Set mtextObj = ThisDrawing.ModelSpace. _
AddMText(insertPoint, width, textString)
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 94 of 194

Formatage d'un texte multiligne


 

Le nouveau texte que vous entrez a dopte automatiquement les caractéristiques du style de texte courant. Le style de texte STANDARD est utilisé par défaut.
Vous pouvez ignorer le style de texte par défaut en appliquant un format de caractère individuel et des propriétés à l'objet Text. Vous pouvez également choisir
un formatage ou utiliser des caractères spéciaux à l'aide des méthodes décrites dans cette section.

Les propriétés telles que le style, la justification, la largeur et la rotation portent obligatoirement sur tout l'objet MText. Utilisez la propriété AttachmentPoint pour
modifier la justification du texte multiligne et la propriété Rotation pour gérer l'angle de rotation des bords du texte.

La propriété StyleName définit les polices et le formatage par défaut du nouveau texte. A mesure que vous créez du texte, vous pouvez sélectionner le style
que vous souhaitez utiliser, à partir d'une liste de styles existants. Lorsque vous modifiez le style d'un paragraphe contenant des caractères formatés, le style
est appliqué au paragraphe entier et le formatage de caractères n'est pas nécessairement conservé. Par exemple, si vous remplacez un style TrueType par u n
style utilisant une police SHX ou par une autre police TrueType, TrueType ne conserve aucun formatage et applique la nouvelle police au paragraphe entier.

Les options de formatage telles que le soulignement, le texte superposé ou les polices peuvent être appliquées individuellement aux mots et aux caractères
d'un paragraphe. Vous pouvez également changer la couleur, l a police et la hauteur de texte. Vous pouvez modifier l'espacement entre les différents caractères
du texte ou augmenter la largeur des caractères.

Pour appliquer le formatage à une partie du texte uniquement, placez le texte entre accolades ({ }). Huit niveaux d'imbrication sont possibles.

Vous pouvez également entrer les équivalents ASCII des codes de contrôle dans les lignes ou les paragraphes pour spécifier un style de formatage ou des
caractères spéciaux, tels que les symboles de tolérance ou de cotation.

Les caractères de contrôle suivants permettent de créer le texte de l'illustration : (Pour connaître l'équivalent ASCII de cette chaîne, reportez-vous à l'exemple
présenté après l'illustration.)

{{\H1.5x; Big text} \A2; over text\A1;/\A0; under text}

Pour de plus amples informations sur le formatage du texte multiligne, reportez-vous à la section “Formatage des caractères d'un texte multiligne” du Manuel
d'utilisation .

Utilisation de caractères de contrôle pour formater le texte

Cet exemple crée et formate un objet MText.

Sub Ch4_FormatMText()
Dim mtextObj As AcadMText
Dim insertPoint(0 To 2) As Double
Dim width As Double
Dim textString As String
insertPoint(0) = 2
insertPoint(1) = 2
insertPoint(2) = 0
width = 4
' Define the ASCII characters for the control characters
Dim OB As Long ' Open Bracket {
Dim CB As Long ' Close Bracket }
Dim BS As Long ' Back Slash \
Dim FS As Long ' Forward Slash /
Dim SC As Long ' Semicolon ;
OB = Asc("{")
CB = Asc("}")
BS = Asc("\")
FS = Asc("/")
SC = Asc(";")
' Assign the text string the following line of control
' characters and text characters:
' {{\H1.5x; Big text}\A2; over text\A1;/\A0; under text}
textString = Chr(OB) + Chr(OB) + Chr(BS) + "H1.5x" _
+ Chr(SC) + "Big text" + Chr(CB) + Chr(BS) + "A2" _
+ Chr(SC) + "over text" + Chr(BS) + "A1" + Chr(SC) _
+ Chr(FS) + Chr(BS) + "A0" + Chr(SC) + "under text" _
+ Chr(CB)
' Create a text Object in model space
Set mtextObj = ThisDrawing.ModelSpace. _
AddMText(insertPoint, width, textString)
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Utilisation de caractères Unicode, de codes de contrôle et de caractères spéciaux


 

Vous pouvez utiliser des caractères Unicode, des codes de contrôle et des caractères spéciaux dans une chaîne de texte pour représenter des symboles.
(Vous devez entrer tous les caractères spéciaux en utilisant leur équivalent ASCII.)

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 95 of 194

Vous pouvez créer des caractères spéciaux en entrant les chaînes de caractères Unicode suivantes :

Description des caractères Unicode


Caractère Unicode Description
 \U+00B0 Symbole de degré
 \U+00B1 Symbole de tolérance plus/moins
 \U+2205 Symbole de cote de diamètre

En plus de l'utilisation de caractères Unicode pour obtenir des caractères spéciaux, vous pouvez spécifier un caractère spécial en incluant des informations de
contrôle dans la chaîne de caractères. Entrez deux signes de pourcentage (%%) au début de chaque séquence de contrôle. Ainsi, le code de contrôle suivant
permet, avec les polices de texte standard d'AutoCAD et les polices PostScript, de dessiner le caractère nnn  :

%%nnn

Dans une chaîne de texte VB ou VBA, cet exemple serait entré comme suit :

Dim percent as Long


percent = ASC("%")
TextString = chr(percent) + chr(percent) + "nnn"

Les codes de contrôle suivants sont compatibles seulement avec les polices de texte standard d'AutoCAD :

Description des codes de contrôle


Code de contrôle Description
%%o Active/désactive le mode de surlignement.
%%u Active/désactive le mode de soulignement.
%%d Dessine un symbole de degré.
%%p Dessine un symbole de tolérance plus/moins.
%%c Dessine un symbole de cote de diamètre.
%%% Dessine le symbole de pourcentage.

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Polices de substitution
 

Vous pouvez désigner les polices que vous désirez utiliser à la place d'autres polices ou comme polices par défaut lorsque AutoCAD ne parvient pas à localiser
la police spécifiée dans un dessin.

Les polices utilisées pour le texte de votre dessin sont définies par le style de texte et, dans le cas des paragraphes, par les options de formatage appliquées à
certaines parties du texte.

Vous pouvez utiliser des tables de correspondance des polices pour vous assurer que votre dessin ne contiendra que certaines polices, mais également pour
convertir les polices utilisées en d'autres polices. Ces tables permettent de respecter les normes définies par votre entreprise en matière de police ou de faciliter
le traitement en différé des fichiers. AutoCAD est fourni avec une table de correspondance de polices par défaut. Vous pouvez modifier ce fichier à partir de
n'importe quel éditeur de texte ASCII. Il est également possible de spécifier une autre table de correspondance des polices en utilisant l a propriété FontFileMap
sur l'objet Preferences

Pour de plus amples informations sur les correspondances entre polices et sur leur substitution, reportez-vous à la section “Polices de substitution” du Manuel
d'utilisation .

Rubriques de cette section :

 Spécification d'une police de substitution par défaut  

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Spécification d'une police de substitution par défaut


 

Si votre dessin utilise une police non installée sur le système, AutoCAD la remplace automatiquement par la police de substitution que vous avez choisie. Par
défaut, AutoCAD utilise le fichier simplex.shx . Toutefois, vous pouvez spécifier une autre police si nécessaire. Utilisez la propriété AltFontFile de l'objet
Preferences pour choisir le fichier de la police de substitution.

Si votre style de texte u tilise une grande police, vous pouvez mapper cette police sur une autre police en utilisant la propriété AltFontFile. Cette variable
système utilise par défaut la paire d e fichiers de police txt.shx , bigfont.shx .

Si AutoCAD ne trouve pas le fichier de police à l'ouverture d'un dessin, il applique un ensemble prédéfini de règles de substitution.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 96 of 194

Envoyez-nous vos commentaires sur cette page.  

Création et modification d'entités AutoCAD  

Vérification orthographique
 

AutoCAD effectue la vérification orthographique en comparant les mots du dessin à ceux du dictionnaire principal courant. Les mots que vous ajoutez sont
placés dans le dictionnaire personnalisé actif au moment de la vérification. Vous pouvez, par exemple, ajouter des noms propres pour éviter qu'AutoCAD
indique systématiquement une faute d'orthographe.

Pour effectuer la vérification dans une autre langue, changez de dictionnaire principal.

L'Automatisation ActiveX d'AutoCAD ne propose aucune méthode de vérification de l'orthographe. Toutefois, vous pouvez spécifier un dictionnaire principal
différent à l'aide de la propriété MainDictionary, ou un dictionnaire personnalisé différent à l'aide de la propriété CustomDictionary de l'objet Preferences

Pour de plus amples informations sur la vérification de l'orthographe, reportez-vous à la section “Vérification orthographique” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances
 

Les cotes ajoutent des dimensions à un dessin. Les tolérances définissent les écarts admissibles pour une cote fixée. Automatisation ActiveX vous permet de
gérer facilement la cotation à l'aide de styles de cotes et de styles de cotes modifiés.

Rubriques de cette section :

 Concepts de cotation  

 Création de cotes

 Modification des cotes  

 Utilisation des styles de cotes  

 Cotation dans l'espace objet et dans l'espace papier  

 Création de lignes de repère et d'annotations 

 Utilisation des tolérances géométriques  

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Concepts de cotation
 

Les cotes indiquent les dimensions géométriques des objets, les distances qui les séparent ou les angles qu'ils décrivent, ou bien encore les coordonnées X  et
Y  d'un détail du dessin. AutoCAD ®  propose trois types de cotes de base : linéaires, radiales et angulaires. Parmi les cotes linéaires se trouvent les cotes
alignées, rotatoires et superposées.

Vous pouvez créer des cotes pour des lignes, des multilignes, des arcs, des cercles et des segments de polylignes ou des cotes autonomes.

AutoCAD insère les cotes sur le calque courant. A chaque cote correspond un style de cote (il peut s'agir de celui appliqué par défaut ou d'un style que vous
avez créé vous-même). Le style de cote définit les différentes caractéristiques (couleur, style de texte et échelle du type de ligne) de la cote. Les informations de
hauteur ne sont pas prises en charge. Les familles de styles permettent de définir plusieurs variantes à partir d'un style de cote de référence, en fonction du
type de cote auquel les styles s'appliquent. Les styles de cote modifiés permettent de modifier le style d'une cote spécifique.

Pour de plus amples informations sur les cotes, reportez-vous à la section “Modification des objets” du Manuel d'utilisation .

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 97 of 194

Rubriques de cette section :

 Eléments d'une cote 

 Définition des variables système de cotation 

 Définition de styles de texte de cotes 

 Lignes de repère 

 Cotes associatives 

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Eléments d'une cote


 

Voici une brève description des éléments d'une cote.

Une ligne de cote indique dans quelle direction l'objet est coté et la dimension prise en compte. Dans le cas d'une cote angulaire, la ligne de cote est un arc. Les
lignes d'attache, également appelées lignes de projection, relient l'élément mesuré à la ligne de cote. Les symboles d'extrémités matérialisent le début et la fin
de la ligne de cote. Le texte de cote (chaîne de caractères facultative) indique généralement la dimension réelle de l'objet mesuré. Vous pouvez y accoler des
préfixes, des suffixes et des tolérances. Une ligne de repère désigne le détail du dessin auquel s'applique une annotation. Une marque centrale est une petite
croix qui sert à représenter le centre d'un cercle ou d'un arc. Les axes (lignes discontinues) servent à représenter le centre d'un cercle ou d'un arc.

Pour de plus amples informations sur les éléments de cotation, reportez-vous à la section “Eléments d'une cote” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Définition des variables système de cotation


 

Les variables système de cotation déterminent l'aspect des cotes dans le dessin. Les variables système de cotation incluent DIMAUNIT, DIMUPT, DIMTOFL,
DIMFIT, DIMTIH, DIMTOH, DIMJUST et DIMTAD. Elles sont définies à l'aide de la méthode SetVariable Par exemple, la ligne de code suivante définit la
variable système DIMAUNIT (format d'unités pour des cotes angulaires) sur (3) radians :

ThisDrawing.SetVariable "DIMAUNIT", 3

Pour de plus amples informations sur les variables système de cotation, reportez-vous à la section “Utilisation des styles de cote” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Définition de styles de texte de cotes


 

Le texte de cote se rapporte à tout type de texte associé à des cotes, y compris les dimensions, les tolérances (latérales et géométriques), les préfixes, les
suffixes et les notes textuelles présentées sur une simple ligne ou sous forme de paragraphe. Vous pouvez utiliser les dimensions calculées par défaut par
AutoCAD comme texte, insérer votre propre texte ou supprimer la totalité du texte. De plus, il est possible d'utiliser un texte de cote pour ajouter des
informations relatives à un processus de fabrication spécial ou à des instructions de montage, par exemple.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 98 of 194

Le texte de cote sur une ligne utilise le style de texte courant spécifié par la propriété ActiveTextStyle Les paragraphes de texte utilisent le style courant avec
toutes les modifications que vous avez effectuées dans la chaîne de texte.

Pour de plus amples informations sur le texte de cotation, reportez-vous à la section “Contrôle du texte de la cote” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Lignes de repère
 

Par défaut, une ligne de repère est une ligne droite avec une pointe de flèche qui fait référence à une fonction d'un dessin. En règle générale, une ligne de
repère a pour fonction de connecter une annotation à la fonction. Dans ce cas, l'annotation correspond à un paragraphe de texte, à des blocs ou à des cadres
de tolérance. De telles lignes diffèrent des lignes de repère simples créées automatiquement pour des cotes radiales, de diamètre et linéaires dont le texte est
trop long pour être entièrement inséré sur les lignes d'attache.

Les objets de la ligne de repère sont associés à l'annotation si bien que lorsque cette dernière est modifiée, la ligne de repère est mise à jour en conséquence.
Vous pouvez copier une annotation utilisée n'importe où dans un dessin et l'ajouter à une ligne de repère ou créer une nouvelle annotation. Vous pouvez
également créer une ligne de repère sans annotation.

Pour de plus amples informations sur les lignes de repère, reportez-vous à la section “Présentation de la création de texte et de repères” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances 

Cotes associatives
 

Les cotes associatives ajustent automatiquement leur emplacement, leur orientation et leurs valeurs de mesure lorsque les objets géométriques qui leur sont
associés sont modifiés. La variable système DIMASSOC contrôle la cote associative. Attribuez à DIMASSOC la valeur 2 pour activer la cote associative.

Pour de plus amples informations sur les cotes associatives, reportez-vous à la section “Cotes associatives” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Création de cotes
 

Vous pouvez créer des cotes linéaires, radiales, angulaires et superposées.

Lorsque vous créez des cotes, le style actif est appliqué. Une fois la cote créée, vous pouvez modifier les points de départ des l ignes d'attache, l'emplacement
du texte de cote, son contenu et son angle par rapport à la ligne de cote. Vous pouvez également modifier le style de la cote.

Pour de plus amples informations sur la création de cotations, reportez-vous à la section “Modification des objets” du Manuel d'utilisation .

Rubriques de cette section :

 Création de cotes linéaires 

 Création de cotes radiales 

 Création de cotes angulaires 

 Création de cotes superposées 

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 99 of 194

Cotes et tolérances  

Création de cotes linéaires


 

Les cotes linéaires peuvent être alignées ou pivotées. Dans le premier cas, la ligne de cote est parallèle à la ligne au niveau de laquelle commencent les lignes
d'attache. Dans les cotes en rotation, la ligne de cote subit une rotation d'un angle donné par rapport à l'origine des lignes d'attache.

Pour créer une cote linéaire, utilisez la méthode AddDimAligned ou AddDimRotated Après avoir créé des cotes linéaires, vous pouvez non seulement modifier
le texte et son inclinaison, mais aussi l'angle d'orientation de la ligne de cote. Dans les illustrations suivantes, les points de départ des lignes d'attache sont
désignés de façon explicite. L'emplacement de la li gne de cote en résultant est également affiché.

Pour créer une cote alignée, utilisez la méthode AddDimAligned. Cette méthode requiert la saisie de trois coordonnées : l'origine des deux lignes d 'attache et la
position du texte.

Pour créer une cote rotatoire, utilisez la méthode AddDimRotated. Cette méthode requiert l'entrée de trois coordonnées et de l'angle de la ligne de cote. Les
trois coordonnées sont les points de départ des deux lignes d'attache et définissent l'emplacement du texte. L'angle doit être défini en radians ; il s' agit de
l'angle de rotation de la ligne de cote.

Pour de plus amples informations sur la création de cotes linéaires, reportez-vous à la section “Création de cotes linéaires” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Création de cotes radiales


 

Les cotes radiales permettent de mesurer les rayons et les diamètres des arcs et des cercles. Pour créer une cote radiale, utilisez la méthode AddDimRadial

Différents types de cotes radiales sont créés en fonction de la taille du cercle ou de l'arc, de la propriété TextPosition et des valeurs des variables système de
cotation DIMUPT, DIMTOFL, DIMFIT, DIMTIH, DIMTOH, DIMJUST et DIMTAD. (Ces variables peuvent être interrogées ou définies à l'aide des méthodes
GetVariable et SetVariable.)

Pour le texte de cote horizontal, si l'angle de la ligne de cote est supérieur à 15 degrés par rapport à l'horizontale et qu'il est en dehors du cercle ou de l'arc,
AutoCAD trace une attache de repère. Cette attache a la taille d'une pointe de flèche et est située à côté du texte de cote, comme indiqué sur la première des
figures qui suivent:

Pour créer des cotes radiales, utilisez la méthode AddDimRadial ou AddDimDiametric Ces méthodes requièrent la saisie de trois valeurs : la coordonnée du
cercle ou le centre de l'arc, la coordonnée pour l'association à la ligne de repère et la longueur de la ligne de repère.

Ces méthodes utilisent le paramètre LeaderLength comme distance entre ChordPoint et le point où la cote forme une attache de repère horizontale par
rapport au texte d'annotation (ou s'arrête si aucune attache de repère n'est requise).

Pour de plus amples informations sur la création de cotes radiales, reportez-vous à la section “Création de cotes radiales” du Manuel d'utilisation .

Création d'une cote radiale

Dans cet exemple, une cote radiale est créée dans l'espace objet.

Sub Ch5_CreateRadialDimension()
Dim dimObj As AcadDimRadial
Dim center(0 To 2) As Double
Dim chordPoint(0 To 2) As Double

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 100 of 194

  Dim leaderLen As Integer


' Define the dimension
center(0) = 0
center(1) = 0
center(2) = 0
chordPoint(0) = 5
chordPoint(1) = 5
chordPoint(2) = 0
leaderLen = 5
' Create the radial dimension in model space
Set dimObj = ThisDrawing.ModelSpace. _
AddDimRadial(center, chordPoint, leaderLen)
ZoomAll
End Sub

Remarque Le paramètre LeaderLength n'est utilisé que lors de la création de la cote (et même dans ce cas, uniquement si la cote est paramétrée pour utiliser
la valeur d'emplacement de texte par défaut). Une fois la cote refermée pour la première fois, le changement de la valeur de ce paramètre ne modifie pas
l'affichage de la cote ; toutefois, le nouveau paramètre est enregistré et apparaît dans les applications DXF, LISP et ADSRX.

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Création de cotes angulaires


 

Les cotes angulaires mesurent l'angle entre deux li gnes ou trois points. Ce type de cote sert à mesurer l'angle formé par deux lignes (deux rayons d'un cercle,
par exemple). Dans ce cas, la ligne de cote prend la forme d'un arc.

Pour créer une cote angulaire, utilisez la méthode AddDimAngular Cette méthode requiert la saisie de trois valeurs : le sommet de l'angle, les points de départ
des lignes d'attache et la position du texte. Le paramètre AngleVertex correspond au centre du cercle ou de l'arc, ou du sommet commun entre deux lignes
cotées. Les points de départ des lignes d'attache sont les points par lesquels ces deux lignes passent.

Le sommet de l'angle peut coïncider avec un des points de départ. Si vous avez besoin de lignes d'attache, elles sont ajoutées automatiquement.

Pour de plus amples informations sur la création de cotes angulaires, reportez-vous à la section “Création de cotes angulaires” du Manuel d'utilisation .

Création d'une cote angulaire

Dans cet exemple, une cote angulaire est créée dans l'espace objet.

Sub Ch5_CreateAngularDimension()
Dim dimObj As AcadDimAngular
Dim angVert(0 To 2) As Double
Dim FirstPoint(0 To 2) As Double
Dim SecondPoint(0 To 2) As Double
Dim TextPoint(0 To 2) As Double
' Define the dimension
angVert(0) = 0
angVert(1) = 5
angVert(2) = 0
FirstPoint(0) = 1
FirstPoint(1) = 7
FirstPoint(2) = 0
SecondPoint(0) = 1
SecondPoint(1) = 3
SecondPoint(2) = 0
TextPoint(0) = 3
TextPoint(1) = 5
TextPoint(2) = 0
' Create the angular dimension in model space
Set dimObj = ThisDrawing.ModelSpace. _
AddDimAngular(angVert, FirstPoint, SecondPoint, TextPoint)
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Création de cotes superposées


 

Les cotes superposées (ou cotes d'ordonnées) permettent d'indiquer la distance entre un point de référence e t un élément du dessin (centre d'un trou sur une
pièce, par exemple). En effectuant toutes les mesures à partir du même point de référence, vous évitez les risques d'erreur et d'imprécision résultant du total
cumulé des distances.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 101 of 194

Elles sont constituées d'une ordonnée ( X  ou Y ) et d'une ligne de repère. Les cotes superposées X mesurent la distance d'un point à partir de la référence sur
l'axe des X . L'ordonnée Y définit la même distance sur l'axe Y . Les coordonnées sont calculées en fonction de l'origine du système de coordonnées utilisateur
(SCU) actuel. La valeur absolue de l a coordonnée est utilisée.

Le texte est aligné par rapport à la ligne de repère, quelle que soit l'orientation du texte définie par le style de cote courant. Vous pouvez accepter la valeur
proposée par défaut ou entrer votre propre texte.

Pour créer une cote superposée, utilisez la méthode AddDimOrdinate Cette méthode requiert la saisie de trois valeurs : une coordonnée spécifiant le point à
coter (A), une autre spécifiant l'extrémité de la ligne de repère (B) et un drapeau booléen indiquant si la cote est en coordonnée X  ou en coordonnée Y . Si vous
entrez TRUE comme valeur du drapeau booléen, la méthode crée une cote en coordonnée X . Si vous entrez FALSE, une cote en coordonnée Y  est créée.

Pour de plus amples informations sur la création de cotes superposées, reportez-vous à la section “Création de cotes superposées” du Manuel d'utilisation .

Création d'une cote superposée

Dans cet exemple, une cote superposée est créée dans l'espace objet.

Sub Ch5_CreatingOrdinateDimension()
Dim dimObj As AcadDimOrdinate
Dim definingPoint(0 To 2) As Double
Dim leaderEndPoint(0 To 2) As Double
Dim useXAxis As Long
' Define the dimension
definingPoint(0) = 5
definingPoint(1) = 5
definingPoint(2) = 0
leaderEndPoint(0) = 10
leaderEndPoint(1) = 5
leaderEndPoint(2) = 0
useXAxis = 5
' Create an ordinate dimension in model space
Set dimObj = ThisDrawing.ModelSpace. _
AddDimOrdinate(definingPoint, _
leaderEndPoint, useXAxis)
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Modification des cotes


 

Comme tout autre objet graphique dans AutoCAD, les cotes peuvent être modifiées à l'aide des méthodes et propriétés standard fournies pour l'objet.

Les propriétés suivantes sont disponibles pour la plupart des objets de cote :

Rotation
Spécifie, en radians, l'angle de rotation de la ligne de cote.
StyleName
Spécifie le nom du style de cote.
TextOverride
Spécifie la chaîne de texte de la cote.
TextPosition
Spécifie la position du texte de cote.
TextRotation
Spécifie l'angle de rotation du texte de cote.
Measurement
Spécifie la mesure effective de la cote.

En outre, certains objets de cote fournissent des propriétés d'édition des points de départ des lignes d'attache et de la longueur de la ligne de repère.

Les méthodes suivantes sont utilisées pour la modification des objets de cote :

ArrayPolar
Crée un réseau polaire.
ArrayRectangular
Crée un réseau rectangulaire.
Copy
Copie l'objet de cote.
Erase
Supprime l'objet de cote.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 102 of 194

Mirror
Fait une copie miroir de l'objet de cote.
Move
Déplace l'objet de cote.
Rotate
Fait pivoter l'objet de cote.
ScaleEntity
Met à l'échelle l'objet de cote.

Pour de plus amples informations sur la modification de cotes, reportez-vous à la section “Modification des cotes existantes” du Manuel d'utilisation .

Rubriques de cette section :

 Remplacement du texte de cote  

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Remplacement du texte de cote


 

La valeur de cote affichée peut être remplacée via la propriété TextOverride Cette propriété permet de remplacer la valeur de cote affichée ou d'y ajouter du
texte.

Modification du texte de cote

Dans cet exemple, du texte est ajouté à la valeur afin qu'il apparaisse avec la valeur de cote.

Sub Ch5_OverrideDimensionText()
Dim dimObj As AcadDimAligned
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
Dim location(0 To 2) As Double
' Define the dimension
point1(0) = 5#: point1(1) = 3#: point1(2) = 0#
point2(0) = 10#: point2(1) = 3#: point2(2) = 0#
location(0) = 7.5: location(1) = 5#: location(2) = 0#
' Create an aligned dimension object in model space
Set dimObj = ThisDrawing.ModelSpace. _
AddDimAligned(point1, point2, location)
' Change the text string for the dimension
dimObj.TextOverride = "The value is <>"
dimObj.Update
End Sub

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Utilisation des styles de cotes


 

Un style de cote nommé est un groupe de paramètres de cote q ui détermine l'aspect de la cote. Les styles de cote permettent de respecter certaines normes en
matière de dessin.

Lorsque vous créez une cote, elle adopte automatiquement le style actif. Si aucun style n'est défini ou appliqué, AutoCAD applique le style par défaut
(STANDARD). Pour définir le style de cote actif, utilisez la propriété ActiveDimStyle

Pour définir un style de cote parent, vous devez commencer par l'enregistrer sous un nouveau nom. Le nouveau style est défini à partir du style de cote courant
et contient toutes les modifications apportées à la présentation des éléments de cote, à l' emplacement du texte et à l'aspect d e l'annotation. Les annotations
concernent ici les unités principales et alternatives, les tolérances et le texte.

Pour de plus amples informations sur les styles de cote, reportez-vous à la section “Utilisation des styles de cote” du Manuel d'utilisation .

Rubriques de cette section :

 Création, modification et copie de styles de cotes  

 Remplacement du style de cote  

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 103 of 194

Création, modification et copie de styles de cotes


 

Pour créer un style de cote, utilisez la méthode Add Cette méthode requiert l'entrée du nom du nouveau style de cote.

L'Automatisation ActiveX d'AutoCAD vous permet d'ajouter de nouveaux styles de cotes et de modifier le style actif. Vous pouvez également changer le style de
cote associé à une cote donnée via la propriété StyleName

Vous pouvez également copier un style de cote existant ou un ensemble de styles de cotes modifiés. Utilisez la méthode CopyFrom pour copier un style de cote
d'un objet source vers un nouveau style de cote. L'objet source peut être un autre objet DimStyle, Dimension, Tolerance ou Leader, voire un objet Document Si
vous copiez les paramètres de style d'un autre style de cote, une copie exacte de ce style est faite. Si vous copiez les paramètres de style d'un objet Dimension,
Tolerance ou Leader, les paramètres actifs y compris les modifications d'objets sont copiés dans le nouveau style. Si vous copiez le style d'un objet Document,
le style de cote actif et toute modification apportée au dessin sont copiés dans le nouveau style.

Copie de styles de cotes existants et modifiés

L'exemple suivant crée trois styles de cotes et copie les paramètres actifs du document, un style de cote donné et une cote dans chacun de ces nouveaux
styles. En suivant la configuration appropriée avant d'exécuter cet exemple de code, vous vous rendrez compte que plusieurs styles de cotes ont été créés.

1. Créez un dessin et rendez-le actif.


2. Créez une cote linéaire dans ce dessin. Cette cote doit être le seul objet du dessin.
3. Attribuez la couleur jaune à la ligne de cote.
4. Attribuez la valeur 5 (bleu) à la variable système DIMCLRD
5. Exécutez le code suivant :

Sub Ch5_CopyDimStyles()
Dim newStyle1 As AcadDimStyle
Dim newStyle2 As AcadDimStyle
Dim newStyle3 As AcadDimStyle
Set newStyle1 = ThisDrawing.DimStyles.Add _
("Style 1 copied from a dim")
Call newStyle1.CopyFrom(ThisDrawing.ModelSpace(0))
Set newStyle2 = ThisDrawing.DimStyles.Add _
("Style 2 copied from Style 1")
Call newStyle2.CopyFrom(ThisDrawing.DimStyles.Item _
("Style 1 copied from a dim"))
Set newStyle2 = ThisDrawing.DimStyles.Add _
("Style 3 copied from the running drawing values")
Call newStyle2.CopyFrom(ThisDrawing)
End Sub

Ouvrez la boîte de dialogue DIMSTYLE Elle doit contenir trois styles de cote. Le Style 1 doit avoir une ligne de cote jaune. Le style 2 doit être identique au Style
1 et le Style 3 doit avoir une ligne de cote bleue.

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Remplacement du style de cote


 

Chaque cote peut remplacer ses propres paramètres de style de cote. Les propriétés suivantes sont disponibles pour la plupart des objets de cote :

AltRoundDistance
Définit l'arrondi des unités alternatives.
AngleFormat
Définit le format d'unités des cotes angulaires.
Arrowhead1Block, Arrowhead2Block
Indiquent quel bloc utiliser comme pointe de flèche personnalisée pour la ligne de cote.
Arrowhead1Type, Arrowhead2Type
Définissent un type de pointe de flèche pour la ligne de cote.
ArrowheadSize
Indique la taille des pointes de flèche de la ligne de cote, de la ligne de repère et des attaches de repère.
CenterMarkSize
Indique la taille de la marque centrale des cotes des diamètres et des rayons.
CenterType
Indique le type de marque centrale pour les cotes des diamètres et des rayons.
DecimalSeparator
Indique quel caractère utiliser comme séparateur décimal dans les valeurs de tolérance et de cote décimale.
DimensionLineColor
Indique la couleur de la ligne de cote pour un objet de tolérance, de ligne de repère ou de cote.
DimensionLineWeight
Indique l'épaisseur des lignes de cote.
DimLine1Suppress, DimLine2Suppress
Spécifient la suppression des lignes de cote.
DimLineInside
Spécifie l'affichage des lignes de cote u niquement au sein des lignes d'attache.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 104 of 194

ExtensionLineColor
Spécifie la couleur des lignes d'attache des cotes.
ExtensionLineExtend
Indique la distance de la ligne d'attache au-delà de la ligne de cote.
ExtensionLineOffset
Indique le décalage des lignes d'attache par rapport aux points d'origine.
ExtensionLineWeight
Indique l'épaisseur des lignes d'attache.
ExtLine1EndPoint, ExtLine2EndPoint
Spécifient l'extrémité des lignes d'attache.
ExtLine1StartPoint, ExtLine2StartPoint
Spécifient le point de départ des lignes d'attache.
ExtLine1Suppress, ExtLine2Suppress
Spécifient la suppression des lignes d'attache.
Fit
Indique l'emplacement du texte et des pointes de flèches au sein ou en dehors des lignes d'attache.
ForceLineInside
Indique si une ligne de cote est tracée entre les lignes d'attache même si le texte est à l'extérieur de ces lignes d'attache.
FractionFormat
Indique le format des valeurs de cotes et de tolérances fractionnaires.
HorizontalTextPosition
Définit la justification horizontale du texte de cote.
LinearScaleFactor
Définit un facteur d'échelle global pour l es cotes linéaires.
PrimaryUnitsPrecision
Fixe le nombre de décimales affichées pour les unités de cotation et de tolérance principales.
SuppressLeadingZeros, SuppressTrailingZeros
Spécifient la suppression des zéros de début et de fin dans les valeurs de cote.
SuppressZeroFeet, SuppressZeroInches
Spécifient la suppression des valeurs de cote en pieds et en pouces égales à zéro.
TextColor
Indique la couleur du texte pour les objets de tolérance et de cote.
TextGap
Spécifie la distance entre le texte et la ligne de cote lorsque vous fragmentez cette ligne pour afficher le texte de cote.
TextHeight
Indique la hauteur du texte de tolérance ou de cote.
TextInside
Indique si le texte de cote doit être tracé dans les lignes d'attache.
TextInsideAlign
Contrôle la position du texte de cote à l'intérieur des lignes d'attache pour tous les types de cotes à l'exception de celles en coordonnées.
TextMovement
Indique de quelle façon le texte de cote est tracé lorsqu'il est déplacé.
TextOutsideAlign
Spécifie la position du texte de cote à l'extérieur des lignes d'attache pour tous les types de cotes à l'exception de celles en coordonnées.
TextPosition
Spécifie la position du texte de cote.
TextPrecision
Spécifie la précision du texte de cote angulaire.
TextPrefix
Indique le préfixe de la valeur de cote.
TextRotation
Spécifie l'angle de rotation du texte de cote.
TextSuffix
Indique le suffixe de la valeur de cote.
ToleranceDisplay
Indique si des tolérances sont affichées avec le texte de cote.
ToleranceHeightScale
Définit un facteur d'échelle pour la hauteur de texte des valeurs de tolérance en fonction de la hauteur du texte de cote.
ToleranceJustification
Définit la justification verticale des valeurs de tolérance en fonction du texte de cote nominal.
ToleranceLowerLimit
Définit la limite de tolérance minimale pour le texte de cote.
TolerancePrecision
Spécifie la précision des valeurs de tolérance dans des cotes principales.
ToleranceSuppressLeadingZeros
Spécifie la suppression des zéros au début des valeurs de tolérance.
ToleranceSuppressTrailingZeros
Spécifie la suppression des zéros à la fin des valeurs de tolérance.
ToleranceUpperLimit
Définit la limite de tolérance maximale pour le texte de cote.
UnitsFormat
Définit le format d'unités de toutes les cotes à l'exception des cotes angulaires.
VerticalTextPosition
Définit la position verticale du texte par rapport à la ligne de cote.

Entrée d'un suffixe pour une cote alignée

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 105 of 194

Dans cet exemple, une cote alignée est créée dans l'espace objet et la propriété TextSuffix est utilisée pour permettre à l'utilisateur de changer le suffixe du
texte de la cote.

Sub Ch5_AddTextSuffix()
Dim dimObj As AcadDimAligned
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
Dim location(0 To 2) As Double
Dim suffix As String
' Define the dimension
point1(0) = 0: point1(1) = 5: point1(2) = 0
point2(0) = 5: point2(1) = 5: point2(2) = 0
location(0) = 5: location(1) = 7: location(2) = 0
' Create an aligned dimension object in model space
Set dimObj = ThisDrawing.ModelSpace. _
AddDimAligned(point1, point2, location)
ThisDrawing.Application.ZoomAll
' Allow the user to change the text suffix for the dimension
suffix = InputBox("Enter a new text suffix for the dimension" _
, "Set Dimension Suffix", ":SUFFIX")
' Apply the change to the dimension
dimObj.TextSuffix = suffix
ThisDrawing.Regen acAllViewports
End Sub

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Cotation dans l'espace objet et dans l'espace papier


 

Vous pouvez définir des cotes aussi bien dans l'espace papier que dans l'espace objet. Toutefois, si la géométrie que vous cotez se trouve dans l'espace objet,
il est préférable de définir les cotes dans cet espace également. En effet, AutoCAD insère les points de définition des cotes dans l'espace où figure la
géométrie.

Si vous définissez une cote dans l'espace papier pour mesurer une géométrie dans votre modèle, la cote ne subit aucune modification lorsque vous utilisez des
commandes d'édition ou que vous changez l'agrandissement de la vue dans la fenêtre de l'espace objet. La position des cotes de l'espace papier reste la même
lorsque vous passez de l'espace papier à l'espace objet.

Si vous cotez des objets dans l'espace papier et que le facteur d'échelle global pour la cotation linéaire (la variable système DIMLFAC) est inférieur à zéro, la
distance mesurée est multipliée par la valeur absolue de DIMLFAC. Si vous cotez des objets dans l'espace objet, la valeur 1.0 est appliquée, même si la valeur
de la variable DIMLFAC est inférieure à 0. AutoCAD calcule la valeur de cette variable DIMLFAC si vous la modifiez à l'invite Cot, puis sélectionnez l'option
Fenêtre. Il calcule le facteur d'échelle de l'espace objet en fonction de l' espace papier et affecte la valeur négative correspondant à la variable DIMLFAC.

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Création de lignes de repère et d'annotations


 

Une ligne de repère permet de relier des annotations à un élément du dessin. Ces lignes et leurs annotations sont associatives: si vous modifiez l'un de ces
deux éléments, l'autre est mis à jour en conséquence. Ne confondez pas l'objet Leader avec la ligne de repère qu'AutoCAD génère automatiquement en tant
qu'élément de la ligne de cote.

Pour de plus amples informations sur les lignes de repère, reportez-vous à la section “Création de texte avec repères” du Manuel d'utilisation .

Rubriques de cette section :

 Création de lignes de repère  

 Ajout d'une annotation à une ligne de repère  

 Lignes de repère associatives  

 Modification de lignes de repère associatives 

 Modification des lignes de repère  

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Création de lignes de repère


 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 106 of 194

Vous pouvez créer une ligne de repère à partir d'un point ou d'un élément quelconque du dessin et définir l'aspect de la ligne au moment où vous la générez.
Les lignes de repère ont la forme de segments de droite ou de courbes splines régulières. Leur couleur est fonction de la couleur de la ligne de cote en cours.
En revanche, leur valeur d'échelle dépend du facteur d'échelle général défini pour le style de cote actif. Le type et la taille des extrémités en forme de flèche (le
cas échéant) correspondent à la première extrémité définie pour le style actif.

Il arrive parfois qu'une petite ligne, appelée ligne de repère, connecte l'annotation à la ligne de repère. Cela se produit lorsque vous insérez des p aragraphes ou
des cadres de tolérance, ou lorsque le dernier segment de la ligne de repère forme un angle supérieur à 15 degrés par rapport à l'horizontale. La longueur de
l'attache de repère est égale à celle d'une pointe de flèche. Si la ligne de repère n'a pas d'annotation, aucune attache de repère ne lui est associée.

Pour créer une ligne de repère, utilisez la méthode AddLeader Cette méthode requiert la saisie de trois valeurs : le tableau de coordonnées spécifiant où créer
la ligne de repère, l'objet annotation (ou NULL si la ligne de repère ne comporte pas d'annotation) et le type de ligne de repère à créer. Le type de ligne de
repère indique s'il s'agit d'une ligne droite ou d'une courbe spline lisse Elle détermine aussi si la ligne de repères à des flèches. Utilisez l'une des constantes
suivantes pour spécifier le type de ligne de repère : acLineNoArrow, acLineWithArrow, acSplineNoArrow ou acSplineWithArrow. Ces constantes
sont mutuellement exclusives.

Création d'une ligne de repère

Dans cet exemple, une ligne de repère est créée dans l'espace objet. Aucune annotation n'est associée à la l igne de repère.

Sub Ch5_CreateLeader()
Dim leaderObj As AcadLeader
Dim points(0 To 8) As Double
Dim leaderType As Integer
Dim annotationObject As AcadObject
points(0) = 0: points(1) = 0: points(2) = 0
points(3) = 4: points(4) = 4: points(5) = 0
points(6) = 4: points(7) = 5: points(8) = 0
leaderType = acLineWithArrow
Set annotationObject = Nothing
' Create the leader object in model space
Set leaderObj = ThisDrawing.ModelSpace. _
AddLeader(points, annotationObject, leaderType)
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Ajout d'une annotation à une ligne de repère


 

Une annotation de ligne de repère peut être un objet Tolerance, MText ou BlockRef. Vous pouvez créer une annotation ou ajouter une copie d'une annotation
existante. Les annotations sont ajoutées aux lignes de repère uniquement lorsque celles-ci sont créées.

Pour ajouter une annotation lorsqu'une ligne de repère est créée, saisissez-la dans la méthode AddLeader

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Lignes de repère associatives


 

Les lignes de repère étant associées à leur annotation, lorsqu'elles sont déplacées, l'extrémité de la ligne de repère est également déplacée. Lorsque vous
déplacez l'annotation d'un texte ou d'un cadre de tolérance, le dernier segment de la ligne de repère passe à gauche au à droite de l'annotation en fonction de
l'avant-dernier point (du deuxième au dernier) de la ligne de repère. Si le milieu de l'annotation se trouve à droite de l'avant-dernier point de la ligne de repère,
cette dernière est attachée à droite ; sinon, elle est attachée à gauche.

La suppression d'un des deux objets du dessin à l'aide de la méthode Erase, Add (pour l'ajout d'un bloc) ou WBlock rompt l'associativité. Si la ligne de repère et
son annotation sont copiées en même temps, la nouvelle copie est associative. Si ces deux éléments sont copiés séparément, ils ne seront pas associatifs. Si
l'associativité est rompue pour une raison quelconque, par exemple lors de la copie d'un seul objet Leader ou de l'effacement de l'annotation, l'attache de
repère est supprimée de la ligne de repère.

Association d'une ligne de repère à une annotation

Dans cet exemple, un objet MText est créé. Une ligne de repère est créée à son tour e n utilisant l'objet MText comme annotation.

Sub Ch5_AddAnnotation()
Dim leaderObj As AcadLeader
Dim mtextObj As AcadMText
Dim points(0 To 8) As Double
Dim insertionPoint(0 To 2) As Double
Dim width As Double
Dim leaderType As Integer

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 107 of 194

  Dim annotationObject As Object


Dim textString As String, msg As String
' Create the MText object in model space
textString = "Hello, World."
insertionPoint(0) = 5
insertionPoint(1) = 5
insertionPoint(2) = 0
width = 2
Set mtextObj = ThisDrawing.ModelSpace. _
AddMText(insertionPoint, width, textString)
' Data for Leader
points(0) = 0: points(1) = 0: points(2) = 0
points(3) = 4: points(4) = 4: points(5) = 0
points(6) = 4: points(7) = 5: points(8) = 0
leaderType = acLineWithArrow
' Create the Leader object in model space and associate
' the MText object with the leader
Set annotationObject = mtextObj
Set leaderObj = ThisDrawing.ModelSpace. _
AddLeader(points, annotationObject, leaderType)
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Modification de lignes de repère associatives


 

Mise à part la relation d'associativité qui les unit, la ligne de repère et son annotation sont des objets entièrement distincts dans votre dessin. Les modifications
apportées à la ligne de repère ne concernent pas l'annotation et celles qui sont effectuées dans les annotations ne s'appliquent pas à la ligne de repère.

Vous pouvez créer une annotation de texte à l'aide des variables système DIMCLRT, DIMTXT et DIMTXSTY pour définir sa couleur, sa hauteur et son style,
mais vous ne pouvez pas recourir à ces dernières pour la modifier, car il ne s'agit pas d'un objet de dimension réelle. L'annotation d'un texte doit être modifiée
comme tout autre objet Mtext.

Utilisez la méthode Evaluate pour évaluer la relation entre la ligne de repère et l'annotation qui lui est associée. Cette méthode met à jour la géométrie de la
ligne de repère si besoin.

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Modification des lignes de repère


 

Toute modification apportée à l'annotation d'une ligne de repère que vous déplacez affecte l'emplacement du milieu de la ligne de repère associée. De plus, la
rotation de l'annotation entraîne la rotation de la ligne de repère (le cas échéant).

Pour redimensionner une ligne de repère, il suffit de la mettre à l'échelle. La mise à l'échelle s'applique uniquement à l'élément sélectionné. Si, par exemple,
vous changez l'échelle de la ligne de repère, l'annotation reprend la même position par rapport à l'extrémité de la ligne de repère mais ne change pas de
dimension.

Outre leur mise à l'échelle, vous pouvez déplacer les lignes de repère, en faire une copie miroir ou les faire pivoter. Utilisez les méthodes ScaleEntity, Move,
Mirror et Rotate pour modifier une li gne de repère. Vous pouvez également changer le style de texte associé à l' annotation via la propriété StyleName

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Utilisation des tolérances géométriques


 

Les tolérances géométriques représentent les écarts admissibles de forme, de profil, d'orientation, de position et de battement. Elles sont inscrites dans des
cadres de tolérance. Ceux-ci contiennent toutes les indications de tolérance d'une cote.

Pour de plus amples informations sur les cadres de tolérance et les tolérances géométriques, reportez-vous à la section “Ajout de tolérances géométriques” du
Manuel d'utilisation .

Rubriques de cette section :

 Création de t olérances géométriques 

 Modification de tolérances 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 108 of 194

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Création de tolérances géométriques


 

Pour créer une tolérance géométrique, utilisez la méthode AddTolerance Cette méthode requiert la saisie de trois valeurs : la chaîne de texte contenant le
symbole de tolérance, l'emplacement de la tolérance dans le dessin et un vecteur de direction indiquant la direction de cette tolérance. Vous pouvez également
copier, déplacer, effacer, mettre à l'échelle et faire pivoter des tolérances.

Création d'une tolérance géométrique

Dans cet exemple, une tolérance géométrique simple est créée dans l'espace objet.

Sub Ch5_CreateTolerance()
Dim toleranceObj As AcadTolerance
Dim textString As String
Dim insertionPoint(0 To 2) As Double
Dim direction(0 To 2) As Double
' Define the tolerance object
textString = "Here is the Feature Control Frame"
insertionPoint(0) = 5
insertionPoint(1) = 5
insertionPoint(2) = 0
direction(0) = 1
direction(1) = 1
direction(2) = 0
' Create the tolerance object in model space
Set toleranceObj = ThisDrawing.ModelSpace. _
AddTolerance(textString, insertionPoint, direction)
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Cotes et tolérances  

Modification de tolérances
 

Les tolérances sont régies par plusieurs variables système : DIMCLRD contrôle la couleur du cadre de tolérance ; DIMCLRT contrôle la couleur du texte de
tolérance ; DIMGAP contrôle la distance entre le cadre de tolérance et le texte ; DIMTXT contrôle la taille du texte de tolérance et DIMTXTSTY contrôle son
style. Utilisez la méthode SetVariable pour définir les valeurs des variables système.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils


 

Automatisation ActiveX d'AutoCAD vous offre un contrôle étendu de la personnalisation des menus et barres d'outils dans la session AutoCAD courante.

Les fonctionnalités ActiveX/VBA d'AutoCAD vous permettent de modifier ou d'accroître la structure de menu existante ou de remplacer la structure courante.
Vous pouvez également manipuler les barres d'outils et les menus accessibles par un clic avec le bouton droit de la souris.

La personnalisation des menus peut améliorer la productivité en exposant des tâches spécifiques à l'application ou en groupant en une sélection de menu
unique des tâches comportant plusieurs étapes.

Pour de plus amples informations sur la personnalisation des menus et des barres d'outils, reportez-vous au Customization Guide .

Rubriques de cette section :

 Description des collections MenuBar et MenuGroups  

 Chargement de groupes de menus  

 Modification de la barre de menus  

 Création et modification des menus déroulants et contextuels 

 Création et modification des barres d'outils 

 Création de macros 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 109 of 194

 Création d'une aide de ligne d'état pour des options de menu et de barre d'outils  

 Ajout d'entrées dans le menu contextuel  

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Description des collections MenuBar et MenuGroups


 

Les fonctionnalités ActiveX ®  d'AutoCAD  ®  proposent plusieurs objets associés à des menus. Les deux plus importants sont les collections MenuBar et
MenuGroups La collection MenuBar contient tous les menus affichés dans la barre de menus d'AutoCAD.

La collection MenuGroups contient les groupes de menus chargés dans la session AutoCAD courante. Ces groupes contiennent, à leur tour, tous les menus
disponibles pour la session AutoCAD, certains ou l'ensemble pouvant être affichés dans la barre de menus d'AutoCAD. En plus des menus, les groupes de
menus contiennent toutes les barres d'outils disponibles pour la session AutoCAD courante. Les groupes de menus représentent également les menus
d'images, les menus écran ou les menus tablette.

Chaque groupe de menus contient une collection PopupMenus et une collection Toolbars La collection PopupMenus contient tous les menus affichés dans la
barre de menus. La collection Toolbars contient toutes les barres d'outils affichées dans le groupe de menus.

Chaque collection PopupMenu contient un objet individuel pour chaque o ption affichée dans ce menu. De même, chaque collection Toolbar contient un objet
individuel pour chaque option affichée dans cette barre d'outils.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Chargement de groupes de menus


 

Les groupes de menus sont chargés dans AutoCAD via la méthode Load. Par exemple, l'exemple suivant charge le fichier de personnalisation acad.cui :

ThisDrawing.Application.MenuGroups.Load "acad.cui"

Lorsque vous faites appel à cette méthode, définissez le paramètre BaseMenu sur TRUE pour charger un nouveau groupe de menus dans la barre de menus.
Le groupe de menus est alors chargé comme menu de base (voir la commande MENU d'AutoCAD).

Pour charger un nouveau groupe de menus en tant que menu partiel, omettez le paramètre BaseMenu. Le groupe de menus est alors chargé (voir la
commande CHARGMNU d'AutoCAD). Une fois chargés dans la collection MenuGroups, les menus partiels peuvent être insérés dans la barre de menus via la

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 110 of 194

méthode InsertMenuInMenuBar ou InsertInMenuBar

Lorsqu'un groupe de menus a été chargé, tous les menus et b arres d'outils définis par ce groupe p euvent être utilisés. Vous pouvez

 Ajouter des menus dans la barre de menus


 Supprimer des menus de la barre de menus
 Réorganiser les menus dans la barre de menus
 Ajouter de nouvelles options à une barre d'outils ou un menu existant
 Supprimer des options d'une barre d'outils ou d'un menu existant
 Créer des menus et barres d'outils
 Faire flotter ou ancrer des barres d'outils
 Activer ou désactiver des options de menu et de barre d'outils
 Activer ou désactiver la coche d'une option de menu
 Modifier l'étiquette, le libellé ou la chaîne d'aide d'une option de menu ou de barre d'outils
 Réassigner les macros associées à une option de menu ou de barre d'outils

Remarque Les menus contextuels et les barres d'outils ne peuvent être modifiés qu'à l'aide d'Automatisation ActiveX. Toutefois, vous pouvez utiliser
Automatisation ActiveX pour charger et décharger d'autres types de menus, tels que les options de menu de mosaïque d'image, les menus d'écran ou les
menus de tablette.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Modification de la barre de menus


 

Comme nous l'avons vu précédemment, la barre de menus peut être entièrement remplacée par un nouveau groupe de menus si ce groupe est chargé en tant
que menu de base. De plus, vous pouvez ajouter, supprimer ou réorganiser des menus individuels dans la barre de menus.

Rubriques de cette section :

 Insertion de menus dans la barre de menus  

 Suppression de menus de la barre de menus  

 Réorganisation des menus de la barre de menus  

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Insertion de menus dans la barre de menus


 

Pour insérer un menu existant dans la barre de menus, utilisez la méthode InsertMenuInMenuBar ou InsertInMenuBar Ces deux méthodes aboutissent au
même résultat : elles insèrent un menu existant dans la barre de menus.

La seule différence est qu'elles sont appelées à partir d'un objet différent. Notez que la méthode InsertMenuInMenuBar est appelée depuis la collection
PopupMenus Avec cette méthode, vous pouvez insérer un menu de la collection à un emplacement spécifié dans la barre de menus. Elle requiert comme
entrée le nom du menu à insérer et l'emplacement de son insertion dans la barre de menus.

La méthode InsertInMenuBar est appelée directement à partir de l'objet PopupMenu à insérer. La seule entrée requise par cette méthode est l'emplacement
dans la barre de menus. Le nom du menu n'est pas requis dans la mesure où vous appelez directement la méthode à partir de l'objet à insérer.

Utilisez la méthode la plus appropriée pour votre application.

Insertion de menus dans la barre de menus

Dans cet exemple, un nouveau menu intitulé MenuTest dans lequel une option est insérée est créé. La commande OUVRIR est affectée à cette option de
menu. Le menu est ensuite affiché dans la barre de menus.

Sub Ch6_InsertMenu()
' Define a variable for the current menu group
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application. _
MenuGroups.Item(0)
' Create a new menu
Dim newMenu As AcadPopupMenu
Set newMenu = currMenuGroup.Menus.Add("MenuTest")
' Declare the variables for the menu item
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String
' Assign the macro string the VB equivalent of
' "ESC ESC _open " and create the menu item
openMacro = Chr(3) + Chr(3) + "_open "
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _
"Open", openMacro)

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 111 of 194

  ' Display the menu on the menu bar


currMenuGroup.Menus.InsertMenuInMenuBar "MenuTest", ""
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Suppression de menus de la barre de menus


 

Pour supprimer un menu de la barre de menus, utilisez la méthode RemoveMenuFromMenuBar ou RemoveFromMenuBar Ces deux méthodes aboutissent au
même résultat : elles suppriment un menu de la barre de menus.

La seule différence est qu'elles sont appelées à partir d'un objet différent. Notez que la méthode RemoveMenuFromMenuBar est appelée depuis la collection
PopupMenus Elle requiert comme entrée le nom du menu à supprimer et l'emplacement à supprimer dans la barre de menus. Par exemple, l'instruction
suivante supprime le menu ajouté à la section Insertion de menus dans la barre de menus :

currMenuGroup.Menus.RemoveMenuFromMenuBar ("MenuTest")

La méthode RemoveFromMenuBar est appelée directement à partir de l'objet PopupMenu à supprimer. Cette méthode ne requiert pas de données d'entrée. Le
nom du menu n'est pas requis dans la mesure où vous appelez la méthode directement à partir de l'objet à supprimer.

Utilisez la méthode la plus appropriée pour votre application.

Remarque Les menus supprimés de la barre de menus sont toujours disponibles dans leur groupe de menus spécifique. Ils ne sont plus visibles pour
l'utilisateur.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Réorganisation des menus de la barre de menus


 

Vous pouvez réorganiser des menus en insérant et en supprimant des menus afin d' atteindre la configuration souhaitée.

Déplacement du premier menu en dernière position

Dans cet exemple, le premier menu de la barre de menus est supprimé, puis inséré en dernière position.

Sub Ch6_MoveMenu()
' Define a variable to hold the menu to be moved
Dim moveMenu As AcadPopupMenu
Dim MyMenuBar As AcadMenuBar
Set MyMenuBar = ThisDrawing.Application.menuBar
' Set moveMenu equal to the first menu displayed
' on the menu bar
Set moveMenu = MyMenuBar.Item(0)
' Remove the first menu from the menu bar
MyMenuBar.Item(0).RemoveFromMenuBar
' Add the menu back into the menu bar
' in the last position on the bar
moveMenu.InsertInMenuBar (MyMenuBar.count)
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Création et modification des menus déroulants et contextuels


 

ActiveX/VBA d'AutoCAD est capable de personnaliser deux types de menus AutoCAD : les menus déroulants et les menus contextuels (parfois également
appelés menus du curseur). Ces deux types de menus sont affichés sous forme d e menus en cascade. Le menu contextuel permet d'accéder rapidement aux
options fréquemment utilisées, comme les modes d'accrochage aux objets.

Un menu déroulant peut contenir jusqu'à 999 options de menu. Un menu déroulant peut contenir jusqu'à 499 options de menu. Les deux limites incluent tous les
menus de la hiérarchie. Si le nombre d'options d'un menu dépasse ces limites, AutoCAD ignore les options excédentaires. En outre, un menu déroulant ou
contextuel est tronqué s'il ne tient pas dans l'écran graphique.

Alors que les menus déroulants se déroulent toujours à partir de la barre de menus, un menu contextuel a pparaît au niveau ou à proximité du réticule dans la
zone graphique. Les deux types de menus sont gérés de la même manière, excepté que le titre du menu contextuel n'est pas inclus dans la barre de menus. En
fait, son titre n'apparaît pas du tout. Pour accéder au menu contextuel, il suffit d'activer un menu dans le groupe de menus de base. Le menu contextuel peut
être identifié à l'aide de la propriété ShortcutMenu Si elle renvoie la valeur TRUE, le menu recherché est le menu contextuel du groupe.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 112 of 194

Rubriques de cette section :

 Création de menus  

 Ajout de nouvelles options à un menu  

 Ajout de séparateurs à un menu  

 Assignation d'une touche d'accès rapide à une option de menu  

 Création de sous-menus en cascade 

 Suppression des options d'un menu  

 Propriétés des options d'un menu  

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Création de menus
 

Pour créer un menu, utilisez la méthode Add afin d'ajouter un nouvel objet PopupMenu à la collection PopupMenus

Pour créer un menu contextuel, vous devez commencer par en supprimer un. Un seul menu contextuel par groupe de menus e st autorisé. Si aucun autre menu
contextuel n'est inclus dans un groupe de menus, vous pouvez ajouter un menu intitulé “POP0” (le dernier caractère étant le chiffre zé ro). AutoCAD comprendra
immédiatement que vous souhaitez créer un menu contextuel.

La méthode Add requiert comme entrée le nom (libellé) du menu à ajouter. Ce nom devient le titre du menu lorsqu'il est chargé dans la barre de menus. Grâce
au nom, il est possible d 'identifier facilement le menu dans une collection.

Ce nom peut être une simple chaîne ou peut contenir des codes spéciaux. Vous pouvez également modifier le nom d 'un menu après sa création. Pour
renommer un menu existant, utilisez sa propriété Name

Création d'un menu déroulant

Dans cet exemple, un menu déroulant intitulé “MenuTest” est créé dans le premier groupe de menus de la collection MenuGroups.

Sub Ch6_CreateMenu()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
' Create the new menu
Dim newMenu As AcadPopupMenu
Set newMenu = currMenuGroup.Menus.Add("MenuTest")
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Ajout de nouvelles options à un menu


 

Pour ajouter une nouvelle option à u n menu, utilisez la méthode AddMenuItem Cette méthode crée un objet PopupMenuItem et l'ajoute au menu spécifié.

La méthode AddMenuItem accepte quatre paramètres en entrée : Index, Label, Tag et Macro.

Rubriques de cette section :

 Spécification du paramètre Index  

 Spécification du paramètre Libellé  

 Spécification du paramètre Etiquette  

 Spécification du paramètre Macro  

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Spécification du paramètre Index


 

Le paramètre Index est un nombre entier qui spécifie la position de la nouvelle option dans le menu. L'index commence à la position zéro (0) qui correspond à

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 113 of 194

la première position dans le menu après le titre. Pour ajouter une nouvelle option à la fin d'un menu, attribuez au paramètre Index la valeur de la propriété
Count du menu. (Cette propriété représente le nombre total d'options dans ce menu.)

La première position d'index est zéro (0) et les séparateurs sont répertoriés en tant qu'options individuelles avec leur propre position d'index. La propriété Count
du menu illustré aurait pour valeur six (6). Pour ajouter une option de menu entre Mosaïque horizontale et Mosaïque verticale, définissez le paramètre Index 
sur deux (2), ce qui correspond à l'index de l'option du menu Mosaïque verticale. Une nouvelle option de menu est alors insérée dans l'index deux (2) et les
autres options sont décalées d'une position d'index vers le bas.

Une fois une option créée, vous ne pouvez pas modifier son index via la propriété Index Pour modifier l'index d'une option existante, vous devez supprimer puis
ajouter de nouveau l'option à un emplacement différent, ou ajouter ou supprimer les options l'entourant afin d'atteindre l'emplacement souhaité.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Spécification du paramètre Libellé


 

Un libellé est une chaîne qui définit le contenu et le formatage des options de menu. Les libellés d'options de menu peuvent contenir des expressions de chaîne
DIESEL qui modifient de manière conditionnelle les libellés à chaque fois qu'ils sont affichés.

En plus des expressions de chaîne DIESEL, un libellé peut contenir des codes spéciaux. Par exemple, un "et" commercial (&) placé directement avant un
caractère désigne celui-ci comme touche d'accès rapide.

Le texte de l'option de menu affiché pour l'utilisateur est appelé le titre ; il est dérivé du libellé par interprétation de tous les codes spéciaux et expressions de
chaîne DIESEL contenus dans le libellé. Par exemple, l'intitulé “&Edition” produit le titre “Edition”.

Une fois une option de menu créée, vous pouvez modifier son libellé à l'aide de la propriété Label

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Spécification du paramètre Etiquette


 

Une étiquette, ou étiquette de nom, est une chaîne constituée de caractères alphanumériques et de soulignement (_). Cette chaîne identifie l'option de manière
unique au sein d'un menu donné.

Une fois une option de menu créée, vous pouvez modifier son étiquette à l'aide de la propriété TagString

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Spécification du paramètre Macro


 

Une macro est une série de commandes qui exécutent des actions spécifiques lorsqu'une option de menu est sélectionnée. Les macros de menu peuvent être
de simples enregistrements de combinaisons de touches accomplissant une tâche, ou bien une combinaison complexe de commandes ou codes de
programmation AutoLISP, DIESEL ou ActiveX.

Une fois une option de menu créée, vous pouvez en modifier la macro à l'aide de la propriété Macro

Ajout d'options de menu dans un menu déroulant

Dans cet exemple, un nouveau menu intitulé “MenuTest”, dans lequel une option est insérée, est créé. L'option de menu porte le nom “Ouvrir”, et la macro qui
lui est affectée est la commande OUVRIR.

Sub Ch6_AddAMenuItem()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
' Create the new menu

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 114 of 194

  Dim newMenu As AcadPopupMenu


Set newMenu = currMenuGroup.Menus.Add("MenuTest")
' Add a menu item to the new menu
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String
' Assign the macro the VBA equivalent of "ESC ESC _open "
openMacro = Chr(3) + Chr(3) + "_open "
Set newMenuItem = newMenu.AddMenuItem _
(newMenu.count + 1, "Open", openMacro)
' Display the menu on the menu bar
newMenu.InsertInMenuBar _
(ThisDrawing.Application.menuBar.count + 1)
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Ajout de séparateurs à un menu


 

Pour ajouter un séparateur à un menu, utilisez la méthode AddSeparator Cette méthode crée un objet PopupMenuItem et l'ajoute au menu spécifié. Ce type
d'objet PopupMenuItem se voit assigner le type acSeparator. Le type d'une option de menu peut être déterminé via la propriété Type

La méthode AddSeparator utilise le paramètre Index comme seule entrée. Le paramètre Index est un nombre entier qui spécifie la position du séparateur
dans le menu. L'index commence à la position zéro (0) qui correspond à la première position dans le menu après le titre.

Reportez-vous à la section Activation et désactivation d'options de menu  pour obtenir un exemple sur l'ajout de séparateurs à un menu.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Assignation d'une touche d'accès rapide à une option de menu


 

Pour assigner la touche d'accès rapide à une option de menu via ActiveX/VBA d'AutoCAD, utilisez la propriété Label de l'option d e menu donnée. Insérez
l'équivalent ASCII du signe commercial (&) directement dans le libellé, devant le caractère qui va servir de touche d'accès rapide. Par exemple, le libellé Chr
(Asc("&")) + "Edition" sera affiché sous la forme “Edition”", la lettre “E”" servant de touche d'accès rapide.

Ajout de touches d'accès rapide aux menus

Cet exemple est identique à celui de la section Ajout d'options de menu dans un menu déroulant , mais il permet d'ajouter une touche d'accès rapide aux menus
“MenuTest” et “Ouvrir”. La lettre “s” est utilisée comme touche d'accès de “MenuTest” et la lettre “O” comme touche d'accès au menu “Ouvrir”.

Sub Ch6_AddAMenuItem()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
' Create the new menu
Dim newMenu As AcadPopupMenu
Set newMenu = currMenuGroup.Menus.Add _
("Te" + Chr(Asc("&")) + "stMenu")
' Add a menu item to the new menu
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String
' Assign the macro the VBA equivalent of "ESC ESC _open "
openMacro = Chr(3) + Chr(3) + "_open "
Set newMenuItem = newMenu.AddMenuItem _
(newMenu.count + 1, Chr(Asc("&")) _
+ "Open", openMacro)
' Display the menu on the menu bar
newMenu.InsertInMenuBar _
(ThisDrawing.Application.menuBar.count + 1)
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Création de sous-menus en cascade


 

Pour ajouter un sous-menu en cascade, créez-le via la méthode AddSubmenu Cette méthode crée un objet PopupMenuItem et l'ajoute au menu spécifié. Ce
type d'objet PopupMenuItem se voit assigner le t ype acSubmenu.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 115 of 194

La méthode AddSubmenu accepte trois paramètres en entrée : Index, Label et Tag.

Le paramètre Index est un nombre entier qui spécifie la position de la nouvelle option dans le menu. L'index commence à la position zéro (0) qui correspond à
la première position dans le menu après le titre. Pour ajouter une nouvelle option à la fin d'un menu, attribuez au paramètre Index la valeur de la propriété
Count du menu. (Cette propriété représente le nombre total d'options dans ce menu.)

Le paramètre Label est une chaîne qui définit le contenu et le formatage des options de menu. Le texte de l'option de menu affiché pour l'utilisateur est appelé
le titre ; il est dérivé du libellé par i nterprétation de tous les codes spéciaux et expressions de chaîne DIESEL contenus dans ce libellé. Par exemple, l'intitulé
“&Edition” produit le titre “Edition””

Le paramètre Tag, ou étiquette de nom, est une chaîne constituée de caractères alphanumériques et de soulignement (_). Cette chaîne identifie l'option de
manière unique au sein d'un menu donné.

La méthode AddSubmenu ne renvoie pas l'objet PopupMenuItem qu'elle crée. Elle renvoie à la place le nouveau menu désigné par le sous-menu. Le nouveau
menu, renvoyé en tant qu'objet PopupMenu, peut être rempli comme tout menu normal. Pour d e plus amples informations sur le remplissage d'un menu, voir
Ajout de nouvelles options à un menu .

Création et remplissage d'un sous-menu

Cet exemple crée un menu appelé “MenuTest” et l'ajoute à un sous-menu intitulé “OuvrirFichier”.Le sous-menu est ensuite rempli avec une option de menu
appelée “Ouvrir” qui ouvre un dessin lors de son exécution. Le menu est ensuite affiché dans la barre de menus.

Sub Ch6_AddASubMenu()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
' Create the new menu
Dim newMenu As AcadPopupMenu
Set newMenu = currMenuGroup.Menus.Add("MenuTest")
' Add the submenu
Dim FileSubMenu As AcadPopupMenu
Set FileSubMenu = newMenu.AddSubMenu("", "OpenFile")
' Add a menu item to the sub menu
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String
' Assign the macro the VB equivalent of "ESC ESC _open "
openMacro = Chr(3) + Chr(3) + "_open "
Set newMenuItem = FileSubMenu.AddMenuItem _
(newMenu.count + 1, "Open", openMacro)
' Display the menu on the menu bar
newMenu.InsertInMenuBar _
(ThisDrawing.Application.menuBar.count + 1)
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Suppression des options d'un menu


 

Pour supprimer des options d'un menu, utilisez la méthode Delete trouvée sous cette option.

Avertissement Si vous supprimez une option de menu, n'utilisez pas une autre méthode ou une autre propriété qui chargerait à nouveau directement ou
indirectement le même fichier IUP dans la même macro. Par exemple, après avoir supprimé une option de menu, n'utilisez pas la méthode MenuGroup.Load ou
la propriété Preferences.Profiles.ActiveProfile ou encore n'émettez pas de commande "Menuload" avec la méthode Document.SendCommand. Ces options
provoquent directement ou indirectement le chargement des fichiers IUP. Vous ne devez utiliser ces méthodes ou propriétés que dans une autre macro.

Suppression d'une option d'un menu

Dans cet exemple, une option de menu est ajoutée à la fin du dernier menu affiché dans la barre de menus. L'option de menu est ensuite supprimée.

Sub Ch6_DeleteMenuItem()
Dim LastMenu As AcadPopupMenu
Set LastMenu = ThisDrawing.Application.menuBar. _
Item(ThisDrawing.Application.menuBar.count - 1)
' Add a menu item
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String
' Assign the macro the VB equivalent of "ESC ESC _open "
openMacro = Chr(3) + Chr(3) + "_open "
Set newMenuItem = LastMenu.AddMenuItem _
(LastMenu.count + 1, "Open", openMacro)
' Remove the menu item from the menu
newMenuItem.Delete
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 116 of 194

Propriétés des options d'un menu


 

Toutes les options de menu partagent les propriétés suivantes :

TagString
Une étiquette, ou étiquette de nom, est une chaîne constituée de caractères alphanumériques et de soulignement (_). Cette chaîne identifie l'option de
manière unique au sein d'un menu donné. Les étiquettes identifient les touches d'accès rapide (séquences de touches du clavier) qui correspondent à l'option
de menu.
Vous pouvez lire ou écrire la valeur d'une étiquette à l'aide de la propriété TagString.
Label
Un libellé est une chaîne qui définit le contenu et le formatage des options de menu.
Les libellés d'options de menu peuvent contenir des expressions de chaîne DIESEL qui modifient de manière conditionnelle les libellés à chaque fois qu'ils
sont affichés.
Vous pouvez lire ou écrire la valeur d'un libellé à l'aide de la propriété Label.
Caption
Un titre est du texte affiché dans le menu pour l'utilisateur. Cette propriété est en lecture seule et est dérivée de la propriété Label par la suppression de
toutes les expressions de chaîne DIESEL.
Vous pouvez lire la valeur d'un titre à l'aide de la propriété Caption.
Macro
Une macro est une série de commandes qui exécutent des actions spécifiques lorsqu'une option de menu est sélectionnée. Les macros de menu peuvent
être de simples enregistrements de combinaisons de touches accomplissant une tâche, ou bien une combinaison complexe de commandes ou codes de
programmation AutoLISP, DIESEL ou ActiveX.
Vous pouvez lire ou écrire la valeur d'une macro de menu à l'aide de la propriété Macro.
HelpString
Une chaîne d'aide est la chaîne de texte qui s'affiche sur la ligne d'état d'AutoCAD lorsque l'utilisateur met en surbrillance une option de menu.
Vous pouvez lire ou écrire la valeur d'une chaîne d'aide à l'aide de la propriété HelpString.
Enable
La propriété Enable vous permet d'activer ou de désactiver une option de menu. Vous pouvez également lire la propriété Enable afin de déterminer si une
option de menu est actuellement activée ou désactivée. L'utilisation de cette propriété pour activer ou désactiver une option de menu remplace tout paramètre
d'activation figurant dans l'expression DIESEL de l'option.
Reportez-vous à la section Propriétés des options d'un menu  pour un exemple de désactivation des options de menu.
Check
La propriété Check vous permet de cocher ou de retirer la coche d'une option de menu. Vous pouvez également lire la propriété Check pour déterminer si
une option de menu est cochée ou non. L'utilisation de cette propriété pour cocher ou supprimer la coche d'une option de menu remplace tout paramètre de
sélection (coche) figurant dans l'expression DIESEL de l'option.
Index
L'index d'une option de menu spécifie la position de cette option dans le menu auquel elle appartient. La position d'index d'un menu commence toujours à la
position 0. Par exemple, si l'option est la première d'un menu, elle renvoie la position d'index 0, si elle est la deuxième option du menu, elle renvoie la position
d'index 1, etc.
Type
Vous pouvez déterminer le type d'une option de menu à l'aide de la propriété Type. Voici les types d'option de menu : un menu normal, un séparateur ou
l'intitulé d'un sous-menu. S'il s'agit d'un menu normal, la propriété renvoie acMenuItem. S'il s'agit d'un séparateur, la propriété renvoie acMenuSeparator.
S'il s'agit d'un intitulé de sous-menu, la propriété renvoie acSubMenu.
SubMenu
Vous pouvez rechercher le sous-menu à l'aide de la propriété SubMenu. Si l' option de menu est du type acSubMenu, cette propriété renvoie le menu qui est
attaché comme sous-menu ou menu imbriqué. Le menu imbriqué est renvoyé comme un objet PopupMenu.
Si l'option de menu n'est pas de type acSubMenu, cette propriété renvoie une erreur.
Parent
Vous pouvez déterminer le menu auquel appartient une option à l'aide de la propriété Parent. Cette propriété renvoie le menu dans lequel réside l'option. Le
menu parent est renvoyé sous la forme d'un objet PopupMenu.

Activation et désactivation d'options de menu

Dans cet exemple, le menu “MenuTest” est créé, puis deux options sont insérées. La deuxième option de menu est ensuite désactivée à l'aide de la propriété
Enable et le menu est affiché dans la barre de menus.

Sub Ch6_DisableMenuItem()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
' Create the new menu
Dim newMenu As AcadPopupMenu
Set newMenu = currMenuGroup.Menus.Add("MenuTest")
' Add two menu items and a menu separator to the new menu
Dim MenuEnable As AcadPopupMenuItem
Dim MenuDisable As AcadPopupMenuItem
Dim MenuSeparator As AcadPopupMenuItem
Dim openMacro As String
' Assign the macro the VB equivalent of "ESC ESC _open "
openMacro = Chr(3) + Chr(3) + "_open "
Set MenuEnable = newMenu.AddMenuItem _
(newMenu.count + 1, "OpenEnabled", openMacro)
Set MenuSeparator = newMenu.AddSeparator("")
Set MenuDisable = newMenu.AddMenuItem _
(newMenu.count + 1, "OpenDisabled", openMacro)
' Disable the second menu item
MenuDisable.Enable = False
' Display the menu on the menu bar
newMenu.InsertInMenuBar _
(ThisDrawing.Application.menuBar.count + 1)
End Sub

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 117 of 194

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Création et modification des barres d'outils


 

Les fonctionnalités ActiveX/VBA d'AutoCAD vous permettent de créer et de modifier des barres d'outils au sein d 'un groupe de menus existant.

Rubriques de cette section :

 Création de barres d'outils  

 Ajout de nouveaux boutons à une barre d'outils  

 Ajout de séparateurs à une barre d'outils 

 Définition de l'image d'un bouton de barre d'outils  

 Création de barres d'outils déroulantes  

 Barres d'outils ancrées et flottantes 

 Suppression des boutons d'une barre d'outils  

 Propriétés des options d'une barre d'outils  

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Création de barres d'outils


 

Pour créer une barre d'outils, utilisez la méthode Add afin d'ajouter un nouvel objet Toolbar à la collection Toolbars

La méthode Add requiert comme entrée le nom de la barre d'outils à ajouter. Le nom est une chaîne de caractères alphanumériques sans ponctuation autre
qu'un tiret (-) ou un caractère de soulignement (_). Grâce au nom, il est possible d'identifier facilement la barre d'outils dans une collection.

Vous pouvez modifier le nom d'une barre d'outils après sa création. Pour renommer une barre d'outils existante, utilisez sa propriété Name

Création d'une nouvelle barre d'outils

Dans cet exemple, une nouvelle barre d'outils intitulée “BarreOutilsTest” est créée dans le premier groupe de menus de la collection MenuGroups.

Sub Ch6_CreateToolbar()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
' Create the new toolbar
Dim newToolbar As AcadToolbar
Set newToolbar = currMenuGroup.Toolbars.Add("TestToolbar")
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Ajout de nouveaux boutons à une barre d'outils


 

Pour ajouter un nouveau bouton à une barre d'outils, utilisez la méthode AddToolbarButton Cette méthode crée un objet ToolbarItem et l'ajoute à la barre
d'outils spécifiée. N'ajoutez un bouton à la barre d'outils que lorsqu'elle est affichée.

La méthode AddToolbarButton requiert la saisie de cinq paramètres : Index, Name, HelpString, Macro et FlyoutButton.

Index
Le paramètre Index est un nombre entier qui spécifie la position de la nouvelle option Toolbar dans la barre d'outils. L'index commence à la position zéro (0),
qui correspond à la première position dans la barre d'outils après le titre. Pour ajouter un nouveau bouton à la fin d'une barre d'outils, attribuez au paramètre
Index la valeur de la propriété Count de la barre d'outils. La propriété Count de la barre d'outils représente le nombre total de boutons présents dans cette
barre d'outils.
Une fois un bouton de barre d'outils créé, vous ne pouvez pas modifier son index via la propriété Index. Pour modifier l'index d'un bouton de barre d'outils
existant, supprimez le bouton de la barre d'outils avant de le placer à un autre endroit, ou ajoutez ou supprimez les boutons adjacents jusqu'à ce que vous
trouviez l'emplacement approprié.
Name
Un nom est une chaîne qui identifie le bouton de la barre d'outils. Elle doit contenir des caractères alphanumériques, sans autre signe de ponctuation que le

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 118 of 194

tiret (–) et le trait de soulignement (_). Cette chaîne est affichée sous forme d'info-bulle lorsque le curseur se trouve sur le bouton.
Une fois un bouton de barre d'outils créé, vous pouvez modifier son nom à l'aide du paramètre Name.
HelpString
Une chaîne d'aide est la chaîne de texte qui s'affiche sur la ligne d'état d'AutoCAD lorsque l'utilisateur met en surbrillance une option de menu.
Une fois un bouton de barre d'outils créé, vous pouvez modifier sa chaîne d'aide à l'aide du paramètre HelpString.
Macro
Une macro est une série de commandes qui exécutent des actions spécifiques lorsqu'un bouton de barre d'outils est sélectionné. Les macros de barre d'outils
peuvent être de simples enregistrements de combinaisons de touches l ançant une tâche, ou bien une combinaison complexe de commandes ou de codes de
programmation AutoLISP, DIESEL ou ActiveX.
Une fois un bouton de barre d'outils créé, vous pouvez modifier sa macro à l'aide du paramètre Macro.
FlyoutButton
Le paramètre FlyoutButton est un drapeau optionnel qui indique si le nouveau bouton doit être déroulant ou non. S'il s'agit d'un bouton déroulant, ce
paramètre doit avoir la valeur TRUE. Dans le cas contraire, il peut soit avoir la valeur FALSE, soit être omis.

Ajout de boutons à une nouvelle barre d'outils

Dans cet exemple, une nouvelle barre d'outils est créée et un bouton lui est ajouté. Le bouton est affecté à une macro qui exécute la commande OUVRIR
lorsqu'il est sélectionné.

Sub Ch6_AddButton()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
' Create the new toolbar
Dim newToolbar As AcadToolbar
Set newToolbar = currMenuGroup.Toolbars.Add("TestToolbar")
' Add a button to the new toolbar
Dim newButton As AcadToolbarItem
Dim openMacro As String
' Assign the macro the VB equivalent of "ESC ESC _open "
openMacro = Chr(3) + Chr(3) + "_open "
Set newButton = newToolbar.AddToolbarButton _
("", "NewButton", "Open a file.", openMacro)
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Ajout de séparateurs à une barre d'outils


 

Pour ajouter un séparateur à une barre d'outils, utilisez la méthode AddSeparator Cette méthode crée un objet ToolbarItem et l'ajoute à la barre d'outils
spécifiée. Ce type d'objet ToolbarItem se voit assigner le type acSeparator. Le type d'un bouton de barre d'outils peut être déterminé via la propriété Type

La méthode AddSeparator requiert la saisie d'un paramètre : Index. Le paramètre Index est un nombre entier qui spécifie la position du séparateur dans le
menu. L'index commence à la position zéro (0), qui correspond à la première position dans la barre d'outils après le titre.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Définition de l'image d'un bouton de barre d'outils


 

Pour définir les images à utiliser sur un bouton de barre d'outils, utilisez les méthodes SetBitmaps et GetBitmaps

La méthode SetBitmaps requiert deux paramètres : SmallIconName et LargeIconName.

SmallIconName
Le nom de petite icône spécifie la chaîne d'identification de la ressource p etite image (16 × 15 points). Elle doit contenir des caractères alphanumériques,
sans autre signe de ponctuation que le tiret (–) et le trait de soulignement (_), et doit inclure l'extension . bmp . La ressource peut être soit un bitmap système,
soit un bitmap défini par l'utilisateur. Les bitmaps définis par l'utilisateur doivent être de taille appropriée et résider dans l e dossier Support.
LargeIconName
Le nom de grande icône spécifie la chaîne d'identification de la ressource grande image (24 × 22 points). Elle doit contenir des caractères alphanumériques,
sans autre signe de ponctuation que le tiret (–) et le trait de soulignement (_), et doit inclure l'extension . bmp . La ressource peut être soit un bitmap système,
soit un bitmap défini par l'utilisateur. Les bitmaps définis par l'utilisateur doivent être de taille appropriée et résider dans l e dossier Support.

Recherche du nom des icônes de boutons dans une barre d'outils


Sub Ch6_GetButtonImages()
Dim Button As AcadToolbarItem
Dim Toolbar0 As AcadToolbar
Dim MenuGroup0 As AcadMenuGroup
Dim SmallButtonName As String
Dim LargeButtonName As String
Dim msg As String
Dim ButtonType As String
' Get the first toolbar in the first menu group

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 119 of 194

  Set MenuGroup0 = ThisDrawing.Application. _


MenuGroups.Item(0)
Set Toolbar0 = MenuGroup0.Toolbars.Item(0)
' Clear the string variables
SmallButtonName = ""
LargeButtonName = ""
' Create a header for the message box and
' display the toolbar to be queried
msg = "Toolbar: " + Toolbar0.Name + vbCrLf
Toolbar0.Visible = True
' Iterate through the toolbar and collect data
' for each button in the toolbar. If the toolbar is
' a normal button or a flyout, collect the small
' and large button names for the button.
For Each Button In Toolbar0
ButtonType = Choose(Button.Type + 1, "Button", _
"Separator", "Control", "Flyout")
msg = msg & ButtonType & ": "
If Button.Type = acToolbarButton Or _
Button.Type = acToolbarFlyout Then
Button.GetBitmaps SmallButtonName, _
LargeButtonName
msg = msg + SmallButtonName + ", " _
+ LargeButtonName
End If
msg = msg + vbCrLf
Bouton Suivant
' Display the results
MsgBox msg
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Création de barres d'outils déroulantes


 

Pour ajouter un bouton déroulant à une barre d'outils, utilisez la méthode AddToolbarButton Cette méthode crée un objet ToolbarItem et l'ajoute à la barre
d'outils spécifiée.

La méthode AddToolbarButton requiert la saisie de cinq paramètres : Index, Name, HelpString, Macro et FlyoutButton. En définissant le paramètre
FlyoutButton sur TRUE, le nouveau bouton créé sera un bouton déroulant. La valeur renvoyée par cette méthode est la nouvelle barre d'outils déroulante. La
barre d'outils déroulante peut être remplie comme toute autre barre d'outils.

Pour de plus amples informations sur le remplissage d'une barre d'outils, voir Ajout de nouveaux boutons à une barre d'outils .

Création d'un bouton de barre d'outils déroulant

Dans cet exemple, deux barres d'outils sont créées. La première contient un bouton déroulant. La seconde est attachée au bouton déroulant de la première
barre d'outils.

Sub Ch6_AddFlyoutButton()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application. _
MenuGroups.Item(0)
' Create the first toolbar
Dim FirstToolbar As AcadToolbar
Set FirstToolbar = currMenuGroup.Toolbars. _
Add("FirstToolbar")
' Add a flyout button to the first menu on the menu bar
Dim FlyoutButton As AcadToolbarItem
Set FlyoutButton = FirstToolbar.AddToolbarButton _
("", "Flyout", "Demonstrates a flyout button", _
"OPEN", True)
' Create the second toolbar. This will be attached to
' the first toolbar via the flyout button.
Dim SecondToolbar As AcadToolbar
Set SecondToolbar = currMenuGroup.Toolbars. _
Add("SecondToolbar")
' Add a button to the next toolbar
Dim newButton As AcadToolbarItem
Dim openMacro As String
' Assign the macro the VB equivalent of "ESC ESC _open "
openMacro = Chr(3) + Chr(3) + "_open "
Set newButton = SecondToolbar.AddToolbarButton _
("", "NewButton", "Open a file.", openMacro)
' Attach the second toolbar to the flyout
' button on the first toolbar
FlyoutButton.AttachToolbarToFlyout currMenuGroup.Name, _
SecondToolbar.Name
' Display the first toolbar, hide the second toolbar
FirstToolbar.Visible = True
SecondToolbar.Visible = False

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 120 of 194

End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Barres d'outils ancrées et flottantes


 

Vous pouvez créer des barres d'outils flottantes ou ancrées par programmation.

Pour faire flotter une barre d'outils, utilisez la méthode Float La méthode Float requiert la saisie de trois paramètres :  Top, Left et NumberFloatRows. Les
paramètres Top et Left spécifient l'emplacement (en pixels) de l'angle supérieur gauche de la barre d'outils. L e paramètre NumberFloatRows spécifie le
nombre de lignes de la barre d'outils horizontale à créer. Ce nombre doit être supérieur ou égal à un. Les boutons de la barre d'outils sont répartis
proportionnellement sur le nombre de lignes spécifié. Dans le cas de barres d'outils alignées verticalement, cette valeur spécifie le nombre de colonnes.

Pour ancrer une barre d'outils, utilisez la méthode Dock La méthode Dock requiert la saisie de trois paramètres : Side, Row et Column. Le paramètre Side 
spécifie le bord de la barre d'outils à positionner dans l'opération d'ancrage. Vous pouvez spécifier les bords supérieur, inférieur, gauche ou d roit de la barre
d'outils. Les paramètres Row et Column indiquent sur quelles ligne et colonne des barres d'outils ancrées la barre d'outils doit être positionnée.

Vous pouvez interroger une barre d'outils pour contrôler son ancrage à l'aide de la propriété DockStatus Cette propriété renvoie la valeur TRUE si la barre
d'outils est ancrée et FALSE si elle est flottante.

Ancrage d'une barre d'outils

Dans cet exemple, une nouvelle barre d'outils est créée et trois boutons lui sont ajoutés. La barre d'outils est ensuite affichée et ancrée à gauche de l'écran.

Sub Ch6_DockToolbar()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application. _
MenuGroups.Item(0)
' Create the new toolbar
Dim newToolbar As AcadToolbar
Set newToolbar = currMenuGroup.Toolbars. _
Add("TestToolbar")
' Add three buttons to the new toolbar.
' All three buttons will have the same macro attached.
Dim newButton1 As AcadToolbarItem
Dim newButton2 As AcadToolbarItem
Dim newButton3 As AcadToolbarItem
Dim openMacro As String
' Assign the macro the VB equivalent of "ESC ESC _open "
openMacro = Chr(3) + Chr(3) + "_open "
Set newButton1 = newToolbar.AddToolbarButton _
("", "NewButton1", "Open a file.", openMacro)
Set newButton2 = newToolbar.AddToolbarButton _
("", "NewButton2", "Open a file.", openMacro)
Set newButton3 = newToolbar.AddToolbarButton _
("", "NewButton3", "Open a file.", openMacro)
' Display the toolbar
newToolbar.Visible = True
' Dock the toolbar to the left of the screen.
newToolbar.Dock acToolbarDockLeft
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Suppression des boutons d'une barre d'outils


 

Pour supprimer des boutons d'une barre d'outils, utilisez la méthode Delete trouvée sur ces boutons. Ne supprimez un bouton de la barre d'outils que lorsqu'elle
est affichée.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Propriétés des options d'une barre d'outils


 

Toutes les options de barre d'outils partagent les propriétés suivantes :

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 121 of 194

Tagstring
Une étiquette, ou étiquette de nom, est une chaîne constituée de caractères alphanumériques et de soulignement (_). Cette chaîne identifie l'option de
manière unique au sein d'une barre d'outils donnée. Une nouvelle étiquette est automatiquement assignée lorsqu'une option de barre d'outils est créée.
Vous pouvez lire ou écrire la valeur d'une étiquette à l'aide de la propriété Tagstring.
Name
Un nom est une chaîne qui identifie l'option de la barre d'outils. Il s'agit également de la chaîne utilisée comme texte d'info-bulle. Ce texte s'affiche lorsqu'un
utilisateur place le pointeur de la souris ou toute autre périphérique de pointage sur une option de la barre d'outils.
Vous pouvez lire ou écrire la valeur d'un nom à l'aide de la propriété Name.
Macro
Une macro est une série de commandes qui exécutent des actions spécifiques lorsqu'une option de barre de menus est sélectionnée. Les macros peuvent
être de simples enregistrements de combinaisons de touches accomplissant une tâche, ou bien une combinaison complexe de commandes ou codes de
programmation AutoLISP, DIESEL ou ActiveX.
Vous pouvez lire ou écrire la valeur d'une macro à l'aide de la propriété Macro.
HelpString
Une chaîne d'aide est la chaîne de texte qui s'affiche sur la ligne d'état d'AutoCAD pour un bouton de barre d'outils.
Vous pouvez lire ou écrire la valeur d'une chaîne d'aide à l'aide de la propriété HelpString.
Index
L'index d'une option de barre d'outils spécifie la position de cette option dans la barre d'outils à laquelle elle appartient. La position d'index d'une barre d'outils
commence toujours à la position 0. Par exemple, si l'option est la première d'une barre d'outils, elle renvoie la position d'index 0, si elle est la deuxième, elle
renvoie la position d'index 1, et ainsi de suite.
Vous pouvez lire la position d'index d'une option de barre d'outils à l'aide de la propriété Index.
Type
Voici les types d'option de barre d'outils : un bouton de barre d'outils normal, un séparateur, un bouton déroulant ou un élément de contrôle spécial. S'il s'agit
d'un bouton de menu normal, la propriété renvoie acButton. S'il s'agit d'un séparateur, la propriété renvoie acToolButtonSeparator. S'il s'agit d'un
bouton déroulant, la propriété renvoie acFlyout. S'il s'agit d'un élément de contrôle spécial, la propriété renvoie acControl.
Vous pouvez déterminer le type d'une option de barre d'outils à l'aide de la propriété Type.
Flyout
Si l'option de barre d'outils est de type acFlyout, cette propriété renvoie la barre d'outils attachée en tant que barre d'outils déroulante. La barre d'outils
déroulante est renvoyée sous la forme d'un objet Toolbar.
Si l'option de menu n'est pas de type acFlyout, cette propriété renvoie la valeur NULL.
Vous pouvez déterminer la barre d'outils déroulante d'une option de barre d'outils à l' aide de la propriété Flyout.
Parent
Cette propriété renvoie la barre d'outils dans laquelle réside l'option. La barre d'outils Parent est renvoyée sous la forme d'un objet Toolbar.
Vous pouvez déterminer la barre d'outils à laquelle appartient une option à l'aide de la propriété Parent.
Propriétés d'une barre d'outils
D'autres propriétés s'appliquent à toutes les options d'une barre d'outils. Ces propriétés déterminent notamment si la barre d'outils est flottante ou ancrée, si
elle est visible ou masquée et si elle utilise des petits boutons ou des grands boutons.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Création de macros
 

Une macro est une série de commandes qui exécutent des actions spécifiques lorsqu'une option de barre de menus est sélectionnée. Les macros peuvent être
de simples enregistrements de combinaisons de touches accomplissant une tâche, ou bien une combinaison complexe de commandes ou codes de
programmation AutoLISP, DIESEL ou ActiveX.

Si vous envisagez d'inclure des paramètres de commande dans une macro de menu, vous devez connaître la séquence dans laquelle cette commande attend
ses paramètres. Dans une macro de menu, chaque caractère est significatif, même les espaces. Les messages des commandes (et parfois même les noms
des commandes) peuvent changer au fil des révisions et des améliorations d'AutoCAD. Par conséquent, configurez vos menus personnalisés de telle sorte que
seules des modifications mineures soient requises lors d'une mise à niveau d'AutoCAD.

Si l'entrée de commande est effectuée depuis une option de menu, les variables système PICKADD et PICKAUTO sont supposées valoir respectivement 1 et 0.
Cela permet de préserver la compatibilité avec les versions antérieures d'AutoCAD et de faciliter la personnalisation en vous évitant d'avoir à vérifier les
paramètres de ces variables.

Rubriques de cette section :

 Mappage de caractères de macro à des caractères ASCII équivalents 

 Fin de la macro  

 Pause pour entrée utilisateur  

 Annulation d'une commande  

 Répétition de macro  

 Mode de sélection d'un seul objet  

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 122 of 194

Mappage de caractères de macro à des caractères ASCII équivalents


 

Le tableau suivant récapitule les caractères spéciaux utilisés dans les macros de menu et leurs valeurs ASCII équivalentes telles qu'elles sont utilisées dans VB
et VBA. Utilisez l'équivalent ASCII pour ces caractères spéciaux lors de la création de la chaîne pour la propriété Macro

Caractères spéciaux utilisés dans les macros de menu et de barre d'outils


Caractère Equivalent ASCII Description
; chr(59) Génère la touche ENTREE.
^M chr(13) Génère la touche ENTREE.
^| chr(94) + chr(124) Génère la touche TAB.
ESPACE chr(32) Entre un espace ; l'espace entre des séries de commandes d'une option de menu revient à appuyer sur ESPACE.
 \ chr(92) Marque une pause pour permettre l'entrée utilisateur.
 _ chr(95) Traduit les commandes et mots clés AutoCAD qui suivent
+ chr(43) Poursuit la macro de menu sur la ligne suivante
(si dernier caractère).
=* chr(61) + chr(42) Affiche l'image de niveau supérieur,
le menu déroulant ou le menu contextuel courant.
*^C^C chr(42) + chr(3) + chr(3) Préfixe d'option répétitive
$ chr(36) Charge une section de menu ou introduit une expression de macro DIESEL conditionnelle.
^B chr(2) Active ou désactive l'accrochage (CTRL+B).
^C chr(3) Annule la commande (CTRL+C).
ECHAP chr(3) Annule la commande (ECHAP).
^D chr(4) Active ou désactive les coordonnées (CTRL+D).
^E chr(5) Définit le plan isométrique suivant (CTRL + E).
^G chr(7) Active ou désactive la grille (CTRL+G).
^H chr(8) Génère un retour arrière.
^O chr(15) Active ou désactive la fonction Ortho (CTRL+O).
^P chr(16) Active ou désactive MENUECHO.
^Q chr(17) Renvoie un écho de tous les messages, listes d'état et saisies vers l'imprimante (CTRL+Q).
^T chr(20) Active ou désactive la tablette (CTRL+T).
^V chr(22) Change de fenêtre courante (CTRL+V).
^Z chr(26) Caractère Null qui supprime l'ajout automatique de ESPACE à la
fin d'une option de menu.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Fin de la macro
 

Lors de l'exécution d'une macro, AutoCAD insère un espace à la fin de la macro avant de traiter la séquence de commandes. Il traite la macro de menu
suivante comme si vous aviez entré ligne ESPACE.

Ligne

Cet espace n'est pas toujours souhaitable ; par exemple, la commande TEXTE ou COT doit se terminer par ENTREE, et non par un espace. En outre, une
commande peut parfois nécessiter plusieurs espaces (ou ENTREE), mais certains éditeurs de texte n'acceptent pas la création de ligne avec des espaces
finaux. Deux conventions particulières permettent de régler ces problèmes.

 Si un point-virgule (;) apparaît dans une macro, AutoCAD le remplace par ENTREE.
 Si une ligne se termine par un caractère de contrôle, une barre oblique inversée (\), le signe plus (+) ou un point-virgule (;), AutoCAD n'ajoute pas d'espace à
la suite.

Regardez la macro suivante :

effacer \;

Si cette option se terminait par une barre oblique inversée (qui signale u ne entrée utilisateur), l'opération EFFACER ne pourrait pas aboutir, car AutoCAD
n'ajoute pas d'espace après cette barre oblique. C'est pourquoi cette macro de menu utilise le point-virgule pour imposer ENTREE après l'entrée utilisateur.
Voici d'autres exemples :

scu
scu ;
texte \.4 0 Société;;;Rue.;;;Ville, Département;

La sélection de la première macro e ntre scu et ESPACE sur la ligne de commande, et le message suivant apparaît :

Entrez une option [Nouveau/Déplacer/Orthogonal/Préc/Restaurer/Sauver/Effacer/Appliquer/?/Général] <Général>:

En revanche, la sélection de la deuxième macro entre scu, ESPACE et le point-virgule (interprété comme ENTREE) sur la ligne de commande, ce qui accepte
la valeur par défaut, Général. Aucune différence entre la première et la deuxième option n'apparaîtrait à l'écran ; naturellement, vous n'allez pas les placer dans

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 123 of 194

le même menu.

Si vous sélectionnez la troisième macro, un message demandant le point de départ apparaît, puis l'adresse est affichée sur trois lignes. Dans la séquence de
trois points-virgules (;;;), le premier marque la fin de la chaîne de caractères, le deuxième répète la commande TEXTE et le troisième demande le
positionnement par défaut en dessous de la ligne précédente.

Remarque Tous les caractères spéciaux doivent être saisis avec leurs équivalents ASCII. Pour consulter la liste des équivalents ASCII, reportez-vous à la
section Mappage de caractères de macro à des caractères ASCII équivalents.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Pause pour entrée utilisateur


 

Dans certains cas, il est utile d'accepter l'entrée utilisateur à partir du clavier ou du périphérique de pointage au milieu d'une macro en plaçant une barre oblique
inversée (\) à l'emplacement souhaité.

cercle \1
calque inactif \;

La première macro marque une pause pour demander à l'utilisateur d'entrer le centre, puis lit un rayon de valeur 1 à partir de la macro. Remarquez qu'aucun
espace ne suit la barre oblique inversée \. La deuxième macro marque une pause pour demander à l'utilisateur d'entrer un nom de calque, puis désactive ce
calque et quitte la commande CALQUE. En principe, la commande CALQUE vous demande de procéder à une autre opération et ne s'arrête que si vous
appuyez sur ESPACE (blanc) ou ENTREE (;).

Normalement, la macro reprend après qu'une option ait été entrée. Par conséquent, il n'est pas possible de générer une macro acceptant un nombre variable
d'entrées (comme dans le cas de la sélection d'objets), avant de continuer la procédure. Cependant, la commande SELECT est une exception ; la barre oblique
inversée suspend le déroulement de la macro j usqu'à ce que la sélection de l'objet soit entièrement terminée. Par exemple, prenons la macro suivante :

select \changer précédent; propriétés couleur rouge ;

Cette macro utilise la commande SELECT pour générer un jeu de sélection composé d'un ou plusieurs objets. Elle émet ensuite la commande CHANGER,
référence ce jeu de sélection à l'aide de l'élément Précédent, puis met tous les objets sélectionnés en rouge.

Comme la barre oblique inversée entraîne la pause de la macro pour l 'entrée utilisateur, vous ne pouvez pas utiliser ce signe à d'autres fins. Lorsque vous
indiquez le chemin d'accès d'un répertoire et d'un fichier, utilisez une barre oblique (/) comme séparateur : par exemple,  /direct/fichier .

La reprise d'une macro est temporisée dans les cas ci-après:

 Si l'entrée d'un point est attendue, les modes d'accrochage aux objets pourront précéder l 'entrée du point.
 Si vous utilisez des filtres de point X/Y/Z, la macro est suspendue tant que vous n'avez pas entré les trois coordonnées.
 Pour la commande SELECT uniquement, la macro ne reprend pas tant que la sélection de l'objet n'est pas terminée.
 Si l'utilisateur répond par une commande transparente, la macro suspendue le reste tant que cette commande n'est pas terminée et que l'entrée initialement
demandée n'a pas été reçue.
 Si l'utilisateur répond en choisissant une autre macro (pour fournir des options ou exécuter une commande transparente), la macro d'origine est suspendue
et la nouvelle option est i ntégralement traitée avant que la macro suspendue ne reprenne.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Annulation d'une commande


 

Insérez ^C^C dans une macro pour vous assurer qu'aucune commande précédente n'est incomplète. Cette chaîne équivaut à appuyer deux fois sur la touche
ECHAP du clavier. Bien qu'un simple ^C annule la plupart des commandes, vous devez entrer ^C^C pour revenir à l'invite de la ligne de commande à partir
d'une commande COT. Vous avez ainsi la certitude qu'AutoCAD revient à la ligne de commande dans la plupart des cas.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Répétition de macro
 

Une commande sélectionnée peut être utilisée plusieurs fois avant de passer à une autre commande. C'est généralement le cas avec les outils; vous prenez un
outil, l'utilisez pour différentes tâches avant de choisir un autre outil, et ainsi de suite. Afin d'éviter les sélections répétées d'outils fréquemment utilisés,
AutoCAD intègre un mécanisme de répétition de commande, déclenché par une réponse nulle. Toutefois, vous ne pourrez pas spécifier des options de
commande à l'aide de cette méthode.

En effet, elle sert simplement à répéter des commandes fréquentes jusqu'à la sélection d'une autre commande. Si une macro commence par *^C^C
immédiatement après le libellé, elle est enregistrée en mémoire. Tous les messages Commande ultérieurs obtiennent une réponse de cette macro jusqu'à ce
que vous y mettiez fin en appuyant sur ECHAP ou en sélectionnant une autre macro.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 124 of 194

N'entrez pas ^C (Annuler) dans un macro commençant par la chaîne *^C^C, car cela annule la répétition de la macro.

Voici un exemple d'approche répétitive ou modale de gestion de commande :

*^C^CDEPLACER Unique
*^C^CCOPIER Unique
*^C^CEFFACER Unique
*^C^CETIRER Unique capture
*^C^CROTATION Unique
*^C^CECHELLE Unique

La répétition de macro ne fonctionne pas dans les menus d'images.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Mode de sélection d'un seul objet


 

Ce mode paramètre la sélection d'un seul objet, désactive le dialogue normal effectué par la sélection d'objet et cause le renvoi du ou des premiers objets
sélectionnés par l'option suivante. Ceci peut être très pratique dans une macro. Par exemple, prenons la macro suivante :

*^C^CEFFACER unique

Cette macro met fin à l a commande courante et active la commande EFFACER avec l'option de sélection unique. Dès que vous avez sélectionné cette option,
vous pouvez soit désigner l'objet à effacer, soit pointer sur une zone vide et spécifier une fenêtre. Le ou les objets sélectionnés de cette manière sont effacés et
la macro est répétée (grâce au signe astérisque) afin que vous puissiez effacer un autre objet. Ce mode permet une interaction plus dynamique avec AutoCAD.

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Création d'une aide de ligne d'état pour des options de menu et de barre d'outils
 

Une partie importante du support d'aide natif est constituée des messages d'aide de la ligne d'état. Il s'agit de messages descriptifs simples qui s'affichent sur la
ligne d'état lorsqu'une option de menu ou de barre d'outils est mise en surbrillance. L'aide de ligne d'état pour toutes les options de menu et de barre d'outils est
contenue dans la propriété HelpString de l'option.

La propriété HelpString est vide lorsque l'option de menu ou de barre d'outils est créée.

Ajout de l'aide de ligne d'état à une option de menu

Dans cet exemple, un nouveau menu intitulé “MenuTest” est créé suivi d'une option de menu intitulée “Ouvrir”.L'option de menu est ensuite assignée à l'aide de
ligne d'état via la propriété HelpString.

Sub Ch6_AddHelp()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
' Create the new menu
Dim newMenu As AcadPopupMenu
Set newMenu = currMenuGroup.Menus.Add _
("Te" + Chr(Asc("&")) + "stMenu")
' Add a menu item to the new menu
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String
' Assign the macro the VBA equivalent of "ESC ESC _open "
openMacro = Chr(3) + Chr(3) + "_open "
' Create the menu item
Set newMenuItem = newMenu.AddMenuItem _
(newMenu.count + 1, Chr(Asc("&")) _
+ "Open", openMacro)
' Add the status line help to the menu item
newMenuItem.HelpString = "Opens an AutoCAD drawing file."
' Display the menu on the menu bar
newMenu.InsertInMenuBar _
(ThisDrawing.Application.menuBar.count + 1)
End Sub

Envoyez-nous vos commentaires sur cette page.  

Personnalisation des menus et barres d'outils  

Ajout d'entrées dans le menu contextuel

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 125 of 194

Le menu contextuel. accessible à l'aide du bouton droit de la souris, est un menu spécial inclus dans le groupe de menus de base d'AutoCAD. Il s'affiche
lorsque l'utilisateur maintient la touche MAJ enfoncée et clique avec le bouton droit de la souris.

Pour trouver le menu contextuel, AutoCAD recherche dans le groupe de menus de base un menu dont la propriété ShortcutMenu est égale à TRUE. Vous
pouvez ajouter de nouvelles options de menu au menu contextuel en suivant les étapes décrites dans la section Ajout de nouvelles options à un menu .

Il se peut que les nouveaux groupes de menus n'aient pas de menu contextuel disponible. Pour en créer un, suivez les instructions de la section Création de
menus et utilisez POP0 comme libellé de nouveau menu.

Ajout d'une option de menu à la fin du menu contextuel

Dans cet exemple, l'option de menu “OuvrirDWG” est ajoutée à la fin du menu contextuel.

Sub Ch6_AddMenuItemToshortcutMenu()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
' Find the shortcut menu and assign it to the
' shortcutMenu variable
Dim scMenu As AcadPopupMenu
Dim entry As AcadPopupMenu
For Each entry In currMenuGroup.Menus
If entry.shortcutMenu = True Then
Set scMenu = entry
End If
Next entry
' Add a menu item to the shortcut menu
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String
' Assign the macro the VBA equivalent of "ESC ESC _open "
openMacro = Chr(3) + Chr(3) + "_open "
Set newMenuItem = scMenu.AddMenuItem _
("", Chr(Asc("&")) _
+ "OpenDWG", openMacro)
End Sub

Envoyez-nous vos commentaires sur cette page.  

Evénements
 

Les événements sont des notifications ou des messages envoyés par AutoCAD pour vous informer de l'état actuel de la session ou pour vous avertir de
certains événements sur le système. Par exemple, lorsqu'un dessin est ouvert, l'événement BeginOpen est déclenché. Cet événement contient le nom du
dessin AutoCAD ouvert. Un autre événement est déclenché lorsqu'un dessin est refermé. A partir de ces informations, vous pouvez écrire un sous-programme,
ou gestionnaire d'événements, qui utilise ces événements pour retracer la durée passée par un utilisateur sur un dessin spécifique.

Rubriques de cette section :

 Utilisation d'événements dans AutoCAD

 Instructions pour l'écriture de gestionnaires d'événements 

 Gestion d'événements au niveau de l'application 

 Gestion d'événements au niveau du document 

 Gestion d'événements au niveau de l'objet 

Envoyez-nous vos commentaires sur cette page.  

Evénements  

Utilisation d'événements dans AutoCAD

 
Trois types d'événements sont utilisés dans AutoCAD  ®  :

 Les événements au niveau de l'application répondent aux changements survenus dans l'application AutoCAD et son environnement. Ils répondent
notamment à l'ouverture, l'enregistrement, la fermeture, l'impression et la création de dessins, l'exécution de commandes AutoCAD, le chargement et le
déchargement d'applications ARX et LISP, le changement des variables système et de la fenêtre d' application.
 Les événements au niveau du document répondent aux modifications apportées à un document ou son contenu. Ils répondent notamment à l'ajout, la
suppression ou la modification d'objets, l'activation d'un menu contextuel, toute modification du jeu de sélection PICKFIRST et de la fenêtre de dessin, ainsi
qu'à la régénération du dessin. Il existe également des événements au niveau du document qui répondent à l'ouverture, la fermeture et l'impression d'un
dessin, ainsi qu'au chargement et au déchargement d'applications ARX et LISP du dessin.
 Les événements au niveau de l'objet répondent aux modifications apportées à un objet. Actuellement, il n'existe qu'un seul événement de ce type. Il est
déclenché lorsqu'un objet est modifié.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 126 of 194

Les sous-programmes qui répondent à des événements sont appelés des gestionnaires d'événements  et sont exécutés automatiquement chaque fois q ue
l'événement correspondant est déclenché. Les informations contenues dans des événements, telles que le nom du dessin dans l'événementBeginOpen, sont
transmises à des gestionnaires d'événements via des paramètres.

Envoyez-nous vos commentaires sur cette page.  

Evénements  

Instructions pour l'écriture de gestionnaires d'événements


 

N'oubliez pas que les événements fournissent simplement des informations sur l'état ou les activités qui ont lieu dans AutoCAD. Bien que des gestionnaires
d'événements puissent être écrits pour répondre à ces événements, AutoCAD est souvent en train de traiter des commandes au moment du déclenchement du
gestionnaire. C'est pourquoi, la fonction de ces gestionnaires est limitée afin de garantir leur utilisation sûre dans AutoCAD et sa base de données.

 Ne vous fiez pas à la séquence d'événements.


Lorsque vous écrivez des gestionnaires d'événements, n'oubliez pas que les événements ne se produiront pas nécessairement dans l' ordre prévu. Par
exemple, si vous exécutez une commande OUVRIR, les événements BeginCommand, BeginOpen, EndOpen et EndCommand sont déclenchés. Toutefois,
ils ne seront pas nécessairement exécutés dans cet ordre. La seule séquence d'événements fiable est l'exécution obligatoire d'un événement Begin avant un
événement End. Dans l'exemple précédent, les événements peuvent être déclenchés dans l'ordre suivant : BeginCommand, BeginOpen, EndCommand et
EndOpen, ou même BeginCommand, EndCommand, BeginOpen et EndOpen.
 Ne vous fiez pas à la séquence d'opérations.
Si vous supprimez object1 puis object2, vous ne recevrez pas nécessairement l'événement ObjectErased pour object1 avant celui pour object2. L'événement
ObjectErased pour object2 risque en effet d'arriver en premier.
 N'essayez pas d'exécuter une fonction interactive depuis un gestionnaire d'événements.
Cela risque en effet de provoquer des problèmes graves car AutoCAD risque d'être en train d'exécuter une commande au moment du déclenchement de
l'événement. C'est pourquoi, vous devez toujours éviter d'utiliser des méthodes d'acquisition de saisie comme GetPoint, GetEntity, GetKeyword, etc., des
opérations sur des jeux de sélection et la méthode SendCommand depuis des gestionnaires d'événements.
 Ne lancez pas non plus de boîte de dialogue depuis un gestionnaire d'événements.
Les boîtes de dialogue sont considérées comme d es fonctions interactives et peuvent interférer sur le fonctionnement d'AutoCAD. Les boîtes de message et
les fenêtres d'alerte ne sont pas considérées comme interactives ; elles peuvent donc être utilisées sans risque. Notez cependant que l'ouverture d'une boîte
de message au sein d'un gestionnaire d'événement BeginModal, EndModal, Activate, Deactivate ou BeginRightClick, a des résultats imprévisibles.
 Vous pouvez écrire des données dans n'importe quel objet de la base de données, sauf celui qui a déclenché l'événement.
Tout objet provoquant le déclenchement d'un événement peut ê tre ouvert pour être utilisé dans AutoCAD et la session en cours. C'est pourquoi, il faut éviter
d'écrire des informations dans un objet à partir d'un gestionnaire d'événements créé pour le même objet. Mais, vous pouvez lire des informations depuis
l'objet qui a déclenché un événement en toute sécurité. Supposons, par exemple, que vous ayez un sol recouvert de dalles et que vous créiez un
gestionnaire d'événements associé à la bordure de ce sol. Si vous changez la taille du sol, le gestionnaire d'événements ajoute o u soustrait automatiquement
des dalles pour remplir la surface supplémentaire. Le gestionnaire peut lire la nouvelle surface de bordure, mais ne peut pas essayer de la modifier.
 N'exécutez aucune action depuis un gestionnaire d'événements qui déclenche le même événement.
Vous risquez de créer une boucle sans fin. Ainsi, n'essayez jamais d'ouvrir un dessin depuis l'événement BeginOpen car AutoCAD continuera d'ouvrir des
dessins jusqu'à ce que le nombre maximal de dessins ouverts soit atteint.
 N'oubliez pas qu'aucun événement n'est déclenché tant qu'AutoCAD affiche une boîte de dialogue modale.

Envoyez-nous vos commentaires sur cette page.  

Evénements  

Gestion d'événements au niveau de l'application


 

Ces événements ne sont pas constants dans AutoCAD VBA. Ils ne sont en effet pas activés automatiquement au chargement d'un projet VBA. Les événements
au niveau de l'application doivent être activés pour VBA et tous les autres contrôleurs d'Automatisation ActiveX  ® . 

Une fois les événements au niveau de l'application activés, un vaste choix d'événements est mis à votre disposition. Parmi ces événements :

AppActivate
Déclenché juste avant l'activation de la fenêtre d'application principale.
AppDeactivate
Déclenché juste avant la désactivation de la fenêtre d'application principale.
ARXLoaded
Déclenché après chargement d'une application ObjectARX.
ARXUnloaded
Déclenché après le déchargement d'une application ObjectARX.
BeginCommand
Déclenché immédiatement après le lancement d'une commande, mais avant son arrêt.
BeginFileDrop
Déclenché lorsqu'un fichier est déposé dans la fenêtre d'application principale.
BeginLISP
Déclenché immédiatement après qu'AutoCAD ait reçu une demande d'évaluation d'une expression LISP.
BeginModal
Déclenché juste avant l'affichage d'une boîte de dialogue modale.
BeginOpen
Déclenché immédiatement après qu'AutoCAD ait reçu une demande d'ouverture d'un dessin existant.
BeginPlot

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 127 of 194

Déclenché immédiatement après qu'AutoCAD ait reçu une demande d'impression d'un dessin.
BeginQuit
Déclenché juste avant la fin d'une session AutoCAD.
BeginSave
Déclenché immédiatement après qu'AutoCAD ait reçu une demande d'enregistrement du dessin.
EndCommand
Déclenché immédiatement après la fin d'une commande.
EndLISP
Déclenché après évaluation d'une expression LISP.
EndModal
Déclenché juste après l'annulation d'une boîte de dialogue modale.
EndOpen
Déclenché immédiatement après qu'AutoCAD ait fini d'ouvrir un dessin existant.
EndPlot
Déclenché après qu'un document ait été envoyé à l'imprimante.
EndSave
Déclenché lorsque AutoCAD a terminé d'enregistrer le dessin.
LISPCancelled
Déclenché après annulation de l'évaluation d'une expression LISP.
NewDrawing
Déclenché juste avant la création d'un dessin.
SysVarChanged
Déclenché lorsque la valeur d'une variable système est changée.
WindowChanged
Déclenché lorsque la fenêtre d'application est modifiée.
WindowMovedOrResized
Déclenché juste après que la fenêtre d' application ait été déplacée ou redimensionnée.

Rubriques de cette section :

 Activation d'événements au niveau de l'application 

Envoyez-nous vos commentaires sur cette page.  

Evénements  

Activation d'événements au niveau de l'application


 

Avant d'utiliser des événements au niveau de l'application, vous devez créer un nouveau module de classe et déclarer un objet de type AcadApplication avec
des événements. Supposons, par exemple, qu'un module de classe soit créé et appelé EventClassModule. Ce nouveau module contient la déclaration de
l'application avec le mot clé VBA WithEvents.

Pour créer une classe et déclarer un objet Application avec des événements
1. Dans VBA IDE, insérez un module de classe. Dans le menu Insertion, choisissez Module de classe.
2. Sélectionnez le nouveau module de classe dans la fenêtre Projet.
3. Dans la fenêtre Propriétés, changez le nom de la classe en Module-EventClass.
4. Ouvrez la fenêtre Code de la classe en appuyant sur la touche F7 ou en choisissant Affichage » Code.
5. Dans la fenêtre Code de la classe, insérez la ligne suivante :

Public WithEvents App As AcadApplication

Une fois le nouvel objet déclaré avec des événements, il apparaît dans la zone de liste déroulante des objets du module de classe et vous pouvez écrire des
procédures d'événements pour cet objet dans le module. (Lorsque vous sélectionnez le nouvel objet dans la zone des objets, les événements pouvant être
utilisés avec cet objet apparaissent dans la zone de liste déroulante des procédures.)

Toutefois, avant l'exécution des procédures, vous devez connecter l'objet déclaré dans le module de classe à l'objet Application Cette opération peut être
exécutée en entrant le code suivant à partir de n'importe quel module.

Pour connecter l'objet déclaré à l'objet Application


1. Dans la fenêtre Code du module principal, insérez la ligne suivante dans la section de déclaration:
Dim X As New EventClassModule

2. Toujours dans cette fenêtre, ajoutez le sous-programme suivant :


Sub InitializeEvents()
Set X.App = ThisDrawing.Application
End Sub

3. Dans le code du module principal, ajoutez un appel au sous-programme InitializeEvents:


Call InitializeEvents

Une fois la procédure InitializeEvents exécutée, l'objet App du module de classe désigne l'objet Application spécifié et les procédures d'événements de ce
module sont exécutées lorsque les événements se produisent.

Invite à continuer quand un dessin est déposé dans AutoCAD

Dans cet exemple, le processus de chargement est intercepté après que vous ayez fait glisser et déposé un fichier dans AutoCAD. Une boîte de message
contenant le nom du fichier ayant été déposé et les boutons Oui/Non/Continuer qui permettent à l'utilisateur de décider si le chargement du fichier doit être

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 128 of 194

poursuivi s'affichent. Si l'utilisateur décide d'annuler l'opération, sa décision est renvoyée via le paramètre Cancel de l'événement BeginFileDrop et le fichier
n'est pas chargé.

Public WithEvents ACADApp As AcadApplication


Sub Example_AcadApplication_Events()
' This example intializes the public variable (ACADApp)
' which will be used to intercept AcadApplication Events
'
' Run this procedure FIRST!
' We could get the application from the ThisDocument
' object, but that would require having a drawing open,
' so we grab it from the system.
Set ACADApp = GetObject(, "AutoCAD.Application.17")
End Sub
Private Sub ACADApp_BeginFileDrop _
(ByVal FileName As String, Cancel As Boolean)
' This example intercepts an Application BeginFileDrop event.
'
' This event is triggered when a drawing file is dragged
' into AutoCAD.
'
' To trigger this example event:
' 1) Make sure to run the example that initializes
' the public variable (named ACADApp) linked to this event.
'
' 2) Drag an AutoCAD drawing file into the AutoCAD
' application from either the Windows Desktop
' or Windows Explorer
' Use the "Cancel" variable to stop the loading of the
' dragged file, and the "FileName" variable to notify
' the user which file is about to be dragged in.
If MsgBox("AutoCAD is about to load " & FileName & vbCrLf _
& "Do you want to continue loading this file?", _
vbYesNoCancel + vbQuestion) <> vbYes Then
Cancel = True
End If
End Sub

Envoyez-nous vos commentaires sur cette page.  

Evénements  

Gestion d'événements au niveau du document


 

Les événements au niveau Document sont constants dans AutoCAD VBA. Ils sont en effet activés automatiquement au chargement d'un projet VBA. Ils ne sont
cependant pas activés pour d'autres contrôleurs, comme VB. Les événements au niveau Document doivent être activés pour tous les autres contrôleurs
d'automatisation ActiveX.

Une fois les événements au niveau du document activés, un vaste choix d'événements est mis à votre disposition. Parmi ces événements :

Activate
Déclenché lorsqu'une fenêtre de document est activée.
BeginDocClose
Déclenché immédiatement après réception de la requête de fermeture d'un dessin.
BeginCommand
Déclenché immédiatement après le lancement d'une commande, mais avant son arrêt.
BeginDoubleClick
Déclenché après que l'utilisateur ait cliqué deux fois sur un objet du dessin.
BeginLISP
Déclenché immédiatement après qu'AutoCAD ait reçu une demande d'évaluation d'une expression LISP.
BeginPlot
Déclenché immédiatement après qu'AutoCAD ait reçu une demande d'impression d'un dessin.
BeginRightClick
Déclenché après que l'utilisateur ait cliqué avec le bouton droit de la souris dans la fenêtre du dessin.
BeginSave
Déclenché immédiatement après qu'AutoCAD ait reçu une demande d'enregistrement du dessin.
BeginShortcutMenuCommand
Déclenché après que l'utilisateur ait cliqué avec le bouton droit de la souris dans la fenêtre du dessin et avant que le menu contextuel apparaisse en mode
Commande.
BeginShortcutMenuDefault
Déclenché après que l'utilisateur ait cliqué avec le bouton droit de la souris dans la fenêtre du dessin et avant que le menu contextuel apparaisse en mode
Par défaut.
BeginShortcutMenuEdit
Déclenché après que l'utilisateur ait cliqué avec le bouton droit de la souris dans la fenêtre du dessin et avant que le menu contextuel apparaisse en mode
Edition.
BeginShortcutMenuGrip
Déclenché après que l'utilisateur ait cliqué avec le bouton droit de la souris dans la fenêtre du dessin et avant que le menu contextuel apparaisse en mode
Poignée.
BeginShortcutMenuOsnap

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 129 of 194

Déclenché après que l'utilisateur ait cliqué avec le bouton droit de la souris dans la fenêtre du dessin et avant que le menu contextuel apparaisse en mode
Accrobj.
Deactivate
Déclenché lorsque la fenêtre du dessin est désactivée.
EndCommand
Déclenché immédiatement après la fin d'une commande.
EndLISP
Déclenché après évaluation d'une expression LISP.
EndPlot
Déclenché après qu'un document ait été envoyé à l'imprimante.
EndSave
Déclenché lorsque AutoCAD a terminé d'enregistrer le dessin.
EndShortcutMenu
Déclenché après affichage du menu contextuel.
LayoutSwitched
Déclenché après que l'utilisateur ait choisi une autre présentation.
LISPCancelled
Déclenché après annulation de l'évaluation d'une expression LISP.
ObjectAdded
Déclenché après qu'un objet ait été ajouté au dessin.
ObjectErased
Déclenché après qu'un objet ait été supprimé du dessin.
ObjectModified
Déclenché après modification d'un objet du dessin.
SelectionChanged
Déclenché après modification du jeu de sélection PICKFIRST courant.
WindowChanged
Déclenché lorsque la fenêtre du document est modifiée.
WindowMovedOrResized
Déclenché juste après que la fenêtre du dessin ait été déplacée ou redimensionnée.

Rubriques de cette section :

 Activation d'événements au niveau du document dans des environnements autres que VBA  

 Codage d'événements au niveau du document dans des environnements autres que VBA  

 Codage des événements au niveau du document dans VBA  

Envoyez-nous vos commentaires sur cette page.  

Evénements  

Activation d'événements au niveau du document dans des environnements autres que VBA
 

Avant d'utiliser des événements au niveau du document dans VB ou un environnement autre que VBA, vous devez créer un nouveau module de classe et
déclarer un objet de type AcadDocument avec des événements. Supposons, par exemple, qu'un module de classe soit créé et appelé EventClassModule. Ce
nouveau module contient la déclaration de l'application avec l e mot clé VBA WithEvents.

Pour créer une classe et déclarer un objet Document avec des événements
1. Dans VBA IDE, insérez un module de classe. Dans le menu Insertion, choisissez Module de classe.
2. Sélectionnez le nouveau module de classe dans la fenêtre Projet.
3. Dans la fenêtre Propriétés, changez le nom de la classe en Module-EventClass.
4. Ouvrez la fenêtre Code de la classe en appuyant sur la touche F7 ou en choisissant Affichage » Code.
5. Dans la fenêtre Code de la classe, insérez la ligne suivante :

Public WithEvents Doc As AcadDocument

Une fois le nouvel objet déclaré avec des événements, il apparaît dans la zone de liste déroulante des objets du module de classe et vous pouvez écrire des
procédures d'événements pour cet objet dans le module. (Lorsque vous sélectionnez le nouvel objet dans la zone des objets, les événements pouvant être
utilisés avec cet objet apparaissent dans la zone de liste déroulante des procédures.)

Toutefois, avant l'exécution des procédures, vous devez connecter l'objet déclaré dans le module de classe à l'objet Document. Cette opération peut être
exécutée en entrant le code suivant à partir de n'importe quel module.

Pour connecter l'objet déclaré à l'objet Document


1. Dans la fenêtre Code du module principal, insérez la ligne suivante dans la section de déclaration:
Dim X As New EventClassModule

2. Toujours dans cette fenêtre, ajoutez le sous-programme suivant :


ub InitializeEvents()
Set X.Doc = ThisDrawing
End Sub

3. Dans le code du module principal, ajoutez un appel au sous-programme InitializeApp:


Call InitializeEvents

Une fois la procédure InitializeEvents exécutée, l'objet Doc du module de classe désigne l'objet Document créé et les procédures d'événements de ce

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 130 of 194

module sont exécutées lorsque les événements se produisent.

Envoyez-nous vos commentaires sur cette page.  

Evénements  

Codage d'événements au niveau du document dans des environnements autres que VBA
 

Une fois des événements au niveau du document activés, la variable de classe Doc est disponible dans la zone de liste déroulante des objets de la fenêtre
Code du module de classe. Sélectionnez la classe Doc ; la liste des événements disponibles apparaît dans la zone de liste déroulante des procédures.
Sélectionnez l'événement pour lequel vous voulez écrire un g estionnaire ; le "squelette" du gestionnaire est créé automatiquement.

Envoyez-nous vos commentaires sur cette page.  

Evénements  

Codage des événements au niveau du document dans VBA


 

Les événements au niveau du document sont activés automatiquement au chargement d'un projet VBA. Pour écrire des gestionnaires d'événements pour des
événements au niveau du document dans VBA, il suffit de sélectionner AcadDocument dans la zone de liste déroulante des objets de la fenêtre Code. Les
événements disponibles pour le document apparaissent dans la liste déroulante des procédures. Sélectionnez l'événement pour lequel vous voulez écrire un
gestionnaire ; le "squelette" du gestionnaire est créé automatiquement.

Notez que les gestionnaires d'événements créés de cette façon s'appliquent au dessin courant. Pour créer des gestionnaires d'événements pour un dessin
donné, suivez les étapes décrites au paragraphe Activation d'événements au niveau du document dans des environnements autres que VBA . Vous pourrez ainsi
activer un document spécifique pour des événements.

Dans l'exemple suivant, le gestionnaire d'événements est utilisé pour l'événement BeginShortcutMenuDefault afin d'ajouter l'option de menu “OpenDWG” au
début du menu contextuel. Ensuite, le gestionnaire de l'événement EndShortcutMenu supprime l'option de menu supplémentaire pour qu'elle ne soit pas
enregistrée de façon permanente dans la configuration du menu de l'utilisateur.

Private Sub AcadDocument_BeginShortcutMenuDefault _


(ShortcutMenu As AutoCAD.IAcadPopupMenu)
On Error Resume Next
' Add a menu item to the cursor menu
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String
openMacro = Chr(vbKeyEscape) + Chr(vbKeyEscape) + "_open "
Set newMenuItem = ShortcutMenu.AddMenuItem _
(0, Chr(Asc("&")) _
+ "OpenDWG", openMacro)
End Sub
Private Sub AcadDocument_EndShortcutMenu _
(ShortcutMenu As AutoCAD.IAcadPopupMenu)
On Error Resume Next
ShortcutMenu.Item("OpenDWG").Delete
End Sub

Envoyez-nous vos commentaires sur cette page.  

Evénements  

Gestion d'événements au niveau de l'objet


 

L'événement au niveau de l'objet n'est pas constant dans AutoCAD VBA. Ils ne sont en effet pas activés automatiquement au chargement d'un projet VBA. Les
événements au niveau de l'objet doivent être activés pour VBA et tous les autres contrôleurs d'automatisation ActiveX.

Une fois que les événements au niveau de l'objet ont été activés, l'événement Modified est mis à votre disposition. Cet événement est déclenché après la
modification d'un objet du dessin.

Rubriques de cette section :

 Activation d'un événement au niveau de l'objet 

Envoyez-nous vos commentaires sur cette page.  

Evénements  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 131 of 194

Activation d'un événement au niveau de l'objet


 

Avant d'utiliser des événements au niveau de l'objet, vous devez créer un nouveau module de classe et déclarer un objet de type AcadObject avec des
événements. Supposons, par exemple, qu'un module de classe soit créé et appelé EventClassModule. Ce nouveau module contient la déclaration de
l'application avec le mot clé VBA WithEvents.

Pour créer une classe et déclarer un objet Circle avec des événements
1. Dans VBA IDE, insérez un module de classe. Dans le menu Insertion, choisissez Module de classe.
2. Sélectionnez le nouveau module de classe dans la fenêtre Projet.
3. Dans la fenêtre Propriétés, changez le nom de la classe en Module-EventClass.
4. Ouvrez la fenêtre Code de la classe en appuyant sur la touche F7 ou en choisissant Affichage » Code.
5. Dans la fenêtre Code de la classe, insérez la ligne suivante :

Public WithEvents Object As AcadCircle

Une fois le nouvel objet déclaré avec des événements, il apparaît dans la zone de liste déroulante des objets du module de classe et vous pouvez écrire des
procédures d'événements pour cet objet dans le module. (Lorsque vous sélectionnez le nouvel objet dans la zone des objets, les événements pouvant être
utilisés avec cet objet apparaissent dans la zone de liste déroulante des procédures.)

Toutefois, avant l'exécution des procédures, vous devez connecter l'objet déclaré dans le module de classe à l'objet Circle. Cette opération peut être exécutée
en entrant le code suivant à partir de n'importe quel module.

Pour connecter l'objet déclaré à l'objet Automation


1. Dans la fenêtre Code du module principal, insérez la ligne suivante dans la section de déclaration:
Dim X As New EventClassModule

2. Toujours dans cette fenêtre, créez un cercle appelé “MyCircle” et initialisez-le comme contenant des événements :
Sub InitializeEvents()
Dim MyCircle As AcadCircle
Dim centerPoint(0 To 2) As Double
Dim radius As Double
centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
radius = 5#
Set MyCircle = ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)
Set X.Object = MyCircle
End Sub

3. Dans le code du module principal, ajoutez un appel au sous-programme InitializeApp:


Call InitializeEvents

Une fois la procédure InitializeEvents exécutée, l'objet Circle du module de classe désigne l'objet Circle créé et les procédures d'événements de ce
module sont exécutées lorsque les événements se produisent.
Remarque Lors du codage dans VBA, vous devez fournir un gestionnaire d'événements pour tous les objets activés pour l'événement Modified. Sinon,
l'exécution de VBA risque de prendre fin de façon inattendue.
Dans cet exemple, une polyligne fine est créée avec des événements. Le gestionnaire d'événements de la polyligne affiche ensuite la nouvelle aire
lorsque la polyligne est modifiée. Pour déclencher l'événement, modifiez l'épaisseur de la polyligne dans AAutoCAD. Pensez à exécuter le sous-
programme CreatePLineWithEvents avant d'activer le gestionnaire d'événements.
Public WithEvents PLine As AcadLWPolyline
Sub CreatePLineWithEvents()
' This example creates a light weight polyline
Dim points(0 To 9) 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) = 3
points(8) = 3: points(9) = 2
Set PLine = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(points)
PLine.Closed = True
ThisDrawing.Application.ZoomAll
End Sub
Private Sub PLine_Modified _
(ByVal pObject As AutoCAD.IAcadObject)
' This event is triggered when the polyline is resized.
' If the polyline is deleted the modified event is still
' triggered, so we use the error handler to avoid
' reading data from a deleted object.
On Error GoTo ERRORHANDLER
MsgBox "The area of " & pObject.ObjectName & " is: " _
& pObject.Area
Exit Sub
ERRORHANDLER:
MsgBox Err.Description
End Sub

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 132 of 194

Dans la plupart des cas, les dessins sont des vues en deux dimensions (2D) représentant des objets en trois dimensions (3D). Bien que cette méthode de
dessin soit très utilisée dans les secteurs de l'architecture et de l'ingénierie, elle présente des limites : les dessins sont des représentations en 2D d'objets 3D et
doivent être interprétés visuellement. D'autre part, les différentes vues d e l'objet sont des représentations indépendantes et une erreur ou une ambiguïté est
toujours possible. Par conséquent, il est préférable de créer de véritables modèles en 3D au lieu de dessins en 2D. Vous pouvez créer des objets 3D précis et
réalistes et les manipuler de diverses façons à l'aide des outils de dessin proposés par AutoCAD.

Rubriques de cette section :

 Détermination de coordonnées en 3D  

 Définition d'un système de coordonnées utilisateur  

 Conversion de coordonnées 

 Création d'objets 3D 

 Opérations d'édition en 3D  

 Edition de solides en 3D  

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Détermination de coordonnées en 3D
 

L'entrée de coordonnées du système de coordonnées général (SCG) 3D est semblable à celle de coordonnées SCG 2D. Si ce n'est qu'outre les valeurs X  et Y ,
vous devez spécifier une valeur Z . Comme dans le cas des coordonnées 2D, une variante est utilisée pour transférer les coordonnées aux propriétés et
méthodes ActiveX ®  et pour interroger ces coordonnées.

Pour de plus amples informations sur l'entrée de coordonnées 3D, reportez-vous à la section “Définition de coordonnées 3D” du Manuel d'utilisation .

Définition et recherche des coordonnées des polylignes 2D et 3D

Dans cet exemple, l'utilisateur crée deux polylignes, chacune d'elles comportant trois coordonnées. La première est une polyligne 2D et la deuxième une
polyligne 3D. Notez que la longueur du réseau contenant les sommets est étendue pour inclure les coordonnées Z  dans la création de la polyligne 3D.
L'exemple se termine en recherchant les coordonnées des polylignes puis en les affichant dans une boîte de message.

Sub Ch8_Polyline_2D_3D()
Dim pline2DObj As AcadLWPolyline
Dim pline3DObj As AcadPolyline
Dim points2D(0 To 5) As Double
Dim points3D(0 To 8) As Double
' Define three 2D polyline points
points2D(0) = 1: points2D(1) = 1
points2D(2) = 1: points2D(3) = 2
points2D(4) = 2: points2D(5) = 2
' Define three 3D polyline points
points3D(0) = 1: points3D(1) = 1: points3D(2) = 0
points3D(3) = 2: points3D(4) = 1: points3D(5) = 0
points3D(6) = 2: points3D(7) = 2: points3D(8) = 0
' Create the 2D light weight Polyline
Set pline2DObj = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(points2D)
pline2DObj.Color = acRed
pline2DObj.Update
' Create the 3D polyline
Set pline3DObj = ThisDrawing.ModelSpace. _
AddPolyline(points3D)
pline3DObj.Color = acBlue
pline3DObj.Update
' Query the coordinates of the polylines
Dim get2Dpts As Variant
Dim get3Dpts As Variant
get2Dpts = pline2DObj.Coordinates
get3Dpts = pline3DObj.Coordinates
' Display the coordinates
MsgBox ("2D polyline (red): " & vbCrLf & _
get2Dpts(0) & ", " & get2Dpts(1) & vbCrLf & _
get2Dpts(2) & ", " & get2Dpts(3) & vbCrLf & _
get2Dpts(4) & ", " & get2Dpts(5))
MsgBox ("3D polyline (blue): " & vbCrLf & _
get3Dpts(0) & ", " & get3Dpts(1) & ", " & _
get3Dpts(2) & vbCrLf & _
get3Dpts(3) & ", " & get3Dpts(4) & ", " & _
get3Dpts(5) & vbCrLf & _
get3Dpts(6) & ", " & get3Dpts(7) & ", " & _
get3Dpts(8))
End Sub

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 133 of 194

Travail en 3D  

Définition d'un système de coordonnées utilisateur


 

La création d'un système de coordonnées utilisateur (SCU) p ermet de modifier l'emplacement de l'origine (0, 0, 0) et l'orientation du plan XY  et de l'axe Z . Vous
êtes entièrement libre de définir et d'orienter les axes de votre système de coordonnées comme vous le souhaitez dans l'espace 3D. D'autre part, il est possible
de créer, d'enregistrer et de réutiliser un nombre quelconque des systèmes de coordonnées utilisateur. L'entrée et l' affichage des coordonnées s'effectuent en
fonction du SCU courant.

Pour indiquer l'emplacement de l'origine et l'orientation du système de coordonnées utilisateur, vous pouvez afficher l'icône SCU au niveau du point d'origine du
SCU, à l'aide de la propriété UCSIconAtOrigin Si l'icône SCU est activée (voir la propriété UCSIconOn) et n'est pas affichée au point d'origine, elle est affichée à
la coordonnée SCG définie par la variable système UCSORG.

Vous pouvez créer un nouveau système de coordonnées utilisateur à l'aide de la méthode Add Cette méthode requiert la saisie de quatre valeurs : la
coordonnée de l'origine, une coordonnée sur les axes X  et Y  et le nom du SCU.

Dans l'Automatisation ActiveX d'AutoCAD ® , toutes les coordonnées sont entrées dans le système de coordonnées général (SCG). Pour renvoyer la matrice de
transformation d'un SCU, utilisez la méthode GetUCSMatrix Pour rechercher les coordonnées SCG équivalentes, utilisez cette matrice de transformation.

Pour rendre une matrice SCU active, utilisez la propriété ActiveUCS de l'objet Document Si d es modifications sont apportées au SCU actif, le nouvel objet SCU
doit être réinitialisé en tant que SCU actif pour refléter ces modifications. Pour réinitialiser le SCU actif, appelez à nouveau la propriété ActiveUCS avec l'objet
mis à jour.

Pour de plus amples informations sur la définition d'un SCU, reportez-vous à la section “Gestion du système de coordonnées utilisateur en 3D” du Manuel
d'utilisation .

Création, activation d'un SCU et conversion des coordonnées d'un point en coordonnées SCU

Le sous-programme suivant crée un SCU et le définit comme SCU actif du dessin. Il invite ensuite l'utilisateur à sélectionner un point sur le dessin et renvoie les
coordonnées SCU et SCG de ce point.

Sub Ch8_NewUCS()
' Define the variables we will need
Dim ucsObj As AcadUCS
Dim origin(0 To 2) As Double
Dim xAxisPnt(0 To 2) As Double
Dim yAxisPnt(0 To 2) As Double
' Define the SCU points
origin(0) = 4: origin(1) = 5: origin(2) = 3
xAxisPnt(0) = 5: xAxisPnt(1) = 5: xAxisPnt(2) = 3
yAxisPnt(0) = 4: yAxisPnt(1) = 6: yAxisPnt(2) = 3
' Add the UCS to the
' UserCoordinatesSystems collection
Set ucsObj = ThisDrawing.UserCoordinateSystems. _
Add(origin, xAxisPnt, yAxisPnt, "New_SCU")
' Display the UCS icon
ThisDrawing.ActiveViewport.UCSIconAtOrigin = True
ThisDrawing.ActiveViewport.UCSIconOn = True
' Make the new UCS the active UCS
ThisDrawing.ActiveUCS = ucsObj
MsgBox "The current UCS is : " & ThisDrawing.ActiveUCS.Name _
& vbCrLf & " Pick a point in the drawing."
' Find the WCS and UCS coordinate of a point
Dim WCSPnt As Variant
Dim UCSPnt As Variant
WCSPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
UCSPnt = ThisDrawing.Utility.TranslateCoordinates _
(WCSPnt, acWorld, acUCS, False)
MsgBox "The WCS coordinates are: " & WCSPnt(0) & ", " _
& WCSPnt(1) & ", " & WCSPnt(2) & vbCrLf & _
"The UCS coordinates are: " & UCSPnt(0) & ", " _
& UCSPnt(1) & ", " & UCSPnt(2)
End Sub

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Conversion de coordonnées
 

La méthode TranslateCoordinates traduit un point ou un déplacement d'un système de coordonnées dans un autre. Un argument point appelé OriginalPoint 
peut être interprété comme un point 3D ou un vecteur de déplacement 3D. Cet argument se distingue par l'argument booléenDisp. Si l'argument Disp est
défini sur TRUE, l'argument OriginalPoint est considéré comme un vecteur de déplacement ; sinon, il est traité comme un point. Deux autres arguments
déterminent de quel système de coordonnées l'argument OriginalPoint provient et en quel système de coordonnées il doit être converti. L es systèmes de
coordonnées AutoCAD suivants peuvent être spécifiés par les arguments de et à :

SCG
Système de coordonnées général : système de coordonnées de référence. Tous les autres systèmes de coordonnées sont définis en fonction du SCG, qui ne
change jamais. Les valeurs mesurées en fonction du SCG restent stables lorsque des modifications sont apportées à d'autres systèmes de coordonnées.
Sauf spécification contraire, tous les points issus de méthodes et propriétés ActiveX ou transférés vers elles, sont exprimés dans le SCG.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 134 of 194

SCU
Système de coordonnées utilisateur (SCU) : système de coordonnées de travail. L'utilisateur spécifie un SCU pour faciliter les opérations de tracé. Tous les
points transmis aux commandes AutoCAD, notamment ceux renvoyés par les sous-programmes AutoLISP et les fonctions externes, sont des points exprimés
dans le SCU courant (à moins que l'utilisateur ne les fasse précéder d'un astérisque * au niveau de la ligne de commande). Pour que votre application
transmette des coordonnées du SCG, SCO ou SCV vers des commandes AutoCAD, vous devez d'abord les convertir en SCU en faisant appel à la méthode
TranslateCoordinates.
SCO
Système de coordonnées de l'objet : l es valeurs de point spécifiées par certaines méthodes et propriétés pour les objets Polyline et LightweightPolyline sont
exprimées dans ce système de coordonnées relatif à l'objet. Ces points sont généralement convertis dans le SCG, le SCU courant ou le SCV courant, selon
l'utilisation prévue pour l'objet. A l'inverse, les points du SCG, SCU ou SCV doivent être convertis dans un SCO avant d'être enregistrés dans la base de
données via les mêmes propriétés. Reportez-vous au manuel ActiveX and VBA Reference  d'AutoCAD pour connaître les méthodes et propriétés qui utilisent
ce système de coordonnées.
Lors de la conversion de coordonnées vers ou depuis le SCO, vous devez définir la norme pour ce système dans l'argument final de la fonction
TranslateCoordinates.
SCV
Système de coordonnées de visualisation : le système de coordonnées dans lequel sont transformés les objets avant leur affichage. L'origine du SCV est le
point mémorisé dans la variable système TARGET  d'AutoCAD, et son axe Z est la direction de visualisation. En d'autres termes, une fenêtre est toujours une
vue en plan de son SCV. Ces coordonnées permettent de déterminer l'endroit où un élément sera affiché à l'attention de l'utilisateur d'AutoCAD.
SCVEP
SCV de l'espace papier : ce système de coordonnées ne peut être transformé que vers ou à partir du SCV de la fenêtre active de l'espace objet. Il s'agit
essentiellement d'une transformation 2D, dans laquelle les coordonnées X  et Y  sont toujours mises à l'échelle et décalées si l'argument Disp a la valeur
FALSE. La coordonnée Z  est mise à l'échelle mais n'est jamais convertie. Elle peut donc servir à déterminer le facteur d'échelle entre les deux systèmes de
coordonnées. Le SCVEP ne peut être converti q ue dans la fenêtre de l'espace objet active. Si l'argument de est égal à SCVEP, l'argument à doit être égal à
SCV et inversement.

Conversion de coordonnées du SCO en coordonnées du SCG

Dans cet exemple, une polyligne est créée dans l'espace objet. Le premier sommet de cette polyligne est ensuite affiché dans les coordonnées du SCO et du
SCG. La conversion du SCO en SCG implique que la norme du SCO soit placée dans le dernier argument de la méthode TranslateCoordinates.

Sub Ch8_TranslateCoordinates()
' Create a polyline in model space.
Dim plineObj As AcadPolyline
Dim points(0 To 14) As Double
' Define the 2D polyline points
points(0) = 1: points(1) = 1: points(2) = 0
points(3) = 1: points(4) = 2: points(5) = 0
points(6) = 2: points(7) = 2: points(8) = 0
points(9) = 3: points(10) = 2: points(11) = 0
points(12) = 4: points(13) = 4: points(14) = 0
' Create a light weight Polyline object in model space
Set plineObj = ThisDrawing.ModelSpace.AddPolyline(points)
' Find the X and Y coordinates of the
' first vertex of the polyline
Dim firstVertex As Variant
firstVertex = plineObj.Coordinate(0)
' Find the Z coordinate for the polyline
' using the elevation property
firstVertex(2) = plineObj.Elevation
' Change the normal for the pline so that the
' difference between the coordinate systems
' is obvious.
Dim plineNormal(0 To 2) As Double
plineNormal(0) = 0#
plineNormal(1) = 1#
plineNormal(2) = 2#
plineObj.Normal = plineNormal
' Translate the OCS coordinate into WCS
Dim coordinateWCS As Variant
coordinateWCS = ThisDrawing.Utility.TranslateCoordinates _
(firstVertex, acOCS, acWorld, False, plineNormal)
' Display the coordinates of the point
MsgBox "The first vertex has the following coordinates:" _
& vbCrLf & "OCS: " & firstVertex(0) & ", " & _
firstVertex(1) & ", " & firstVertex(2) & vbCrLf & _
"WCS: " & coordinateWCS(0) & ", " & _
coordinateWCS(1) & ", " & coordinateWCS(2)
End Sub

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Création d'objets 3D
 

Création d'un maillage à plusieurs faces Création d' un solide biseau AutoCAD prend en charge trois types de modélisation : filaire, surface et solide. Ces
différents types de modèle nécessitent la mise en œuvre de techniques de création et de modification spécifiques.

Pour de plus amples informations sur la création d'objets 3D, reportez-vous à la section “Création d'objets 3D” du Manuel d'utilisation .

Rubriques de cette section :

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 135 of 194

 Création de modèles filaires  

 Création de maillages  

 Création de polyfaces maillées  

 Création de solides  

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Création de modèles filaires


 

AutoCAD vous permet de créer des modèles filaires en définissant des objets 2D planaires n 'importe où dans l'espace 3D. Pour ce faire, vous disposez de
plusieurs solutions:

 Pour créer des objets, saisissez des points 3D. Vous devez pour cela entrer des coordonnées qui définissent la position des points sur les axes X , Y  et Z .
 Définissez le plan de conception (plan XY ) par défaut sur lequel vous allez dessiner les objets, en créant un SCU.
 Déplacez les objets dans l'espace 3D, afin de leur donner l'orientation voulue après les avoir créés.

Vous pouvez également créer certains objets filaires, tels que des polylignes, qui peuvent avoir une troisième dimension. Pour créer des polylignes 3D, utilisez
la méthode Add3DPoly

Pour de plus amples informations sur la création de modèles filaires, reportez-vous à la section “Création de modèles filaires” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Création de maillages
 

Un maillage rectangulaire (objet PolygonMesh) permet de représenter la surface d'un objet à l'aide de facettes planes. La densité du maillage (ou le nombre de
facettes) est définie par une matrice de sommets M  et N  comparable à une grille composée de colonnes et de lignes. M  et N  indiquent respectivement la
colonne et la ligne sur lesquelles se trouve un sommet donné. Vous pouvez créer des maillages en 2D ou en 3D, bien qu'ils soient utilisés principalement en
3D.

Pour créer des maillages rectangulaires, utilisez la méthode Add3DMesh Cette méthode requiert la saisie de trois valeurs : le nombre de sommets dans la
direction M , le nombre de sommets dans la direction N  et un tableau Variant contenant les coordonnées de tous les sommets dans le maillage.

Une fois l'objet PolygonMesh créé, utilisez les propriétés MClose et NClose pour fermer le maillage.

Pour de plus amples informations sur la création de maillages, reportez-vous à la section “Création de surfaces” du Manuel d'utilisation .

Création d'un maillage polygonal

Dans l'exemple suivant, un maillage polygonal 4 par 4 est créé. La direction de la fenêtre active est ensuite ajustée de façon à ce que le caractère
tridimensionnel du maillage puisse être visualisé plus facilement.

Sub Ch8_Create3DMesh()
Dim meshObj As AcadPolygonMesh
Dim mSize, nSize, Count As Integer
Dim points(0 To 47) As Double
' create the matrix of points
points(0) = 0: points(1) = 0: points(2) = 0
points(3) = 2: points(4) = 0: points(5) = 1
points(6) = 4: points(7) = 0: points(8) = 0
points(9) = 6: points(10) = 0: points(11) = 1
points(12) = 0: points(13) = 2: points(14) = 0
points(15) = 2: points(16) = 2: points(17) = 1
points(18) = 4: points(19) = 2: points(20) = 0
points(21) = 6: points(22) = 2: points(23) = 1
points(24) = 0: points(25) = 4: points(26) = 0
points(27) = 2: points(28) = 4: points(29) = 1
points(30) = 4: points(31) = 4: points(32) = 0
points(33) = 6: points(34) = 4: points(35) = 0
points(36) = 0: points(37) = 6: points(38) = 0
points(39) = 2: points(40) = 6: points(41) = 1
points(42) = 4: points(43) = 6: points(44) = 0
points(45) = 6: points(46) = 6: points(47) = 0
mSize = 4: nSize = 4
' creates a 3Dmesh in model space
Set meshObj = ThisDrawing.ModelSpace. _
Add3DMesh(mSize, nSize, points)
' Change the viewing direction of the viewport
' to better see the cylinder
Dim NewDirection(0 To 2) As Double
NewDirection(0) = -1

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 136 of 194

  NewDirection(1) = -1
NewDirection(2) = 1
ThisDrawing.ActiveViewport.direction = NewDirection
ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Création de polyfaces maillées


 

Pour créer un maillage à plusieurs faces, chaque face pouvant avoir plusieurs sommets, utilisez la méthode AddPolyfaceMesh

Les procédures de définition d'un maillage à plusieurs faces et d'un maillage rectangulaire sont pratiquement identiques. Pour créer une polyface maillée,
spécifiez les coordonnées de tous ses sommets, puis définissez chaque face en entrant le numéro de chaque sommet de cette face. Au cours de la procédure
de création du maillage, vous pouvez rendre certaines arêtes invisibles ou les associer à différents calques ou couleurs.

Pour rendre une arête invisible, entrez le numéro des sommets sous forme de valeurs négatives. Pour de plus amples informations sur la création de polyfaces
maillées, reportez-vous à la méthode AddPolyfaceMesh du manuel ActiveX and VBA Reference .

Création d'un maillage à plusieurs faces

Dans cet exemple, un maillage à plusieurs faces est créé dans l'espace objet. La direction de visualisation de la fenêtre active est mise à jour de façon à ce que
le caractère tridimensionnel du maillage soit plus facilement visible.

Sub Ch8_CreatePolyfaceMesh()
'Define the mesh vertices
Dim vertex(0 To 17) As Double
vertex(0) = 4: vertex(1) = 7: vertex(2) = 0
vertex(3) = 5: vertex(4) = 7: vertex(5) = 0
vertex(6) = 6: vertex(7) = 7: vertex(8) = 0
vertex(9) = 4: vertex(10) = 6: vertex(11) = 0
vertex(12) = 5: vertex(13) = 6: vertex(14) = 0
vertex(15) = 6: vertex(16) = 6: vertex(17) = 1
' Define the face list
Dim FaceList(0 To 7) As Integer
FaceList(0) = 1
FaceList(1) = 2
FaceList(2) = 5
FaceList(3) = 4
FaceList(4) = 2
FaceList(5) = 3
FaceList(6) = 6
FaceList(7) = 5
' Create the polyface mesh
Dim polyfaceMeshObj As AcadPolyfaceMesh
Set polyfaceMeshObj = ThisDrawing.ModelSpace.AddPolyfaceMesh _
(vertex, FaceList)
' Change the viewing direction of the viewport to
' better see the polyface mesh
Dim NewDirection(0 To 2) As Double
NewDirection(0) = -1
NewDirection(1) = -1
NewDirection(2) = 1
ThisDrawing.ActiveViewport.direction = NewDirection
ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Création de solides
 

Un solide (objet 3DSolid) représente le volume d' un objet. Le solide constitue le type de modèle 3D le moins ambigu qui donne le p lus d'informations sur l'objet.
D'autre part, les solides complexes sont plus faciles à construire et à manipuler que les modèles filaires ou les maillages.

Vous pouvez créer des solides à partir des figures élémentaires proposées par AutoCAD (parallélépipèdes, cônes, cylindres, sphères, tores et biseaux), en
extrudant un objet 2D sur une trajectoire ou en faisant pivoter un objet 2D autour d'un axe. Utilisez l'une des méthodes de création de solides suivantes :

AddBox, AddCone, AddCylinder, AddEllipticalCone, AddEllipticalCylinder, AddExtrudedSolid, AddExtrudedSolidAlongPath, AddRevolvedSolid, AddSolid,


AddSphere, AddTorus ou AddWedge.

De même que les maillages, les solides sont affichés comme des représentations filaires, jusqu'à ce que vous utilisiez les commandes CACHE, SHADE ou

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 137 of 194

RENDU. Vous pouvez analyser leurs propriétés mécaniques (volume, moments d'inertie, centre de gravité, etc.) Utilisez les propriétés suivantes pour analyser
des solides : MomentOfInertia, PrincipalDirections, PrincipalMoments, ProductOfInertia, RadiiOfGyration et Volume.

La propriété ContourlinesPerSurface définit le nombre de lignes de courbure utilisées pour visualiser les portions courbes de l'objet filaire. La propriété
RenderSmoothness ajuste le lissage des objets ombrés ou à lignes cachées.

Pour de plus amples informations sur la création de solides, reportez-vous à la section “Création d'objets 3D” du Manuel d'utilisation .

Création d'un solide en forme de biseau

Dans cet exemple, un solide en forme de biseau est créé dans l'espace objet. La direction de visualisation de la fenêtre active est mise à jour de façon à ce que
le caractère tridimensionnel du solide soit plus facilement visible.

Sub Ch8_CreateWedge()
Dim wedgeObj As Acad3DSolid
Dim center(0 To 2) As Double
Dim length As Double
Dim width As Double
Dim height As Double
' Define the wedge
center(0) = 5#: center(1) = 5#: center(2) = 0
length = 10#: width = 15#: height = 20#
' Create the wedge in model space
Set wedgeObj = ThisDrawing.ModelSpace. _
AddWedge(center, length, width, height)
' Change the viewing direction of the viewport
Dim NewDirection(0 To 2) As Double
NewDirection(0) = -1
NewDirection(1) = -1
NewDirection(2) = 1
ThisDrawing.ActiveViewport.direction = NewDirection
ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Opérations d'édition en 3D
 

Cette section décrit différentes techniques d'édition d'objets 3D, notamment la rotation, la définition de réseaux et l a création de copies-miroirs.

Rubriques de cette section :

 Rotation en 3D 

 Création de réseaux 3D 

 Copies-miroirs d'objets le long d'un plan  

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Rotation en 3D
 

La méthode Rotate permet de faire pivoter des objets en 2D par rapport à un point donné. La direction de la rotation est déterminée par le SCU. La méthode
Rotate3D fait pivoter des objets 3D autour d'un axe. La méthode Rotate3D requiert l a saisie de trois valeurs : les coordonnées SCG de deux points définissant
l'axe de rotation et l'angle de rotation en radians.

Pour faire pivoter des objets 3D, utilisez la méthode Rotate ou Rotate3D.

Pour de plus amples informations sur la rotation en 3D, reportez-vous à la section “Rotation des objets” du Manuel d'utilisation .

Création d'une boîte 3D et rotation autour d'un a xe

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 138 of 194

Dans cet exemple, une boîte 3D est créée. L'axe de rotation est ensuite défini et la boîte est pivotée de 30 degrés autour de cet axe.

Sub Ch8_Rotate_3DBox()
Dim boxObj As Acad3DSolid
Dim length As Double
Dim width As Double
Dim height As Double
Dim center(0 To 2) As Double
' Define the box
center(0) = 5: center(1) = 5: center(2) = 0
length = 5
width = 7
height = 10
' Create the box object in model space
Set boxObj = ThisDrawing.ModelSpace. _
AddBox(center, length, width, height)
' Define the rotation axis with two points
Dim rotatePt1(0 To 2) As Double
Dim rotatePt2(0 To 2) As Double
Dim rotateAngle As Double
rotatePt1(0) = -3: rotatePt1(1) = 4: rotatePt1(2) = 0
rotatePt2(0) = -3: rotatePt2(1) = -4: rotatePt2(2) = 0
rotateAngle = 30
rotateAngle = rotateAngle * 3.141592 / 180#
' Rotate the box
boxObj.Rotate3D rotatePt1, rotatePt2, rotateAngle
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Création de réseaux 3D
 

La méthode ArrayRectangular permet de créer un réseau rectangulaire en 3 dimensions. Pour ce faire, vous devez spécifier le nombre de colonnes (direction X )
et de rangées (direction Y ), mais aussi le nombre de niveaux (direction Z ).

Pour de plus amples informations sur l'utilisation de réseaux d'objets en 3D, reportez-vous à la section “Création d'un réseau d'objets” du Manuel d'utilisation .

Création d'un réseau rectangulaire en 3D

Dans cet exemple, un cercle est créé et utilisé pour créer un réseau rectangulaire de quatre lignes, quatre colonnes et trois niveaux de cercles.

Sub Ch8_CreateRectangularArray()
' 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)
' 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 = 4
numberOfColumns = 4
numberOfLevels = 3
distanceBwtnRows = 1
distanceBwtnColumns = 1
distanceBwtnLevels = 4
' Create the array of objects
Dim retObj As Variant
retObj = circleObj.ArrayRectangular _
(numberOfRows, numberOfColumns, _
numberOfLevels, distanceBwtnRows, _
distanceBwtnColumns, distanceBwtnLevels)
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 139 of 194

Copies-miroirs d'objets le long d'un plan


 

La méthode Mirror3D permet de créer des copies-miroirs d'objets le long d'un plan de symétrie spécifié par trois points.

Pour de plus amples informations sur la création de copies-miroirs d'objets en 3D, reportez-vous à la section “Copie miroir d'objets” du Manuel d'utilisation .

Création de copies miroirs 3D

Dans cet exemple, une boîte est créée dans l'espace objet. Une copie-miroir de cette boîte est ensuite faite le long d'un plan, et elle est colorée en rouge.

Sub Ch8_MirrorABox3D()
' Create the box object
Dim boxObj As Acad3DSolid
Dim length As Double
Dim width As Double
Dim height As Double
Dim center(0 To 2) As Double
center(0) = 5#: center(1) = 5#: center(2) = 0
length = 5#: width = 7: height = 10#
' Create the box (3DSolid) object in model space
Set boxObj = ThisDrawing.ModelSpace. _
AddBox(center, length, width, height)
' Define the mirroring plane with three points
Dim mirrorPt1(0 To 2) As Double
Dim mirrorPt2(0 To 2) As Double
Dim mirrorPt3(0 To 2) As Double
mirrorPt1(0) = 1.25: mirrorPt1(1) = 0: mirrorPt1(2) = 0
mirrorPt2(0) = 1.25: mirrorPt2(1) = 2: mirrorPt2(2) = 0
mirrorPt3(0) = 1.25: mirrorPt3(1) = 2: mirrorPt3(2) = 2
' Mirror the box
Dim mirrorBoxObj As Acad3DSolid
Set mirrorBoxObj = boxObj.Mirror3D _
(mirrorPt1, mirrorPt2, mirrorPt3)
mirrorBoxObj.Color = acRed
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Travail en 3D  

Edition de solides en 3D
 

Une fois un solide créé, vous pouvez l'utiliser pour concevoir des objets plus complexes en combinant les figures de base. Vous avez, par exemple, la
possibilité de joindre des solides, de soustraire un solide d'un autre ou de conserver uniquement leur volume commun (zone d'intersection). Pour effectuer ces
combinaisons, utilisez la méthode Boolean ou CheckInterference

Les solides peuvent également être modifiés en obtenant la section 2D d'un solide ou la création de coupes d' un solide en deux portions. Utilisez la méthode
SectionSolid pour rechercher les sections de solides, et la méthode SliceSolid pour diviser un solide en deux portions.

Recherche de l'interférence entre deux solides

Dans cet exemple, une boîte et un cylindre sont créés dans l' espace objet. L'interférence entre les deux solides est ensuite recherchée, et un solide est créé sur
la base de cette interférence. Pour des besoins de visualisation, la boîte est en blanc, le cylindre en cyan, et le solide d'interférence en rouge.

Sub Ch8_FindInterferenceBetweenSolids()
' Define the box
Dim boxObj As Acad3DSolid
Dim length As Double
Dim width As Double
Dim height As Double
Dim center(0 To 2) As Double
center(0) = 5: center(1) = 5: center(2) = 0

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 140 of 194

  length = 5
width = 7
height = 10
' Create the box object in model space
' and color it white
Set boxObj = ThisDrawing.ModelSpace. _
AddBox(center, length, width, height)
boxObj.Color = acWhite
' Define the cylinder
Dim cylinderObj As Acad3DSolid
Dim cylinderRadius As Double
Dim cylinderHeight As Double
center(0) = 0: center(1) = 0: center(2) = 0
cylinderRadius = 5
cylinderHeight = 20
' Create the Cylinder and
' color it cyan
Set cylinderObj = ThisDrawing.ModelSpace.AddCylinder _
(center, cylinderRadius, cylinderHeight)
cylinderObj.Color = acCyan
' Find the interference between the two solids
' and create a new solid from it. Color the
' new solid red.
Dim solidObj As Acad3DSolid
Set solidObj = boxObj.CheckInterference(cylinderObj, True)
solidObj.Color = acRed
ZoomAll
End Sub

Découpage d'un solide en deux solides

Dans cet exemple, une boîte est créée dans l'espace objet. Cette boîte est ensuite coupée selon un plan défini par trois points. La coupe est renvoyée en tant
que solide 3D.

Sub Ch8_SliceABox()
' Create the box object
Dim boxObj As Acad3DSolid
Dim length As Double
Dim width As Double
Dim height As Double
Dim center(0 To 2) As Double
center(0) = 5#: center(1) = 5#: center(2) = 0
length = 5#: width = 7: height = 10#
' Create the box (3DSolid) object in model space
Set boxObj = ThisDrawing.ModelSpace. _
AddBox(center, length, width, height)
boxObj.Color = acWhite
' Define the section plane with three points
Dim slicePt1(0 To 2) As Double
Dim slicePt2(0 To 2) As Double
Dim slicePt3(0 To 2) As Double
slicePt1(0) = 1.5: slicePt1(1) = 7.5: slicePt1(2) = 0
slicePt2(0) = 1.5: slicePt2(1) = 7.5: slicePt2(2) = 10
slicePt3(0) = 8.5: slicePt3(1) = 2.5: slicePt3(2) = 10
' slice the box and color the new solid red
Dim sliceObj As Acad3DSolid
Set sliceObj = boxObj.SliceSolid _
(slicePt1, slicePt2, slicePt3, True)
sliceObj.Color = acRed
ZoomAll
End Sub

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage


 

L'opération de traçage consiste à reproduire sur papier un dessin créé dans AutoCAD. Ce tracé peut représenter une simple vue du dessin ou un arrangement
plus complexe de fenêtres. Dans l'espace papier, vous pouvez créer des fenêtres dites fenêtres flottantes, lesquelles affichent différentes vues du dessin. Selon
vos besoins, vous pouvez tracer une ou plusieurs fenêtres ou à l'aide d'options, inclure ou exclure certains éléments du d essin et définir l'emplacement de
l'image sur le papier.

Rubriques de cette section :

 Espace objet et espace papier  

 Présentations 

 Fenêtres 

 Traçage du dessin 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 141 of 194

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Espace objet et espace papier


 

L'espace objet constitue l'environnement du dessin dans lequel vous créez la géométrie de votre modèle. En principe, lorsque vous commencez à dessiner
dans l'espace objet, vous définissez les limites du dessin afin de déterminer l'étendue de l'environnement de dessin et vous utilisez des unités réelles.

L'espace papier correspond à la représentation sur papier de votre modèle tel qu'il va être tracé. Dans cet espace, vous pouvez définir des vues différentes du
dessin, les mettre à l'échelle indépendamment les unes des autres et les agencer telles que vous souhaitez qu'elles soient tracées. Vous pouvez ainsi obtenir
différentes représentations de votre dessin.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Présentations
 

Les présentations contiennent toute la géométrie du dessin. La géométrie de l'espace objet est contenue dans une seule présentation appelée modèle. Vous ne
pouvez pas renommer la présentation de l'espace objet, ni en créer une autre. Chaque dessin ne peut contenir qu'une seule présentation d'espace objet.

La géométrie de l'espace papier est également contenue dans des présentations. Un dessin peut contenir p lusieurs présentations d'espace papier, chacune
représentant une configuration différente à imprimer. Vous pouvez également modifier le nom des présentations en espace papier.

Dans l'Automatisation ActiveX ® , la collection ModelSpace contient toute la géométrie de la présentation d'espace objet. Un dessin pouvant contenir plusieurs
présentations d'espace papier, la collection PaperSpace désigne la dernière présentation active.

Pour de plus amples informations sur les présentations d'espace papier, reportez-vous à la section “Hachures, remplissages et n ettoyages” du Manuel
d'utilisation .

Rubriques de cette section :

 Présentations et blocs

 Configurations de traceur  

 Définition de la mise en page  

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Présentations et blocs
 

Le contenu de toute présentation est réparti entre deux objets ActiveX différents : l'objet Layout et l'objet Block. Le premier contient les paramètres du tracé et
les propriétés visuelles de la présentation telle qu'elle apparaît dans l'interface utilisateur d'AutoCAD. Le second contient l a géométrie de la présentation.

Chaque objet Layout est associé à un seul et unique objet Block. Pour accéder à l'objet Block a ssocié à une présentation donnée, utilisez la propriété Block
Inversement, chaque objet Block est associé à un seul et unique objet Layout. Pour accéder à l'objet Layout associé à un bloc donné, utilisez la propriété
Layout de ce bloc.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Configurations de traceur
 

Un objet PlotConfiguration est semblable à un objet Layout, car ils contiennent tous deux des informations de tracé identiques. La différence entre les deux est
que l'objet Layout est associé à un objet Block contenant la géométrie à tracer. L'objet PlotConfiguration n'est pas associé à un objet Block donné. Il s'agit tout
simplement d'une collection nommée de paramètres de tracé, disponible pour être utilisée avec toutes les géométries.

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 142 of 194

Définition de présentations et traçage  

Définition de la mise en page


 

Les paramètres de mise en page définissent la sortie finale du tracé. Ils déterminent notamment le format du papier, l'échelle du tracé, son origine et le nom du
périphérique de traçage. Une bonne maîtrise de ces paramètres garantit que la présentation sera tracée comme prévu. Vous pouvez modifier les paramètres
d'une présentation à l'aide des propriétés et méthodes de l'objet Layout

Rubriques de cette section :

 Format de papier et unités  

 Ajustement de l'origine du tracé  

 Définition de l'aire du tracé  

 Définition de l'échelle du tracé  

 Définition de l'échelle de l'épaisseur des lignes  

 Définition du périphérique de traçage  

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Format de papier et unités


 

Le choix d'un format de p apier est fonction du traceur configuré pour votre système. Chaque traceur dispose d'une liste standard de formats de papier
disponibles. Vous pouvez modifier le format de papier d'une présentation en utilisant la propriété CanonicalMediaName

Vous pouvez également spécifier les unités de votre présentation à l'aide de la propriété PaperUnits Cette propriété requiert l'une de ces trois valeurs :
acInches, acMillimeters ou acPixels. Si le traceur est configuré pour une impression raster, vous devez indiquer la taille en pixels.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Ajustement de l'origine du tracé


 

L'origine du tracé correspond à l'angle inférieur gauche de l'aire du tracé spécifiée et est défini à l'aide de la propriété PlotOrigin En principe, elle a les valeurs
(0, 0). Mais vous pouvez centrer le tracé sur la feuille de papier en attribuant la valeur TRUE à la propriété CenterPlot. Le centrage du tracé modifie son origine.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Définition de l'aire du tracé


 

Lorsque vous préparez le traçage d'une présentation, vous pouvez spécifier l'aire du tracé afin de déterminer quels éléments il contiendra. Pour spécifier l'aire
du tracé, faites appel à la propriété PlotType Cette propriété requiert l'entrée de l'une des valeurs suivantes :

acDisplay
Imprime tout le contenu de l'espace objet courant. Cette option n'est pas disponible lorsque le tracé est effectué depuis u ne présentation en espace papier.
acExtents
Imprime tout le contenu de l'espace actuellement sélectionné.
acLimits
Imprime tout le contenu de l'espace courant.
acView
Imprime la vue désignée par la propriété ViewToPlot.
acWindow
Imprime tout le contenu de la fenêtre désignée par la méthode SetWindowToPlot.
acLayout
Imprime tous les éléments compris dans les marges du format de papier spécifié. Cette option n'est pas disponible lorsque vous i mprimez depuis l'espace
objet.

Lorsque vous créez une présentation en espace papier, l'option par défaut est acLayout.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 143 of 194

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Définition de l'échelle du tracé


 

En général, vous dessinez des objets grandeur nature. puis, au moment du traçage, de spécifier une échelle précise ou d'ajuster l'image en fonction du papier.
Vous pouvez spécifier une échelle standard ou personnalisée.

Pour définir une échelle standard, attribuez la valeur TRUE à la propriété UseStandardScale. Vous pouvez ensuite entrer l'échelle voulue dans la propriété
StandardScale

Pour définir une échelle personnalisée, attribuez la valeur FALSE à la propriété UseStandardScale. Vous pouvez ensuite entrer l'échelle voulue à l'aide de la
méthode SetCustomScale

La précision de l'échelle importe peu dans certains cas, notamment s'il s'agit simplement de tracer une première ébauche du dessin. Vous pouvez utiliser la
valeur acScaleToFit de la propriété StandardScale pour tracer la présentation au format maximal susceptible de tenir sur la feuille de papier.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Définition de l'échelle de l'épaisseur des lignes


 

Vous pouvez définir proportionnellement l'épaisseur des lignes d'une présentation dans la zone Echelle du tracé. En principe, les épaisseurs de ligne définissent
l'épaisseur de trait des objets tracés, indépendamment de l'échelle du tracé. La plupart du temps, l'échelle utilisée par défaut est 1:1 pour le traçage d'une
présentation. Cependant, pour tracer au format E une présentation dont l'échelle est définie pour un format A, vous pouvez par exemple faire en sorte que
l'échelle des épaisseurs de lignes soit ajustée à la nouvelle échelle du tracé.

Pour mettre l'épaisseur des lignes à l'échelle, attribuez la valeur TRUE à la propriété ScaleLineweights. Sinon, attribuez-lui la valeur FALSE.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Définition du périphérique de traçage


 

Le nom du périphérique de traçage e st spécifié dans la propriété ConfigName Vous pouvez saisir le nom d'un périphérique opérationnel sur votre système. Si
vous ne spécifiez pas de nom, les tracés sont envoyés au périphérique défini par défaut sur votre système.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Fenêtres
 

Lorsque vous travaillez dans l'espace objet, vous tracez le dessin dans des fenêtres en mosaïque (appelées objets Viewport dans l'Automatisation ActiveX).
Vous pouvez afficher une ou plusieurs fenêtres à la fois. Lorsque vous modifiez le contenu de l'une des fenêtres, AutoCAD met automatiquement à jour les
autres fenêtres affichées à l'écran. En revanche, vous pouvez définir les paramètres d'agrandissement, de point de vue, de grille et d'accrochage
indépendamment pour chaque fenêtre.

Dans l'espace papier, vous travaillez dans des fenêtres flottantes (appelées objets PViewport dans l'Automatisation ActiveX) qui contiennent différentes vues du
modèle. Ces fenêtres sont utilisées comme des objets que vous déplacez, redimensionnez et façonnez afin d'obtenir la présentation souhaitée. La vue de
l'espace papier offre un avantage supplémentaire puisque vous pouvez y dessiner directement des objets, tels que des blocs ou des annotations, sans modifier
le modèle du dessin.

Pour de plus amples informations sur les fenêtres, reportez-vous aux sections “Définition des fenêtres de l'espace objet”.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 144 of 194

“Affichage de plusieurs vues dans l'espace objet” du Manuel d'utilisation .

Rubriques de cette section :

 Fenêtres flottantes 

 Activation de l'espace papier  

 Activation de l'espace objet  

 Création de fenêtres dans l'espace papier 

 Modification de la vue et du contenu des fenêtres  

 Mise à l'échelle des vues par rapport à l'espace papier  

 Mise à l'échelle des types de lignes dans l'espace papier  

 Utilisation de fenêtres ombrées  

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Fenêtres flottantes
 

Vous ne pouvez pas modifier le modèle dans l'espace papier. Pour accéder au modèle dans un objet PViewport, passez de l'espace papier à l'espace objet à
l'aide de la propriété ActiveSpace En p rocédant ainsi, vous pouvez remanier le modèle du dessin tout en visualisant sa présentation générale à l'écran. Les
fonctions de modification et de changement de vue disponibles pour les objets PViewport sont sensiblement les mêmes que celles des objets Viewport Elles
offrent cependant une plus grande marge de manœuvre au niveau de chaque vue. Vous pouvez, par exemple, geler ou désactiver les calques de certaines
fenêtres sans modifier la vue affichée dans les autres. Vous pouvez activer ou désactiver une fenêtre tout entière. Vous pouvez également aligner les vues de
plusieurs fenêtres et les mettre à l'échelle par rapport à la présentation générale du dessin.

L'illustration suivante montre les différentes possibilités d'affichage des vues d'un modèle dans l'espace papier. Chaque image représente une fenêtre flottante
(objet PViewport) contenant une vue donnée. Nous avons ainsi gelé le calque des cotes dans une vue. Notez que le cartouche, la bordure et l' annotation, créés
dans l'espace papier, n'apparaissent pas dans la vue de l'espace objet. Notez également que le calque contenant les bordures de la fenêtre a été désactivé.

Lorsque vous travaillez dans une fenêtre en mosaïque (objet Viewport), la propriété ActiveSpace doit toujours avoir la valeur acModelSpace. Dans une fenêtre
flottante (objet PViewport), en revanche, cette propriété peut avoir la valeur acModelSpace ou acPaperSpace, ce qui vous permet de passer de l'espace
papier à l'espace objet selon vos besoins.

Objet PViewport, objet Viewport et paramètres de la propriété ActiveSpace


Type de Statut Permet de
fenêtre
PViewport ActiveSpace = Définir la présentation du dessin en créant des fenêtres flottantes et en ajoutant des cartouches, des bordures et des
acPaperspace  annotations. Ces modifications n'ont aucun effet sur le modèle du dessin.

PViewport ActiveSpace = Travailler dans les fenêtres flottantes afin de modifier le modèle du dessin ou de changer de vue. Vous pouvez désactiver ou
acModelspace  geler les calques, dans les fenêtres de votre choix.

Fenêtre ActiveSpace = Travailler dans les fenêtres en mosaïque pour modifier les différentes vues du modèle.
acModelspace 

Dans l'Automatisation ActiveX d'AutoCAD ® , la propriété ActiveSpace permet de contrôler la variable système TILEMODE. Lorsque vous définissez
ThisDrawing.ActiveSpace = acModelSpace, cela revient à activer TILEMODE (TILEMODE  = on) et, lorsque vous définissez
ThisDrawing.ActiveSpace = acPaperSpace, cela revient à désactiver TILEMODE (TILEMODE  = off).

De même, la propriété MSpace est équivalente aux commandes MSPACE et PSPACE d'AutoCAD. Lorsque vous définissez ThisDrawing.MSpace = TRUE,
cela revient à utiliser la commande ESPACEO : l'espace objet est activé. Lorsque vous définissez ThisDrawing.MSpace = FALSE, cela revient à utiliser la
commande ESPACEP : l'espace papier est activé.

Vous devez en outre appliquer la méthode Display avant d'attribuer la valeur TRUE à la propriété MSpace. Cette méthode initialise les paramètres graphiques
requis pour passer en espace objet. Dans AutoCAD, cette opération est effectuée en arrière-plan.Mais, dans l'interface de l'Automatisation ActiveX, le
programmeur en est responsable.

Remarque Pensez à activer l'affichage d'au moins un objet PViewport à l'aide de la méthode Display avant d'attribuer la valeur TRUE à la propriété MSpace.
Sinon, cette propriété produira une erreur.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 145 of 194

Activation de l'espace papier


 

Depuis l'espace objet, vous pouvez passer à la dernière présentation active de l'espace papier.

Pour passer à la dernière présentation active de l'espace papier


1. Attribuez la valeur acPaperSpace à la propriété ActiveSpace :
ThisDrawing.ActiveSpace = acPaperSpace

2. Attribuez la valeur FALSE à la propriété MSpace :

ThisDrawing.MSpace = FALSE

Lorsque vous activez l'espace papier, AutoCAD affiche l'icône de système de coordonnées utilisateur (SCU) dans le coin inférieur gauche de la zone graphique.
Les réticules indiquent que la zone d e présentation du dessin dans l'espace papier (et non pas les vues des fenêtres) peut être éditée.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Activation de l'espace objet


 

De l'espace papier, vous pouvez basculer vers des fenêtres flottantes ou des fenêtres en mosaïque de l'espace objet.

Pour basculer vers des fenêtres flottantes


1. Utilisez la méthode Display pour initialiser des paramètres graphiques:
ThisDrawing.ActivePViewport.Display TRUE

2. Attribuez la valeur TRUE à la propriété MSpace :

ThisDrawing.MSpace = TRUE

Vous vous retrouvez en espace objet dans des fenêtres flottantes.

Remarque Vous devez créer des fenêtres flottantes avant d'essayer de passer en espace objet.

Pour basculer vers des fenêtres en mosaïque

Pour basculer vers des fenêtres en mosaïque, procédez comme suit :

 Attribuez la valeur acModelSpace à la propriété ActiveSpace :


ThisDrawing.ActiveSpace = acModelSpace

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Création de fenêtres dans l'espace papier


 

La méthode AddPViewport permet de créer des fenêtres dans l'espace papier. Elle requiert la définition du centre, de la largeur et de la hauteur de la nouvelle
fenêtre. Avant de créer la fenêtre, u tilisez la propriété ActiveSpace pour définir l'espace papier comme espace courant (ce qui est en principe effectué en
attribuant la valeur 0 à l a variable TILEMODE).

Une fois l'objet PViewport créé, vous pouvez définir les propriétés de la vue, notamment la direction de visée (propriété Direction), la longueur de l'objectif pour
les vues en perspective (propriété LensLength) et l'affichage de la grille (propriété GridOn Vous pouvez également définir les propriétés de la fenêtre, comme le
calque (propriété Layer), le type de ligne (propriété Linetype) et la mise à l'échelle du type de ligne (propriété LinetypeScale

Création et activation d'une fenêtre flottante

Dans l'exemple suivant, AutoCAD passe en espace papier, crée une fenêtre flottante, définit la vue et active la fenêtre.

Sub Ch9_SwitchToPaperSpace()
' Set the active space to paper space
ThisDrawing.ActiveSpace = acPaperSpace
' Create the paperspace viewport
Dim newVport As AcadPViewport
Dim center(0 To 2) As Double
center(0) = 3.25
center(1) = 3
center(2) = 0
Set newVport = ThisDrawing.PaperSpace. _
AddPViewport(center, 6, 5)
' Change the view direction for the viewport
Dim viewDir(0 To 2) As Double
viewDir(0) = 1
viewDir(1) = 1

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 146 of 194

  viewDir(2) = 1
newVport.direction = viewDir
' Enable the viewport
newVport.Display True
' Switch to model space
ThisDrawing.MSpace = True
' Set newVport current
' (not always necessary but a good idea)
ThisDrawing.ActivePViewport = newVport
' Zoom Extents in model space
ZoomExtents
' Turn model space editing off
ThisDrawing.MSpace = False
' ZoomExtents in paperspace
ZoomExtents
End Sub

L'ordre des étapes dans le code précédent est important. En principe, les opérations sont exécutées dans le même ordre que sur la ligne de commande
d'AutoCAD. Les seules opérations imprévues sont la définition de la vue et l'activation de la fenêtre.

Remarque Pour définir ou modifier l'aspect de la vue (direction de visée, longueur d'objectif, etc.), vous devez désactiver la méthode Display ( FALSE) de l'objet
Viewport et, avant de définir la fenêtre courante, activer la méthode Display ( TRUE).

Création de quatre fenêtres flottantes

L'exemple suivant prend le premier exemple de l a section "Création et activation d'une fenêtre flottante" et le complète pour créer quatre fenêtres flottantes et
définir dans chacune d'elles une vue de dessus, de face, de droite et isométrique. Chaque vue est mise à l'échelle à la moitié de l'espace papier. Pour garantir
que ces fenêtres contiennent des objets, vous pouvez créer une sphère solide en 3D avant d'essayer cet exemple.

Sub Ch9_FourPViewports()
Dim topVport, frontVport As AcadPViewport
Dim rightVport, isoVport As AcadPViewport
Dim pt(0 To 2) As Double
Dim viewDir(0 To 2) As Double
ThisDrawing.ActiveSpace = acPaperSpace
ThisDrawing.MSpace = True
' Take the existing PViewport and make it the topVport
pt(0) = 2.5: pt(1) = 5.5: pt(2) = 0
Set topVport = ThisDrawing.ActivePViewport
'No need to set Direction for top view
topVport.center = pt
topVport.width = 2.5
topVport.height = 2.5
topVport.Display True
ThisDrawing.MSpace = True
ThisDrawing.ActivePViewport = topVport
ZoomExtents
ZoomScaled 0.5, acZoomScaledRelativePSpace
'Create and setup frontVport
pt(0) = 2.5: pt(1) = 2.5: pt(2) = 0
Set frontVport = ThisDrawing.PaperSpace. _
AddPViewport(pt, 2.5, 2.5)
viewDir(0) = 0: viewDir(1) = 1: viewDir(2) = 0
frontVport.direction = viewDir
frontVport.Display acOn
ThisDrawing.MSpace = True
ThisDrawing.ActivePViewport = frontVport
ZoomExtents
ZoomScaled 0.5, acZoomScaledRelativePSpace
'Create and setup rightVport
pt(0) = 5.5: pt(1) = 5.5: pt(2) = 0
Set rightVport = ThisDrawing.PaperSpace. _
AddPViewport(pt, 2.5, 2.5)
viewDir(0) = 1: viewDir(1) = 0: viewDir(2) = 0
rightVport.direction = viewDir
rightVport.Display acOn
ThisDrawing.MSpace = True
ThisDrawing.ActivePViewport = rightVport
ZoomExtents
ZoomScaled 0.5, acZoomScaledRelativePSpace
'Create and set up isoVport
pt(0) = 5.5: pt(1) = 2.5: pt(2) = 0
Set isoVport = ThisDrawing.PaperSpace. _
AddPViewport(pt, 2.5, 2.5)
viewDir(0) = 1: viewDir(1) = 1: viewDir(2) = 1
isoVport.direction = viewDir
isoVport.Display acOn
ThisDrawing.MSpace = True
ThisDrawing.ActivePViewport = isoVport
ZoomExtents
ZoomScaled 0.5, acZoomScaledRelativePSpace
'Finish: Perform a regen in all viewports
ThisDrawing.Regen True
End Sub

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 147 of 194

Définition de présentations et traçage  

Modification de la vue et du contenu des fenêtres


 

Pour changer la vue d'un objet Viewport, vous devez être en espace objet et la fenêtre doit être active.

Pour modifier un dessin affiché dans une fenêtre flottante


1. Dans l'espace objet, activez la fenêtre en définissant la propriété ActiveViewport :
Thisdrawing.ActiveViewport = MyViewportObject

2. Modifiez le dessin.

Dans l'espace papier, vous pouvez également créer des objets, tels que des annotations, des cotes et des cartouches. Toutefois, vous devez attribuer la valeur
FALSE à la propriété ActiveSpace et activer l'espace papier à l'aide de la propriété MSpace. Les objets créés dans l'espace papier ne sont visibles que dans cet
espace.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Mise à l'échelle des vues par rapport à l'espace papier


 

Vous pouvez définir de manière précise les facteurs d'échelle de chaque partie du dessin avant d'envoyer celui-ci vers un traceur. La mise à l'échelle des vues
par rapport à l'espace papier permet d'obtenir une échelle uniforme pour chacune des vues affichées. La vue de l'espace papier illustrée ci-après contient
plusieurs fenêtres, chacune associée à une vue et une échelle différentes. Pour obtenir une mise à l'échelle précise lors du traçage du dessin, vous devez
définir l'échelle de chaque vue par rapport à l'espace papier et non par rapport à la vue précédente ou au modèle grandeur nature.

Lorsque vous travaillez dans l'espace papier, le facteur d'échelle représente le rapport entre les dimensions du tracé et la taille réelle du modèle affiché dans les
fenêtres. Pour calculer cette échelle, il suffit de diviser les unités de l'espace papier par les unités de l'espace objet. Par exemple, dans le cas d'un dessin
rapporté à l'échelle 1/4, indiquez une u nité de l'espace papier pour quatre unités de l'espace objet.

Utilisez la méthode ZoomScaled pour mettre à l'é chelle des fenêtres par rapport aux unités de l'espace papier. Cette méthode requiert la saisie de trois valeurs :
la fenêtre à mettre à l'échelle, le facteur d'échelle et le mode d'application du facteur d'échelle. La troisième entrée est facultative et détermine de quelle f açon
l'échelle est appliquée.

 Par rapport aux limites du dessin


 Par rapport à la vue courante
 Par rapport aux unités de l'espace papier

Pour spécifier une échelle par rapport aux unités de l'espace papier, entrez la constante acZoomScaledRelativePSpace pour cette valeur.

Comme le montrent les illustrations, si vous spécifiez une échelle de 2 par rapport aux unités de l'espace papier, l'échelle de la fenêtre sera égale aux unités de
l'espace papier multipliées par deux. Si vous spécifiez une échelle de .5 t oujours par rapport aux unités de l 'espace papier, l'échelle de la fenêtre sera égale aux
unités de l'espace papier divisées par d eux. Le dessin reproduit sur papier sera donc deux fois plus petit que le modèle d'origine.

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 148 of 194

Définition de présentations et traçage  

Mise à l'échelle des types de lignes dans l'espace papier


 

AutoCAD propose deux méthodes permettant de mettre à l'échelle n'importe quel type de ligne. Vous pouvez définir l'échelle par rapport aux unités de l'espace
(papier ou objet) dans lequel vous a vez créé l'objet. La seconde méthode consiste à définir une échelle uniforme par rapport aux unités de l'espace papier. L a
variable système PSLTSCALE permet d'appliquer la même échelle aux types de lignes des objets affichés dans différentes fenêtres, l'échelle de zoom variant
d'une fenêtre à l'autre. Cette variable redéfinit également l'affichage des lignes dans des vues 3D.

Dans l'exemple suivant, nous avons utilisé la variable système PSLTSCALE pour effectuer une mise à l'échelle uniforme du type de ligne dans l'espace papier.
Vous pouvez remarquer que ce type de ligne possède la même échelle dans les deux fenêtres bien que l'échelle de zoom des objets soit différente.

Utilisez la méthode SetVariable pour définir la valeur de la variable système PSLTSCALE

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Utilisation de fenêtres ombrées


 

Si votre dessin contient des faces 3 D, des mailles, des objets extrudés, des surfaces ou des solides, vous pouvez exécuter un tracé depuis l'espace papier en
utilisant les options Comme affiché, Filaire, Caché et Rendu. Les fenêtres ombrées et rendues sont affichées en modes Aperçu du tracé, Tracé et Tracé dans
un fichier avec ombrage et rendu intégral.

Pour définir une option de traçage d e fenêtre ombrée dans l'espace papier, utilisez la propriété ShadePlot de l'objet PViewport

Remarque Pour masquer des lignes sur les tracés des fenêtres de l'espace objet (objets Viewport), utilisez la propriété PlotHidden de l 'objet Layout Cette
propriété requiert une valeur booléenne : TRUE pour supprimer les lignes cachées, FALSE pour les dessiner.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Traçage du dessin
 

Vous pouvez tracer le dessin dans l'espace objet ou tracer l'une de vos présentations d'espace papier préparées. Il est souvent p référable d'effectuer le tracé
depuis l'espace objet lorsque vous voulez visualiser ou vérifier le dessin avant de créer une présentation d'espace papier. Une fois le modèle prêt, vous pouvez
préparer et tracer une présentation d'espace papier.

Remarque La variable système BACKGROUNDPLOT doit être définie sur 0 pour qu'un script puisse tracer plusieurs tâches.

Le traçage implique l'utilisation de deux objets Automatisation ActiveX : l'objet Layout et l'objet Plot. Le premier contient les paramètres de tracé d'une
présentation donnée. Le second contient les méthodes et propriétés qui initient et contrôlent une séquence de traçage.

Rubriques de cette section :

 Traçage de base 

 Traçage en espace objet 

 Traçage dans l'espace papier  

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Traçage de base
 

Vous pouvez utiliser les méthodes et propriétés suivantes d e l'objet Plot :

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 149 of 194

PlotToFile
Trace dans un fichier.
PlotToDevice
Trace vers un traceur ou une imprimante.
DisplayPlotPreview
Affiche un aperçu du tracé spécifié.
QuietErrorMode
Active le mode d'erreur muet pour le rapport d'erreurs du tracé.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Traçage en espace objet


 

En principe, lorsque vous tracez un dessin volumineux comme un plan d'étage, vous pouvez spécifier l'échelle dans laquelle convertir les unités de dessin
réelles en pouces ou millimètres tracés. Toutefois, lorsque vous tracez dans l'espace objet, les paramètres utilisés par défaut si aucun autre paramètre n'est
spécifié sont les suivants : tracé sur l'imprimante système, tracé de la vue courante, ajustement au format du papier, rotation de 0 et décalage de 0,0. Pour
modifier les paramètres du tracé, changez les propriétés de l'objet Layout associé à l'espace objet.

Tracé de l'étendu d'une présentation d'un espace objet actif

Dans cet exemple, l'utilisateur vérifie d'abord que l'espace actif est l'espace objet. Puis il définit plusieurs paramètres de tracé. Enfin, le tracé est envoyé via la
méthode PlotToDevice

Sub Ch9_PrintModelSpace()
' Verify that the active space is model space
If ThisDrawing.ActiveSpace = acPaperSpace Then
ThisDrawing.MSpace = True
ThisDrawing.ActiveSpace = acModelSpace
End If
' Set the extents and scale of the plot area
ThisDrawing.ModelSpace.Layout.PlotType = acExtents
ThisDrawing.ModelSpace.Layout. _
StandardScale = acScaleToFit
' Set the number of copies to one
ThisDrawing.Plot.NumberOfCopies = 1
' Initiate the plot
ThisDrawing.Plot.PlotToDevice
End Sub

Le nom du périphérique de traçage e st spécifié dans la propriété ConfigName Ce périphérique peut être remplacé dans la méthode PlotToDevice en spécifiant
un fichier PC3.

Envoyez-nous vos commentaires sur cette page.  

Définition de présentations et traçage  

Traçage dans l'espace papier


 

Vous pouvez tracer une présentation de l'espace p apier. Vous pouvez tracer la présentation active comme indiqué dans la section "Traçage en espace objet"
ou spécifier le nom de la présentation à tracer.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation


 

Avec l'expérience, vous utiliserez au mieux les nombreuses fonctions avancées d'AutoCAD permettant d'améliorer vos applications.

Vous pouvez inclure dans un dessin des images raster telles que des photographies aériennes, des photographies satellite et numériques, ainsi que des
images de rendu informatique. Pour de plus amples informations sur les images raster en plus des informations présentées dans cette section, reportez-vous au
Manuel d'utilisation .

En plus de l'amélioration de l' image visuelle d'un dessin, AutoCAD propose plusieurs fonctions destinées à aider à organiser les données, permettant ainsi
d'étendre l'intelligence des objets dans un dessin.

Rubriques de cette section :

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 150 of 194

 Utilisation d'images raster 

 Utilisation de blocs et d'attributs 

 Utilisation de références externes 

 Attribution et extraction de données étendues 

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Utilisation d'images raster


 

AutoCAD ®  permet d'ajouter des images raster aux dessins vectoriels AutoCAD, puis de visualiser et de tracer le fichier obtenu.

Rubriques de cette section :

 Association et mise à l'échelle d'images raster  

 Gestion des images raster 

 Modification d'images et de contours d'image  

 Délimitation d'images  

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Association et mise à l'échelle d'images raster


 

Vous pouvez placer les images dans un fichier de dessin bien qu'elles ne fassent pas vraiment partie du fichier. L'image est liée au fichier de dessin par
l'intermédiaire d'un chemin d'accès ou d'un ID de document de gestion de données. Vous pouvez modifier ou supprimer ces chemins d'accès à n'importe quel
moment. Pour attacher une image, créez un objet Raster dans le dessin à l'aide de la méthode AddRaster. Cette méthode requiert la saisie de quatre valeurs :
le nom du fichier image à attacher, le point d'insertion où placer l'image dans le dessin, le facteur d'échelle de l'image et l'angle de rotation de l'image.
Souvenez-vous que l'objet Raster représente une liaison indépendante vers l'image, et non l'image elle-même.

Une fois une image attachée, vous p ouvez l'attacher à nouveau plusieurs fois, en créant ainsi un objet Raster pour chaque attachement. Chaque attachement
possède son propre contour de délimitation et ses propres paramètres de luminosité, de contraste, d'estompe et de transparence. Chaque image peut être
sectionnée en plusieurs portions que vous pouvez réorganiser indépendamment dans le dessin.

Vous pouvez définir le facteur d'échelle de l'image raster lorsque vous créez l'objet Raster. Ainsi, l'échelle des objets de l'image correspond à celle des objets
créés dans le dessin AutoCAD. Lorsque vous sélectionnez une image à attacher, l'image est insérée selon un facteur d'échelle d'1 unité de mesure d'image
correspondant à 1 unité de mesure AutoCAD. Pour définir le facteur d'échelle de l'image, vous devez connaître l'échelle de la géométrie sur l'image, ainsi que
l'unité de mesure (pouces, pieds, etc.) à utiliser pour définir une unité AutoCAD. Le fichier image doit contenir des informations sur la résolution définissant les
PPP (ou nombre de points par pouce) ainsi que le nombre de pixels de l'image.

Si une image comporte des informations sur l a résolution, AutoCAD les combine avec le facteur d'échelle et l'unité de mesure AutoCAD que vous avez indiquée
afin de mettre à l'échelle l'image dans votre dessin. Par exemple, s'il s'agit d'une image raster numérisée dont l'échelle est de 1 pouce pour 50 pieds ou 1:600,
et que le dessin AutoCAD est configuré de sorte qu'une unité représente 1 pouce, mettez à 600 le paramètre ScaleFactor de la méthode AddRaster.
AutoCAD insère alors l'image selon une échelle qui aligne les objets de l'image avec la géométrie vectorielle du dessin.

Remarque Si aucune information de résolution n'est définie avec le fichier image attaché, AutoCAD calcule la largeur d'origine de l'image en tant qu'une unité.
Après insertion, la largeur de l'image en unités AutoCAD est égale au facteur d'échelle.

Ajout d'une image raster

Dans cet exemple, une image raster est ajoutée dans l'espace objet. L'exemple utilise le fichier watch.jpg , qui se trouve dans le répertoire Sample. Si cette
image ne figure pas sur votre système ou si elle se trouve dans un répertoire différent, indiquez un chemin d'accès et un nom de fichier appropriés pour la
variable imageName.

Sub Ch10_AttachingARaster()
Dim insertionPoint(0 To 2) As Double
Dim scalefactor As Double
Dim rotationAngle As Double
Dim imageName As String
Dim rasterObj As AcadRasterImage
imageName = "C:/Program Files/Répertoire AutoCAD/sample/watch.jpg '
insertionPoint(0) = 5
insertionPoint(1) = 5
insertionPoint(2) = 0
scalefactor = 2
rotationAngle = 0
On Error GoTo ERRORHANDLER
' Attach the raster image in model space
Set rasterObj = ThisDrawing.ModelSpace.AddRaster _
(imageName, insertionPoint, _
scalefactor, rotationAngle)
ZoomAll

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 151 of 194

  Exit Sub
ERRORHANDLER:
MsgBox Err.Description
End Sub

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Gestion des images raster


 

Vous pouvez gérer le nom d'une image raster, son nom de fichier et son chemin d'accès à l'aide des propriétés de l'objet Raster.

Rubriques de cette section :

 Modification des chemins d'accès aux fichiers images  

 Noms des images  

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Modification des chemins d'accès aux fichiers images


 

La propriété ImageFile permet d'interroger ou de modifier le chemin d'accès et le nom de fichier d'une image. Le chemin d'accès défini par cette propriété est le
chemin d'accès dans lequel AutoCAD recherche l'image.

Si AutoCAD ne trouve pas le dessin (par exemple, si vous avez déplacé le fichier vers un autre répertoire que celui enregistré avec la propriété ImageFile), il
supprime les informations de chemin relatives ou absolues du nom (par exemple, \images\tree.tga  ou c:\projet\images\tree.tga  devient tree.tga ) et recherche les
chemins définis via la méthode SetProjectFilePath de l'objet Preferences. Si le dessin ne se trouve pas dans ces chemins, AutoCAD essaie à nouveau le
premier chemin d'accès.

Vous pouvez supprimer le chemin d'accès du nom de fichier ou spécifier un chemin d'accès relatif en redéfinissant la propriété ImageFile.

La modification du chemin d'accès dans la propriété ImageFile n'affecte pas les paramètres du chemin de recherche des fichiers de projet.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Noms des images


 

Les noms d'image ne sont pas nécessairement identiques au nom de fichier des images. Lorsque vous associez une image à un dessin, AutoCAD utilise le
nom du fichier sans son extension comme nom d'image. Vous pouvez changer le nom d'image sans modifier le nom de fichier.

Le fichier image est représenté par la propriété ImageFile sur l'objet Raster. La modification de la propriété ImageFile modifie l'image dans le dessin. Le nom de
l'image est représenté par la propriété Name, et la modification de celle-ci modifie uniquement le nom de l'image et non son fichier associé.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Modification d'images et de contours d'image


 

Toute image possède un contour. Lorsque vous attachez une image à un dessin, son contour hérite des paramètres courants des propriétés, notamment les
paramètres couleur, calque, type de ligne et échelle du type de ligne. S'il s'agit d'une image à deux tons, la couleur de l'image et la couleur du contour sont
identiques.

De même qu'avec d'autres objets AutoCAD, vous pouvez modifier les images et les propriétés de leurs contours. Vous pouvez notamment effectuer les
opérations suivantes :

 Affichage ou masquage du contour de l' image


 Modification du calque de l'image, de la couleur du contour et du type de ligne
 Modification de l'emplacement de l'image

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 152 of 194

 Mise à l'échelle, rotation et modification des largeur et hauteur de l'image


 Basculement de la visibilité de l'image
 Modification de la transparence de l'image
 Modification de la luminosité, du contraste et de l'estompe de l'image
 Modification de la qualité et de la vitesse de l'affichage de l'image

Rubriques de cette section :

 Affichage et masquage des contours de l'image  

 Modification du calque de l'image, de la couleur de contour et du type de ligne des contours  

 Modification de l'échelle, de la rotation, de l'emplacement, de la largeur et de la hauteur d'une image  

 Modification de la visibilité de l'image  

 Modification de la couleur et de la transparence d'une image à deux tons  

 Réglage de la luminosité, du contraste et de l'estompe d'une image  

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Affichage et masquage des contours de l'image


 

En cachant un contour d'image, vous évitez tout déplacement ou modification accidentelle de l'image, ainsi que le traçage ou l'affichage du contour. Lorsque les
contours des images sont cachés, les images délimitées restent affichées dans les limites spécifiées ; seuls les contours sont concernés. Les opérations
d'affichage et de masquage des contours s'appliquent à toutes les images attachées à votre dessin.

Pour afficher ou masquer les contours d'une image, utilisez la propriété ClippingEnabled.

Remarque Cette propriété affecte uniquement le contour de l'image. Pour visualiser une modification dans l 'image lors de l'activation ou de la désactivation de
cette propriété, observez de près le petit contour entourant l'image.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Modification du calque de l'image, de la couleur de contour et du type de ligne des contours


 

Vous pouvez changer la couleur et le type de ligne des contours de l'image, ainsi que le calque de l'image à l'aide des propriétés suivantes :

Layer
Spécifie le calque de l'image.
Color
Spécifie la couleur du contour de l'image.
Linetype
Spécifie le type de ligne de l'image.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Modification de l'échelle, de la rotation, de l'emplacement, de la largeur et de la hauteur d'une image


 

Vous pouvez modifier l'échelle, la rotation, l'emplacement, la largeur et la hauteur d'une image à l'aide des méthodes et propriétés suivantes :

ScaleEntity
Met l'image à l'échelle.
Rotate
Fait pivoter l'image.
Origin
Spécifie l'emplacement de l'image.
Width
Spécifie la largeur de l'image en pixels.
Height
Spécifie la hauteur de l'image en pixels.
ImageWidth
Spécifie la largeur de l'image en unités de base de données.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 153 of 194

ImageHeight
Spécifie la hauteur de l'image en unités de base de données.
ShowRotation
Détermine si l'effet de rotation de l'image raster est affiché.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Modification de la visibilité de l'image


 

La visibilité de l'image affecte la vitesse pour redessiner en masquant les images dans la session de dessin en cours. Les images ainsi masquées ne sont pas
affichées ni tracées; seul le contour du dessin est affiché. Pour masquer des images, donnez à la propriété ImageVisibility la valeur FALSE. Pour afficher à
nouveau les images, donnez-lui la valeur TRUE

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Modification de la couleur et de la transparence d'une image à deux tons


 

Les images raster à deux tons comprennent uniquement une couleur de premier plan et une couleur d'arrière-plan. Lorsque vous attachez une image à deux
tons, les pixels du premier plan de l'image héritent des paramètres de couleur du calque courant. Outre les modifications que vous pouvez apporter à n'importe
quelle image attachée, vous pouvez modifier les images à deux tons en changeant la couleur du premier plan et en activant puis en désactivant la transparence
de l'arrière-plan.

Remarque Les images à deux tons et leurs contours sont toujours de couleur identique.

Pour modifier la couleur de premier plan d'une image à deux t ons, utilisez la propriété Color. Pour activer et désactiver la transparence, utilisez la propriété
Transparency.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Réglage de la luminosité, du contraste et de l'estompe d'une image


 

Dans AutoCAD, vous pouvez régler la luminosité, le contraste et l'estompe de l'image à l'écran ainsi qu'à la sortie tracée sans affecter le fichier d'image raster
initial.

Pour régler la luminosité, le contraste et l'estompe, utilisez les propriétés suivantes :

Brightness
Spécifie le niveau de luminosité d'une image.
Contrast
Spécifie le niveau de contraste d'une i mage.
Fade
Spécifie le niveau d'estompe d'une image.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Délimitation d'images
 

Vous pouvez délimiter une zone d'image en vue d'un affichage ou d'un traçage. Le contour de délimitation doit être un rectangle ou un polygone 2D dont les
sommets figurent dans les contours de l'image. Plusieurs instances de la même image peuvent avoir des contours différents

Pour délimiter une image


1. Activez les contours de l'image à l'aide de la propriété ClippingEnabled
2. Spécifiez le contour de délimitation et exécutez la délimitation à l'aide de la méthode ClipBoundary. Cette méthode requiert la saisie d'une valeur : un
tableau de variants de coordonnées de système de coordonnées général 2D spécifiant le contour de délimitation d'une image raster.

Rubriques de cette section :

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 154 of 194

 Modification du contour de délimitation 

 Affichage et masquage du contour de délimitation  

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Modification du contour de délimitation


 

Pour modifier un contour de délimitation existant, répétez les étapes précédentes. L'ancien contour est supprimé et remplacé par le nouveau.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Affichage et masquage du contour de délimitation


 

Vous pouvez afficher le contour de d élimitation d'une image, ou cacher ce contour e t afficher les contours initiaux de l'image. Pour masquer un contour de
délimitation et afficher l'image d'origine, définissez la propriété ClippingEnabled sur FALSE. Pour afficher l'image délimitée, définissez la propriété
ClippingEnabled sur TRUE.

Rubriques de cette section :

 Délimitation du contour d'une image raster  

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Délimitation du contour d'une image raster


 

Dans cet exemple, une image raster est ajoutée dans l'espace objet. Ensuite, l'image est délimitée en fonction du contour de délimitation. L'exemple utilise le
fichier downtown.jpg , qui se trouve dans le répertoire Sample. Si cette image ne figure pas sur votre système ou si elle se trouve dans un répertoire différent,
indiquez un chemin d'accès et un nom de fichier appropriés pour la variable imageName.

Sub Ch10_ClippingRasterBoundary()
Dim insertionPoint(0 To 2) As Double
Dim scalefactor As Double
Dim rotationAngle As Double
Dim imageName As String
Dim rasterObj As AcadRasterImage
imageName = "C:\AutoCAD\sample\downtown.jpg"
insertionPoint(0) = 5
insertionPoint(1) = 5
insertionPoint(2) = 0
scalefactor = 2
rotationAngle = 0
On Error GoTo ERRORHANDLER
' Creates a raster image in model space
Set rasterObj = ThisDrawing.ModelSpace.AddRaster _
(imageName, insertionPoint, _
scalefactor, rotationAngle)
ZoomAll
' Establish the clip boundary with an array of points
Dim clipPoints(0 To 9) As Double
clipPoints(0) = 6: clipPoints(1) = 6.75
clipPoints(2) = 7: clipPoints(3) = 6
clipPoints(4) = 6: clipPoints(5) = 5
clipPoints(6) = 5: clipPoints(7) = 6
clipPoints(8) = 6: clipPoints(9) = 6.75
' Clip the image
rasterObj.ClipBoundary clipPoints
' Enable the display of the clip
rasterObj.ClippingEnabled = True
ThisDrawing.Regen acActiveViewport
Exit Sub
ERRORHANDLER:
MsgBox Err.Description
End Sub

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 155 of 194

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Utilisation de blocs et d'attributs


 

AutoCAD propose plusieurs fonctions vous permettant de gérer les objets d'un dessin. Grâce aux blocs, vous pouvez organiser et manipuler de nombreux
objets comme un seul élément. Les attributs a ssocient les éléments d'information avec les blocs de vos dessins, les numéros de référence e t les prix par
exemple.

L'utilisation de références externes AutoCAD permet d'attacher des dessins entiers au dessin courant ou de les superposer. Ainsi, les modifications apportées
au dessin de référence apparaissent dans le dessin courant lorsque vous ouvrez ce dernier.

Rubriques de cette section :

 Utilisation des blocs 

 Utilisation d'attributs 

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Utilisation des blocs


 

Un bloc est un ensemble d'objets regroupés de sorte qu'ils ne forment plus qu'un seul objet et constituent ce qu'on appelle une référence de bloc. AutoCAD
permet d'insérer une référence de bloc dans le dessin, de la mettre à l'échelle et de lui appliquer une rotation. Vous pouvez également décomposer un bloc afin
d'en modifier un à un les éléments, et créer ainsi un nouvel objet lorsque vous reconstituez le bloc. AutoCAD met à jour toutes les futures occurrences de ce
bloc en fonction de sa définition.

Les blocs peuvent être définis à partir d'objets initialement dessinés sur des calques différents à l'aide de couleurs et de types de lignes distincts. Vous pouvez
conserver les informations relatives aux calques, aux couleurs et aux types de lignes des objets dans un bloc. Lorsque vous insérez celui-ci dans le dessin,
chaque objet reste sur son calque d'origine et conserve sa couleur et son type de ligne initial.

Pour de plus amples informations sur l'utilisation de blocs, reportez-vous à la section “Création et insertion de symboles (blocs)” du Manuel d'utilisation .

Rubriques de cette section :

 Définition de blocs 

 Insertion de blocs  

 Décomposition d'une référence de bloc  

 Redéfinition d'un bloc  

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Définition de blocs

Pour créer un bloc, utilisez la méthode Add. Cette méthode requiert la saisie de deux valeurs : l'emplacement où ajouter le bloc dans le dessin et le nom du bloc
à créer.

Une fois le bloc créé, vous pouvez lui ajouter tout objet géométrique ou un autre bloc. Vous pouvez ensuite insérer une occurrence du bloc dans le dessin. Un
bloc inséré est un objet appelé référence de bloc.

Vous pouvez également créer un bloc à l'aide de la méthode WBlock qui permet de grouper des objets dans un fichier dessin distinct. Le fichier dessin peut être
ensuite utilisé comme définition de bloc pour d'autres dessins. AutoCAD considère comme définition de bloc tout dessin que vous insérez dans un autre.

Pour de plus amples informations sur la définition de blocs, reportez-vous à la section “Création de blocs” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Insertion de blocs

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 156 of 194

La méthode InsertBlock vous permet d'insérer des blocs ou des dessins entiers dans le dessin courant. La méthode InsertBlock requiert la saisie de six
valeurs : le point d'insertion, le nom du bloc ou du dessin à insérer, les facteurs d'échelle de X, Y et Z, et l'angle de ro tation.

Un dessin constitue une référence de bloc lorsque vous l'insérez intégralement dans un autre dessin. Lorsque vous renouvelez cette opération, AutoCAD utilise
la définition du bloc (c'est-à-dire, la description géométrique de ce bloc) et modifie simplement les paramètres de position, d'échelle et de rotation. Si vous
modifiez le dessin d'origine après son i nsertion, vos modifications n'auront aucun effet sur le bloc inséré. Si vous souhaitez que le bloc inséré reflète les
changements effectués, vous pouvez le redéfinir en insérant de nouveau le dessin d'origine. Pour ce faire, utilisez la méthode InsertBlock.

Si vous insérez un dessin en tant que bloc, le nom de fichier est automatiquement utilisé en tant que nom du bloc. Une fois le bloc créé, vous pouvez modifier
son nom à l'aide de la propriété Name.

AutoCAD attribue par défaut les coordonnées (0, 0, 0) comme point de base aux dessins insérés. Vous pouvez modifier le point de base d'un dessin en ouvrant
le dessin d'origine et en utilisant la méthode SetVariable pour spécifier un point de base d'insertion différent pour la variable système INSBASE. AutoCAD
appliquera le nouveau point de base lors de l'insertion suivante du dessin.

Si le dessin inséré contient des objets PaperSpace, ceux-ci ne sont pas inclus dans la définition du bloc du dessin courant. Pour utiliser ces o bjets dans un
autre dessin, ouvrez le dessin d'origine et convertissez-les en bloc à l'aide de la méthode Add. Vous pouvez insérer le dessin dans un autre dans l'espace
papier ou dans l'espace objet.

Une référence de bloc ne peut pas être itérée pour rechercher les objets d'origine qui la composent. Toutefois, vous pouvez itérer la définition du bloc d'origine,
ou alors décomposer la référence de bloc en ses composants d'origine.

Vous pouvez également insérer un réseau de blocs à l'aide de la méthode AddMInsertBlock. Cette méthode n'insère pas un bloc unique dans le dessin, comme
le fait la méthode InsertBlock, mais insère en revanche un réseau du bloc spécifié. Cette méthode renvoie un objet MInsertBlock.

Pour de plus amples informations sur l'insertion d e blocs, reportez-vous à la section “Insertion de blocs” du Manuel d'utilisation .

Définition d'un bloc et insertion de celui-ci dans un dessin

Cet exemple définit un bloc et ajoute un cercle à la définition de bloc. Ensuite, le bloc est inséré dans le dessin comme référence de bloc.

Sub Ch10_InsertingABlock()
' Define the block
Dim blockObj As AcadBlock
Dim insertionPnt(0 To 2) As Double
insertionPnt(0) = 0
insertionPnt(1) = 0
insertionPnt(2) = 0
Set blockObj = ThisDrawing.Blocks.Add _
(insertionPnt, "CircleBlock")
' Add a circle to the block
Dim circleObj As AcadCircle
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 0
center(1) = 0
center(2) = 0
radius = 1
Set circleObj = blockObj.AddCircle(center, radius)
' Insert the block
Dim blockRefObj As AcadBlockReference
insertionPnt(0) = 2
insertionPnt(1) = 2
insertionPnt(2) = 0
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
ZoomAll
MsgBox "The circle belongs to " & blockRefObj.ObjectName
End Sub

Remarque A la fin de l'opération d'insertion, le système de coordonnées général (SCG) du fichier externe est aligné parallèlement au plan XY du système de
coordonnées utilisateur (SCU) dans le dessin courant. Il suffit donc de modifier le paramètre SCU, avant d'insérer la référence de bloc d'un fichier externe, pour
redéfinir son orientation dans l'espace.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Décomposition d'une référence de bloc


 

Pour décomposer une référence de bloc, utilisez la méthode Explode. Grâce à la décomposition d'une référence de bloc, vous pouvez modifier le bloc, ou
ajouter ou supprimer les objets qui le composent.

Affichage du résultat d'une référence de bloc décomposée

Cet exemple crée un bloc et ajoute un cercle à la définition du bloc. Ensuite, le bloc est inséré dans le dessin comme référence de bloc. La référence de bloc est
ensuite décomposée et les objets résultants sont affichés a vec les types d'objets correspondants.

Sub Ch10_ExplodingABlock()
' Define the block
Dim blockObj As AcadBlock

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 157 of 194

  Dim insertionPnt(0 To 2) As Double


insertionPnt(0) = 0
insertionPnt(1) = 0
insertionPnt(2) = 0
Set blockObj = ThisDrawing.Blocks.Add _
(insertionPnt, "CircleBlock")
' Add a circle to the block
Dim circleObj As AcadCircle
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 0
center(1) = 0
center(2) = 0
radius = 1
Set circleObj = blockObj.AddCircle(center, radius)
' Insert the block
Dim blockRefObj As AcadBlockReference
insertionPnt(0) = 2
insertionPnt(1) = 2
insertionPnt(2) = 0
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
ZoomAll
MsgBox "The circle belongs to " & blockRefObj.ObjectName
' Explode the block reference
Dim explodedObjects As Variant
explodedObjects = blockRefObj.Explode
' Loop through the exploded objects
Dim I As Integer
For I = 0 To UBound(explodedObjects)
explodedObjects(I).Color = acRed
explodedObjects(I).Update
MsgBox "Exploded Object " & I & ": " _
& explodedObjects(I).ObjectName
explodedObjects(I).Color = acByLayer
explodedObjects(I).Update
Suivant
End Sub

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Redéfinition d'un bloc


 

Pour redéfinir un bloc, utilisez l'une des méthodes ou propriétés de l'objet Block. Lorsque vous redéfinissez un bloc, toutes les références à celui-ci dans le
dessin sont immédiatement mises à jour en fonction de la nouvelle définition.

La redéfinition affecte les insertions précédentes et futures d'un bloc. Les attributs de valeur constante sont supprimés et remplacés par ceux que vous
définissez. En revanche, les attributs de variable ne subissent aucune modification, même si la nouvelle définition du bloc ne contient aucun attribut.

Redéfinition des objets dans une définition de bloc

Cet exemple crée un bloc et ajoute un cercle à la définition du bloc. Ensuite, le bloc est inséré dans le dessin comme référence de bloc. Le cercle dans la
définition de bloc est mis à jour, de même que la référence du bloc.

Sub Ch10_RedefiningABlock()
' Define the block
Dim blockObj As AcadBlock
Dim insertionPnt(0 To 2) As Double
insertionPnt(0) = 0
insertionPnt(1) = 0
insertionPnt(2) = 0
Set blockObj = ThisDrawing.Blocks.Add _
(insertionPnt, "CircleBlock")
' Add a circle to the block
Dim circleObj As AcadCircle
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 0
center(1) = 0
center(2) = 0
radius = 1
Set circleObj = blockObj.AddCircle(center, radius)
' Insert the block
Dim blockRefObj As AcadBlockReference
insertionPnt(0) = 2
insertionPnt(1) = 2
insertionPnt(2) = 0
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
ZoomAll
' Redefine the circle in the block,

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 158 of 194

  ' and update the block reference


circleObj.radius = 3
blockRefObj.Update
End Sub

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Utilisation d'attributs
 

Un attribut définit une étiquette (également appelée libellé) permettant d'indiquer, de manière interactive, le texte à associer à un bloc. Vous pouvez, par
exemple, entrer des numéros de référence, des tarifs, des commentaires et les noms des propriétaires.

Vous pouvez extraire les informations de référence d'attribut d'un dessin et les utiliser dans un tableur ou une base de données, pour créer une nomenclature.
AutoCAD permet d'associer plusieurs attributs à un bloc, à condition que vous définissiez une étiquette pour chacun d'entre eux. Vous pouvez également définir
des attributs constants. Comme ils ont la même valeur dans chaque occurrence du bloc, vous pouvez insérer le bloc sans entrer de valeur.

Les attributs peuvent être invisibles, c'est-à-dire qu'ils n'apparaissent pas à l'écran ou qu'ils ne sont pas tracés. Toutefois, les informations sur la référence
d'attribut sont stockées dans le fichier dessin.

Pour de plus amples informations sur l'utilisation d'attributs, reportez-vous à la section “Présentation des attributs de bloc” du Manuel d'utilisation .

Rubriques de cette section :

 Création de définitions et de références d'attribut  

 Modification d'une définition d'attribut  

 Extraction des informations d'attribut  

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Création de définitions et de références d'attribut


 

Pour créer une référence d'attribut, vous devez d 'abord créer une définition d'attribut sur un bloc à l'aide de la méthode AddAttribute. Cette méthode requiert la
saisie de six valeurs : la hauteur du texte de l'attribut, le mode Attribut, une chaîne de message, le point d'insertion, la chaîne d'étiquette et la valeur par défaut
de l'attribut.

La valeur du mode est facultative. Le mode de l'attribut peut être spécifié via la saisie de cinq constantes:

acAttributeModeNormal
Indique que le mode courant de chaque attribut est mis à jour.
acAttributeModeInvisible
Les valeurs des attributs n'apparaîtront pas au moment de l'insertion du bloc. La commande ATTECRAN est prioritaire sur le mode Invisible.
acAttributeModeConstant
Affecte aux attributs une valeur fixe pour les insertions de bloc.
acAttributeModeVerify
Demande une vérification de la valeur des attributs lors de l'insertion du bloc.
acAttributeModePreset
Définit l'attribut sur sa valeur par défaut lorsque vous insérez un bloc contenant un attribut prédéfini. La valeur ne peut pas être modifiée dans ce mode.

Vous pouvez n'entrer aucune option ou bien entrer une combinaison ou l'ensemble des options. Pour spécifier une combinaison d'options, ajoutez les
constantes ensemble. Par exemple, vous pouvez entrer acAttributeModeInvisible + acAttributeModeConstant.

La chaîne de message s'affiche lors de l'insertion d'un bloc contenant l'attribut. La valeur par défaut de cette chaîne est la chaîne de l'étiquette. Entrez
acAttributeModeConstant pour le mode afin de désactiver le message.

La chaîne de l'étiquette identifie chaque occurrence de l'attribut. Tous les caractères peuvent être utilisés à l'exception des espaces et des points d'e xclamation.
AutoCAD convertit les minuscules en majuscules.

Une fois la définition d'attribut spécifiée dans un bloc, l'insertion du bloc via la méthode InsertBlock permet de spécifier une valeur différente pour la référence de
l'attribut.

Une définition d'attribut est associée au bloc au moment de sa création. Les définitions d'attribut créées dans l'espace objet ou l'espace papier ne sont
attachées à aucun bloc donné.

Définition d'un attribut

Cet exemple crée un bloc auquel il ajoute un attribut. Ensuite, le bloc est inséré dans le dessin.

Sub Ch10_CreatingAnAttribute()
' Define the block
Dim blockObj As AcadBlock

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 159 of 194

  Dim insertionPnt(0 To 2) As Double


insertionPnt(0) = 0
insertionPnt(1) = 0
insertionPnt(2) = 0
Set blockObj = ThisDrawing.Blocks.Add _
(insertionPnt, "BlockWithAttribute")
' Add an attribute to the block
Dim attributeObj As AcadAttribute
Dim height As Double
Dim mode As Long
Dim prompt As String
Dim insertionPoint(0 To 2) As Double
Dim tag As String
Dim value As String
height = 1
mode = acAttributeModeVerify
prompt = "New Prompt"
insertionPoint(0) = 5
insertionPoint(1) = 5
insertionPoint(2) = 0
tag = "New Tag"
value = "New Value"
Set attributeObj = blockObj.AddAttribute(height, mode, _
prompt, insertionPoint, tag, value)
' Insert the block, creating a block reference
' and an attribute reference
Dim blockRefObj As AcadBlockReference
insertionPnt(0) = 2
insertionPnt(1) = 2
insertionPnt(2) = 0
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
(insertionPnt, "BlockWithAttribute", 1#, 1#, 1#, 0)
End Sub

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Modification d'une définition d'attribut


 

Vous pouvez utiliser les méthodes et propriétés d'un objet Attribute pour modifier l'attribut. Certaines propriétés d'un attribut incluent les suivantes :

Alignment
Spécifie l'alignement horizontal et vertical de l'attribut.
Backward
Spécifie la direction du texte de l'attribut.
FieldLength
Spécifie la longueur du champ de l'attribut.
Height
Indique la hauteur de l'attribut.
InsertionPoint
Spécifie le point d'insertion de l'attribut.
Mode
Spécifie le mode de l'attribut.
PromptString
Indique la chaîne de texte constituant le message de l'attribut.
Rotation
Spécifie la rotation de l'attribut.
ScaleFactor
Spécifie le facteur d'échelle de l'attribut.
TagString
Indique la chaîne de texte constituant l'étiquette de l'attribut.

Certaines des méthodes disponibles pour l'édition de l'attribut incluent les suivantes :

ArrayPolar
Crée un réseau polaire.
ArrayRectangular
Crée un réseau rectangulaire.
Copy
Copie l'attribut.
Erase
Efface l'attribut.
Mirror
Crée une copie-miroir de l'attribut.
Move
Déplace l'attribut.
Rotate

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 160 of 194

Fait pivoter l'attribut.


ScaleEntity
Met à l'échelle l'attribut.

Modification d'une définition d'attribut

Cet exemple crée un bloc auquel il ajoute un attribut. Ensuite, le bloc est inséré dans le dessin. Le texte d'attribut est alors mis à jour et s'affiche de droite à
gauche.

Sub Ch10_RedefiningAnAttribute()
' Define the block
Dim blockObj As AcadBlock
Dim insertionPnt(0 To 2) As Double
insertionPnt(0) = 0
insertionPnt(1) = 0
insertionPnt(2) = 0
Set blockObj = ThisDrawing.Blocks.Add _
(insertionPnt, "BlockWithAttribute")
' Add an attribute to the block
Dim attributeObj As AcadAttribute
Dim height As Double
Dim mode As Long
Dim prompt As String
Dim insertionPoint(0 To 2) As Double
Dim tag As String
Dim value As String
height = 1
mode = acAttributeModeVerify
prompt = "New Prompt"
insertionPoint(0) = 5
insertionPoint(1) = 5
insertionPoint(2) = 0
tag = "New Tag"
value = "New Value"
Set attributeObj = blockObj.AddAttribute(height, mode, _
prompt, insertionPoint, tag, value)
' Insert the block, creating a block reference
' and an attribute reference
Dim blockRefObj As AcadBlockReference
insertionPnt(0) = 2
insertionPnt(1) = 2
insertionPnt(2) = 0
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
(insertionPnt, "BlockWithAttribute", 1#, 1#, 1#, 0)
' Redefine the attribute text to display backwards.
attributeObj.Backward = True
attributeObj.Update
End Sub

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Extraction des informations d'attribut


 

Les méthodes GetAttributes et GetConstantAttributes permettent d'extraire les informations d'attribut d'un dessin. La méthode GetAttributes renvoie un réseau
des références d'attribut attachées à un bloc, en plus de leurs valeurs courantes. La méthode GetConstantAttributes renvoie un réseau des attributs constants
attachés au bloc ou à la référence externe. Les attributs renvoyés par cette méthode sont les définitions d'attributs constants, pas les références d'attribut.

Les fichiers gabarits ne sont pas requis pour l'extraction des informations d'attribut, et aucun fichier d'informations d'attribut n'est créé. Il suffit d'itérer le réseau
des références d'attribut, à l'aide des propriétés TagString et TextString des références d'attribut, pour examiner les informations d'attribut.

La propriété TagString représente l'étiquette individuelle de la référence d'attribut. La propriété TextString contient la valeur de la référence d'attribut.

Pour plus d'informations sur l'extraction des informations d'attributs, reportez-vous à la section “Extraction de données des attributs d e bloc” du Manuel
d'utilisation .

Extraction des informations sur les références d'attribut

Cet exemple crée un bloc auquel il ajoute un attribut. Ensuite, le bloc est inséré dans le dessin. Les données d'attribut sont ensuite renvoyées et affichées dans
une boîte de message. Elles sont alors mises à jour en fonction de la référence de bloc avant d'être à nouveau renvoyées et affichées.

Sub Ch10_GettingAttributes()
' Create the block
Dim blockObj As AcadBlock
Dim insertionPnt(0 To 2) As Double
insertionPnt(0) = 0
insertionPnt(1) = 0
insertionPnt(2) = 0
Set blockObj = ThisDrawing.Blocks.Add _
(insertionPnt, "TESTBLOCK")
' Define the attribute definition
Dim attributeObj As AcadAttribute

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 161 of 194

  Dim height As Double


Dim mode As Long
Dim prompt As String
Dim insertionPoint(0 To 2) As Double
Dim tag As String
Dim value As String
height = 1#
mode = acAttributeModeVerify
prompt = "Attribute Prompt"
insertionPoint(0) = 5
insertionPoint(1) = 5
insertionPoint(2) = 0
tag = "Attribute Tag"
value = "Attribute Value"
' Create the attribute definition object on the block
Set attributeObj = blockObj.AddAttribute _
(height, mode, prompt, _
insertionPoint, tag, value)
' Insert the block
Dim blockRefObj As AcadBlockReference
insertionPnt(0) = 2
insertionPnt(1) = 2
insertionPnt(2) = 0
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
(insertionPnt, "TESTBLOCK", 1, 1, 1, 0)
ZoomAll
' Get the attributes for the block reference
Dim varAttributes As Variant
varAttributes = blockRefObj.GetAttributes
' Move the attribute tags and values into a
' string to be displayed in a Msgbox
Dim strAttributes As String
strAttributes = ""
Dim I As Integer
For I = LBound(varAttributes) To UBound(varAttributes)
strAttributes = strAttributes + " Tag: " + _
varAttributes(I).TagString + vbCrLf + _
" Value: " + varAttributes(I).textString
Suivant
MsgBox "The attributes for blockReference " + _
blockRefObj.Name & " are: " & vbCrLf _
& strAttributes
' Change the value of the attribute
' Note: There is no SetAttributes. Once you have the
' variant array, you have the objects.
' Changing them changes the objects in the drawing.
varAttributes(0).textString = "NEW VALUE!"
' Get the attributes again
Dim newvarAttributes As Variant
newvarAttributes = blockRefObj.GetAttributes
' Again, display the tags and values
strAttributes = ""
For I = LBound(varAttributes) To UBound(varAttributes)
strAttributes = strAttributes + " Tag: " + _
newvarAttributes(I).TagString + vbCrLf + _
" Value: " + newvarAttributes(I).textString
Suivant
MsgBox "The attributes for blockReference " & _
blockRefObj.Name & " are: " & vbCrLf _
& strAttributes
End Sub

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Utilisation de références externes


 

Une référence externe (Xréf) relie un dessin au dessin courant. Lorsque vous insérez un dessin sous forme de bloc, la définition du bloc et tous les éléments
associés sont enregistrés dans la base de données de dessins courante. Il n'est pas mis à jour si vous modifiez le dessin d'origine. En revanche, lorsque vous
insérez un dessin sous forme de Xréf, celle-ci est mise à jour lorsque vous apportez des modifications au dessin d'origine. Par conséquent, un dessin qui
contient des xréfs reflète toujours les dernières modifications apportées à chaque fichier de référence externe.

Une Xréf constitue une entité unique dans le dessin courant, au même titre qu'une référence de bloc. Sachez cependant que les Xréfs n'augmentent pas
sensiblement la taille du fichier contenant le dessin courant et qu'elles ne peuvent pas être décomposées. Tout comme les blocs, vous pouvez imbriquer
plusieurs références externes rattachées au dessin.

Pour de plus amples informations sur les xréfs, reportez-vous à la section “Attache, mise à jour et liaison des références externes” du Manuel d'utilisation .

Rubriques de cette section :

 Mise à jour des Xréfs  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 162 of 194

 Attachement de xréfs 

 Détachement de Xréfs 

 Rechargement de Xréfs 

 Déchargement des xréfs 

 Liaison de Xréfs  

 Délimitation de blocs et de Xréfs  

 Chargement sur demande et performances des Xréfs 

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Mise à jour des Xréfs


 

Lors de l'ouverture ou du tracé d'un dessin, AutoCAD recharge chacune des xréfs, de sorte que leur contenu corresponde à la dernière version du dessin de
référence. Une fois des modifications apportées à un fichier de références externes et le fichier enregistré, les autres utilisateurs peuvent immédiatement
visualiser les modifications en rechargeant la xréf.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Attachement de xréfs
 

L'attachement d'une xréf lie un dessin (le fichier de références ou xréf) au dessin courant. Lorsqu'un dessin référence une xréf, AutoCAD attache uniquement la
définition de la xréf au dessin, à la différence d'un bloc normal, où la définition et le contenu du bloc sont stockés avec le dessin courant. AutoCAD lit le dessin
de référence pour déterminer les éléments à afficher dans le dessin courant. Si le fichier de référence est introuvable ou altéré, ses données n'apparaissent
pas. A chaque ouverture d'un dessin, AutoCAD charge tous les objets graphiques et non graphiques (tels que les calques, les types de lignes, les styles d e
texte) à partir des fichiers de références. Si la variable VISRETAIN est activée, AutoCAD enregistre toutes les informations de calque dépendant de références
externes qui ont été mises à jour dans le dessin courant.

Vous pouvez ainsi attacher une xréf autant de fois que vous le souhaitez et attribuer à chaque occurrence une n ouvelle position, une nouvelle échelle ou une
nouvelle rotation. Vous pouvez également contrôler les calques dépendants et les propriétés des types de lignes définies dans cette xréf.

Pour attacher une xréf, utilisez la méthode AttachExternalReference. Cette méthode requiert la saisie du chemin d'accès et du nom du fichier dessin à
référencer, le nom utilisé par la xréf dans le dessin courant, le point d'insertion, l'échelle et les informations de rotation de la xréf. La méthode
AttachExternalReference renvoie l'objet ExternalReference créé.

Pour de plus amples informations sur l'association de xréfs, reportez-vous à la section “Attachement de ré férences externes” du Manuel d'utilisation .

Ajout d'une référence externe à un dessin

Dans cet exemple, tous les blocs du dessin courant sont affichés avant et après avoir ajouté une référence externe. L'exemple utilise l e fichier 3D House.dwg ,
qui se trouve dans le répertoire Sample. Si cette image ne figure pas sur votre système ou si elle se trouve dans un répertoire différent, indiquez un chemin
d'accès et un nom de fichier appropriés pour la variable PathName.

Sub Ch10_AttachingExternalReference()
On Error GoTo ERRORHANDLER
Dim InsertPoint(0 To 2) As Double
Dim insertedBlock As AcadExternalReference
Dim tempBlock As AcadBlock
Dim msg As String, PathName As String
' Define external reference to be inserted
InsertPoint(0) = 1
InsertPoint(1) = 1
InsertPoint(2) = 0
PathName = "C:/Program Files/AutoCAD 2007/sample/3D House.dwg"
' Display current Block information for this drawing
GoSub ListBlocks
' Add the external reference to the drawing
Set insertedBlock = ThisDrawing.ModelSpace. _
AttachExternalReference(PathName, "XREF_IMAGE", _
InsertPoint, 1, 1, 1, 0, False)
ZoomAll
' Display new Block information for this drawing
GoSub ListBlocks
Exit Sub
ListBlocks:
msg = vbCrLf ' Reset message
For Each tempBlock In ThisDrawing.Blocks
msg = msg & tempBlock.Name & vbCrLf
Suivant
MsgBox "The current blocks in this drawing are: " & msg
Return

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 163 of 194

ERRORHANDLER:
MsgBox Err.Description
End Sub

Rubriques de cette section :

 Superposition de xréfs  

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Superposition de xréfs
 

La superposition est comparable à l'attachement, sauf lorsqu'un dessin est attaché ou superposé. Toute autre superposition imbriquée est ignorée et, par
conséquent, non affichée. En d'autres termes, les superpositions imbriquées ne sont pas lues.

Pour superposer une xréf, définissez le paramètre Overlay de la méthode AttachExternalReference sur TRUE.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Détachement de Xréfs
 

Vous pouvez supprimer une définition de xréf p our enlever complètement les xréfs du dessin. Vous pouvez également effacer les occurrences des xréfs
individuelles. La suppression de la définition d'une xréf supprime tous les symboles dépendants associés à celle-ci. Si toutes les occurrences d'une xréf sont
effacées du dessin, AutoCAD supprime la définition de la référence externe lors de la prochaine ouverture du dessin.

Pour supprimer l'attachement d'une xréf, utilisez la méthode Detach. Vous ne pouvez pas détacher une xréf imbriquée.

Détachement d'une référence externe

Dans cet exemple, une référence externe est attachée puis détachée. L'exemple utilise le fichier 3D House.dwg , qui se trouve dans le répertoire Sample. Si
cette image ne figure pas sur votre système ou si elle se trouve dans un répertoire différent, indiquez un chemin d'accès et un nom de fichier appropriés pour la
variable PathName.

Sub Ch10_DetachingExternalReference()
On Error GoTo ERRORHANDLER
' Define external reference to be inserted
Dim xrefHome As AcadBlock
Dim xrefInserted As AcadExternalReference
Dim insertionPnt(0 To 2) As Double
Dim PathName As String
insertionPnt(0) = 1
insertionPnt(1) = 1
insertionPnt(2) = 0
PathName = "c:/AutoCAD 2007/sample/3D House.dwg"
' Add the external reference
Set xrefInserted = ThisDrawing.ModelSpace. _
AttachExternalReference(PathName, "XREF_IMAGE", _
insertionPnt, 1, 1, 1, 0, False)
ZoomAll
MsgBox "The external reference is attached."
' Detach the external reference definition
Dim name As String
name = xrefInserted.name
ThisDrawing.Blocks.Item(name).Detach
MsgBox "The external reference is detached."
Exit Sub
ERRORHANDLER:
MsgBox Err.Description
End Sub

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Rechargement de Xréfs
 

Si un utilisateur modifie un dessin d e référence externe alors que vous travaillez sur un dessin hôte auquel cette xréf est attachée, vous pouvez mettre à jour le

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 164 of 194

dessin de référence externe à l'aide de la méthode Reload. Lorsque vous procédez a u rechargement, le dessin de référence externe sélectionné est mis à jour
dans le dessin hôte. En o utre, si vous avez désactivé une xréf, vous pouvez choisir de recharger le dessin de référence externe à tout moment.

Rechargement d'une référence externe

Dans cet exemple, une référence externe est attachée, puis rechargée. L'exemple utilise le fichier 3D House.dwg , qui se trouve dans le répertoire Sample. Si
cette image ne figure pas sur votre système ou si elle se trouve dans un répertoire différent, indiquez un chemin d'accès et un nom de fichier appropriés pour la
variable PathName

Sub Ch10_ReloadingExternalReference()
On Error GoTo ERRORHANDLER
' Define external reference to be inserted
Dim xrefHome As AcadBlock
Dim xrefInserted As AcadExternalReference
Dim insertionPnt(0 To 2) As Double
Dim PathName As String
insertionPnt(0) = 1
insertionPnt(1) = 1
insertionPnt(2) = 0
PathName = "c:/AutoCAD 2007/sample/3D House.dwg"
' Add the external reference to the block
Set xrefInserted = ThisDrawing.ModelSpace. _
AttachExternalReference(PathName, "XREF_IMAGE", _
insertionPnt, 1, 1, 1, 0, False)
ZoomAll
MsgBox "The external reference is attached."
' Reload the external reference definition
ThisDrawing.Blocks.Item(xrefInserted.name).Reload
MsgBox "The external reference is reloaded."
Exit Sub
ERRORHANDLER:
MsgBox Err.Description
End Sub

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Déchargement des xréfs


 

Pour décharger une xréf, utilisez la méthode Unload. Lorsque vous déchargez un fichier de références non utilisé dans le dessin courant, les performances
d'AutoCAD sont améliorées car il n'a pas besoin de lire ni d'afficher les objets inutiles des dessins ou les informations sur la table des symboles. Les objets de
la xréf et ceux des xréfs imbriquées ne sont pas affichés dans le dessin courant jusqu'à ce que la xréf soit rechargée.

Déchargement d'une référence externe

Dans cet exemple, une référence externe est attachée, puis déchargée. L'exemple utilise le fichier 3D House.dwg , qui se trouve d ans le répertoire Sample. Si
cette image ne figure pas sur votre système ou si elle se trouve dans un répertoire différent, indiquez un chemin d'accès et un nom de fichier appropriés pour la
variable PathName

Sub Ch10_UnloadingExternalReference()
On Error GoTo ERRORHANDLER
' Define external reference to be inserted
Dim xrefHome As AcadBlock
Dim xrefInserted As AcadExternalReference
Dim insertionPnt(0 To 2) As Double
Dim PathName As String
insertionPnt(0) = 1
insertionPnt(1) = 1
insertionPnt(2) = 0
PathName = "c:/AutoCAD 2007/sample/3D House.dwg"
' Add the external reference
Set xrefInserted = ThisDrawing.ModelSpace. _
AttachExternalReference(PathName, "XREF_IMAGE", _
insertionPnt, 1, 1, 1, 0, False)
ZoomAll
MsgBox "The external reference is attached."
' Unload the external reference definition
ThisDrawing.Blocks.Item(xrefInserted.name).Unload
MsgBox "The external reference is unloaded."
Exit Sub
ERRORHANDLER:
MsgBox Err.Description
End Sub

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 165 of 194

Liaison de Xréfs
 

Grâce à la méthode Bind, vous pouvez lier une xréf à un dessin, c'est-à-dire l'intégrer à celui-ci de manière permanente. Les informations sur les références
externes deviennent un bloc. Lorsque le dessin de référence externe est mis à jour, la Xréf ajoutée n'est pas mise à jour. Ce processus ajoute la base de
données entière d'un dessin, y compris tous ses symboles dépendants.

Les symboles dépendants sont des objets nommés tels que des blocs, des styles de cotation, des calques, des types de lignes et des styles de texte. La liaison
de la xréf permet d'utiliser des objets nommés de la xréf dans le dessin courant.

La méthode Bind ne requiert qu'un paramètre : bPrefixName. Si bPrefixName est défini sur TRUE, les noms de symbole du dessin de la xréf sont précédés
dans le dessin courant par <nom_bloc>$x$, x étant un entier automatiquement incrémenté pour éviter l'écrasement des définitions de bloc existantes. Si le
paramètre bPrefixName est défini sur FALSE, les noms de symboles du dessin de la xréf sont fusionnés dans le dessin courant sans préfixe. Si des noms
dupliqués existent, AutoCAD utilise les symboles définis dans le dessin local. Si vous n'êtes pas sûr que vos dessins contiennent des noms de symbole
dupliqués, nous vous conseillons de définir le p aramètre bPrefixName sur TRUE.

Pour de plus amples informations sur la liaison des xréfs, reportez-vous à la section “Archivage des dessins contenant des références externes (liées)” du
Manuel d'utilisation. 

Liaison d'une référence externe

Dans cet exemple, une référence externe est attachée, puis liée au dessin. L'exemple utilise le fichier 3D House.dwg , qui se trouve dans le répertoire Sample.
Si cette image ne figure pas sur votre système ou si elle se trouve dans un répertoire différent, indiquez un chemin d'accès et un nom de fichier appropriés pour
la variable PathName

Sub Ch10_BindingExternalReference()
On Error GoTo ERRORHANDLER
' Define external reference to be inserted
Dim xrefHome As AcadBlock
Dim xrefInserted As AcadExternalReference
Dim insertionPnt(0 To 2) As Double
Dim PathName As String
insertionPnt(0) = 1
insertionPnt(1) = 1
insertionPnt(2) = 0
PathName = "c:/AutoCAD 2007/sample/3D House.dwg"
' Add the external reference
Set xrefInserted = ThisDrawing.ModelSpace. _
AttachExternalReference(PathName, "XREF_IMAGE", _
insertionPnt, 1, 1, 1, 0, False)
ZoomAll
MsgBox "The external reference is attached."
' Bind the external reference definition
ThisDrawing.Blocks.Item(xrefInserted.name).Bind False
MsgBox "The external reference is bound."
Exit Sub
ERRORHANDLER:
MsgBox Err.Description
End Sub

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Délimitation de blocs et de Xréfs


 

L'Automatisation ActiveX ne propose aucune méthode de délimitation des contours de blocs et xréfs. Utilisez la commande XDELIM d'AutoCAD ou envoyez-la à
AutoCAD via la méthode SendCommand.

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Chargement sur demande et performances des Xréfs


 

En combinant l'option de chargement sur demande et l'enregistrement des dessins avec des index, vous pouvez améliorer les performances des dessins
contenant des références externes. Le chargement sur demande fonctionne en conjonction avec les variables système XLOADCTL et INDEXCTL. Lorsque
vous l'activez, si des index ont été enregistrés dans les dessins de référence, AutoCAD ne charge en mémoire que les données du dessin de référence q ui sont
nécessaires à la régénération du dessin courant. En d'autres termes, les dessins référencés sont lus “sur demande.”

Pour bénéficier pleinement des avantages du chargement sur demande, vous devez d'abord enregistrer les dessins que vous avez référencés avec des index
d'espace ou de calque. Les avantages du chargement sur demande se remarquent notamment :

 lorsque vous délimitez la xréf pour en afficher une petite fraction et qu'un index d'espace est enregistré dans l e dessin de référence externe ;
 lorsque vous gelez plusieurs calques de la xréf et que le dessin est enregistré avec un index de calque.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 166 of 194

Pour activer le chargement sur demande, utilisez la propriété XRefDemandLoad. Si vous activez le chargement sur demande avec l'option
acDemandLoadEnabledWithCopy, AutoCAD copie temporairement le fichier de référence externe et charge sur demande le fichier temporaire. Vous pouvez
alors charger la xréf sur demande et autoriser les modifications du dessin de référence initial. Lorsque vous désactivez le chargement sur demande, AutoCAD lit
l'intégralité du fichier de références sans tenir compte de l'affichage des calques ou d es occurrences de délimitation.

Pour activer les index d'espace et de calque, définissez la variable système INDEXCTL à l'aide de la méthode SetVariable. Les paramètres suivants
s'appliquent à la variable système INDEXCTL :

 0 = aucun index créé


 1 = index de calque créé
 2 = index d'espace créé
 3 = index d'espace et de calque créés

Par défaut, INDEXCTL est paramétrée sur 0 lorsque vous créez un nouveau dessin AutoCAD.

Pour de plus amples informations sur le chargement sur demande et les xréfs, reportez-vous à la section “Amélioration des performances avec des xréfs
volumineuses” du Manuel d'utilisation .

Envoyez-nous vos commentaires sur cette page.  

Techniques avancées de dessin et d'organisation  

Attribution et extraction de données étendues


 

Vous pouvez utiliser les données étendues (xdata) dans le but de lier des informations à des objets dans un dessin.

Affectation de données étendues aux objets d'un jeu de sélection

Dans cet exemple, l'utilisateur doit sélectionner des objets dans le dessin. Les objets sélectionnés sont placés dans un jeu de sélection et les données étendues
spécifiées sont attachées à tous les objets de la sélection.

Sub Ch10_AttachXDataToSelectionSetObjects()
' Create the selection set
Dim sset As Object
Set sset = ThisDrawing.SelectionSets.Add("SS1")
' Prompt the user to select objects
sset.SelectOnScreen
' Define the xdata
Dim appName As String, xdataStr As String
appName = "MY_APP"
xdataStr = "This is some xdata"
Dim xdataType(0 To 1) As Integer
Dim xdata(0 To 1) As Variant
' Define the values for each array
'1001 indicates the appName
xdataType(0) = 1001
xdata(0) = appName
'1000 indicates a string value
xdataType(1) = 1000
xdata(1) = xdataStr
' Loop through all entities in the selection
' set and assign the xdata to each entity
Dim ent As Object
For Each ent In sset
ent.SetXData xdataType, xdata
Next ent
End Sub

Affichage des données étendues des objets d'un jeu de sélection

L'exemple suivant affiche les données étendues attachées à l'exemple précédent. Si vous attachez des données étendues autres que des chaînes (type 1000),
vous devez réviser ce code

Sub Ch10_ViewXData()
' Find the selection created in previous example
Dim sset As Object
Set sset = ThisDrawing.SelectionSets.Item("SS1")
' Define the xdata variables to hold xdata information
Dim xdataType As Variant
Dim xdata As Variant
Dim xd As Variant
'Define index counter
Dim xdi As Integer
xdi = 0
' Loop through the objects in the selection set
' and retrieve the xdata for the object
Dim msgstr As String
Dim appName As String
Dim ent As AcadEntity
appName = "MY_APP"
For Each ent In sset
msgstr = ""
xdi = 0

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 167 of 194

  ' Retrieve the appName xdata type and value


ent.GetXData appName, xdataType, xdata
' If the xdataType variable is not initialized, there
' was no appName xdata to retrieve for that entity
If VarType(xdataType) <> vbEmpty Then
For Each xd In xdata
msgstr = msgstr & vbCrLf & xdataType(xdi) _
& ": " & xd
xdi = xdi + 1
Next xd
End If
' If the msgstr variable is NULL, there was no xdata
If msgstr = "" Then msgstr = vbCrLf & "NONE"
MsgBox appName & " xdata on " & ent.ObjectName & _
":" & vbCrLf & msgstr
Next ent
End Sub

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA


 

De nombreuses tâches de programmation vont au-delà de l a simple utilisation du modèle d'objet ActiveX d 'AutoCAD. Ce chapitre explique brièvement comment
créer des boîtes de dialogue, gérer des erreurs, contrôler le focus et distribuer votre application à d'autres utilisateurs.

Pour de plus amples informations, reportez-vous à la documentation VBA de Microsoft.

Rubriques de cette section :

 Terminologie VBA supplémentaire  

 Feuilles dans VBA

 Traitement des erreurs 

 Codage de modules de code VBA  

 Exécution d'une macro VBA depuis une barre d'outils ou un menu  

 Chargement automatique d'un projet VBA  

 Exécution automatique d'une macro VBA  

 Ouverture automatique de l'environnement VBA IDE au chargement d'un projet  

 Etat sans document ouvert  

 Distribution d'applications  

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Terminologie VBA supplémentaire


 

Dans ce chapitre, il est fait davantage appel à VBA. Les termes suivants vous aideront à comprendre et à utiliser l'environnement VBA.

Projet
Ensemble de feuilles et de modules regroupés dans un seul fichier.
Module
Groupe de sous-programmes et de fonctions (le plus souvent associés les uns aux autres).
Macro
Sous-programme ou fonction publique. Les macros vous sont présentées comme d es composants exécutables de votre projet.
Boîte de dialogue
Moyen par lequel des informations sont affichées et regroupées pendant l'exécution d'une application.
Forme
Conteneur des contrôles de boîte de dialogue.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Feuilles dans VBA

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 168 of 194

Les feuilles sont les blocs de base à partir desquels vous créez d es boîtes de dialogue personnalisées pour votre application. Les feuilles personnalisées
permettent de fournir des informations aux utilisateurs, d'en obtenir ou de faire en sorte que les utilisateurs contrôlent le fonctionnement de l'application.

Les feuilles sont identiques à la toile d'un artiste et sont vierges au départ. Pour remplir la toile, il faut une palette ; dans ce cas, il s'agit de la boîte à outils des
contrôles. En tant que peintre, vous disposez les contrôles voulus de la boîte à outils sur la feuille. Vous pouvez ajouter autant de contrôles que vous le
souhaitez. Vous pouvez également ajuster, à tout moment, la taille et les propriétés des contrôles et de la feuille elle-même. Enfin, vous attribuez des
fonctionnalités (codes) aux contrôles pour "donner vie" à la feuille.

Bien que Visual Basic 6 prenne en charge plusieurs types de feuilles, VBA ne prend en charge que les feuilles de type UserForm. Cela signifie que certaines
feuilles créées et exportées dans Visual Basic 6 ne peuvent pas être importées dans VBA.

Les feuilles de type UserForm (appelées feuilles dans le présent manuel) peuvent être modales ou sans mode. C'est la propriété ShowModal de la feuille qui
détermine ceci. Les feuilles Modal affichées dans l'application exécutée doivent être fermées pour que l'utilisateur puisse effectuer une autre action dans
l'application. Pour de plus amples informations sur l'utilisation des feuilles modales, reportez-vous à la section Feuilles modales .

Pour créer une nouvelle feuille dans un projet


1. Ouvrez l'Explorateur de projet de l'environnement VBA IDE et sélectionnez le projet auquel vous voulez ajouter la feuille.
2. Dans le menu Insertion, choisissez l'option UserForm.
Une feuille vierge est créée et ajoutée au projet.

Pour créer une feuille sans mode dans un projet


1. Ouvrez l'Explorateur de projet de l'environnement VBA IDE et sélectionnez le projet auquel vous voulez ajouter la feuille.
2. Dans le menu Insertion, choisissez l'option UserForm et attribuez la valeur False (Faux) à la propriété ShowModal.
3. Ajoutez AcFocusCtrl (AcFocusCtrl.dll ) dans la boîte à outils et déplacez le contrôle sur la feuille.
AcFocusCtrl reste centré sur la feuille au moment de l'intervention de l'utilisateur.

Rubriques de cette section :

 Mode création et mode exécution 

 Ajout de contrôles à une feuille  

 Affichage et masquage de feuilles 

 Chargement et déchargement de feuilles  

 Feuilles modales

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Mode création et mode exécution


 

Lorsque vous créez une feuille, vous êtes en mode Création. Ce mode permet d'exécuter les opérations suivantes :

 Ajouter des contrôles à la feuille


 Changer les propriétés de la feuille
 Changer les propriétés des contrôles sur la feuille
 Ajouter du code au module de feuille
 
En mode Création, il n'y a pas d'interaction entre l'utilisateur, l'interface utilisateur d'AutoCAD  ®  et la feuille.

Dès que l'application est lancée, la feuille est en mode Exécution. Dans ce mode, vous ne pouvez pas ajuster la feuille directement. Toutefois, elle apparaît
dans l'interface utilisateur d'AutoCAD et l'utilisateur peut interagir avec elle dans le cadre d'une utilisation normale de l'application.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 169 of 194

Ajout de contrôles à une feuille


 

Vous pouvez ajouter facilement des contrôles à une feuille. Il suffit de sélectionner le contrôle voulu dans la boîte à outils des contrôles et en le faisant glisser
sur la feuille. Lorsque vous relâchez le bouton de la souris, une copie du contrôle est placée sur la feuille. Vous pouvez alors changer sa position et sa taille.
Vous pouvez copier autant de contrôles que vous le souhaitez.

Outre la méthode par glisser-déposer mentionnée précédemment, il existe d'autres façons de placer des contrôles sur une feuille.

Rubriques de cette section :

 Changement de taille et de position d'un contrôle  

 Utilisation de contrôles de formatage  

 Changement des propriétés d'un contrôle  

 Ajout de code à un contrôle 

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Changement de taille et de position d'un contrôle


 

Pour déplacer un contrôle, sélectionnez-le et faites-le glisser à un autre endroit de la feuille.

Pour redimensionner un contrôle, sélectionnez-le en cliquant une fois dessus. Lorsque vous sélectionnez un contrôle, sa bordure devient visible. Pour le
redimensionner, sélectionnez l'une des poignées de redimensionnement qui apparaît sur sa bordure et faites-la glisser jusqu'à la position souhaitée. Lorsque
vous relâchez la poignée, le contrôle est redimensionné. (Vous pouvez redimensionner une feuille de la même façon.)

Pour déplacer ou redimensionner plusieurs contrôles à la fois, sélectionnez chacun d'eux en maintenant la touche MAJ enfoncée. Tous les contrôles sont mis
en surbrillance. Vous pouvez les déplacer ou les redimensionner en tant que groupe.

Pour dimensionner un contrôle au moment où vous le placez


1. Sélectionnez le contrôle voulu dans la boîte à outils des contrôles.
2. Sur la feuille, appuyez sur le bouton de la souris, faites glisser le contrôle et relâchez le bouton de la souris. Le contrôle est placé sur la feuille. Sa taille
est fonction de l'étendue du glissement de la souris.

Pour placer plusieurs instances du même contrôle


1. Dans la boîte à outils des contrôles, cliquez deux fois sur le contrôle à placer.
2. Sur la feuille, cliquez à l'endroit où vous voulez placer une copie du contrôle. Positionnez le curseur à un autre endroit de la feuille et cliquez de nouveau.
Une autre copie du contrôle apparaît. Vous pouvez ajouter autant de copies d'un contrôle que nécessaire.
3. Lorsque vous avez fini d'utiliser le contrôle, retournez à la boîte à outils des contrôles et cliquez une nouvelle fois sur le contrôle pour le désélectionner.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Utilisation de contrôles de formatage


 

VBA fournit plusieurs contrôles de formatage qui vous aideront à mettre en page votre feuille. Ces contrôles se trouvent dans le menu Format de
l'environnement VBA IDE. Ils vous permettent d'aligner des contrôles les uns par rapport aux autres, de créer deux ou plusieurs contrôles de même taille, de
changer l'espacement entre les contrôles et de les centrer sur la feuille.

N'oubliez pas, lorsque vous utilisez des contrôles de formatage, que vous pouvez sélectionner plusieurs contrôles à la fois en appuyant sur la touche MAJ.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Changement des propriétés d'un contrôle


 

Les propriétés définissent les différentes caractéristiques d'un contrôle comme sa taille, sa forme, sa couleur, son étiquette et ses valeurs par défaut. Vous
pouvez définir les propriétés d'un contrôle en mode création dans la fenêtre Propriétés.

Pour changer la propriété d'un contrôle


1. Sur la feuille, sélectionnez le contrôle voulu.
2. Le cas échéant, ouvrez la fenêtre Propriétés en appuyant sur la touche F4.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 170 of 194

3. Dans cette fenêtre, recherchez la propriété à changer et sélectionnez sa valeur actuelle.


4. Attribuez-lui une nouvelle valeur.

Vous pouvez également modifier la propriété d'un contrôle, lors de l'exécution, en écrivant le code d'accès à cette propriété. Reportez-vous à la documentation
de Microsoft pour savoir comment changer la propriété d'un contrôle au moment de l'exécution.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Ajout de code à un contrôle


 

Maintenant que la feuille a l'aspect souhaité, vous pouvez ajouter du code derrière les contrôles. Pour accéder à la fenêtre Code d'un contrôle, il suffit de cliquer
deux fois sur ce contrôle dans la fenêtre Form. La fenêtre Code apparaît avec un sous-programme créé pour ce contrôle et son événement par défaut.

Vous pouvez ajouter du code à cet événement ou choisir un autre événement dans la liste déroulante affichée en haut à droite de la fenêtre.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Affichage et masquage de feuilles


 

A présent, la conception de la feuille est parfaite et un code entièrement fonctionnel est défini derrière chaque contrôle. La dernière étape consiste à rechercher
la feuille qui sera affichée sur l'écran de l'utilisateur à l'exécution. La méthode VBA Show permet d'afficher la feuille. Elle peut être appelée à partir d'un module
de code de votre application.

La feuille que vous avez créée étant modale par défaut, l'utilisateur ne peut pas interagir directement avec AutoCAD tant que la feuille est affichée. Par
exemple, il ne peut pas sélectionner un point ou un objet dans le dessin tant que la feuille est à l'écran. Pour permettre à l'utilisateur d'accéder au dessin
AutoCAD, utilisez la méthode VBA Hide. Cette méthode masque la feuille et octroie à l'utilisateur un accès limité à AutoCAD. Lorsque vous appliquez cette
méthode, n'oubliez pas que la feuille n'est pas déchargée de la mémoire. Elle conserve ses valeurs actuelles tant qu'elle e st masquée.

La méthode Hide est appelée comme la méthode Show.

Affichage d'une feuille

Dans cet exemple, la feuille “UserForm1” est affichée :

Public Sub MyApplication()


UserForm1.Show
End Sub

Le sous-programme (et par conséquent, l'affichage de la feuille) peut être appelé en tant que macro depuis la commande EXECVBA ou un menu AutoCAD.

Masquage d'une feuille

L'exemple ci-dessous masque la feuille nommée “UserForm1” :

Public Sub MyAppHide()


UserForm1.Hide
End Sub

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Chargement et déchargement de feuilles


 

Il vous arrivera parfois de charger u ne feuille en mémoire pendant l'exécution mais de ne pas l'afficher. Cela se produit notamment pour mieux contrôler à quel
moment le chargement survient dans l'application ou pour obtenir un accès, par programmation, à la feuille sans pour autant l'afficher sur l'écran de l'utilisateur.

Pour charger une feuille sans l'afficher, utilisez la méthode VBA Load. La méthode Show peut être ensuite utilisée pour rendre la feuille visible au moment voulu
pendant l'exécution de l'application. Souvenez-vous que l'utilisateur ne peut pas interagir sur la feuille t ant qu'elle est invisible.

Si vous appelez la méthode Show et que la feuille n'a pas été chargée, elle le sera automatiquement.

Vous souhaiterez aussi parfois décharger une feuille spécifique. Lorsqu'une feuille est déchargée, elle est supprimée de la mémoire et toute la mémoire qui lui
était allouée est libérée. Jusqu'à ce que la feuille soit rechargée à l'aide de la méthode Load ou Show, un utilisateur ne peut pas interagir dessus et elle ne peut
pas être traitée par programmation. Vous pouvez décider de décharger une feuille lorsque vous savez qu'elle ne sera plus utilisée dans l'application, et
récupérer la mémoire qui lui était a llouée.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 171 of 194

La méthode Hide n'effectue pas de déchargement. Si l'exécution de votre application se termine et qu'une feuille n'a pas été déchargée, elle le sera
automatiquement. Le tableau suivant compare les méthodes VBA Show, Hide, Load et Unload :

Méthodes VBA Show, Hide, Load et Unload


Méthode Utiliser
Afficher Affiche une feuille. Si la feuille n'a pas été chargée, elle l'est automatiquement.
Cacher le tracé Masque une feuille. La feuille n'est pas déchargée de la mémoire.
Charger Charge une feuille en mémoire mais ne l'affiche pas.
Décharger Décharge une feuille de la mémoire. Cela peut être fait de façon explicite à l'aide de la méthode Unload ou automatiquement, à la fin de l'application.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Feuilles modales

Lorsque vous donnez le type modal à une boîte de dialogue dans AutoCAD VBA, l'utilisateur doit y répondre pour pouvoir exécuter un autre composant de
l'application. Aucun autre code n'est exécuté tant que la boîte de dialogue modale n'est pas refermée via la méthode Hide ou Unload. C'est pourquoi, le
développeur de l'application doit prêter une attention toute particulière à la façon et au moment où ces boîtes de dialogue sont mises en œuvre.

Ainsi, une boîte de dialogue peut demander à l'utilisateur de sélectionner un objet dans le dessin AutoCAD. Pour que l'utilisateur puisse effectivement
sélectionner l'objet dans la fenêtre de l'a pplication AutoCAD, vous devez masquer la feuille en faisant appel à la méthode Hide. Une fois l'objet sélectionné,
vous pouvez utiliser la méthode Show pour réafficher la feuille avec toutes ses données actuelles, puis poursuivre l'exécution de l'application.

Remarque Bien que d'autres feuilles soient désactivées dans l'application lorsqu'une boîte de dialogue modale est affichée, d'autres applications ne le sont pas.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Traitement des erreurs


 

La plupart des environnements de développement disposent, par défaut, d'une fonction de gestion des erreurs. Dans VB et VBA, la réaction par défaut à une
erreur consiste à afficher un message d'erreur et à fermer l'application. Cette réaction étant appropriée dans la phase de développement d'une application, elle
n'est pas efficace pour l'utilisateur final. Il existe, en effet, des erreurs que vous voulez ignorer ou pour lesquelles vous souhaitez apporter des solutions
spécifiques. Pour d'autres, vous souhaiterez supprimer le message d'erreur qui les accompagne ou simplement contrôler le message affiché sur l'écran de
l'utilisateur. Par ailleurs, la fermeture automatique de l'application est rarement acceptable pour l'utilisateur final.

En règle générale, la gestion des erreurs est nécessaire lorsqu'une entrée utilisateur est obligatoire ou lorsque des E/S de fichier sont utilisées. Même si vous
savez que le fichier requis existe et est disponible, il existe peut-être d'autres conditions susceptibles de provoquer des erreurs et auxquelles vous n'avez pas
pensé.

Remarque La plupart des exemples de code fournis dans la documentation d'AutoCAD ne font pas appel à la fonction de récupération d'erreurs. Ainsi, ils sont
plus simples et spécifiques. Toutefois, comme dans tous l es langages de programmation, la récupération et le traitement adéquats des erreurs jouent un rôle
essentiel dans le bon fonctionnement d'une application.

Rubriques de cette section :

 Définition des types d'erreurs d'applications 

 Récupération d'erreurs d'exécution 

 Réponse à des erreurs récupérées 

 Réponse à des erreurs d'entrée utilisateur d'AutoCAD 

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Définition des types d'erreurs d'applications


 

Il existe trois types d'erreurs différents que vous êtes susceptible de rencontrer dans vos applications : erreurs de compilation, erreurs d'exécution et erreurs
logiques.

 Les erreurs de compilation se produisent lors de la construction de l'application. Il s'agit essentiellement d'erreurs de syntaxe, de problèmes d'étendue des
variables ou de fautes de frappe. Dans VBA, ces types d'erreur sont détectés par l'environnement de développement. Lorsque vous entrez une ligne de code
incorrecte, elle est mise en surbrillance et un message d'erreur s'affiche pour vous signaler le problème. Les erreurs de compilation doivent être corrigées
avant l'exécution de l'application.
 Les erreurs d'exécution sont plus difficiles à détecter et à corriger. Elles se produisent lors de l'exécution du code et impliquent souvent la réception
d'informations de l'utilisateur. Par exemple, si l'application demande à l'utilisateur d'entrer le nom d'un dessin et que l'utilisateur entre un nom qui n'existe pas,
une erreur d'exécution se produit. Pour traiter ce type d'erreur efficacement, vous devez prévoir quels types de problème risquent de se produire, les détecter

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 172 of 194

et écrire le code capable de gérer ce genre de situation.


 Les erreurs logiques sont les plus difficiles à détecter et à corriger. En général, lorsque aucune erreur de compilation ou d'exécution n'apparaît, mais que la
sortie du programme est incorrecte, il s'agit d'une erreur logique. Ce type d'erreur est appelé “bogue” par les programmeurs et peut être détecté facilement ou
avec beaucoup de difficultés.

Vous trouverez des informations sur la détection et la correction de ces trois types d'erreur dans la documentation de votre environnement de développement.
Les erreurs propres à AutoCAD tombent dans la catégorie des erreurs d'exécution et sont traitées plus en détails dans la présente documentation.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Récupération d'erreurs d'exécution


 

Dans VB et VBA, les erreurs d'exécution sont récupérées via l'instruction On Error. Cette instruction crée un piège pour le système. Lorsqu'une erreur
survient, détourne automatiquement le traitement vers le système de gestion des erreurs spécifiquement conçu à cet effet. Cela signifie que le système de
gestion des erreurs par défaut du programme n'est pas utilisé.

L'instruction On Errorpeut prendre trois formes :

 On Error Resume Next 


 On Error GoTo Label 
 On Error GoTo 0 

L'instruction On Error Resume Next est utilisée lorsque vous voulez ignorer des erreurs. Elle récupère l'erreur, et au lieu d'afficher un message d'erreur et
de mettre fin au programme, elle passe à la ligne de code suivante et poursuit le t raitement. Supposons que vous souhaitiez créer un sous-programme pour
effectuer une itération dans l'espace objet et changer la couleur de chaque entité. Vous savez qu'AutoCAD va produire une erreur si vous essayez de colorer
une entité figurant sur un calque verrouillé. Or, au lieu de fermer le programme, vous pouvez ignorer l'entité figurant sur le calque verrouillé et continuer à traiter
les autres entités. L'instruction On Error Resume Next permet d'effectuer cette opération.

L'instruction On Error GoTo Label est utilisée lorsque vous voulez créer un module explicite de gestion des erreurs. Elle récupère l'erreur, et au lieu
d'afficher un message d'erreur et de mettre fin au programme, elle passe directement à un endroit spécifique du code. Ce dernier peut ensuite répondre à
l'erreur de la façon la plus appropriée pour votre application. Par exemple, vous pouvez poursuivre l'exemple ci-dessus et afficher un message contenant le
descripteur de chaque entité figurant sur le calque verrouillé.

Traitement des erreurs à l'aide de l'instruction On Error Resume Next

Le sous-programme suivant itère l'espace objet et affiche chaque entité en rouge. Essayez d'exécuter ce sous-programme sur un dessin comportant plusieurs
entités, certaines d'entre elles figurant sur un calque verrouillé. Commentez ensuite l'instruction On Error Resume Next et exécutez de nouveau le sous-
programme. Vous remarquerez que le sous-programme se termine lorsqu'il atteint la première entité figurant sur le calque verrouillé.

Sub Ch11_ColorEntities()
Dim entry As Object
On Error Resume Next
For Each entry In ThisDrawing.ModelSpace
entry.Color = acRed
Next entry
End Sub

Traitement des erreurs à l'aide de l'instruction On Error GoTo

Le sous-programme suivant itère l'espace objet et affiche chaque entité en rouge. Pour chaque entité du calque verrouillé, le module de gestion des erreurs
affiche un message d'erreur personnalisé et le descripteur de cette entité. Essayez d'exécuter ce sous-programme sur un dessin comportant plusieurs entités,
certaines d'entre elles figurant sur un calque verrouillé. Commentez ensuite l'instruction On Error GoTo MyErrorHandling et exécutez de nouveau le
sous-programme. Vous remarquerez que le sous-programme se termine lorsqu'il atteint la première entité figurant sur le calque verrouillé.

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

L'instruction On Error GoTo 0 annule le module de gestion des erreurs actif. Les instructions On Error Resume Next et On Error GoTo Label restent
en vigueur jusqu'à la fin du sous-programme, jusqu'à ce qu'un autre module de gestion des erreurs soit déclaré ou que le module actif soit annulé via
l'instruction On Error GoTo 0.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Réponse à des erreurs récupérées

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 173 of 194

Que faire après avoir récupéré une erreur ? Tout dépend de la nature de l'application et de l'erreur.

VB et VBA fournissent des informations sur le type d'erreur récupérée à l'aide de l'objet Err. Cet objet comporte plusieurs propriétés : Number, Description,
Source, HelpFile, HelpContext et LastDLLError. Ces propriétés contiennent les informations de l'erreur la plus actuelle. Les propriétés Number et Description
sont les plus importantes. La première contient le code d'erreur unique associé à l'erreur et la seconde, le message d'erreur qui serait normalement affiché.

Dans le module de gestion des erreurs, vous pouvez comparer la propriété Number de l'erreur à une valeur prévue. Cela vous aidera à déterminer la nature de
l'erreur qui s'est produite. En effet, si vous connaissez la nature d'une erreur, vous pouvez prendre les mesures qui s'imposent.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Réponse à des erreurs d'entrée utilisateur d'AutoCAD


 

Les méthodes d'entrée utilisateur créent un certain nombre d'opérations de récupération d'erreurs car elles impliquent que l' utilisateur entre un certain type de
données. Si l'utilisateur essaie d'entrer un autre type de données, AutoCAD rejette l'entrée et invite l'utilisateur à saisir les d onnées adéquates. L'utilisation de la
méthode InitializeUserInput avec des fonctions d'entrée utilisateur permet de mieux contrôler l es entrées utilisateur, mais peut également introduire d'autres
conditions qui doivent être vérifiées par le système de récupération d'erreurs. Pour obtenir un exemple de fonction de récupération d'erreurs requise avec
certains types d'entrées utilisateur, reportez-vous à la section Demande d'entrée utilisateur.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Codage de modules de code VBA


 

Bien que VBA ne prenne pas en charge la création d'exécutables, il n'offre pas de protection par mot de passe de l'affichage de feuilles, de classes et de
modules sur la base d'un projet. Cette fonction de protection de projet se trouve dans le menu VBA IDE. Choisissez Outils » Propriétés du projet » Protection.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Exécution d'une macro VBA depuis une barre d'outils ou un menu


 

Vous pouvez exécuter une macro VBA depuis une barre d'outils ou un menu AutoCAD en changeant la propriété Macro de cette barre d'outils ou de ce menu.
Cette propriété doit avoir la valeur

-VBARUN fichier.dvb!module.macro

où fichier  est le nom du fichier, module  le nom du module contenant la macro à exécuter et macro  le nom de la macro. Le nom de fichier n'est requis que si le
fichier n'est pas chargé dans la session active d'AutoCAD. Si un nom de fichier est spécifié, le fichier est chargé.

Pour de plus amples informations sur la modification des menus et des barres d'outils, reportez-vous à la section Personnalisation des menus et barres d'outils .

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Chargement automatique d'un projet VBA


 

Vous pouvez charger automatiquement un projet VBA de deux façons:

 Lorsque VBA est exécuté, il recherche un projet appelé acad.dvb  dans le répertoire d'AutoCAD. Ce fichier est automatiquement chargé en tant que projet par
défaut.
 Vous pouvez charger explicitement, au démarrage, un projet autre que celui par défaut ( acad.dvb ) en utilisant la commande CHARGVBA. L'exemple de code
suivant utilise le fichier de démarrage d'AutoLISP pour charger VBA et un projet VBA appelé myproj.dvb au démarrage d'AutoCAD. Lancez notepad.exe  et
ajoutez les lignes suivantes au fichier acad.lsp :
(defun S::STARTUP() 

(command "_VBALOAD" "myproj.dvb") 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 174 of 194

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Exécution automatique d'une macro VBA


 

Vous pouvez exécuter automatiquement une macro du fichier acad.dvb  en l'appelant à l'aide de la version ligne de commande de la commande EXECVBA
depuis un utilitaire de démarrage d'AutoCAD comme acad.lsp . Ainsi, pour exécuter automatiquement la macro intitulée drawline, enregistrez cette macro
drawline dans le fichier acad.dvb . Lancez notepad.exe  et ajoutez les lignes suivantes au fichier acad.lsp :

(defun S::STARTUP()
(command "_-vbarun" "drawline")
)

Vous pouvez exécuter automatiquement une macro au chargement de VBA en la nommant AcadStartup. Toute macro du fichier acad.dvb , appelée
AcadStartup, est exécutée automatiquement au chargement de VBA.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Ouverture automatique de l'environnement VBA IDE au chargement d'un projet


 

Une option de la boîte de dialogue Ouvrir un projet VBA vous permet d'ouvrir automatiquement l'environnement de développement interactif (IDE). Sélectionnez
la case Ouvrir l'éditeur Visual Basic, en bas à gauche de la boîte de dialogue, pour ouvrir automatiquement l'environnement VBA IDE au chargement d'un projet
VBA. Cette option reste activée jusqu'à ce que vous supprimiez la coche de la case.

Remarque Pour accéder à la boîte de dialogue Ouvrir un projet VBA, entrez CHARGVBA sur la ligne de commande. La boîte de dialogue s'ouvre et vous
pouvez choisir le projet à charger. Si la boîte de dialogue n'apparaît pas, la variable système FILEDIA est sans doute désactivée. Cette variable active et
désactive l'affichage des boîtes de dialogue. Pour réactiver la variable FILEDIA, attribuez-lui la valeur 1.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Etat sans document ouvert


 

Il s'agit de l'état dans lequel se trouve AutoCAD lorsque aucun dessin n'est ouvert. Plusieurs points doivent être pris en considération lorsque vous utilisez VBA
sans document ouvert dans AutoCAD.

 L'objet ThisDrawing n'est pas défini avec un état sans document ouvert. Par conséquent, toute tentative d'utilisation de cet objet ThisDrawing produira
une erreur.
 De même, les objets dépendants des documents ne sont pas définis avec un état sans document ouvert. Il s'agit notamment des objets qui se trouvent en
dessous de l'objet Document dans le modèle d'objet d'AutoCAD. L'utilisation d'objets indépendants des documents, comme Application ou MenuBar, est
autorisée.
 En état sans document ouvert, AutoCAD n'a pas de ligne de commande. Lorsque AutoCAD est dans cet état, toute tentative d'accès à la ligne de commande
d'AutoCAD produit une erreur.

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Distribution d'applications
 

Vous pouvez distribuer des applications VBA de deux façons:

 Incorporées dans un fichier de dessin AutoCAD


 Enregistrées dans un fichier de projet VBA

Vous devez choisir l'option de distribution adaptée à votre application. Les applications compatibles avec le dessin actif et n'utilisant pas d'autres dessins sont
souvent incorporées au dessin. Lorsque vous incorporez l'application au dessin, vous êtes sûr qu'elle est chargée et disponible pour l'utilisateur lorsque le
dessin est ouvert.

Il est préférable d'enregistrer, dans un fichier de projet VBA, les applications qui sont utilisées par de nombreuses personnes, qui sont mises à jour
fréquemment, qui ouvrent et ferment d'autres dessins ou qui ne sont pas fréquemment utilisées. Ainsi, vous disposez d'un point central pour l'application, et

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 175 of 194

tous les utilisateurs peuvent exécuter la dernière version.

Pour de plus amples informations sur les projets incorporés et les fichiers de projet VBA, reportez-vous à la section Définition des projets VBA intégrés et
globaux .

Rubriques de cette section :

 Distribution d'applications Visual Basic 6  

Envoyez-nous vos commentaires sur cette page.  

Développement d'applications avec VBA  

Distribution d'applications Visual Basic 6


 

Les applications Visual Basic 6, ou toute autre application hors processus, ne peuvent pas être enregistrées dans un dessin AutoCAD. Elles sont compilées
dans des exécutables autonomes (EXE).

Envoyez-nous vos commentaires sur cette page.  

Interaction avec d'autres applications et API Windows


 

La technologie ActiveX vous permet d'échanger facilement des informations avec d 'autres applications AutoCAD ou compatibles ActiveX, comme Microsoft
Excel ou Microsoft Word. Ce chapitre étudie certaines des procédures de base concernant l'interaction d'AutoCAD avec d'autres applications.

Rubriques de cette section :

 Interaction avec des applications Visual LISP  

 Interaction avec d'autres applications Windows 

 Accès aux API de Windows à partir de VBA  

Envoyez-nous vos commentaires sur cette page.  

Interaction avec d'autres applications et API Windows  

Interaction avec des applications Visual LISP


 

Les applications Visual LISP ®  ont accès à l'ensemble de la gamme d'objets ActiveX ® . Elles peuvent appeler les méthodes ActiveX, définir et extraire les
propriétés correspondantes. En outre, les applications Visual LISP peuvent exécuter des macros VBA par l'intermédiaire de la commande VBARUN

Les applications ActiveX et VBA peuvent exécuter les applications Visual LISP par l'intermédiaire de la méthode SendCommand. Celle-ci permet aux
applications ActiveX et VBA d'envoyer une commande à la ligne de commande AutoCAD.

Pour de plus amples informations sur l'accès aux objets ActiveX via Visual LISP, voir le manuel AutoLISP Developer's Guide .

Envoyez-nous vos commentaires sur cette page.  

Interaction avec d'autres applications et API Windows  

Interaction avec d'autres applications Windows


 

La technologie ActiveX d'AutoCAD ®  vous permet d'échanger facilement des informations avec d 'autres applications compatibles ActiveX, comme Microsoft
Excel ou Microsoft Word. Grâce à cette fonctionnalité, vous pouvez recueillir, enregistrer et présenter des informations AutoCAD dans des formats autres que le
dessin AutoCAD. Vous pouvez également lire dans AutoCAD des informations issues de ces applications afin de contrôler la création ou la manipulation des
objets AutoCAD. Par exemple, vous pouvez créer une nomenclature dans une feuille de calcul Microsoft Excel à partir d'objets issus d'un dessin AutoCAD.

Vous avez déjà appris à écrire du code en utilisant le modèle d'objet ActiveX d'AutoCAD. L'échange d'informations avec d'autres applications compatibles
ActiveX suppose que vous référenciez le modèle d'objet ActiveX d'une autre application et que vous écriviez le code nécessaire à l'utilisation de ces objets.

Remarque Dans ce chapitre, vous trouverez une brève introduction aux fonctionnalités de programmation entre applications. Ces informations n'étant pas
spécifiques à AutoCAD, vous les trouverez également dans la documentation Microsoft et les guides de programmation indépendants.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 176 of 194

Pour échanger des informations entre des modèles d'objet ActiveX:


1. Référencez le modèle d'objet ActiveX de l'autre application.
Dans ce cas, le code reconnaît les noms et les relations des objets de l'autre modèle.
2. Créez une instance de l'autre application.
Dans ce cas, des objets sont créés (instanciés) pour les objets de base de l'autre modèle.
3. Ecrivez le code à l'aide du modèle d'objet AutoCAD et du modèle d'objet de l'autre application.
C'est là que l'échange de données a lieu.

Rubriques de cette section :

 Références à la bibliothèque d'objets ActiveX d'autres applications 

 Création d'une instance de l'autre application 

 Programmation avec des objets d'autres applications  

Envoyez-nous vos commentaires sur cette page.  

Interaction avec d'autres applications et API Windows  

Références à la bibliothèque d'objets ActiveX d'autres applications


 

Pour écrire du code capable d'accéder à une autre application, il faut que VBA mette les objets de l'autre application à votre disposition. Pour ce faire, définissez
une référence dans la bibliothèque d'objets de l'autre application. Il s'agit d'un fichier enregistré sur votre ordinateur qui contient tous les objets, méthodes,
propriétés, constantes et événements définis en fonction de cette application.

Pour référencer une bibliothèque d'objets, vous devez accéder à l'environnement VBA IDE. Lorsque vous avez activé cet environnement, dans le menu Outils,
choisissez l'option Références. Cette option affiche une boîte de dialogue qui contient la liste de toutes les bibliothèques d'objets trouvées par VBA sur votre
ordinateur. Il suffit de sélectionner une bibliothèque de la liste pour la référencer. Les bibliothèques dont les cases à cocher sont sélectionnées sont déjà
référencées dans le projet courant. Par exemple, pour ajouter la bibliothèque d'objets Microsoft Excel, sélectionnez l'entrée correspondante dans la liste.

Une fois que vous avez créé une référence à la bibliothèque d' objets d'une autre application, vous pouvez utiliser l'Explorateur d'objets de VBA pour afficher la
liste de tous les objets de l'application.

Remarque Vous devez définir une référence pour chaque projet VBA qui utilisera ce modèle d'objet. La définition d'une référence à un projet ne s'applique pas
automatiquement à un autre projet. Cela pourrait nuire aux performances.

Pour référencer la bibliothèque d'objets d'une autre application


1. Dans l'environnement VBA IDE, ouvrez le menu Outils et choisissez Références.
2. Dans la liste des références disponibles, recherchez l'entrée de l'application à laquelle vous voulez accéder, puis sélectionnez-la.
3. Cliquez sur OK pour fermer la boîte de dialogue.

Envoyez-nous vos commentaires sur cette page.  

Interaction avec d'autres applications et API Windows  

Création d'une instance de l'autre application


 

Une fois que vous avez référencé l a bibliothèque d'objets d'une application, vous devez créer une instance d'application. En d'autres termes, vous devez
démarrer l'autre application par programmation de sorte que votre code puisse traiter des objets autorisés.

Pour cela, vous devez commencer par déclarer une variable qui représentera l'autre application. Vous devez procéder comme avec les objets inhérents, en
faisant appel à une instruction Dim. Indiquez le type d'application dans l'instruction Dim. Dans l'exemple suivant, l'instruction Dim déclare une variable d'objet de
type Excel.Application:

Dim ExcelAppObj as Excel.Application

Une fois la variable déclarée, utilisez l'i nstruction Set avec le mot clé New pour définir la variable comme une instance active de l'application. Par exemple,
l'instruction Set suivante définit la variable déclarée ci-dessus comme application Excel. Le mot clé New lance une nouvelle session Excel.

Set ExcelAppObj = New Excel.Application

Remarque Certaines applications n'autorisent qu'une seule instance active de l'application à la fois. L'utilisation du mot clé New dans une telle application
permet de définir une référence à l'instance existante et de lancer une nouvelle session de l'application.

Envoyez-nous vos commentaires sur cette page.  

Interaction avec d'autres applications et API Windows  

Programmation avec des objets d'autres applications


 

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 177 of 194

Vous venez de référencer la bibliothèque d'objets et de créer une instance de l'application. Vous pouvez maintenant créer des objets et les manipuler dans cette
application. Tous les objets, méthodes et propriétés définis par le modèle d'objet sont disponibles. Par exemple, si l'on reprend les déclarations de variable de la
section précédente, la ligne de code suivante vous permet de voir la session Excel :

ExcelAppObj.Visible = TRUE

Nous vous conseillons d'apprendre à utiliser le modèle d'objet de l'application pour laquelle vous écrivez du code. Vous pouvez faire appel à l'Explorateur
d'objets de VBA ou au fichier d'aide de l'application pour en savoir plus sur le modèle d'objet que vous référencez.

Rubriques de cette section :

 Sortie de l'autre application  

Envoyez-nous vos commentaires sur cette page.  

Interaction avec d'autres applications et API Windows  

Sortie de l'autre application


 

L'application que vous lancez par programmation consomme une partie d e la mémoire de votre ordinateur. Nous vous conseillons de quitter l'application lorsque
vous n'en avez plus besoin afin de libérer les ressources système.

Bien que tous les modèles d'objet soient différents, la plupart possèdent une méthode Quit issue de l'objet application pouvant être utilisée pour quitter
proprement l'application. Par exemple, si l'on reprend les déclarations de variable de la section précédente, la ligne de code suivante permet de quitter Excel:

ExcelAppObj.Application.Quit

Remarque En revanche, l'application ne prend pas nécessairement fin si vous supprimez la variable d'objet ou que vous l'utilisez dans un contexte trop large.
Vous devez toujours quitter l'application en faisant appel à la méthode appropriée pour assurer une parfaite élimination des données superflues enregistrées
dans la mémoire.

Liste des attributs AutoCAD dans une feuille de calcul Excel

Ce sous-programme trouve toutes les références de bloc dans le dessin courant. Il recherche ensuite les attributs associés à ces références et affiche ceux qu'il
trouve dans un tableur Excel. Procédez comme suit pour exécuter cet exemple :

1. Ouvrez un dessin qui contient des références de bloc et des attributs. (Par exemple, le dessin sample/activeX/attrib.dwg  contient des références de bloc.)
2. A l'aide de la commande VBAIDE d'AutoCAD, ouvrez l'environnement VBA IDE.
3. Dans le menu Outils » Références de l'environnement VBA IDE, sélectionnez Microsoft Excel 8.0 Object Model.
4. Copiez le sous-programme suivant dans la fenêtre de code VBA et exécutez-le.

Sub Ch12_Extract()
Dim Excel As Excel.Application
Dim ExcelSheet As Object
Dim ExcelWorkbook As Object
Dim RowNum As Integer
Dim Header As Boolean
Dim elem As AcadEntity
Dim Array1 As Variant
Dim Count As Integer
' Launch Excel.
Set Excel = New Excel.Application
' Create a new workbook and find the active sheet.
Set ExcelWorkbook = Excel.Workbooks.Add
Set ExcelSheet = Excel.ActiveSheet
ExcelWorkbook.SaveAs "Attribute.xls"
RowNum = 1
Header = False
' Iterate through model space finding
' all block references.
For Each elem In ThisDrawing.ModelSpace
With elem
' When a block reference has been found,
' check it for attributes
If StrComp(.EntityName, "AcDbBlockReference", 1) _
= 0 Then
If .HasAttributes Then
' Get the attributes
Array1 = .GetAttributes
' Copy the Tagstrings for the
' Attributes into Excel
For Count = LBound(Array1) To UBound(Array1)
If Header = False Then
If StrComp(Array1(Count).EntityName, _
"AcDbAttribute", 1) = 0 Then
ExcelSheet.Cells(RowNum, _
Count + 1).value = _
Array1(Count).TagString
End If
End If
Next Count
RowNum = RowNum + 1

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 178 of 194

  For Count = LBound(Array1) To UBound(Array1)


ExcelSheet.Cells(RowNum, Count + 1).value _
= Array1(Count).textString
Next Count
Header = True
End If
End If
End With
Next elem
Excel.Application.Quit
End Sub

Envoyez-nous vos commentaires sur cette page.  

Interaction avec d'autres applications et API Windows  

Accès aux API de Windows à partir de VBA


 

La plupart des applications Windows  ®  peuvent accéder aux procédures API de Windows. Ces procédures vous permettent d'améliorer les fonctionnalités de
votre application.

En effet, grâce aux API de Windows, vous pouvez obtenir des informations sur le système courant, telles que les a utres programmes installés ou exécutés sur
votre ordinateur, l'emplacement des informations enregistrées et les paramètres de contrôle en vigueur. Vous pouvez également accéder aux commandes de
manette de jeu, multimédia et sonores. Ces commandes représentent quelques-unes des nombreuses fonctionnalités fournies par les API de Windows.

Si vous souhaitez utiliser une API de Windows, vous devez d'abord la déclarer dans votre application. Pour ce faire, utilisez l'instruction Declare. Pour que
l'instruction Declare fonctionne correctement, vous devez spécifier certaines informations:

 Le nom de la bibliothèque de liaisons dynamiques (DLL, Dynamic Link Library) contenant la procédure que vous voulez utiliser
 Le nom de la procédure tel qu'il apparaît dans la DLL
 Le nom de la procédure tel que vous voulez l'utiliser dans votre application
 Les paramètres que la procédure compte recevoir
 Le type de donnée de la valeur renvoyée (si la procédure que vous appelez est une fonction)

Vous pouvez placer l'instruction Declare dans n'importe quel module VBA. Si vous la placez dans un module standard, tout module de votre application pourra
accéder à la procédure, à moins que vous ne limitiez sa portée en utilisant le mot clé Private. Si vous placez Declare dans un module de classe ou de feuille,
la procédure ne sera disponible que dans ce module. Une fois la procédure déclarée, vous pouvez l'appeler en suivant la procédure habituelle dans votre
application.

Il est difficile d'utiliser correctement l'instruction Declare. En revanche, il est très facile d'employer Declare à mauvais escient et d'obtenir des résultats
catastrophiques. Pour éviter tout problème désastreux, enregistrez toutes les informations des applications actives avant de tester une nouvelle instruction
Declare.

Pour vous aider à bien maîtriser cette instruction Declare, Microsoft propose un fichier donnant la liste des déclarations les plus usitées. Ce fichier, qui
s'intitule Win32api.txt , est fourni avec Visual Basic 6 et Office. Vous p ouvez y rechercher la procédure qui vous intéresse et copier dans votre code l'instruction
Declare fournie.

La documentation VBA de Microsoft contient des informations sur l'instruction Declare et un exemple d' utilisation. La source Microsoft Windows API
Reference, enregistrée sur le CD de Microsoft Developer N etwork, fournit des informations sur toutes les procédures disponibles dans les API de Windows. Le
livre de Dan Appleman, Visual Basic Programmer's Guide to the Win32 API , propose également d'excellentes informations aux programmeurs Visual Basic 6.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA


 

Ce didacticiel explique comment utiliser ActiveX et Visual Basic pour Applications (VBA), et comment ajouter une macro à AutoCAD. Il porte plus
particulièrement sur l'architecture paysagère, mais les concepts qui y sont traités peuvent être appliqués à tous les domaines.

Il est destiné à l'utilisateur AutoCAD avancé qui est un programmeur VBA novice.

Rubriques de cette section :

 Analyse de l'environnement 

 Définition de l'objectif  

 Ecriture de la première fonction 

 Obtention d'entrée 

 Dessin des contours du sentier  

 Dessin des dalles

 Association de tous les éléments 

 Exécution du code  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 179 of 194

 Exécution de la macro  

 Ajout d'une interface de boîte de dialogue  

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Analyse de l'environnement
 

Ce didacticiel requiert l'environnement de développement intégré VBA AutoCAD  ®  (VBA IDE). Ce dernier est installé automatiquement lorsque vous
sélectionnez l'option Complète du programme d'installation d'AutoCAD. Si vous avez sélectionné l'option Personnalisée lors de l'installation d'AutoCAD, il se
peut que VBA IDE ne soit pas installé ; si tel est le cas, il vous faudra lancer à nouveau le programme d'installation d'AutoCAD pour l'installer.

Pour vérifier si VBA IDE est installé


1. Lancez AutoCAD.
2. Entre z vbaide sur la ligne de commande, puis appuyez sur ENTREE.
Si VBA IDE s'ouvre, cela signifie qu'il est installé. Dans le cas inverse, vous recevrez un message confirmant qu'il n'est pas installé.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Définition de l'objectif
 

Votre objectif dans le cadre de ce didacticiel est de développer une nouvelle macro pour AutoCAD permettant de dessiner un sentier de jardin et d'agrémenter
ce dernier de dalles en béton rondes. Votre nouvelle macro aura la séquence d'invite suivante :

Command: gardenpath 
Start point of path: L'utilisateur définira le point de départ  
Endpoint of path: L'utilisateur définira l'extrémité  
Half width of path: L'utilisateur définira un nombre  
Radius of tiles: L'utilisateur définira un nombre  
Spacing between tiles: L'utilisateur définira un nombre  

Votre macro invite d'abord l'utilisateur à entrer le point de départ et l'extrémité afin de définir le trait d'axe d'un sentier. Elle l'invite, ensuite, à entrer la demi-
largeur du sentier et le rayon des dalles rondes. Enfin, l'utilisateur entre l 'espacement entre les dalles. On utilise la demi-largeur du sentier plutôt que sa largeur
totale car la première est plus facile à visualiser depuis le trait d'axe du sentier.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Ecriture de la première fonction


 

Vous développez la macro Gardenpath (sentier de jardin) à l'aide d'une série de fonctions et de sous-programmes. De nombreux sous-programmes requièrent
la manipulation d'angles. Dans la mesure où ActiveX définit les angles en radians mais que la plupart des utilisateurs le fait en degrés, commencez par créer
une fonction qui convertit ces derniers en radians.

Pour convertir les degrés en radians


1. Entre z vbaide sur la ligne de commande, puis appuyez sur ENTREE.
2. Dans le menu Affichage de VBA IDE, cliquez sur Code pour ouvrir la fenêtre Code.
3. Entrez le code suivant dans la fenêtre Code :
Const pi = 3.14159
' Convert angle in degrees to radians
Function dtr(a As Double) As Double
dtr = (a / 180) * pi
End Function

Notez que dès que vous appuyez sur ENTREE après avoir entré la ligne Function dtr(a As Double) As Double, End Function est ajouté
automatiquement. Ainsi, tous les sous-programmes et fonctions ont une instruction End associée.
Considérez à présent le code. D'abord, la constante pi est définie comme égale à la valeur 3.14159. Cela vous permet d'utiliser le mot pi  au lieu de taper
3.14159 chaque fois que vous devez utiliser cette valeur.
Vous définissez ensuite une fonction dénommée dtr (diminutif pour "degrees to radians", degrés en radians). La fonction dtr comprend un argument, à
savoir a, qui est l'angle en degrés. Le résultat est obtenu en divisant l'angle en degrés par 180, puis en multipliant cette valeur par pi. La ligne
commençant par une apostrophe est un commentaire ; VBA ignore tout le texte d 'une ligne figurant après une apostrophe.
Cette fonction peut à présent être utilisée dans d'autres sous-programmes du projet.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 180 of 194

4. Enregistrez votre travail. Cliquez sur Fichier » Enregistrer Global1. Dénommez le projet gardenpath.dvb .

Ajoutez ensuite une fonction afin de calculer la distance entre les points.

Pour calculer la distance entre deux points


1. Entrez le code suivant après la fonction dtr:
' Calculate distance between two points
Function distance(sp As Variant, ep As Variant) _
As Double
Dim x As Double
Dim y As Double
Dim z As Double
x = sp(0) - ep(0)
y = sp(1) - ep(1)
z = sp(2) - ep(2)
distance = Sqr((Sqr((x ^ 2) + (y ^ 2)) ^ 2) + (z ^ 2))
End Function

2. Enregistrez votre travail.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Obtention d'entrée
 

La macro Gardenpath demande à l'utilisateur d'indiquer l'endroit où dessiner le sentier, la largeur de ce dernier, la largeur des dalles en béton et l 'espacement
qu'il doit y avoir entre elles. Vous définissez un sous-programme qui soumet l'ensemble de ces requêtes à l'utilisateur, puis qui calcule des nombres à utiliser
dans le reste de la macro.

Dans ce sous-programme, vous utilisez les méthodes d'entrée utilisateur trouvées dans l'objet Utility

Rubriques de cette section :

 Déclaration de variables 

 Saisie du sous-programme gpuser  

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Déclaration de variables
 

Le sous-programme suivant utilise plusieurs variables. Toutes les variables doivent être déclarées afin que le sous-programme puisse y accéder.

Dans la fenêtre Code de VBA IDE, entrez le code suivant, immédiatement après la ligne Const pi = 3.14159:

Private sp(0 To 2) As Double


Private ep(0 To 2) As Double
Private hwidth As Double
Private trad As Double
Private tspac As Double
Private pangle As Double
Private plength As Double
Private totalwidth As Double
Private angp90 As Double
Private angm90 As Double

Considérez à présent les deux listes déroulantes situées en haut de la fenêtre Code. Ces dernières, dénommées zone Objet et zone Procédure, affichent
respectivement les termes (Général) et (Déclarations). Elles indiquent la section du code dans lequel vous travaillez et vous permettent de passer rapidement à
une autre section, simplement en sélectionnant cette dernière dans la liste. La section (Déclarations) sert à déclarer les variables que vous prévoyez d'utiliser
dans plusieurs sous-programmes.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Saisie du sous-programme gpuser


 

Le sous-programme gpuser demande à l'utilisateur les i nformations permettant de dessiner un sentier de jardin. Entrez le code suivant après la fonction

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 181 of 194

distance:

' Acquire information for garden path


Private Sub gpuser()
Dim varRet As Variant
varRet = ThisDrawing.Utility.GetPoint( _
, "Start point of path: ")
sp(0) = varRet(0)
sp(1) = varRet(1)
sp(2) = varRet(2)
varRet = ThisDrawing.Utility.GetPoint( _
, "Endpoint of path: ")
ep(0) = varRet(0)
ep(1) = varRet(1)
ep(2) = varRet(2)
hwidth = ThisDrawing.Utility. _
GetDistance(sp, "Half width of path: ")
trad = ThisDrawing.Utility. _
GetDistance(sp, "Radius of tiles: ")
tspac = ThisDrawing.Utility. _
GetDistance(sp, "Spacing between tiles: ")
pangle = ThisDrawing.Utility.AngleFromXAxis( _
sp, ep)
totalwidth = 2 * hwidth
plength = distance(sp, ep)
angp90 = pangle + dtr(90)
angm90 = pangle - dtr(90)
End Sub

Dans le sous-programme gpuser, la ligne Dim varRet As Variant déclare la variable varRet. Cette variable n'étant utilisée que dans ce sous-
programme, elle peut être déclarée ici localement, plutôt que dans la section (Declarations).

La ligne suivante, varRet = ThisDrawing.Utility.GetPoint( , "Start point of path: "), appelle la méthode GetPoint. Le caractère de
soulignement figurant dans la ligne a pour objet de faciliter la lecture d'une ligne longue et indique à VBA de lire la ligne suivante comme si elle se trouvait sur la
même ligne. Vous pouvez supprimer le caractère de soulignement en plaçant l'ensemble du code sur la même ligne.

Pour accéder à la méthode GetPoint, vous devez d'abord parcourir l'objet ThisDrawing qui représente l'objet en cours d'utilisation. Après être entré dans
ThisDrawing, vous devez saisir un point ( .), ce qui signifie que vous allez accéder à quelque chose dans cet objet. Une fois le point saisi, vous devez entrer
Utility et un autre point. Une fois de plus, vous allez accéder à quelque chose dans l'objet Utility. Enfin, entrez GetPoint, qui est le nom de la méthode que
vous appelez.

La méthode GetPoint comprend deux paramètres. Le premier paramètre, facultatif, ne sera pas utilisé. Laissez-le vide et ne tapez qu'une virgule pour marquer
son emplacement. Le second paramètre, également facultatif, est l'invite. Pour celui-ci, vous avez entré une chaîne i nvitant l'utilisateur à saisir le point de
départ. Ce dernier est placé dans la variable varRet. Les trois lignes suivantes du sous-programme copient le point retourné par l'utilisateur dans l e tableau
sp.

L'extrémité est retournée de la même manière.

La méthode GetDistance permet d'obtenir la demi-largeur du sentier ( hwidth), le rayon des dalles ( trad) et l'espacement entre ces dernières ( tspac). Cette
méthode comprend deux paramètres. Le premier est un point de base. Vous devez fournir le point de départ pour cette valeur. Le second paramètre est l' invite,
pour laquelle vous fournissez une chaîne invitant l' utilisateur à effectuer l'action appropriée. La méthode GetDistance s'illustre par le fait qu'elle puisse retourner
aussi bien une valeur entrée sur la ligne de commande que la distance entre un point sélectionné dans AutoCAD et le point de départ.

Le sous-programme se met à calculer plusieurs variables utilisées ultérieurement dans la macro. La variable pangle, définie sur l'angle entre le point de départ
et l'extrémité, peut être trouvée à l'aide de la méthode AngleFromXAxis La largeur du sentier est calculée en multipliant la demi-largeur par deux. La variable
plength, définie sur la longueur d u sentier, peut être trouvée à l'aide de la fonction Distance entrée précédemment. Enfin, calculez et enregistrez l'angle du
sentier à plus et moins 90 degrés respectivement dans angp90 et angm90.

L'illustration suivante indique la façon dont les variables obtenues par gpuser définissent les dimensions du sentier.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 182 of 194

Enregistrez votre travail.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Dessin des contours du sentier


 

Maintenant que vous connaissez l'emplacement et la largeur du sentier, vous pouvez en dessiner les contours. Ajoutez le code suivant sous le sous-programme
gpuser:

' Draw outline of path


Private Sub drawout()
Dim points(0 To 9) As Double
Dim pline As AcadLWPolyline
Dim varRet As Variant
varRet = ThisDrawing.Utility.PolarPoint( _
sp, angm90, hwidth)
points(0) = varRet(0)
points(1) = varRet(1)
points(8) = varRet(0)
points(9) = varRet(1)
varRet = ThisDrawing.Utility.PolarPoint( _
varRet, pangle, plength)
points(2) = varRet(0)
points(3) = varRet(1)
varRet = ThisDrawing.Utility.PolarPoint( _
varRet, angp90, totalwidth)
points(4) = varRet(0)
points(5) = varRet(1)
varRet = ThisDrawing.Utility.PolarPoint( _
varRet, pangle + dtr(180), plength)
points(6) = varRet(0)
points(7) = varRet(1)
Set pline = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(points)
End Sub

Ce sous-programme permet de dessiner les contours du sentier à l'aide de la méthode AddLightweightPolyline Cette méthode requiert la saisie d'un paramètre :
un tableau de points constituant la polyligne. Vous devez trouver tous les points constituant l'objet Polyligne et les placer dans un tableau dans l'ordre où ils
doivent être dessinés. Pour cette polyligne, les points requis sont les coins du sentier.

Pour trouver les coins du sentier, utilisez la méthode PolarPoint Celle-ci permet de trouver un point étant un angle et une distance d'un point de base définis.
Commencez par le point de départ ( sp) et recherchez le premier coin du sentier, en travaillant dans le sens inverse des aiguilles d'une montre. Ce coin se
trouve à mi-largeur du sentier ( hwidth) et à -90 degrés de l'angle du sentier. Dans la mesure où vous souhaitez dessiner un rectangle fermé pour figurer le
sentier, ce point devient le premier et le dernier du tableau. Par conséquent, les coordonnées X  et Y  retournées par la méthode PolarPoint sont déplacés aux
première et dernière positions du tableau de points.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 183 of 194

La recherche des autres coins du sentier s'effectue de la même manière à l'aide de la longueur et de la largeur du sentier ( plength et width), ainsi que de
son angle. Chaque fois que la méthode PolarPoint est appelée, les coordonnées retournées ( varRet) sont copiées dans le tableau de points.

Une fois tous les coins identifiés dans le tableau de points, la méthode AddLightweightPolyline est appelée. Notez que cette méthode est appelée depuis l'objet
ModelSpace Si vous deviez exécuter cette macro, vous constaterez également que la polyligne n'est pas encore visible dans AutoCAD. Elle ne le sera pas
avant que vous ne mettiez à jour l'affichage, ce que vous ferez ultérieurement.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Dessin des dalles


 

Maintenant que vous avez développé le sous-programme d'entrée utilisateur et le sous-programme permettant de dessiner le contour, vous êtes prêt à
agrémenter le sentier de dalles rondes. Cette tâche requiert de recourir à la géométrie.

Dans la fenêtre Code de VBA IDE, entrez le code suivant, après le sous-programme drawout:

' Place one row of tiles the given distance along path
' and possibly offset it
Private Sub drow(pd As Double, offset As Double)
Dim pfirst(0 To 2) As Double
Dim pctile(0 To 2) As Double
Dim pltile(0 To 2) As Double
Dim cir As AcadCircle
Dim varRet As Variant
varRet = ThisDrawing.Utility.PolarPoint( _
sp, pangle, pd)
pfirst(0) = varRet(0)
pfirst(1) = varRet(1)
pfirst(2) = varRet(2)
varRet = ThisDrawing.Utility.PolarPoint( _
pfirst, angp90, offset)
pctile(0) = varRet(0)
pctile(1) = varRet(1)
pctile(2) = varRet(2)
pltile(0) = pctile(0)
pltile(1) = pctile(1)
pltile(2) = pctile(2)
Do While distance(pfirst, pltile) < (hwidth - trad)
Set cir = ThisDrawing.ModelSpace.AddCircle( _
pltile, trad)
varRet = ThisDrawing.Utility.PolarPoint( _
pltile, angp90, (tspac + trad + trad))
pltile(0) = varRet(0)
pltile(1) = varRet(1)
pltile(2) = varRet(2)
Boucle
varRet = ThisDrawing.Utility.PolarPoint( _
pctile, angm90, tspac + trad + trad)
pltile(0) = varRet(0)
pltile(1) = varRet(1)
pltile(2) = varRet(2)
Do While distance(pfirst, pltile) < (hwidth - trad)
Set cir = ThisDrawing.ModelSpace.AddCircle( _
pltile, trad)
varRet = ThisDrawing.Utility.PolarPoint( _
pltile, angm90, (tspac + trad + trad))
pltile(0) = varRet(0)
pltile(1) = varRet(1)
pltile(2) = varRet(2)
Boucle
End Sub
' Draw the rows of tiles
Private Sub drawtiles()
Dim pdist As Double
Dim offset As Double
pdist = trad + tspac
offset = 0
Do While pdist <= (plength - trad)
drow pdist, offset
pdist = pdist + ((tspac + trad + trad) * Sin(dtr(60)))
If offset = 0 Then
offset = (tspac + trad + trad) * Cos(dtr(60))
Else
offset = 0
End If
Boucle
End Sub

Pour comprendre comment ces sous-programmes fonctionnent, reportez-vous à l'illustration suivante. Le sous-programme drow dessine une rangée de dalles
dans le sentier sur une distance définie par son premier argument et la décale perpendiculairement au sentier à une distance définie par son second argument.
Vous souhaitez décaler les dalles sur des rangées alternées afin de couvrir plus d'espace et d'obtenir une disposition plus esthétique.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 184 of 194

Le sous-programme drow trouve l'emplacement de la première rangée à l'aide de la méthode PolarPoint lui permettant de se déplacer le long du sentier sur la
distance définie par le premier argument. Il utilise ensuite cette méthode pour décaler la rangée perpendiculairement au sentier et à l'instruction Puis, le sous-
programme utilise l'instruction While pour continuer à dessiner des cercles jusqu'aux bords de ce dernier. La méthode PolarPoint de la première instruction
While passe à l'emplacement de la dalle suivante en conservant une distance de deux rayons de dalles ( trad) et un espacement entre les dalles ( tspac).
Une seconde boucle while dessine ensuite les dalles de la rangée dans l'autre direction jusqu'à ce que l'autre bord soit atteint.

Le sous-programme drawtiles appelle drow à plusieurs reprises pour dessiner les rangées de dalles. Le sous-programme While loop passe dans
l'ensemble du sentier, en appelant drow pour chaque rangée. Les dalles des rangées adjacentes forment des triangles équilatéraux, comme indiqué dans
l'illustration précédente. Les coins de ces triangles équivalent à deux fois le rayon des dalles plus l'espacement qui sépare ces dernières. Ainsi, par
trigonométrie, la distance entre les rangées du sentier correspond au sinus de 60 degrés multiplié par cette quantité et le décalage des rangées impaires au
cosinus de 60 degrés multiplié par cette quantité.

L'instruction If est utilisée dans drawtiles pour décaler toutes les autres rangées. Si le décalage est égal à 0, définissez-le sur l'espacement entre le centre
des dalles multiplié par le cosinus d e 60 degrés, comme expliqué préalablement. Dans le cas contraire, définissez-le sur 0. Ceci permet de l'appliquer en
alternance sur les rangées, selon vos désirs.

Enregistrez votre travail.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Association de tous les éléments


 

Vous êtes prêt à combiner les sous-programmes dans la macro Gardenpath. Dans la fenêtre Code de VBA IDE, entrez le code suivant, après le sous-
programme drawtiles:

' Execute command, calling constituent functions


Sub gardenpath()
Dim sblip As Variant
Dim scmde As Variant
gpuser
sblip = ThisDrawing.GetVariable("blipmode")
scmde = ThisDrawing.GetVariable("cmdecho")
ThisDrawing.SetVariable "blipmode", 0
ThisDrawing.SetVariable "cmdecho", 0
drawout
drawtiles
ThisDrawing.SetVariable "blipmode", sblip
ThisDrawing.SetVariable "cmdecho", scmde
End Sub

Le sous-programme path appelle gpuser pour rassembler les entrées nécessaires. La méthode GetVariable est ensuite utilisée pour obtenir les valeurs
actuelles des variables système BLIPMODE et CMDECHO ; elle enregistre ces valeurs sous sblip et scmde. Puis, le sous-programme utilise la méthode
SetVariable pour définir ces deux variables système sur 0, en désactivant, ce faisant, les marques et la confirmation des commandes. Le sentier est ensuite
dessiné à l'aide des sous-programmes drawout et drawtiles. Enfin, la méthode SetVariable sert à rétablir les valeurs d'origine des variables système.

Vous remarquerez peut-être qu'il s'agit du seul sous-programme entré ne commençant pas par un mot-clé personnel, ce qui garantit qu'il ne peut être appelé
qu'à partir du module actuel. Dans la mesure où l'utilisateur doit pouvoir disposer du sous-programme gardenpath, il vous est recommandé de supprimer le
mot-clé personnel.

Enregistrez votre travail.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Exécution du code
 

Lancez à présent la macro, en exécutant parallèlement le code.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 185 of 194

Dans le menu Outils d'AutoCAD, cliquez sur Macro » Macros. Dans la boîte de dialogue Macros, sélectionnez ThisDrawing.gardenpath  et cliquez sur Pas à pas.

VBA IDE s'affiche en premier plan, la première ligne de la macro gardenpath en surbrillance. Il s'agit de la ligne de code sur le point d'être exécutée. Pour ce
faire, appuyez sur F8. La ligne de code suivante à être exécutée est le sous-programme gpuser. Pour exécuter le sous-programme gpuser, appuyez à
nouveau sur F8.

Vous êtes à présent au début du programme gpuser. Appuyez encore une fois sur F8 pour mettre en surbrillance la première méthode GetPoint. Avant
d'exécuter cette ligne, ouvrez la fenêtre Variables locales en cliquant sur Affichage » Variables locales. La fenêtre apparaît en bas de VBA IDE. Toutes les
variables locales et leur valeur s'y affichent pendant l'exécution de la macro.

Appuyez à présent sur F8 pour exécuter la méthode GetPoint Notez que la surbrillance disparaît et qu'aucun nouveau code n'est présenté. La méthode
GetPoint attend en effet que l'utilisateur entre un point dans AutoCAD. Basculez vers la fenêtre AutoCAD. Vous apercevez l'invite que vous avez définie dans
l'appel GetPoint de la ligne de commande. Entrez un point.

Le contrôle retourne à présent à la macro. La ligne suivant l 'appel de la méthode GetPoint est mise en surbrillance. Poursuivez l'exécution du code en appuyant
sur F8. Rappelez-vous de basculer vers la fenêtre AutoCAD lorsque vous entrez les informations.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Exécution de la macro
 

Vous n'avez pas besoin d'exécuter le code lorsque vous exécutez la macro. Vous pouvez exécuter la macro à partir du menu Outils en cliquant sur Macro »
Macros, en sélectionnant une macro, puis en cl iquant sur Exécuter. Ceci vous permet de voir le flux d'exécution de la façon dont un utilisateur le verrait.
Exécutez la macro depuis AutoCAD, en entrant les valeurs suivantes :

Start point of the path: 2, 2 


Endpoint of the path: 9, 8 
Half width of the path: 2 
Radius of tiles: 0,2 
Spacing between tiles: 0,1 

Cet exemple doit permettre de dessiner un sentier de jardin comme indiqué dans la figure suivante :

Vous pouvez faire des essais avec l a macro Gardenpath en définissant les différentes entrées.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 186 of 194

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Ajout d'une interface de boîte de dialogue


 

La macro Gardenpath a été écrite pour accepter les saisies sur la ligne de commande. Pour ajouter des boîtes de dialogue, utilisez les feuilles de VBA IDE.

Copiez d'abord la version finale de gardenpath.dvb  dans un autre fichier, gpdialog.dvb . Faites glisser ensuite gpdialog.dvb  dans AutoCAD.

Rubriques de cette section :

 Création de la boîte de dialogue  

 Utilisation de la fenêtre Projet pour parcourir votre projet  

 Mise à jour du code existant  

 Ajout de code à la boîte de dialogue  

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Création de la boîte de dialogue


 

La boîte de dialogue que vous créez contient deux boutons d'option (si vous en sélectionnez un, l'autre est effacé) permettant de choisir la forme de la dalle :
cercle ou polygone. Cette boîte de d ialogue comporte également trois zones de texte permettant la saisie des valeurs numériques suivantes : le rayon des
mosaïques, l'espacement entre les mosaïques et le nombre de côtés de la mosaïque (disponible uniquement si l e bouton de l'option Polygone est sélectionné).

Pour créer une boîte de dialogue à partir de VBA IDE


1. Dans le menu Insertion, cliquez sur UserForm (feuille utilisateur) pour ouvrir une nouvelle feuille. Deux fenêtres, une boîte à outils et une feuille utilisateur
vierge apparaissent.
2. Sélectionnez un par un les contrôles suivants et faites-les glisser sur la feuille utilisateur. Vous devez placer deux boutons d'option( ), trois intitulés (
), trois zones de texte ( ) et deux boutons de commande ( ), comme illustré sur la feuille suivante :

3. Fermez la boîte à outils.

Pour définir les propriétés des contrôles propres aux cases d'option
1. Sur la feuille utilisateur, sélectionnez le contrôle OptionButton1. Dans le menu Affichage, cliquez sur Fenêtre Propriétés et modifiez les propriétés
suivantes pour OptionButton1 :
(Name) = gp_poly
Caption = Polygon
ControlTipText = Polygon Tile Shape
Accelerator = P
2. Dans la feuille utilisateur, sélectionnez le contrôle OptionButton2. Dans la fenêtre Propriétés, modifiez les propriétés suivantes pour OptionButton2 :
(Name) = gp_circ
Caption = Circle
ControlTipText = Circle Tile Shape
Accelerator = I

Pour définir les propriétés des contrôles d'intitulés


1. Sur la feuille utilisateur, sélectionnez le contrôle Label1. Dans la fenêtre Propriétés, modifiez les propriétés suivantes pour Label1 :
(Name) = label_trad

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 187 of 194

Caption = Radius of tiles


TabStop = True
2. Sur la feuille utilisateur, sélectionnez le contrôle Label2. Dans la fenêtre Propriétés, modifiez les propriétés suivantes pour Label2 :
(Name) = label_tspac
Caption = Space between tiles
TabStop = True
3. Sur la feuille utilisateur, sélectionnez le contrôle Label3. Dans la fenêtre Propriétés, modifiez les propriétés suivantes pour Label3 :
(Name) = label_tsides
Caption = Number of sides
TabStop = True

Pour définir les propriétés des contrôles propres aux zones de texte
1. Sur la feuille utilisateur, sélectionnez le contrôle TextBox1. Dans la fenêtre Propriétés, modifiez la propriété suivante pour TextBox1 :
(Name) = gp_trad
2. Sur la feuille utilisateur, sélectionnez le contrôle TextBox2. Dans la fenêtre Propriétés, modifiez la propriété suivante pour TextBox2 :
(Name) = gp_tspac
3. Sur la feuille utilisateur, sélectionnez le contrôle TextBox3. Dans la fenêtre Propriétés, modifiez la propriété suivante pour TextBox3 :
(Name) = gp_tsides

Pour définir les propriétés des contrôles propres aux boutons de commande et de la fenêtre de feuille
1. Sur la feuille utilisateur, sélectionnez le contrôle CommandButton1. Dans la fenêtre Propriétés, modifiez les propriétés suivantes pour CommandButton1 :
(Name) = accept
Caption = OK
ControlTipText = Accept the options
Accelerator = O
Default = True
2. Sur la feuille utilisateur, sélectionnez le contrôle CommandButton2. Dans la fenêtre Propriétés, modifiez les propriétés suivantes pour CommandButton2 :
(Name) = cancel
Caption = Cancel
ControlTipText = Cancel the operation
Accelerator = C
3. Sélectionnez la feuille utilisateur en cliquant sur son arrière-plan, à distance de tout contrôle. Dans la fenêtre Propriétés, modifiez les propriétés suivantes
pour la feuille :
(Name) = gpDialog
Caption = Garden Path
Votre feuille doit à présent ressembler à cela :

4. Enregistrez votre travail.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Utilisation de la fenêtre Projet pour parcourir votre projet


 

Dans VBA IDE, la fenêtre Projet contient le nom et l'emplacement du projet, un dossier appelé Objets AutoCAD  et un dossier appelé Feuilles . (Vous pouvez
avoir à cliquer sur Basculer les dossiers pour afficher ces derniers.) Lorsque vous ouvrez le dossier Objets AutoCAD  (qui peut être déjà ouvert), vous apercevez
une icône de dessin et le nom ThisDrawing. Lorsque vous ouvrez le dossier Feuilles  (qui peut être déjà ouvert), vous apercevez une icône de feuille et le nom
gpDialog, à savoir la feuille que vous avez créée.

Vous pouvez utiliser la fenêtre Projet pour parcourir le code et vous aider à identifier l'emplacement où vous travaillez. A titre d'exemple, pour afficher le code
associé à la feuille que vous avez créée, mettez en surbrillance gpDialog dans la fenêtre Projet et cliquez sur Afficher le code.

La fenêtre Code de la feuille s'affiche.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 188 of 194

Mettez à présent ThisDrawing en surbrillance dans la fenêtre Projet. Vous pouvez afficher le code en cliquant sur Afficher le code. Tout le code que vous
avez déjà entré se trouve dans cette fenêtre.

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

Mise à jour du code existant


 

Maintenant que vous avez créé une boîte de dialogue, vous pouvez modifier le code ou en ajouter.

Pour modifier le code existant


1. Ouvrez le code de ThisDrawing, si tel n'est pas encore le cas.
2. Mettez à jour les lignes suivantes dans la section Déclarations :
Public trad As Double ' Updated
Public tspac As Double ' Updated
Public tsides As Integer ' Add
Public tshape As String ' Add

Dans la mesure où le code de la feuille accède à trad et tspac, vous devez mettre à j our leur définition afin de les rendre publiques. Les variables
personnelles sont uniquement disponibles dans le module où elles sont définies ; par conséquent, elles doivent devenir publiques. De plus, vous avez
ajouté tsides pour le nombre de côtés des dalles en forme de polygone et tshape pour le choix effectué par l'utilisateur en ce qui concerne la forme
des dalles, à savoir cercle ou polygone.
3. Passez au sous-programme gpuser. Supprimez les deux lignes indiquant le rayon des dalles et l'espacement entre chacune d 'elles, car ces informations
proviennent de la feuille. Supprimez notamment les entrées suivantes :
trad = ThisDrawing.Utility. _
GetDistance(sp, "Radius of tiles: ")
tspac = ThisDrawing.Utility. _
GetDistance(sp, "Spacing between tiles: ")

4. Ajoutez les lignes permettant de charger et d'afficher la feuille. Ajoutez les lignes suivantes à la place de celles supprimées à l'étape 3 :
Load gpDialog
gpDialog.Show

5. Ajoutez un sous-programme à la fin du fichier de code qui dessine les dalles rondes ou celles en forme de polygone :
'Draw the tile with the designated shape
Sub DrawShape(pltile)
Dim angleSegment As Double
Dim currentAngle As Double
Dim angleInRadians As Double
Dim currentSide As Integer
Dim varRet As Variant
Dim aCircle As AcadCircle
Dim aPolygon As AcadLWPolyline
ReDim points(1 To tsides * 2) As Double
'Branch based on the type of shape to draw
Select Case tshape
Case "Circle"
Set aCircle = ThisDrawing.ModelSpace. _
AddCircle(pltile, trad)
Case "Polygon"
angleSegment = 360 / tsides
currentAngle = 0
For currentSide = 0 To (tsides - 1)
angleInRadians = dtr(currentAngle)
varRet = ThisDrawing.Utility.PolarPoint(pltile, _
angleInRadians, trad)
points((currentSide * 2) + 1) = varRet(0)
points((currentSide * 2) + 2) = varRet(1)
currentAngle = currentAngle + angleSegment
Next currentSide
Set aPolygon = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(points)
aPolygon.Closed = True
End Select
End Sub

Ce sous-programme utilise une instruction Select Case pour contrôler le programme basé sur le type de forme à dessiner. La variable tshape sert à
déterminer le type de forme.
6. Passez ensuite au sous-programme drow. Recherchez les deux occurrences de la ligne suivante :
Set cir = ThisDrawing.ModelSpace.AddCircle(pltile, trad)

Modifiez ces lignes pour dessiner la dalle de forme appropriée, comme suit :
DrawShape (pltile) ' Updated

Envoyez-nous vos commentaires sur cette page.  

Conception d'un sentier de jardin : didacticiel ActiveX/VBA  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 189 of 194

Ajout de code à la boîte de dialogue


 

Vous devez à présent supprimer le code relatif à la création de la dalle ronde et appeler le sous-programme DrawShape afin de dessiner la forme appropriée à
la place.

Pour ajouter des gestionnaires d'événements à la boîte de dialogue


1. Ouvrez la fenêtre Code de gpDialog.
2. Entrez le code suivant en haut de la fenêtre :
Private Sub gp_poly_Click()
gp_tsides.Enabled = True
ThisDrawing.tshape = "Polygon"
End Sub
Private Sub gp_circ_Click()
gp_tsides.Enabled = False
ThisDrawing.tshape = "Circle"
End Sub

Notez que les sous-programmes gp_poly_Click() et gp_circ_Click() sont dénommés d'après les deux contrôles d'option que vous avez ajoutés
précédemment, avec l'addition de _Click. Ces sous-programmes sont exécutés automatiquement lorsque l'utilisateur clique sur le contrôle respectif.
Notez également que la zone Objet répertorie les contrôles figurant sur la feuille, classés par ordre alphabétique sous la propriété de nom (Name).

3. Placez votre curseur sur la ligne Private Sub gp_poly_Click() et ouvrez la zone Procédure.
Vous apercevez une liste de tous les événements auxquels vous pouvez répondre pour le contrôle d'option gp_poly. Les deux sous-programmes que
vous avez entrés gèrent l'événement Click. Vous pouvez également ajouter du code pour répondre à l'événement DblClick qui s'exécute
automatiquement lorsque l'utilisateur clique deux fois sur le contrôle. Vous pouvez ajouter du code pour tous les événements répertoriés. Ces types de
sous-programmes sont appelés gestionnaires d'événements.
Considérez le code que vous avez entré pour ces deux gestionnaires d'événements. Le premier gestionnaire d'événement répond à l'événement Click 
du contrôle d'option gp_poly. La première ligne de code active la zone de texte destinée au nombre de côtés. Cette dernière n'est disponible que pour
les polygones ; elle n'est donc pas activée si vous n'avez pas sélectionné le contrôle Polygon. La ligne de code suivante définit la variable tshape sur
Polygon.

Le second gestionnaire d'événements répond à l'événement Click du contrôle d'option gp_circ. Ce gestionnaire désactive la zone de texte destinée au
nombre de côtés et définit la variable tshape sur Circle.
4. Ajoutez le gestionnaire d'événements suivant pour le bouton OK :
Private Sub accept_Click()
If ThisDrawing.tshape = "Polygon" Then
ThisDrawing.tsides = CInt(gp_tsides.text)
If (ThisDrawing.tsides < 3#) Or _
(ThisDrawing.tsides > 1024#) Then
MsgBox "Enter a value between 3 and " & _
"1024 for the number of sides."
Exit Sub
End If
End If
ThisDrawing.trad = CDbl(gp_trad.text)
ThisDrawing.tspac = CDbl(gp_tspac.text)
If ThisDrawing.trad < 0# Then
MsgBox "Enter a positive value for the radius."
Exit Sub
End If
If (ThisDrawing.tspac < 0#) Then
MsgBox "Enter a positive value for the spacing."
Exit Sub
End If
GPDialog.Hide
End Sub

Ce code vérifie si le choix final de forme portait sur un polygone. Si tel est le cas, il récupère le nombre de côtés à partir du contrôle gp_tsides. La
valeur entrée par l'utilisateur est stockée dans la propriété de texte (Text). Dans la mesure où elle l'est sous la forme d'une chaîne de texte, vous devez
convertir cette dernière en un nombre entier é quivalent, à l'aide de la fonction CInt. Une fois ceci fait, le gestionnaire d'événements vérifie la plage de la
valeur pour s'assurer qu'elle est comprise entre 3 et 1024. Si tel n'est pas le cas, un message s'affiche et le gestionnaire d'événements est interrompu sur-
le-champ. Il en résulte qu'un message s'affiche et que l'utilisateur a la possibilité de modifier la valeur. Une fois que ce dernier a cliqué à nouveau sur le
bouton OK, ce gestionnaire d'événements se déclenche et vérifie à nouveau la valeur.
La macro obtient les valeurs relatives au rayon et à l'espacement, mais celles-ci sont des doubles, elles ne sont pas des nombres entiers et elles sont
obtenues à l'aide de la fonction CDbl. Ces valeurs sont également testées pour s'assurer qu'elles sont positives.
Une fois les valeurs obtenues et vérifiées, l'instruction gpDialog.Hide masque la feuille, en retournant l e contrôle au sous-programme qui l'a appelée
en premier.
5. Ajoutez le gestionnaire d'événements suivant pour le bouton Annuler :
Private Sub cancel_Click()
Unload Me

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 190 of 194

  Fin
End Sub

Ce simple gestionnaire d'événements décharge la feuille et termine l'ensemble de la macro.


La seule chose que vous n'avez pas faite est d'ajouter les valeurs initiales à la feuille. Il existe un événement appelé "Initialize" qui s'applique à la feuille. Il
est exécuté lors du premier chargement de cette dernière.
6. Ajoutez le gestionnaire d'événement suivant pour l'initialisation de la feuille :
Private Sub UserForm_Initialize()
gp_circ.Value = True
gp_trad.Text = ".2"
gp_tspac.Text = ".1"
gp_tsides.Text = "5"
gp_tsides.Enabled = False
ThisDrawing.tsides = 5
End Sub

Ce code définit les valeurs initiales de la feuille et de la variable tsides. La variable tsides doit être définie sur un nombre positif supérieur à 3, même si
l'utilisateur sélectionne un cercle. Pour mieux comprendre ce point, reportez-vous au sous-programme DrawShape que vous avez entré p récédemment. Il
contient une variable appelée points définie à l'aide du nombre de côtés du polygone. Celle-ci a une mémoire allouée qu'une forme de polygone ait été
requise ou pas. Pour cette raison, tsides doit avoir une plage valide définie pour elle. L'utilisateur est libre de modifier cette valeur durant l'exécution de la
macro.

Vous pouvez à présent enregistrer la macro et l'exécuter à partir d'AutoCAD.

Envoyez-nous vos commentaires sur cette page.  

Comparaison de Visual LISP avec ActiveX/VBA


 

La plupart des fonctionnalités de l'interface Visual LISP se retrouvent dans les interfaces ActiveX et VBA. Cette annexe sert de référence aux développeurs qui
connaissent déjà bien Visual LISP et qui souhaitent découvrir les fonctionnalités équivalentes dans ActiveX et VBA.

Rubriques de cette section :

 Comparaison de Visual LISP avec ActiveX/VBA  

Envoyez-nous vos commentaires sur cette page.  

Comparaison de Visual LISP avec ActiveX/VBA  

Comparaison de Visual LISP avec ActiveX/VBA


 

Le tableau suivant compare les fonctions Visual LISP avec les fonctions et les opérateurs équivalents d'ActiveX  ® , de VBA et de Visual Basic 6. Les fonctions
équivalentes de l'Automatisation ActiveX sont signalées par la mention “AutoCAD.Application”et celles de Visual Basic 6 sont énumérées en tant que fonction
ou opérateur.

Comparaison de Visual LISP avec ActiveX/VBA


Fonction AutoLISP Equivalent ActiveX, VBA ou Visual Basic 6
+ (addition) + (opérateur d'addition)
- (soustraction) - (opérateur de soustraction)
* (multiplication) * (opérateur de multiplication)
 / (division) / (opérateur de division)
= (égal à) = (opérateur de comparaison égal à)
 /= (différent de) <> (opérateur de comparaison différent de)
< (inférieur à) < (opérateur de comparaison inférieur à)
<= (inférieur ou égal à) <= (opérateur de comparaison inférieur ou égal à)
 /= (différent de) <> (opérateur de comparaison différent de)
> (supérieur à) > (opérateur de comparaison supérieur à)
>= (supérieur ou >= (opérateur de comparaison supérieur ou égal à)
égal à)
~ (opérateur binaire Not) Opérateur Not
1+ (incrémentation) Utilisez + (opérateur d'addition)
1- (décrément) Utilisez – (opérateur de soustraction)
abs Fonction Abs
acad_colordlg Non fourni  
acad_helpdlg Recherchez le mot HELP dans l'index de l'aide en ligne.
acad_strlsort Recherchez le mot SORT dans l'index de l'aide en ligne.
action_tile Utilisez l'éditeur de boîte de dialogue.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 191 of 194

add_list Utilisez l'éditeur de boîte de dialogue.


ads Méthode AutoCAD.Application.ListADS
alert Fonction MsgBox
and Opérateur And
angle AutoCAD.Application.ActiveDocument.Utility.
Méthode AngleFromXAxis
angtof Méthode AutoCAD.Application.ActiveDocument.Utility.AngleToReal
angtos AutoCAD.Application.ActiveDocument.Utility.
Méthode AngleToString
append Utilisez les fonctions de gestion de tableau.
apply Non fourni  
arx Méthode AutoCAD.Application.ListARX
arxload Méthode AutoCAD.Application.LoadARX
arxunload Méthode AutoCAD.Application.UnloadARX
ascii Fonction Asc
assoc Non fourni  
atan Fonction Atn
atof Fonction CDbl
atoi Fonction CInt
atom Recherchez le mot IS dans l'index de l'aide en ligne.
atoms-family Non fourni  
autoarxload Non fourni  
autoload Non fourni  
Boole Utilisez les opérateurs logiques.
boundp Recherchez le mot IS dans l'index de l'aide en ligne.
car/cdr Utilisez les fonctions de gestion de tableau.
chr Fonction Chr
client_data_tile Utilisez l'éditeur de boîte de dialogue.
fermer Méthode AutoCAD.Application.Documents.Close
command Méthode AutoCAD.ActiveDocument.SendCommand
cond Instruction Select Case
cons Utilisez les fonctions de gestion de tableau ou la méthode AutoCAD.Application.collection.Add<entityname>.
cos Fonction Cos
cvunit Utilisez les fonctions de conversion.
defun Les mots clés Function et End Function
dictadd Méthode AutoCAD.Application.ActiveDocument.Dictionaries.Add
dictnext Méthode AutoCAD.Application.ActiveDocument.Dictionaries.Item
dictremove AutoCAD.Application.ActiveDocument.Dictionaries.
Méthode Dictionary.Delete
dictrename AutoCAD.Application.ActiveDocument.Dictionaries.
Méthode Dictionary.Rename
dictsearch AutoCAD.Application.ActiveDocument.Dictionaries.
Méthodes Dictionary.GetName et GetObject
dimx_tile et dimy_tile Utilisez l'éditeur de boîte de dialogue.
Distance AutoCAD.Application.Utility.GetDistance pour une méthode interactive.
distof Non fourni  
done_dialog Utilisez l'éditeur de boîte de dialogue.
end_image Utilisez l'éditeur de boîte de dialogue.
end_list Utilisez l'éditeur de boîte de dialogue.
entdel AutoCAD.Application.ActiveDocument.collection_object.
Méthode Delete
entget AutoCAD.Application.ActiveDocument.collection_object.
Propriétés property
entlast AutoCAD.Application.ActiveDocument.Modelspace.
Item(count-1)
entmake AutoCAD.Application.ActiveDocument.Modelspace.
Méthode Add<entityname>
entmakex AutoCAD.Application.ActiveDocument.Modelspace.
Méthode Add<entityname>
entmod Utilisez une des propriétés de lecture ou d'écriture à appliquer à l'objet.
entnext Méthode AutoCAD.Application.ActiveDocument.collection.Item
entsel Objet/méthodes/propriétés AutoCAD.Application.ActiveDocument.SelectionSets
entupd AutoCAD.Application.ActiveDocument.Modelspace.object.
Méthode Update
eq Non fourni  
equal Opérateur Eqv

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 192 of 194

*error* Objet/méthode/propriétés Error


eval Non fourni  
exit Méthode AutoCAD.Application.Quit
exp Fonction Exp
expand Non fourni  
expt ^ (opérateur exponentiel)
fill_image Utilisez l'éditeur de boîte de dialogue.
findfile Fonction Dir
fix Fonctions Fix, Int, Cint
float Fonction CDbl
foreach Instruction For Each...Next
gc AutoCAD.Application.ActiveDocument.PurgeAll
gcd Non fourni  
get_attr Utilisez l'éditeur de boîte de dialogue.
get_tile Utilisez l'éditeur de boîte de dialogue.
getangle Méthode AutoCAD.Application.ActiveDocument.Utility.GetAngle
getcfg Propriété AutoCAD.Application.Preferences.property
getcname Non fourni  
getcorner Méthode AutoCAD.Application.ActiveDocument.Utility.GetCorner
getdist Méthode AutoCAD.Application.ActiveDocument.Utility.GetDistance
getenv Propriété AutoCAD.Application.Preferences.property
getfiled Utilisez la boîte de dialogue permettant de sélectionner un fichier.
getint Méthode AutoCAD.Application.ActiveDocument.Utility.GetInteger
getkword Méthode AutoCAD.Application.ActiveDocument.Utility.GetKeyword
getorient AutoCAD.Application.ActiveDocument.Utility.
Méthode GetOrientation
getpoint Méthode AutoCAD.Application.ActiveDocument.Utility.GetPoint
getreal Méthode AutoCAD.Application.ActiveDocument.Utility.GetReal
getstring Méthode AutoCAD.Application.ActiveDocument.Utility.GetString
getvar Méthode AutoCAD.Application.GetVariable
graphscr AppActivate AutoCAD.Application.Caption
grclear Fonction Obsolete  
grdraw Non fourni  
grread Non fourni  
grtext AutoCAD.Application.ActiveDocument.Utility.Prompt
grvecs Non fourni  
handent AutoCAD.Application.ActiveDocument.ModelSpace.object.
Propriété Handle
help Recherchez le mot HELP dans l'index de l'aide en ligne.
if instruction If… Then… Else
initget AutoCAD.Application.ActiveDocument.Utility.
InitializeUserInput
inters AutoCAD.Application.ActiveDocument.Modelspace.object.
IntersectWith
itoa Fonction Str
lambda Non fourni  
last arrayname(UBound(arrayname))
Longueur Fonction UBound
liste Instruction ReDim
listp Fonction IsArray
load_dialog Utilisez l'éditeur de boîte de dialogue.
charger AutoLISP n'est pas pris en charge par l'Automatisation.
log Fonction Log
logand Fonction And
logior Fonction Or
lsh Fonction Imp
mapcar Non fourni  
max Fonction Max
mem Non fourni  
member Utilisez une collection.
menucmd Objet AutoCAD.Application.MenuBar
menugroup Objet AutoCAD.Application.MenuGroup
min Fonction Min
minusp Utilisez la syntaxe < 0.
mode_tile Utilisez l'éditeur de boîte de dialogue.

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 193 of 194

namedobjdict Collection AutoCAD.Application.ActiveDocument.Dictionaries


nentsel AutoCAD.Application.ActiveDocument.SelectionSets.
Méthode SelectionSet.SelectAtPoint
nentselp AutoCAD.Application.ActiveDocument.SelectionSets.
Méthode SelectionSet.SelectAtPoint
new_dialog Utilisez l'éditeur de boîte de dialogue.
not Utilisez les opérateurs logiques.
nth Utilisez la syntaxe object(n).
null Fonction IsNull
numberp Fonction TypeName
ouvrir Fonction Open
or Utilisez les opérateurs logiques.
osnap Non fourni  (Vous pouvez contrôler la variable système OSMODE à l'aide de la méthode SetVariable.)
polar Méthode AutoCAD.Application.ActiveDocument.Utility.PolarPoint
prin1 AutoCAD.Application.ActiveDocument.Utility.Prompt
princ AutoCAD.Application.ActiveDocument.Utility.Prompt
print AutoCAD.Application.ActiveDocument.Utility.Prompt
progn Non fourni  
prompt AutoCAD.Application.ActiveDocument.Utility.Prompt
quitter Méthode AutoCAD.Application.Quit
quote Non fourni  
read Non fourni  
read-char Fonction Input
read-line Fonction Line Input
redraw AutoCAD.Application.ActiveDocument.Modelspace.object.
Méthode Update
regapp AutoCAD.Application.ActiveDocument.
Méthode RegisteredApplications.Add
rem Fonction Mod
repeat For… Each, While,
reverse Non fourni  
rtos Méthode AutoCAD.Application.ActiveDocument.Utility.RealToString
set Fonction Set
set_tile Utilisez l'éditeur de boîte de dialogue.
setcfg Propriété AutoCAD.Application.Preferences.property
setfunhelp Non fourni  
setq Fonction Set
setvar Méthode AutoCAD.Application.SetVariable
sin Fonction Sin
setview AutoCAD.Application.ActiveDocument.Viewports.Viewport.
Méthode SetView
slide_image Utilisez l'éditeur de boîte de dialogue.
snvalid Non fourni  
sqrt Fonction Sqr
ssadd Méthode AutoCAD.Application.ActiveDocument.SelectionSets.Add
ssdel AutoCAD.Application.ActiveDocument.SelectionSets.
Méthode SelectionSet.Delete
ssget AutoCAD.Application.ActiveDocument.SelectionSets.
Méthode SelectionSet.SelectOnScreen
ssgetfirst Non fourni  
sslength AutoCAD.Application.ActiveDocument.SelectionSets.
Méthode SelectionSet.Count
ssmemb Comparez l'ID de l'objet avec les membres de SelectionSet.
ssname AutoCAD.Application.ActiveDocument.SelectionSets.
Propriété SelectionSet.Name
ssnamex Non fourni  
sssetfirst AutoCAD.Application.ActiveDocument.PickfirstSelectionSet
startapp Fonction Shell
start_dialog Utilisez l'éditeur de boîte de dialogue.
start_image Utilisez l'éditeur de boîte de dialogue.
start_list Utilisez l'éditeur de boîte de dialogue.
strcase Fonction StrConv
strcat Opérateur &
strlen Fonction Len
subst Non fourni  
substr Fonction Mid

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008


 

Aide d'AutoCAD 2007 Page 194 of 194

tablette Non fourni  


tblnext AutoCAD.Application.ActiveDocument.collection_object.
Méthode Item
tblobjname AutoCAD.Application.ActiveDocument.collection_object.
Méthode Name
tblsearch AutoCAD.Application.ActiveDocument.collection_object.
Méthode Name
term_dialog Utilisez l'éditeur de boîte de dialogue.
terpri Non fourni  
textbox AutoCAD.Application.ActiveDocument.space.object.
Méthode GetBoundingBox
textpage Non fourni  
textscr Non fourni  
trace Non fourni  
trans AutoCAD.Application.ActiveDocument.Utility.
Méthode TranslateCoordinates
type Fonction TypeName
unload_dialog Utilisez l'éditeur de boîte de dialogue.
untrace Non fourni  
vector_image Utilisez l'éditeur de boîte de dialogue.
ver Propriété AutoCAD.Application.Version
vports Collection AutoCAD.Application.ActiveDocument.Viewports
wcmatch Opérateur Like
while While… Wend
write-char Fonction Print
write-line Fonction Print
xdroom Non fourni  
xdsize Non fourni  
zerop Utilisez la syntaxe = 0.

Envoyez-nous vos commentaires sur cette page.  

file://C:\Documents and Settings\m.quinart\Local Settings\Temp\~hhDBE9.htm 06/11/2008

Vous aimerez peut-être aussi