pascal19 Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 Bonjour J'ai voulu essayer une routine pour mettre les "wipeout" contenu dans les blocs en arrière, j'ai donc fait ça: (defun c:modifim2 () (vl-load-com) (setq a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) ) (vlax-for bl a (vlax-for ent bl (if (= (vla-get-objectname ent) "AcDbWipeout") (COMMAND "ORDRETRACE" ent "" "" ar "") ) ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport ) ) mais j'ai ce message d'erreur: Choix des objets: ; erreur: valeur d'argument incorrecte: commande AutoCAD: # savez vous ce qui se passe ?
Tramber Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 (vlax-vla-object->ename ent) Aurait été valable dans un COMMAND. Malheureusement, je crois aussi qu'il n'est pas possible (en tous cas conseillé) de traiter un COMMAND dans une boucle VLAX-for. Tu vas devoir passer par "ACAD_SORTENTS" et des méthodes moins conventionnelles. Voir une discussion. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 savez vous ce qui se passe ? Oui.Comme dit dans le message d'erreur le type d'argument passé à command est incorrect.La commande "ORDRETRACE" (préférer "_draworder") requiert un nom d'entité (type ENAME) ou un jeu d sélection (type PICKSET) et tu essayes de lui passer un objet Visual LISP Automation (type VLA-OBJECT). Tu dois convertir le VLA-OBJECT en ENAME avec la fonction : vlax-vla-object->ename. Tu peux aussi éviter d'utiliser command en faisant tout en Visual LISP avec les fonctions définies ici. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
pascal19 Posté(e) le 31 mai 2011 Auteur Posté(e) le 31 mai 2011 damned ! moi qui pensait que ça serai simple .je vais essayé, merci pour votre aide.
(gile) Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 Non, ce n'est pas si compliqué si tu utilises command.Remplace :(COMMAND "ORDRETRACE" ent "" "" ar "")par :(command "_draworder" (vlax-vla-object->ename ent) "" "_back") Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
pascal19 Posté(e) le 6 juin 2011 Auteur Posté(e) le 6 juin 2011 Bonjour j'ai essayé: (defun c:modifim2 () (vl-load-com) (setq a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) ) (vlax-for bl a (vlax-for ent bl (if (= (vla-get-objectname ent) "AcDbWipeout") (command "_draworder" (vlax-vla-object->ename ent) "" "_back") ) ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport ) ) j'ai un message d'erreur : _back _draworder _back _draworder j'ai encore oublié quelque chose ? 1
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