Aller au contenu

fenetre presentation dans l'espace objet


chris32

Messages recommandés

Bonjour la communauté,

j'expose mon probléme, je réalise des gros plans de bâtiments dans mon espace Objet, dans l'espace présentation de créer des fenetres de certaine zone.

Jusque là c'est classique, or je peux réaliser de nombreuse présentation avec 1 ou 2 fenetres par présentation.

La question est de savoir s'il est possible par un lisp de pouvoir automatiquement créer un cadre dans l'espace Objet ( qui représente la fenetre de présentation) avec le numéro du Folio afin de repérer rapidement dans l'espace objet où a été fait la vue (ce cadre serait dans un calque non vue....ça sert juste à rapidement voir où on a zoomé).

 

Merci pour vos retours

Lien vers le commentaire
Partager sur d’autres sites

mmm... alors non...

par contre en programmation c'est faisable ^^ (par contre je fais du VBA)

tu pourrais créer tes "fenetres" dans ta/tes présentation, la selectionner pour avoir ton rapport longueur/hauteur et placer ce "zoom" dans ton espace objet pour que le détail rentre dans cette fenetre...

 

 

Lien vers le commentaire
Partager sur d’autres sites

Merci Fraid pour cette fonction, mais cela implique de devoir refaire un rectangle sur ma fenetre de présentation pour lui changer d'espace...de plus cela ne va pas m'inscrire automatiquement le numéro du folio.

Curlygoth, je ne suis pas marié avec le lisp...le VBA me va tout aussi bien, l'idée étant bien d'automatiser le principe.

Cependant la procédure ne doit pas faire autant de cadre dans l'espace objet que de fois ou je lance la procédure, il doit ainsi reconnaitre si un cadre pour cette fenetre a déjà été réalisé, enfin une fenetre sur l'espace présentation zoom sur une petite portion du plan (espace objet), or il faudrait que dans l'espace objet ce cadre puisse apparaitre plus grand que juste la fenetre de presentation (pour le voir rapidement dans l'espace objet).

 

Ci-dessous un exemple...dans ma présentation la fenetre se limite juste au dessin du milieu, dans l'espace objet mon cadre est bien plus grand

image.thumb.png.0a66ab3bcfa26929de1e01d679eca141.png

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @chris32

En commande native cela n'existe pas je confirme la réponse de Curlygoth, il faut programmer.

La réponse de Fraid ne devrait pas te satisfaire car CHANGESPACE fait l'inverse de ce que tu demandes,
par exemple tu as une FMULT en espace papier, tu dessines une polyligne du cadre et en lançant CHANGESPACE, le cadre que tu viens de dessiner va se retrouver dans l'espace objet, à l'échelle de l'espace objet en fonction de la hauteur de zoom de la FMULT (ZOOMXP).

Pour faire ce que tu demandes, il faudra être vigilant sur l'échelle à laquelle tu souhaites voir ton cadre dans l'espace papier en le dessinant en "unités dessin", je m'explique :

Espace papier en millimètres et Espace objet en mètres :
Un A4 portrait au 1/200 devra être dessiné en espace objet par un rectangle de 59.40 de haut sur 42.0 de large, on est OK ?.

Il existe déjà des routines qui font ça, mais je ne sais pas te guider et laisse faire tes recherches, à moins que tu souhaites qu'on te fasse quelque chose et dans cas dis-le.

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Didier,

Je pense bien qu'il doit exister ce type de routine, j'ai bien essayer de chercher sur internet, mais les éléments ne correspondent pas forcement à ma rechercher...

chacun demande ces petites spécificités qui leurs sont propres.

 

Aujourd'hui ce travaille je le fais manuellement, ce qui est à la fois chronophage, et pas forcement interessant à faire, d'où cette automatisation pour me concentrer à un vrai travail de recherche.

Le top serait que lorsque que l'on fait une fenetre de présentation on a la possibilité de cliquer sur une macro qui ouvre une fenetre "VBA" sur la zone où l'on a pointé le détail et que l'on puisse adapter la taille du rectangle de localisation.

 

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Une réponse en LISP. Ça ne correspond peut-être pas exactement à ton cahier des charges (qui est plutôt exigeant) mais libre à toi de peaufiner cette routine.
Lancer VP2MS et sélectionner la fenêtre.

(defun c:vp2ms (/ ent center width height pts)
  (if
    (and
      (setq ent (car (entsel "\nSélectionnez une fenêtre: ")))
      (= (cdr (assoc 0 (entget ent))) "VIEWPORT")
    )
     (progn
       (setq center (getpropertyvalue ent "CenterPoint")
	     width  (/ (getpropertyvalue ent "Width") 2.)
	     height (/ (getpropertyvalue ent "Height") 2.)
       )
       (command-s "_.mspace")
       (setvar 'cvport (getpropertyvalue ent "Number"))
       (entmake
	 (append
	   (list
	     (cons 0 "LWPOLYLINE")
	     (cons 100 "AcDbEntity")
	     (cons 410 "Model")
	     (cons 8 "VIEWPORTS")
	     (cons 100 "AcDbPolyline")
	     (cons 90 4)
	     (cons 70 1)
	   )
	   (setq pts
		  (mapcar '(lambda (p)
			     (cons 10 (trans (trans p 3 2) 2 0))
			   )
			  (list
			    (list (- (car center) width) (- (cadr center) height))
			    (list (+ (car center) width) (- (cadr center) height))
			    (list (+ (car center) width) (+ (cadr center) height))
			    (list (- (car center) width) (+ (cadr center) height))
			  )
		  )
	   )
	 )
       )
       (entmake
	 (list
	   (cons 0 "TEXT")
	   (cons 100 "AcDbEntity")
	   (cons 410 "Model")
	   (cons 8 "VIEWPORTS")
	   (cons 100 "AcDbText")
	   (car pts)
	   (cons 40 (getvar 'textsize))
	   (cons 1 (getvar 'ctab))
	   (cons 7 (getvar 'textstyle))
	 )
       )
       (command-s "_.pspace")
     )
  )
  (princ)
)

 

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

Lien vers le commentaire
Partager sur d’autres sites

@lili2006@PHILPHIL C'est peut-être moi qui ait mal compris, mais le LISP de Bred fait exactement l'inverse de celui que j'ai proposé : il crée des fenêtres de présentation à partir de cadres dans l'espace objet. Or il m'a semblé que la demande était de créer des cadres dans l'espace objet correspondant à des fenêtres existant dans l'espace papier.

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

Lien vers le commentaire
Partager sur d’autres sites

J'ai un lisp de Jimmy Bergmark qui me créer une polyligne de la fenêtre que je sélectionne

;;; vp-outline.lsp (VPO)
;;;
;;; Creates a polyline in modelspace that
;;; has the outline of the selected viewport.
;;; Supports clipped viewports.
;;; If vp-outline is called when in mspace it detects
;;; the active viewport.
;;;
;;; c:vp-outline (C:VPO)
;;;
;;; By Jimmy Bergmark
;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved
;;; Website: www.jtbworld.com
;;; E-mail: info@jtbworld.com
;;;
;;; 2000-04-10
;;; 2003-11-19 Added support for drawing the outline in other ucs/view than world/current
;;;
;;; 2006-04-06 Added support for twisted views Tom Beauford
;;;
;;; Tested on AutoCAD 2000, 2000i, 2002, 2004, 2006, 2007
(vl-load-com)
(defun dxf (n ed) (cdr (assoc n ed)))
(defun ax:List->VariantArray (lst)
  (vlax-Make-Variant
    (vlax-SafeArray-Fill
      (vlax-Make-SafeArray
        vlax-vbDouble
        (cons 0 (- (length lst) 1))
      )
      lst
    )
  )
)
(defun c:VPO (/ ad ss ent pl plist xy n vpbl vpur msbl msur ven vpno ok)
  (setq ad (vla-get-activedocument (vlax-get-acad-object)))
  (if (= (getvar "tilemode") 0)
    (progn
      (if (= (getvar "cvport") 1)
        (progn
          (if (setq ss (ssget ":E:S" '((0 . "VIEWPORT"))))
            (progn
              (setq ent (ssname ss 0))
              (setq vpno (dxf 69 (entget ent)))
              (vla-Display (vlax-ename->vla-object ent) :vlax-true)
              (vla-put-mspace ad :vlax-true) ; equal (command "._mspace")
              ; this to ensure trans later is working on correct viewport
              (setvar "cvport" vpno)
;              (vla-put-mspace ad :vlax-false) ; equal (command "._pspace")
              (setq ok T)
            )
          )
        )
        (setq ent (vlax-vla-object->ename (vla-get-activepviewport ad))
              ok  T
        )
      )
      (if ok
        (progn
          (setq ven (vlax-ename->vla-object ent))
          (if (/= 1 (logand 1 (dxf 90 (entget ent)))) ; detect perspective
            (if (= (vla-get-clipped ven) :vlax-false)
               (progn                 ; not clipped
                 (vla-getboundingbox ven 'vpbl 'vpur)
                   (setq vpbl  (trans (vlax-safearray->list vpbl) 3 2)
                         msbl  (trans vpbl 2 1)
                         msbl  (trans msbl 1 0)
                         vpur  (trans (vlax-safearray->list vpur) 3 2)
                         msur  (trans vpur 2 1)
                         msur  (trans msur 1 0)
                         vpbr (list (car vpur) (cadr vpbl)0)
                         msbr  (trans vpbr 2 1)
                         msbr  (trans msbr 1 0)
                         vpul (list (car vpbl) (cadr vpur)0)
                         msul  (trans vpul 2 1)
                         msul  (trans msul 1 0)
                         plist (list (car msbl) (cadr msbl)
                                            (car msbr) (cadr msbr)
                                            (car msur) (cadr msur)
                                            (car msul) (cadr msul)
                                     )
                    )
               )
               (progn                 ; clipped
                 (setq pl    (entget (dxf 340 (entget ent)))
                       plist (vla-get-coordinates
                               (vlax-ename->vla-object (dxf -1 pl))
                             )
                       plist (vlax-safearray->list (vlax-variant-value plist))
                       n     0
                       pl    nil
                 )
                 (repeat (/ (length plist) 2)
                   (setq xy (trans (list (nth n plist) (nth (1+ n) plist)) 3 2)
                         xy  (trans xy 2 1)
                         xy  (trans xy 1 0)
                         pl (cons (car xy) pl)
                         pl (cons (cadr xy) pl)
                         n  (+ n 2)
                   )
                 )
                 (setq plist (reverse pl))
               )
            )
          )
          (setq plist (ax:List->VariantArray plist))
          (vla-Put-Closed
            (vla-AddLightWeightPolyline
              (vla-get-ModelSpace ad)
              plist
            )
            :vlax-True
          )
        )
      )
    )
  )
  (if ss(vla-put-mspace ad :vlax-false)) ; equal (command "._pspace"))
  (princ)
)

 

Aide au téléchargement du cadastre dgfip-download-helper
Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0
Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à toutes et tous,

Quote

mais le LISP de Bred fait exactement l'inverse de celui que j'ai proposé

Oups, désolé, c'est moi qui me suis trompé et j'ai également induit PHILPHIL en erreur mais par contre, c'est intéressant à tester cette V4,..

 

Quote

je vais mettre mon post ailleurs

 

Et pourquoi pas à suivre du post pointé,..

Civil 3D 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

  • 2 ans après...

Bonjour à tous, @PHILPHIL @(gile)

Est-ce que quelqu'un a une idée de comment je peux ajouter le nom de l'onglet à la polyligne créé, dans le lisp de Lee mac svp ?

J'ai essayé de copier qq lignes de VP2MS de Gile vers VPOutlineV1.3 de Lee mais sans succès, je suis novice en lisp 😕

J'ai + de 60 présentations et j'aurais besoin de checker que tout sois bien dans les bonnes fenêtres.

En vous remerciant,

Blue

Lien vers le commentaire
Partager sur d’autres sites

hello BlueB

 

voici une mise a jour du lisp de LEE MAC ( je prétends pas avoir son niveau en LISP )

vpoout1_4  version LEE MAC  ( fenêtre par fenêtre )

vpoout1_4_fenetre_nommee ( fenêtre par fenêtre ) ( place le nom de la fenêtre ( si existant ) et le nom de la présentation dans l'espace objet)

vpoout1_4_fenetre_nommee_tournee ( fenêtre par fenêtre ) ( place le nom de la fenêtre ( si existant ) et le nom de la présentation dans l'espace objet)(texte en haut a gauche de la fenetre )

vpooutl1_4 version LEE MAC  ( toutes les fenêtres de la présentation active )

vpooutl1_4_fenetre_nommee  ( toutes les fenêtres de la présentation active ) ( place le nom de la fenêtre ( si existant ) et le nom de la présentation dans l'espace objet)

vpooutl1_4_fenetre_nommee_tournee  ( toutes les fenêtres de la présentation active ) ( place le nom de la fenêtre ( si existant ) et le nom de la présentation dans l'espace objet) (texte en haut a gauche de la fenetre )

vpoouta1_4 version LEE MAC  ( toutes les fenêtres de toutes les présentations depuis une présentation active )

vpoouta1_4_fenetre_nommee ( toutes les fenêtres de toutes les présentations depuis une présentation active ) ( place le nom de la fenêtre ( si existant ) et le nom de la présentation dans l'espace objet)

vpoouta1_4_fenetre_nommee_tournee ( toutes les fenêtres de toutes les présentations depuis une présentation active ) ( place le nom de la fenêtre ( si existant ) et le nom de la présentation dans l'espace objet) (texte en haut a gauche de la fenetre )

VPOutlineV1-4.lsp

 

 

nommer_fenetre_de_presentation

nommer_fenetre_de_presentation_suivant_texte

renommer_fenetre_de_presentation

recuperer_nom_fenetre_de_presentation

recuperer_placer_nom_fenetre_de_presentation

recuperer_modifier_nom_fenetre_de_presentation

NOM_FENETRE_PRESENTATION.LSP

 

Phil

 

  • Like 1

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Je m'étais "amusé" à développer une petite Application qui fonctionne avec les versions FULL et LT (sans LISP). J'avais baptisé cela l'ENCARTAGE...

Voici cette application en Vidéos : 

 

 

Christian

  • Like 2

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Super, merci beaucoup @PHILPHIL mais j'ai une erreur : "Error: no function definition: X_READ" au lancement des 3 fonctions VPOOUTx1_4_FENETRE_NOMMEE, que puis-je faire ? Merci

@rebcao Joli travail, c'est une super application, mais c'est vraiment VPOUT qui me conviens le mieux pour ce que je veux faire , merci 🙂 

Belle journée à vous !

Blue

Lien vers le commentaire
Partager sur d’autres sites

hello BlueB

tu as bien lancé les lisp a partir du fichier "VPOutlineV1-4.lsp" ?  sans faire un copier collé d'un fichier vers un autre.

car a la fin du fichier il y a une fonction de Gile qui fait référence a "X_READ"

s'il te manque cette fonction c'est peut etre ca qui fait planter.
 

;; gc:massoc
;; Retourne la liste de toutes les valeurs pour le code spécifié dans une liste d'association
;;
;; Arguments
;; code : le code de groupe pour les entrées
;; alst : la liste d'association

(defun gc:massoc (code alst)
  (if (setq alst (member (assoc code alst) alst))
    (cons (cdar alst) (gc:massoc code (cdr alst)))
  )
)

 

Phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Oui @PHILPHIL j'ai bien lancé le lisp en le chargeant via outils/charger une application.

Comment je peux faire pour insérer cette fonction ?

Merci

PS: je travail sous Autocad 2023

 

En fait il semble qu'elle ne soit pas défini dans le lisp, est-ce qu'il suffit d'ajouter une ligne de code qui la définisse ? 

Désolé je suis vraiment novice en lisp 😕

Modifié par BlueB
Lien vers le commentaire
Partager sur d’autres sites

hello BlueB

MISE A JOUR DES LISP CI DESSUS

 

fait un copier-coller de la fonction "X_READ" dans le fichier "VPOutlineV1-4.lsp"

ca devrait aider

dit moi si c'est ca

 

;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;                       lit une liste en xdata
;  entrées : enam : nom d'entité
;            appli: application
;
;  retourne : liste XDATA correspondant à l'application
;------------------------------------------------------------------------------
(defun x_read (enam appli / l ent)
   (regapp appli)
   (setq ent (entget enam (list appli)))
   (if (assoc -3 ent)
    (cdr (assoc  appli (cdr (assoc -3 ent))))
   )
)

Phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Salut @PHILPHIL

J'ai ce message d'erreur

Commande: VPOOUT1_4_FENETRE_NOMMEE
-calque
Calque courant:  "T_FENETRE"
Entrez une option [?/Etablir/CHoisir/Nouv/Renommer/ACtif/INactif/COuleur/TLigne/EPaisseurl/TRANsparence/MAtériau/Tracé/Geler/Libérer/Verrouiller/Déverrouiller/étAt/deScription/RApprocher/Xréf]: ch
Entrez le nom du calque à rendre courant ou <sélectionnez un objet>: T_FENETRE Entrez une option [?/Etablir/CHoisir/Nouv/Renommer/ACtif/INactif/COuleur/TLigne/EPaisseurl/TRANsparence/MAtériau/Tracé/Geler/Libérer/Verrouiller/Déverrouiller/étAt/deScription/RApprocher/Xréf]:
Select viewport: espaceo
Error: type d'argument incorrect: numberp: nil

 

et quand je sélectionne la fenêtre, j'entre dans l'espace objet 😕

 

Et si je copie/colle la fonction "X_READ" dans la 1ère version du fichier "VPOutlineV1-4.lsp" j'ai directement l'erreur, il ne me demande plus de sélectionner la fenêtre: 

Commande: VPOOUT1_4_FENETRE_NOMMEE
-calque
Calque courant:  "T_FENETRE"
Entrez une option [?/Etablir/CHoisir/Nouv/Renommer/ACtif/INactif/COuleur/TLigne/EPaisseurl/TRANsparence/MAtériau/Tracé/Geler/Libérer/Verrouiller/Déverrouiller/étAt/deScription/RApprocher/Xréf]: ch
Entrez le nom du calque à rendre courant ou <sélectionnez un objet>: T_FENETRE Entrez une option [?/Etablir/CHoisir/Nouv/Renommer/ACtif/INactif/COuleur/TLigne/EPaisseurl/TRANsparence/MAtériau/Tracé/Geler/Libérer/Verrouiller/Déverrouiller/étAt/deScription/RApprocher/Xréf]:
Command not available in Modelspace.espaceo
Déjà dans l'espace objet.
Error: type d'argument incorrect: numberp: nil

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

hello

il manquait des définitions de paramètres dans les fichiers

pour lancer les fonction "VPOO..."  il faut etre dans l'espace  papier de la présentation, et non double cliquer dans la fenetre de presentation pour se retrouver dans l'espace Objet de cette fenetre.

sinon il ne comprend plus la commande "espaceO" et "espaceP"

 

mise a jour des 2 lisps a tester

Phil

Modifié par PHILPHIL
mise a jour des LISP si dessus 2024 03 25 13:48
  • Like 1

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é