Aller au contenu

Messages recommandés

Posté(e)

Bonjour les maîtres du LISP.

 

Didier avait écrit un lisp qui permettait une rotation de la vue autour du SCU courant en gardant le zoom affiché ce qui est parfait mais j'aurai aimé une modification de ce lisp.

 

 

 

(defun c:rp2 ()

 

(setvar "cmdecho" 0)

 

(setq h (getvar "viewsize"))

 

(setq ce (trans (getvar "viewctr") 1 0))

 

(command "repere" "")

 

(command "_zoom" "_c" (trans ce 0 1) h)

 

(princ)

 

)

 

 

 

Quand on utilise ce lisp le SCU tourne selon un angle sélectionné et reste dans le même zoom sur lequel on était mais par contre le SCU est tourné selon l'angle choisi donc je dois repasser par

 

=> Affichage

 

=> Point de vue 3D

 

=> Vue en plan SCU

 

=> SCU courant

 

Ce qui correspond à (command "_plan" "c")

 

Quelqu'un pourrait me modifier ce lisp pour que cette dernière action soit intégrée.

 

Tout en vous remerciant du temps passé je vous souhaite une bonne fin de semaine.

Posté(e)

Ouai pas toujours évident d'expliquer ce que je voudrais mais je vais essayer.

 

Par exemple j'ai un plan dont les locaux ne sont pas tous tournés dans le même sens donc avant je faisais SCU puis Z et je lui donnais un nouvel angle puis je devais faire "Affichage => Point de vue 3D => Vue en plan du SCU puis SCU courant, là le dessin tourne selon le nouveau SCU mais l'affichage revient sur un zoom étendu.

 

Tu m'avais écrit une fois un lisp qui permettait de tourner l'affichage selon le SCU affiché sans revenir sur un zoom étendu.

 

Donc actuellement j'ai un icone avec la commande ^C^C _ucs _z là il me demande de sélectionner un angle par deux points et le SCU tourne selon l'angle donné puis j'ai l'icône qui lance ton script ce qui permet de faire tourner le dessin selon le nouveau SCU tout en restant dans le zoom actuel, ce que je voudrais c'est d'avoir un lisp ou tout ce fait en une fois, c’est-à-dire lors du lancement du script il me demande de sélectionner l'angle selon deux points et que le SCU tourne et que l'affichage tourne aussi selon ce nouveau SCU.

 

(bon je sais pas si c'est plus claire :mellow:)

 

 

Posté(e)

Salut

 

Je ne comprends pas trop le sens de ton message car que tu donnes la réponse

 

(defun c:rp2 ()
 (setvar "cmdecho" 0)
 (setq h (getvar "viewsize"))
 (setq ce (trans (getvar "viewctr") 1 0))
 (command "repere" "")
 (command "_zoom" "_c" (trans ce 0 1) h)
 (command "_plan" "c")
 (princ)
)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Salut

 

Je ne comprends pas trop le sens de ton message car que tu donnes la réponse

 

(defun c:rp2 ()
 (setvar "cmdecho" 0)
 (setq h (getvar "viewsize"))
 (setq ce (trans (getvar "viewctr") 1 0))
 (command "repere" "")
 (command "_zoom" "_c" (trans ce 0 1) h)
 (command "_plan" "c")
 (princ)
)

 

@+

 

Oui ce lisp tourne le dessin selon le scu courant mais je dois d’abord donner un angle à ce SCU et ce que je voudrait c'est une fois que cet angle est donné l'affichage tourne automatiquement avec cette dernière valeur tout en restant dans le même zoom

Posté(e)

salut,

 

Encore une fois les vues et les systèmes de coordonnées sont deux choses indépendantes.

On peut (heureusement) changer de système de coordonnées sans modifier la vue et inversement modifier la vue sans changer de système de coordonnées.

 

Vues et systèmes de coordonnées peuvent éventuellement être liées avec des variables systèmes :

- avec UCSORTHO à 1 le SCU est automatiquement aligné à la vue lorsqu'une vue orthogonale est restaurée.

- avec UCSFOLLOW à 1 la modification du SCU génère automatiquement une vue en plan du nouveau SCU (mais avec un zoom étendu)

 

Pour pivoter la vue en 2D sans changer de SCU, on peut utiliser VUEDYN (_DVIEW) avec l'option Basculer (_TWist), ce qui ne provoque pas de zoom étendu :

(defun c:twist ()
 (vl-cmdf "_.dview" "" "_twist" (getreal "\nSpécifiez la rotation: ") "")
 (princ)
)

 

Si on a aussi besoin d'aligner le SCU sur la vue, on peut,

- soit pivoter la vue comme ci-dessus et utiliser l'option Vue (_View) de la commande SCU (_UCS) pour aligner le SCU sur la vue :

(defun c:twist ()
 (vl-cmdf "_.dview" "" "_twist" (getreal "\nSpécifiez la rotation: ") "")
 (vl-cmdf "_.ucs" "_view")
 (princ)
)

- soit pivoter d'abord le SCU et aligner ensuite la vue sur le nouveau SCU (c'est la méthode utilisée par didier) :

