laurentpo Posté(e) le 8 mars 2017 Posté(e) le 8 mars 2017 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
(gile) Posté(e) le 8 mars 2017 Posté(e) le 8 mars 2017 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
laurentpo Posté(e) le 9 mars 2017 Auteur Posté(e) le 9 mars 2017 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.
(gile) Posté(e) le 9 mars 2017 Posté(e) le 9 mars 2017 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
laurentpo Posté(e) le 9 mars 2017 Auteur Posté(e) le 9 mars 2017 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.
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant