AutoCAD : un miroir (inverser) bloc dynamique Lisp

AutoCAD : un miroir (inverser) bloc dynamique Lisp

sonic10150
Participant Participant
686 Visites
3 Réponses
Message 1 sur 4

AutoCAD : un miroir (inverser) bloc dynamique Lisp

sonic10150
Participant
Participant

Bonjour

j'ai un bloc dynamique contenant des différentes actions/parametres comme visibilité, rotation, lineaire, inverser, deplacer, etirer...

Toutes ces variables personnalisées fonctionnent en les modifiant dans l'onglet propriété.

Mais ni en ligne de commande, ni en exécutant le Lisp.
Nom de la variable : the_inversion elle a naturellement les 2 valeurs ; "Inversé" et "Pas inversé"
le lisp c'est un copier/coller fournie par Gilles Chanteau du site : http://cadxp.com/topic/32559-modifier-le-parametres-dun-bloc-dynamique/

en ligne de commande :(gc:SetDynPropValue (car (entsel)) "the_inversion" 1)
à la place du 1 j'ai testé:
0, 1,"0","1", Inversé, "Inversé", "INVERSE" "Pas inversé", pas inversé,"PAS INVERSE",true, false
et toujours la même réponse mais le bloc ne bouge pas."Sélectionnez un objet: nil"
Toutes autres modifications dynamiques, soit en ligne de commande, soit dans le Lisp fonctionne sauf Inversé.
En vous remerciant pour votre aide.
Sonic

 


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
un miroir (inverser) bloc dynamique Lisp

 

 

0 J'aime
Solutions acceptées (1)
687 Visites
3 Réponses
Replies (3)
Message 2 sur 4

komondormrex
Mentor
Mentor

attach a sample of your dynamic block and show a property in question.

0 J'aime
Message 3 sur 4

_gile
Consultant
Consultant
Solution acceptée

Salut,

 

Depuis AutoCAD 2012, il est beaucoup plus simple d'accéder aux propriétés dynamiques des références de bloc avec les fontions getpropertyvalue et setpropertyvalue.

On accède à ces propriétés en préfixant le nom du paramètre dynamique avec : "AcDbDynBlockProperty".

En ligne de commande:

(setpropertyvalue (car (entsel)) "AcDbDynBlockPropertythe_inversion" 1)

ou, pour basculer d'un état d'inversion à l'autre:

(if (setq bloc (car (entsel)))
  (setpropertyvalue
    bloc
    "AcDbDynBlockPropertythe_inversion"
    (- 1
       (getpropertyvalue bloc "AcDbDynBlockPropertythe_inversion")
    )
  )
)


Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 4 sur 4

sonic10150
Participant
Participant

Bonjour Monsieur (avec un M majuscule) Gilles 

Je ne pensais pas que l'auteur de ces lignes (datant de 2012) de code me répondrait et en plus un dimanche. Effectivement ca simplifie grandement mon programme qui date de cet époque que je vous le faire évoluer. En vous remerciant de votre aide très précieuse  à l'époque et aujourd'hui. Et vous souhaitant un bon Week end. Sonic