(defun c:twist (/ h c)
 (setq h (getvar "viewsize"))
 (setq c (trans (getvar "viewctr") 1 0))
 (vl-cmdf "_.ucs" "z" pause)
 (vl-cmdf "_.plan" "_current")
 (vl-cmdf "_zoom" "_c" (trans c 0 1) h)
 (princ)
)

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

Posté(e)

Oulala désolé les gars je vois que mes explications n'étaient pas clair mais c'est pas toujours facile de décrire ce que l'on fait ou que l'on aimerait faire mais merci de votre intérêt à m'aider.

 

La fonction que je cherche à faire c'est exactement de que fait le 3ème lisp de Gile mais seul inconvénient lors de la demande de l'angle du scu il me demande d'entrer une valeur mais ce que j'aurais aimé c'est que cette valeur soie repris en sélectionnant deux points sur le dessin, les angles des locaux sont souvent différents.

la commande que j'utilise pour tourner le Z du ucs selon deux points sélectionné sur le dessin est la suivante (command "_ucs" "_zaxis")

 

Voilà je sais pas si j'ai été un peu plus claire ;)

Posté(e)

Comme ça ?

 

(defun c:twist (/ h c)
 (setq h (getvar "viewsize"))
 (setq c (trans (getvar "viewctr") 1 0))
 (vl-cmdf "_.ucs" pause pause "")
 (vl-cmdf "_.plan" "_current")
 (vl-cmdf "_zoom" "_c" (trans c 0 1) h)
 (princ)
)

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

Posté(e)

On peut faire la même chose avec VUEDYN (_DVIEW) :

 

(defun c:twist	(/ p1 p2 a)
 (and
   (setq p1 (getpoint "\nPremier point: "))
   (setq p2 (getpoint p1 "\nDeuxième point: "))
   (setq a (angle (trans p1 1 0) (trans p2 1 0)))
   (vl-cmdf "_.dview" "" "_twist" (angtos (- a) (getvar 'aunits) 16) "")
   (vl-cmdf "_.ucs" "_view")
 )
 (princ)
)

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

Posté(e)

On peut faire la même chose avec VUEDYN (_DVIEW) :

 

(defun c:twist	(/ p1 p2 a)
 (and
   (setq p1 (getpoint "\nPremier point: "))
   (setq p2 (getpoint p1 "\nDeuxième point: "))
   (setq a (angle (trans p1 1 0) (trans p2 1 0)))
   (vl-cmdf "_.dview" "" "_twist" (angtos (- a) (getvar 'aunits) 16) "")
   (vl-cmdf "_.ucs" "_view")
 )
 (princ)
)

 

Parfait aussi, merci encore

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é