Aller au contenu

Récupérations des coordonnées de l'emprise d'une présentation


Olivier_CEA_Grenoble

Messages recommandés

Bonjour a tous,

 

C'est avec plaisir que je revient sur ce forum, pour mes dernier jours de travail.

...Ma fin d'activité pro est fixé au 01/01/20223 🤪... 01/01/2022🤭

 

Ceci dit il me reste tout de même quelque points a solutionné avant de nouvelles aventures.

Nous avons mis en place un outil de publications vers notre GED de fichiers issue d'AutoCAD qui fait le calcul a la volé de mise en page.

Cela a été traiter par une entreprise externe et nous avons du mal a en faire modifié le code.

Cela fonctionne très bien SAUF quand un fichier a un cadre de présentations avec des coordonnées négative et nous avons pléthore de fichiers historique dans ce cas

 

Mon souhait et de pouvoir récupéré les coordonnées BG pour savoir si celles si sont en négatif.

Au quel cas je ferais le déplacement de l'ensemble vers le point 0,0.

 

Je joint un fichier exemple 

 

Si quelqu'un a des tuyaux sur cette récupération ou des bride de lisp...

 

Bonne journée a tous

Olivier

Exemple.dwg

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Bon courage pour tes 18201 années restantes 🤣

 

Ce post pourrait intéresser

https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/get-min-max-coordinates-of-a-set-of-lines/m-p/4675461/highlight/true#M317507

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

il y a 45 minutes, vincentp010 a dit :

Salut,

 

Bon courage pour tes 18201 années restantes 🤣

 

Ce post pourrait intéresser

https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/get-min-max-coordinates-of-a-set-of-lines/m-p/4675461/highlight/true#M317507

ça va être long 🤣

Lien vers le commentaire
Partager sur d’autres sites

Tu as les variables EXTMIN et EXTMAX qui marchent pour chaque présentations

(getvar "extmin")
(-285.681 -191.564 0.0)

(getvar "extmax")
(178.971 147.761 0.0)

 

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 @Olivier_CEA_Grenoble

Les angles d'une VIEWPORT ne sont pas mémorisés dans un champ de liste de définition d'entité

Je donne des pistes de recherches :

  1. Tester avec EXTMIN et EXTMAX
  2. Calculer le point bas gauche en soustrayant la moitié de la longueur et la moitié de la hauteur des coordonnées du centre de la VIEWPORT
    respectivement codes 40 pour longueur, 41 pour hauteur et 10 pour le centre

Je ne sais pas si tu veux un truc tout fait ou une piste de recherche, tu dis savoir faire donc j'opte pour la piste de recherche.

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, didier a dit :

Bonjour @Olivier_CEA_Grenoble

Les angles d'une VIEWPORT ne sont pas mémorisés dans un champ de liste de définition d'entité

Je donne des pistes de recherches :

  1. Tester avec EXTMIN et EXTMAX
  2. Calculer le point bas gauche en soustrayant la moitié de la longueur et la moitié de la hauteur des coordonnées du centre de la VIEWPORT
    respectivement codes 40 pour longueur, 41 pour hauteur et 10 pour le centre

Je ne sais pas si tu veux un truc tout fait ou une piste de recherche, tu dis savoir faire donc j'opte pour la piste de recherche.

Amicalement

Didier,

ce n'est pas un problème de fenêtre mais un problème d'emplacement des éléments dessiner dans les présentations.

Je pense partir vers la variables LIMMIN des mise en page en les forçant sur un mode étendue.

Cela positionne la mise en page automatiquement sur le point bas gauche de tous ce qui est dessiner en présentations (Cadre, cartouche, annotations...)

J'en retire la plus petite coordonnées et si elle est négative je fait le déplacement de l'ensemble des éléments.

Le code pour une valeur négative des coordonnées de limmin:

(minusp (min (nth 0 (getvar "limmin"))(nth 1 (getvar "limmin")))))

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Hello Oliver

 ?? Au fait as tu bien recu mon message dans TA messagerie Pro ??

Sinon voici une routine "F_Emprise" de Bruno / Bonuscad mais qui "deconne" un peu !

Elle tente de tracer un rectangle dans l 'Onglet OBJET

correspondant a CHAQUE Fenetre FMULT de TOUTES les Presentations / Layouts :

-- A CORRIGER / AMELIORER --

Bye, lecrabe

 

 
;; 
;; Routine: F_Emprise par Bruno - 10/2016
;; 
;; A lancer DANS une Fenetre FMULT des Presentations/Layouts 
;; 
;; Cela cree dans l'Onglet Objet un Rectangle (Polyligne) 
;; + MTexte (Nom de la Presentation) en bas a gauche 
;; montrant l'Emprise de la Fenetre FMULT ... 
;; 
;; ----------------------------------------------- 
;; Cela semble PLUS ou MOINS Bien fonctionner !? 
;; ----------------------------------------------- 
;; 

