Aller au contenu

Inserer bloc dynamique avec paramètres à partir d'un fichier texte


Messages recommandés

Posté(e)

Bonjour à tous,

Je rencontre un problème insoluble pour moi.

Je souhaiterais insérer dans Autocad 2016 des blocs dynamiques à partir d'un fichier texte structuré ainsi:

"nom du bloc"/x/y/angle de rotation/nom du paramètre 1/valeur du paramètre 1/nom du paramètre 2/valeurs du paramètre 2.

Si vous avez des idées pour résoudre ou bien des pistes de réflexion je suis preneur.

Merci.

Laurent

Posté(e)

Salut,

 

Pour accéder aux propriétés dynamiques des blocs en LISP, l'API COM/ActiveX (Visual LISP) est incontournable.

 

Un exemple :

 

;; obtenir l'espace objet du dessin courant
(setq modelSpace (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))))

;; insérer le bloc
(setq block (vla-InsertBlock
             modelSpace
             (vlax-3d-point (list (atof X) (atof Y) 0.0)) ; <- X et Y issus du fichier
             nom_du_bloc               ; <- issu du fichier
             1.0
             1.0
             1.0
             (angtof rotation)         ; <- rotation issue du fichier (utilise atof si radians)
           )
)

;; modifier les propriétés dynamiques
(foreach prop (vlax-invoke block 'GetDynamicBlockProperties)
 (cond
   ((= (vla-get-PropertyName prop) nom_du_parametre_1) ; <- nom_du_parametre_1 issue du fichier
    (vla-put-Value prop valeur_du_parametre_1) ; <- valeur_du_parametre_1 issue du fichier (attention au type)
   )
   ((= (vla-get-PropertyName prop) nom_du_parametre_2) ; <- nom_du_parametre_2 issue du fichier
    (vla-put-Value prop valeur_du_parametre_2) ; <- valeur_du_parametre_2 issue du fichier (attention au type)
   )
 )
)

 

Faire attention au type des valeurs de propriétés dynamiques. Il faudra les convertir si ce ne sont pas de chaînes.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour,

 

Merci beaucoup pour ces précieuses informations et pour la rapidité de votre réponse.

 

J'ai essayé de trouver seul dans le forum mais étant complètement novice en LISP je bloque. Pourriez-vous m'indiquer comment lire le fichier (qui sera toujours le même, (ex: c:\LISP\inserer.txt), stocker les éléments dans des variables et utiliser ces dernières dans le code que vous m'avez indiqué hier.

 

Autre question: comment gérer le fait que dans un cas 1 seul paramètre doit être modifié et que dans un autre cas 3 paramètres doivent être modifiés).

 

Merci.

 

Laurent.

Posté(e)

Bonjour,

 

Si tu es "complètement novice en LISP", tu as mis la barre trop haut.

Pour débuter, il faut commencer en choisissant des objectifs plus abordables.

 

Mais si tu attends une solution "clés en main", précise le en décrivant le plus clairement possible tous les tenants et aboutissants et, si une âme charitable a le temps et l'envie de s'y atteler, elle te fournira les LISP "clés en main".

 

Maintenant, si c'est un besoin impérieux, tu peux me contacter, je te ferais un devis.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour,

 

Voici le contexte: je développe sous Topstation Autocad et ce dernier ne gère pas les blocs dynamiques. Pour pallier ce manque je pensais créer, avec Topstation, un fichier texte (contenant les coordonnées, orientations et paramètres des blocs) puis de lancer un LISP pour lire le fichier, positionner, paramétrer les blocs et vider le fichier.

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité