Aller au contenu

Messages recommandés

Posté(e)

Hello les boys,

 

j'ai une petite observation voir amélioration possible.

Voilà lorsque je suis en vue isométrique 3D et que je veux passer d'une vue isométrique à une autre à chaque fois Autocad fait un zoom total alors que moi je veux juste tourner la vue de 90° ou plus sans le zoom étendu. Alors comment faire y-at'il la commande scu ou repere la derrière.

 

Merci pour vos réponses.

 

@+ argilles

>>>>>>>>>> venez visiter mon nouveau site d’Architecture http://argile.archi.free.fr <<<<<<<<<

Posté(e)

Bonsoir,

 

je ne passe qu'une seconde,

mais souhaitons que cet exemple te satisfera

 

il s'agit de mémoriser un point à l'écran

ensuite, je lance la vue isométrique Sud Ouest,

puis je recentre le zoom sur le point mémorisé.

(defun c:SO()

(setq pcentre (getpoint"\nPoint de centre Ecran\n"))

(setq hauteurzoom (getvar "VIEWSIZE"))

(command "_-view" "_swiso")

(command "_zoom" "c" pcentre hauteurzoom)

)

 

amicalement

 

 

 

 

 

 

Posté(e)

Re,

 

Ah Didier est déjà passé par là, je te propose quand même quelque chose de très similaire, mais sans avoir à spécifier de point.

 

(defun c:iso_se	(/ echo ht cen)
 (setq	echo (getvar "cmdecho")
ht (getvar "viewsize")
cen (getvar "viewctr")
 )
 (setvar "cmdecho" 0)
 (command "_-view" "_seiso")
 (command "_zoom" "_c" cen ht)
 (setvar "cmdecho" echo)
 (princ)
) 

Nouvelle version

 

[Edité le 6/10/2005 par (gile)]

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

Posté(e)

Bonjoiur mesdames et messieurs,

 

j'ai apprécié vos petits lisp où je trouve qu'il à un super début mais j'ai un peu réfléchis et je veux juste faire pivoter la vue isométrique de 90° à chaque fois pour pivoter proprement autour d'un objet.

Juste une question, la variable viewctr définit le point central de la vue ou de la fenêtre.

 

Merci pour votre rapidité.

 

@+ argilles

>>>>>>>>>> venez visiter mon nouveau site d’Architecture http://argile.archi.free.fr <<<<<<<<<

Posté(e)

Re,

 

Voici encore un petit LISP pour passer d'une vue iso à une autre :

(defun c:rot_iso (/ echo ht cen)
 (setq echo (getvar "cmdecho"))
 (command "_undo" "_begin")
 (setvar "cmdecho" 0)
 (command "_ucs" "_w")
 (setq	ht  (getvar "viewsize")
cen (getvar "viewctr")
 )
 (cond
   ((equal (getvar "viewdir") '(1.0 1.0 1.0))
    (command "_view" "_nwiso")
   )
   ((equal (getvar "viewdir") '(-1.0 1.0 1.0))
    (command "_view" "_swiso")
   )
   ((equal (getvar "viewdir") '(-1.0 -1.0 1.0))
    (command "_view" "_seiso")
   )
   ((equal (getvar "viewdir") '(1.0 -1.0 1.0))
    (command "_view" "_neiso")
   )
   (T
    (princ "\nLa vue active n'est pas une vue isométrique.")
    (exit)
   )
 )
 (command "_zoom" "_c" cen ht)
 (command "_ucs" "_p")
 (command "_undo" "_end")
 (setvar "cmdecho" echo)
 (princ)
) 

 

[Edité le 7/10/2005 par (gile)]

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

Posté(e)

Et voilà une version plus aboutie (en VisualLISP) :present:

 

(vl-load-com)

(defun c:rot_iso (/ AcDoc FenAc dir haut cen vue)
 (setq	aApp  (vlax-get-acad-object)
AcDoc (vla-get-ActiveDocument aApp)
FenAc (vla-get-ActiveViewport AcDoc)
UCSs (vla-get-UserCoordinateSystems AcDoc)
 )
 (vla-startUndoMark AcDoc)
 (vla-add UCSs
   (vlax-3d-point (getvar "ucsorg"))
   (vlax-3d-point (trans '(1 0 0) 1 0))
   (vlax-3d-point (trans '(0 1 0) 1 0))
   "iso_scu_initial"
 )
 (vla-add UCSs
   (vlax-3d-point '(0 0 0))
   (vlax-3d-point '(1 0 0))
   (vlax-3d-point '(0 1 0))
   "iso_scu_general"
 )
 (vla-put-activeUCS acdoc (vla-item UCSs "iso_scu_general"))
 (cond
   ((equal (getvar "viewdir") '(1 1 1))
    (setq dir '(-1 1 1))
   )
   ((equal (getvar "viewdir") '(-1 1 1))
    (setq dir '(-1 -1 1))
   )
   ((equal (getvar "viewdir") '(-1 -1 1))
    (setq dir '(1 -1 1))
   )
   ((equal (getvar "viewdir") '(1 -1 1))
    (setq dir '(1 1 1))
   )
   (T
    (princ "\nLa vue courante n'est pas une vue isométrique")
    (exit)
   )
 )
 (setq	haut (getvar "viewsize")
cen  (trans (getvar "viewctr") 1 0)
vue  (vla-add (vla-get-Views AcDoc) "Vue_iso_temporaire")
 )
 (vla-put-Direction vue (vlax-3d-point dir))
 (vla-setView FenAc vue)
 (vla-put-ActiveViewport AcDoc FenAc)
 (vla-ZoomCenter
   aApp
   (vlax-3d-point cen)
   haut
 )
 (vla-put-activeUCS acdoc (vla-item UCSs "iso_scu_initial"))
 (vla-delete vue)
 (vla-endUndoMark AcDoc)
 (princ)
)

 

[Edité le 7/10/2005 par (gile)]

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

Posté(e)

Bonsoir,

 

Eh ben les garçons, en voilà du lisp...

il est nécessaire de choisir un point à l'écran

parce que je fais des vues 3D, et donc j'ai besoin

que le zoom final soit centré sur ce point 3D,

avec la même hauteur de vue que la vue en plan.

 

Je n'ai pas vraiment lu vos diverses routines,

perso je pense qu'un lisp doit être le plus compact possible.

 

amicalement

Posté(e)

Salut Didier,

 

perso je pense qu'un lisp doit être le plus compact possible.

 

Tu as raison, je pensais améliorer la routine avec le VisualLISP (exécution plus rapide) mais il n'en est rien !

Il est vrai que je ne maitrise pas ce langage, et qu'il est souvent plus "lourdingue" que l'AutoLISP. Çà m'aura fait un exercice :cool:

 

 

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

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é