Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

Avis au lispeurs,

Je cherche à changer l’échelle d’une fenêtre (fmult) tout en adaptant la mise à l’échelle du plan.

 

Exemple en image :

http://yusukens.free.fr/image/EchelleFmult.jpg

Fenêtre divisé par 2 (Facteur d’échelle = 0.5)

Echelle passé de 1/100 vers 1/200

 

En espérant que quelqu’un entendra mon appel

 

Merci

 

PS : pourquoi vouloir un tel LISP ? c’est pour adapter des plans de ventes selon un format de papier différent.

 

  • 2 semaines après...
Posté(e)

si tu fais une fenetre multiple pour du 1000, sur la meme presentation tu peut refaire une autre fenetre à une autre echelle au 1/50 par exemple tu peut rajouter autant de fenetre que tu veut dans ta presentation enfin presque! de differentes echelle

toujours dans la presentation

dans l'espace objet c'est plus difficile pour le gars qui l'exploitre aprés pour trouver le bon dessin au bonne coordonnées si tu es geometre comme moi!! mais dans l'espace papier tu crée tes fenetre avec les zoom voulus

Posté(e)

Bonsoir,

 

pascool, oui je sais qu'on peut créer plusieurs fenêtre.

 

Pour donner un exemple concrète :

Imaginons un bâtiment d'habitation contenant au R+1 ==> 20 appartements.

Lors de la réalisation des fichiers PDV (plan de vente), je faut bien délimiter le pourtour des appartements.

Il faut donc utiliser des fenêtres en polyligne (non rectangulaire).

 

Pour réduire la dimension de la fenêtre tout en gardant la proportion de facteur d'échelle, il faut adapter :

- la fenêtre polyligne

- adapter le facteur d'échelle.

 

pour le fenêtre rectangulaire, c'est simple et rapide mais pour les fenêtre polylignes, c plus compliqué et surtout très long.

 

Posté(e)

Salut

 

J'avais pensé que quelqu'un se serait dévoué, mais bon...

 

(defun c:cpf(/ bg doc fen hd sel sui)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (and (ssget (list (cons 0 "viewport")))
   (progn
     (vlax-for fen (setq sel (vla-get-activeselectionset doc))
(setq sui (vla-copy fen))
(vla-getboundingbox sui 'bg 'hd)
(vla-scaleentity sui bg 0.5)
(vl-cmdf "_.move" (vlax-vla-object->ename sui) "" (vlax-safearray->list bg) pause)
     )
     (princ (strcat "\nAjout de " (itoa (vla-get-count sel)) " fenêtre(s)."))
     (vla-delete sel)
   )
 )
 (vla-endundomark doc)
 (princ)
)

 

On ne peut pas dire que le lisp est très long.

 

@+

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)

Merci Patrick_35

J'explique peut etre mal mon problème, et c'est vrai qu'il est rare de faire cette manipulation.

pour preuve, sur 10ans d'utilisation d'autocad, c'est la première fois que je rencontre ce besoin de mettre à l'échelle des fenêtre.

 

pour revenir au lisp, merci beaucoup, par contre il ne marche pas avec des fenêtre type polyligne.

voici un exemple :

http://yusukens.free.fr/CADXP/CPF.zip

puise-je ensuite savoir si il est possible de rentrer manuellement un facteur de réduction de la fenêtre ?

Posté(e)

Salut Patrick_35

Sympa la routine....

Je pense qu'une boite de dialogue proposant plusieurs échelles serait un plus!! :cool:

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Salut

 

Un peu plus complexe que prévu.

Je me suis simplifié la tâche en utilisant les commandes.

Ce serait intéressant de gratter du coté des dictionnaires pour voir comment cela fonctionne exactement

 

(defun c:cpf(/ bg1 bg2 cmd der doc fef hd1 hd2 js old_error pol pt1 pt2 rep sui *err*)

 (defun *err* (msg)
   (if (/= msg "Function cancelled")
     (if (= msg "quit / exit abort")
(princ)
(princ (strcat "\nErreur : " msg))
     )
     (princ)
   )
   (setvar "cmdecho" cmd)
   (setq *error* old_error)
   (vla-endundomark doc)
   (princ)
 )

 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object))
cmd (getvar "cmdecho")
old_error *error*
*error* *err*
 )
 (vla-startundomark doc)
 (setvar "cmdecho" 0)
 (if (setq fef (getenv "facteur_echelle_copier_viewport"))
   (setq fef (atof fef))
   (setq fef 0.5)
 )
 (and (setq js (ssget (list (cons 0 "viewport,lwpolyline"))))
   (progn
     (setq der (entlast)
    rep "Echelle"
     )
     (while (eq rep "Echelle")
(initget "Echelle")
(setq rep (getpoint (strcat "\nPoint de base [Echelle = " (rtos fef) "] : ")))
(and (eq rep "Echelle")
     (not (initget 2))
     (and (setq sui (getreal "\nEchelle : "))
	(setq fef sui)
     )
)
     )
     (vl-cmdf "_.copy" js "" rep rep)
     (setq js (ssadd)
    ent der
     )
     (while (setq ent (entnext ent))
(ssadd ent js)
     )
     (setq sui 0)
     (while (setq der (ssname js sui))
(setq pol (cdr (assoc 340 (entget der)))
      der (vlax-ename->vla-object der)
)
(and (eq (vla-get-objectname der) "AcDbViewport")
  (progn
    (vla-getboundingbox der 'bg1 'hd1)
    (if pol
      (progn
	(vl-cmdf "_.scale" pol "" (vlax-get der 'center) fef)
	(vla-put-customscale der (* (vla-get-customscale der) fef))
      )
      (vla-scaleentity der (vlax-3d-point rep) fef)
    )
    (vla-getboundingbox der 'bg2 'hd2)
    (setq pt1 (vlax-safearray->list bg1)
	  pt2 (vlax-safearray->list bg2)
    )
    (vl-cmdf "_.move" (if pol pol (ssname js sui)) "" (polar pt2 (angle pt1 rep) (* (distance pt1 rep) fef)) pause)
  )
)
(setq sui (1+ sui))
     )
     (setenv "facteur_echelle_copier_viewport" (rtos fef))
   )
 )
 (setvar "cmdecho" cmd)
 (setq *error* old_error)
 (vla-endundomark doc)
 (princ)
)

 

@+

 

[Edité le 27/3/2009 par Patrick_35]

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

 

Une erreur de type :

Point de base [Echelle = 0.5] : ERREUR d'application: Type incorrect envoyé

comme entrée de commande

 

 

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Bonjour Patrick_35

 

Je suis dessolé si cela t'as pris beaucoup de temps.

 

Je viens de tester le lisp, et il s'avère qu'il ne marche pas encore parfaitement.

 

Pour les fenêtres rectangulaires :

- la valeur du facteur d'échelle est toujours de 0.5, et ne peut pas être modifiée

- et la taille de la fenêtre ne s'adapte pas à la réduction

 

Pour les fenêtres polyligne :

- facteur d'échelle => toujours à 0.5 comme pour les fenêtres rectangulaires

- créer seconde fenêtre VIDE.

 

Voila ce que j'ai remarqué.

 

Posté(e)

Re

 

Je viens de constater une erreur sur les fenêtres rectangulaires, chose que vous avez vu aussi.

 

Le lisp est corrigé.

 

yusukens82

Lors de la demande du point de base, tu peux aussi indiquer ton facteur d'échelle, en faisant E ,Ec ,Ech, ...

 

@+

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)

Ok ca roule.................

 

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

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é