(defun c:F_Emprise ( / el js n ent dxf_ent pt_v l h lst_pt js_obj)
  (vl-load-com)
  (foreach el (layoutlist)
    (setvar "CTAB" el)
    (setq js
      (ssget "_X"
        (list
          '(0 . "VIEWPORT")
          '(67 . 1)
          (cons 410 el)
          '(-4 . "!=")
          '(69 . 1)
        )
      )
    )
    (repeat (setq n (sslength js))
      (setq
        js_obj nil
        pt_v (cdr (assoc 10 (setq dxf_ent (entget (setq ent (ssname js (setq n (1- n))))))))
        l (cdr (assoc 40 dxf_ent))
        h (cdr (assoc 41 dxf_ent))
        lst_pt
        (list
          (list (- (car pt_v) (* 0.5 l)) (- (cadr pt_v) (* 0.5 h)) 0.0)
          (list (+ (car pt_v) (* 0.5 l)) (- (cadr pt_v) (* 0.5 h)) 0.0)
          (list (+ (car pt_v) (* 0.5 l)) (+ (cadr pt_v) (* 0.5 h)) 0.0)
          (list (- (car pt_v) (* 0.5 l)) (+ (cadr pt_v) (* 0.5 h)) 0.0)
        )
        js_obj (ssadd)
      )
      (entmakex
        (vl-list*
          (cons 0 "LWPOLYLINE")
          (cons 100 "AcDbEntity")
          (cons 67 1)
          (cons 100 "AcDbPolyline")
          (cons 90 (length lst_pt))
          (cons 70 1)
          (mapcar '(lambda (p) (cons 10 p)) lst_pt)
        )
      )
      (ssadd (entlast) js_obj)
      (entmake
        (list
          '(0 . "MTEXT")
          '(100 . "AcDbEntity")
          '(67 . 1)
          (cons 410 el)
          (cons 8 (getvar "CLAYER"))
          '(100 . "AcDbMText")
          (cons 10 (car lst_pt))
          '(40 . 3.5)
          '(41 . 0.0)
          '(46 . 0.0)
          '(71 . 7)
          '(72 . 5)
          (cons 1 (strcat "{\\fArial|b0|i0|c0|p34;" el))
          '(7 . "Standard")
          '(210 0.0 0.0 1.0)
          '(11 1.0 0.0 0.0)
          '(50 . 0.0)
          '(73 . 1)
          '(44 . 1.0)
        )
      )
      (ssadd (entlast) js_obj)
      (command "_.CHSPACE" js_obj "" )
    )
  )
  (prin1)
)

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Suite un autre développement, j'avais décelé un "couak" dans la ligne:

(command "_.CHSPACE" js_obj "" )

il faudrait essayer de tester en changeant avec ceci:

(command "_.CHSPACE" js_obj "" (if (> (cdr (assoc 69 dxf_ent)) 2) ""))
Citation

Bruno / Bonuscad mais qui "deconne" un peu !

J'ai failli croire que c'était moi! 😅

  • Upvote 1

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

@didier 

Effectivement je cherche l'encombrement minimum de tous éléments dessiner dans l'espace papier pour chaque présentations pour savoir si l'une des coordonnées est négatives.

Si c'est le cas je ferais le déplacement de tout les objet présent dans la présentation vers le point 0,0 afin que les script de publication mis en place ne plante plus.

Olivier

Lien vers le commentaire
Partager sur d’autres sites

@lecrabe

Je ne reçois pas les notifications sur ma boite pro, certainement un filtrage en amont 💥

Je ne comprend pas ce que je peut retiré de ton lisp?

Je viens de le lancer a l'instant (avec les corrections de @bonuscad) ça fait effectivement ce qui est annoncé mais ce n'est pas ce que je cherche.

Merci de vos retours.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @Olivier_CEA_Grenoble

Quel est le rapport entre les coordonnées des entités dans l'espace objet et les coordonnées de la viewport ?
A priori aucun rapport, c'est pourquoi je suis curieux de savoir ce que ça signifie dans cette demande.

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Bon, 

Je reviens sur ce que j'ai dits la variable extmin est directement exploitable dans ma problématique !!!

Milles excuses a @vincentp010 et a @didier

J'ai donc fait ceci:

(if (/=  (minusp (min (nth 0 (getvar "EXTMIN"))(nth 1 (getvar "EXTMIN")))) nil)
	(progn
		(command "_move" "tout" "" (strcat (rtos(nth 0 (getvar "EXTMIN"))) "," (rtos(nth 1 (getvar "EXTMIN")))) "0,0")
	)
)

Merci a tous et bonne continuation Pro

Lien vers le commentaire
Partager sur d’autres sites

@didier C'est les entités de l'espace papier qui sont déplacés pas celle de l'objet

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, pourquoi ne pas faire l'hypothèse, que les mises en page de tous vos fichiers sont en coordonnées négatives ? Si vous avez un cartouche en bloc avec un 0,0 en bas à gauche, déplacer l'ensemble des éléments du 0,0 du cartouche vers le 0,0 général. 

Dans le cas de coordonnées négatives le déplacement s'effectue réellement, sinon les objets restent à leur place.

 

En espérant vous aider, 

Lien vers le commentaire
Partager sur d’autres sites

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é