Aller au contenu

Messages recommandés

Posté(e)

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 ?

 

Posté(e)

(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

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

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

Posté(e)

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 ?

  • Upvote 1

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é