Aller au contenu

Maxime10

Membres
  • Compteur de contenus

    44
  • Inscription

  • Dernière visite

Visiteurs récents du profil

Le bloc de visiteurs récents est désactivé et il n’est pas visible pour les autres utilisateurs.

Maxime10's Achievements

Contributor

Contributor (5/14)

  • One Year In Rare
  • Collaborator Rare
  • Reacting Well Rare
  • Conversation Starter Rare
  • One Month Later Rare

Recent Badges

2

Réputation sur la communauté

  1. Merci beaucoup @Patrick Emin, sujet toujours intéressant sous un format qui l'est tout autant. Je m'écoute ça prochainement. Maxime
  2. Bonjour @AlexisF, Je me permets de prendre part aux échanges dans le sens où j'ai il y a peu formulé le même genre de demande à la communauté CadXp. @lecrabe m'avait alors fournit le Lisp proposé plus tôt "NUMBER_TYPE_AREA_Table", sous sa version 2 "NUMBER_TYPE_AREA_2_Table". Ce Lisp fonctionne à merveille je ne peux que te conseiller de l'essayer. Aussi, pour répondre à une de tes interrogations vue plus tôt, il est possible de numéroter à la volée avec le formidable programme de Lee Mac intitulé "NUM_INC" que tu pourras retrouver sur son site. Espérant t'aider, Maxime
  3. Bonjour @Chazug, Réalisant quotidiennement des plans 2D depuis nuages de points et travaillant dans un cabinet de géomètre je me permet de prendre part à l'échange. On utilise Trimble Realworks en interne (mais tu pourrais avoir Scene de chez Faro en équivalent) pour le traitement du nuage. Depuis ce logiciel on génère des ortho-images (projection du nuage sur un plan 2D défini). On exporte ces orthos-images sur Autocad et on vectorise le tout en faisant bien attention à tirer nos traits pour ne pas commettre d'impair. La compatibilité entre les logiciels se gère principalement avec le SCU commun créé depuis Trimble Realworks (dans ce dernier on peut aussi géoréférencé le projet etc ..) Maxime PS: En logiciel gratuit pour le traitement du nuage tu as peut-être CloudCompare ? Je n'ai pas essayé.
  4. Maxime10

    Tout en Blanc

    Bonjour @Faby38, Peux-tu envoyer un extrait ou carrément ton dwg s'il te plaît ? Je pense de tête à DEFDUCALQUE ou le lisp RB de Patrick_35 à lancer en amont de ton LISP. Maxime
  5. Bonjour @arnaudalp, Merci pour ton retour. Le lisp est donné plus tôt dans le fil de la discussion. Mais je te le remet ci-dessous avec les variables correspondant au dwg "Modele.dwg". J'ai supprimé le point double et retenté mais rien n'y fait je ne récupères pas cette pièce. J'ai également créé un point transitoire (j'ai scindé mon arc en deux arc), je récupère alors le numéro de la pièce ainsi que la surface mais pas le texte "Cuisine" qui renvoit alors 0. J'ai ensuite enlevé mon arc pour le remplacer par plusieurs sommets, et cela fonctionne je récupère bien tout). Le lisp: ;; ;; Routine par doaiena pour Patrice B. ;; ;; Routine: NUMBER_TYPE_AREA_2_Table by doaiena ;; ;; ---- Re: Lisp to Get Table with Room : Number + Type + Area ---- ;; ;; Here is a quick draft. I didn't have time to test it a lot, ;; so try it and tell me if it's working as expected. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ATTENTION : DIMZIN = 0 sinon on ne controle pas les Decimales !! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; (vl-load-com) (defun c:NUMBER_TYPE_AREA_2_Table ( / _dec dec _numLay numLay _typeLay typeLay _areaLay areaLay _polyLay polyLay ss ctr obj coords pts ss2 lay num typ area data tablePt table row col dimzinsauve oldecho ) (setq oldecho (getvar "cmdecho")) (setvar "cmdecho" 0) ;;;;;;;; Sauvegarde de DIMZIN ;;;;;;;; (setq dimzinsauve (getvar "dimzin") ) (setvar "dimzin" 0) (setq _dec "2") (setq _numLay "COPRO_Numero-Lot") (setq _typeLay "COPRO_Texte") (setq _areaLay "COPRO_Surface-Valeur") (setq _polyLay "COPRO_Surface-Contour") (initget "0 1 2 3") (setq dec (cond ((getkword (strcat "How many decimals for the AREA [0/1/2/3] <" _dec ">: "))) (_dec))) (setq numLay (getstring (strcat "Enter layer for text number <" _numLay ">: "))) (if (= numLay "") (setq numLay _numLay)) (setq typeLay (getstring (strcat "Enter layer for text number <" _typeLay ">: "))) (if (= typeLay "") (setq typeLay _typeLay)) (setq areaLay (getstring (strcat "Enter layer for text number <" _areaLay ">: "))) (if (= areaLay "") (setq areaLay _areaLay)) (setq polyLay (getstring (strcat "Enter layer for 2D polygons <" _polyLay ">: "))) (if (= polyLay "") (setq polyLay _polyLay)) (princ "\n \nSVP verifiez AVANT que les Polylignes 2D sont parfaites : \nPas de doublon/triplon , Closes , CONTINUOUS , PLINEGEN=0 , etc ! \n \n") (if (setq ss (ssget (list (cons 0 "LWPOLYLINE") (cons 8 polyLay) (cons 70 1)))) (progn (while (not tablePt) (setq tablePt (getpoint "\nPick top left corner for the table: "))) (command "_view" "_sa" "tmp") (setq ctr 0) (repeat (sslength ss) (setq obj (vlax-ename->vla-object (ssname ss ctr))) (setq coords (vlax-safearray->list (vlax-variant-value (vla-get-coordinates obj)))) (setq pts nil) (while (> (length coords) 0) (setq pts (cons (list (car coords) (cadr coords)) pts)) (setq coords (cdr (cdr coords))) ) (command "_zoom" "_o" (ssname ss ctr) "") (if (setq ss2 (ssget "_WP" pts (list (cons 0 "Text") (cons 8 (strcat numLay "," typeLay "," areaLay))))) (progn (setq ctr2 0 num "0" typ "0" area (rtos 0 2 (atoi dec))) (repeat (sslength ss2) (setq lay (cdr (assoc 8 (entget (ssname ss2 ctr2))))) (cond ((= lay numLay) (setq num (cdr (assoc 1 (entget (ssname ss2 ctr2)))))) ((= lay typeLay) (setq typ (cdr (assoc 1 (entget (ssname ss2 ctr2)))))) ((= lay areaLay) (setq area (rtos (atof (cdr (assoc 1 (entget (ssname ss2 ctr2))))) 2 (atoi dec)))) ) (setq ctr2 (1+ ctr2)) );repeat (setq data (cons (list num typ area) data)) ));if ss2 (setq ctr (1+ ctr)) );repeat (command "_view" "_r" "tmp") (command "_view" "_de" "tmp") (if (> (length data) 0) (progn (setq data (vl-sort data '(lambda (x y) (< (atoi (car x)) (atoi (car y)))))) (setq table (vla-Addtable (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point tablePt) (+ (length data) 2) 3 10 30)) (setq row 0) (repeat (length data) (setq col 0) (repeat 3 (vla-settext table (+ row 1) col (nth col (nth row data))) (setq col (1+ col)) ) (setq row (1+ row)) );rows (vla-settext table (+ row 1) 2 (rtos (apply '+ (mapcar 'atof (mapcar 'caddr data))) 2 (atoi dec))) )) ));if ss ;;;;;;;; Restauration de DIMZIN ;;;;;;;; (setvar "dimzin" dimzinsauve) (setvar "cmdecho" oldecho) (princ) );defun
  6. Merci pour la rapidité de ton retour. Mmh oui je comprend et ne peux malheuresement pas non plus modifier la-dite routine en conséquence. Je rejoins donc @lecrabe pour un(e) éventuel(lle) bienfaiteur/trice qui passerait par ici ^^. Maxime
  7. Bonjour @lecrabe, J'ai un petit soucis avec l'utilisation du LISP NUMBER_TYPE_AREA_2_TABLE que tu m'as généreusement transmis. Le tableau généré ne semble pas prendre en compte les polylignes possédant des arcs ? voir la cuisine 7.03 du dwg joint. J'ai le même système sur des balcons possédant des arcs. Mais cela n'est pas systématique (voir la terresse 7.61 qui se génère malgré deux arcs ? je ne comprend pas). Est-ce que cela peut-être géré en modifiant le code ? Aussi, lorsqu'il y a plusieurs textes dans la polyligne, par exemple: "Chambre" et "Pl.", pouvons-nous envisager d'exporter ces deux textes avec la syntaxe suivante dans la colonne 2 du tableau: "Chambre + Pl." ? Aujourd'hui, seul le premier texte (créé ?) est indiqué dans le tableau (voir la pièce 7.07). Merci pour le temps consacré à ce sujet. Maxime Modele.dwg
  8. Bonjour @PATRICE69, De mon côté j'utilise le LISP "RB" de Patrick35. Tu peux tester et nous dire si cela te convient ? Maxime ;;;================================================================= ;;; ;;; RB.LSP V1.11 ;;; ;;; Refait tous les blocs de la couleur dubloc et sur le calque 0 ;;; ;;; Copyright (C) Patrick_35 ;;; ;;;================================================================= (defun c:rb(/ a b s *errrb*) (defun *errrb* (msg) (or (member (strcase msg) '("FUNCTION CANCELLED" ""QUIT / EXIT ABORT"" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) (vla-endundomark doc) (setq *error* s) (princ) ) (vl-load-com) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (setq s *error* *error* *errrb* ) (setq a (tblnext "block" t)) (while a (setq b (cdr (assoc -2 a))) (while b (setq b (entget b)) (if (cdr (assoc 6 b)) (setq b (subst (cons 6 "ByBlock") (assoc 6 b) b)) (setq b (append b (list (cons 6 "ByBlock")))) ) (setq b (subst (cons 8 "0") (assoc 8 b) b)) (if (cdr (assoc 62 b)) (setq b (subst (cons 62 0) (assoc 62 b) b)) (setq b (append b (list (cons 62 0)))) ) (if (cdr (assoc 370 b)) (setq b (subst (cons 370 -2) (assoc 370 b) b)) (setq b (append b (list (cons 370 -2)))) ) (entmod b) (setq b (entnext (cdr (assoc -1 b)))) ) (setq a (tblnext "block")) ) (if (setq a (vl-remove-if-not '(lambda (x) (eq (car x) 350)) (dictsearch (namedobjdict) "ACAD_MLINESTYLE"))) (foreach b a (entmod (append (vl-remove-if '(lambda (x) (eq (car x) 62)) (entget (cdr b))) (list (cons 62 0) (cons 62 0) (cons 62 0)))) ) ) (if (setq a (ssget "_x" (list (cons 0 "INSERT")))) (foreach b (mapcar 'cadr (ssnamex a)) (if (cdr (assoc 66 (entget b))) (progn (setq a (entget (entnext b))) (while (not (eq (cdr (assoc 0 a)) "SEQEND")) (entmod (subst (cons 62 0) (assoc 62 a) a)) (setq a (entget (entnext (cdr (assoc -1 a))))) ) ) ) (entupd b) ) ) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (setq *error* s) (princ) ) (setq nom_lisp "RB") (if (/= app nil) (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp) (princ (strcat "..." nom_lisp " chargé.")) (princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter."))) (princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter."))) (setq nom_lisp nil) (princ)
  9. Maxime10

    LISP : cotation

    Bonjour à toutes et tous, Je me permet de faire suite à ce sujet et de rebondir sur un des souhaits qui était celui de pouvoir choisir si la cotation générée apparaît à "l'intérieur" ou à l'"extérieur" de la pièce. Utilisant la commande LW_DIM j'ai bien compris le fait d'inverser le sens de la polyligne afin d'obtenir le résultat souhaité et cela fonctionne. Aussi, en l'utilisant, je me suis rendu compte que machinalement, après la sélection de la polyligne à coter, je positionnais mon curseur à l'"intérieur" de la pièce avec pour souhait qu'elle s'affiche de ce côté de la polyligne. J'en viens donc à ma question, est-il possible d'inverser (ou non) le sens de la polyligne en fonction de la position du curseur de la souris par rapport à la-dite polyligne au moment de la validation de la commande (utilisant le cycle de sélection j'effectue un coup de molette arrière pour valider certaines commandes, si ça peut aider ?). Merci par avance pour vos retours. Maxime
  10. Je suis sur AutoCAD MAP 3D 2019 couplé à un Covadis 17.0f
  11. C'était bien ça ! Merci beaucoup, le tableau se génère correctement, je vais maintenant regarder pour l'exporter sur excel. Milles mercis ! @lecrabe@didier J'utilise vos deux programmes désormais. Et didier, le seul "bémol" reste que la valeur puisse sortir de la polyligne, mais je reprendrai à la main le peu de cas pouvant apparaître, le plus gros du boulot étant fait ! Et @arnaudalp, je regarderai cela ultérieurement et au besoin, je suis déjà content d'avoir aussi cette possibilité en tête.
  12. Bonjour @lecrabe, Et ... au secours ! J'ai défini mes paramètres directement dans le .lsp afin qu'ils s'affichent lors des différentes étapes et que je puisse faire entrée ou clique droit pour les valider rapidement. Ce qui donne: (setq _numLay "COPRO_Lot") (setq _typeLay "COPRO_Texte") (setq _areaLay "COPRO_Surface-Valeur") (setq _polyLay "COPRO_Surface") Mais c'est de pire en pire sur la génération du tableau ... Ci-joint le dwg concerné. Merci par avance pour le temps consacré.. Maxime Test3.dwg
  13. Bonjour @arnaudalp, Merci pour ta contribution. J'avoue ne pas connaître l'existence de cet outil, au même titre que les personnes m'ayant formé initialement. J'ignore cependant si la charte graphique de ma société peut me permettre d'utiliser cet outil, le rendu client se doit d'être identique au rendu actuel. Néanmoins je pense que le bloc paramétrable peut l'être en ce sens .. je vais aussi creuser cette piste au cas où. Maxime
  14. Bonjour @didier, Les échanges avec lecrabe concernent un autre sujet mais tout aussi important. Le but pour moi dans un second temps sera d'exporter les surfaces générées sur un tableur pour simplifier le travail de mes collègues en aval du projet. C'est donc dans ce but que je m'intéresse au conseil de lecrabe pour réaliser cette seconde étape. Le LISP que vous avez créé correspond à la demande initiale et va permettre à mes collègues et moi-même de visualiser plus efficacement les surfaces au sein de chaque pièce, cela nous aide pour du contrôle et du confort visuel. Je l'ai testé et certaines surfaces n’apparaissent pas sous le texte mais au centre géométrique de la polyligne fermée et décalé vers le bas c'est bien ça ? Et pour répondre à la question posée, nous imprimons exclusivement en interne ces surfaces si besoin et le calque courant est très bien pour la génération). Et pour la lenteur cela convient je ne le trouve pas particulièrement lent. Pour le fichier et pour l'explication de l'étrangeté, c'est un plan réalisé à partir d'une ortho-image (.tif) générée depuis un nuage de points. Le bâtiment de plusieurs niveaux a été entièrement scanné. L'ortho-image issu du nuage est donc orientée d'après un SCU défini depuis le nuage (sur le logiciel de traitement), il tend à être en ortho mais ne l'est pas et cela n'est pas gênant pour nous. Nous dessinons l'existant et non pas un plan d'exécution, bien que théoriquement ce type de bâtiment est censé avoir ses angles à 90° je suis d'accord. Pour les textes je comprend mieux, merci pour cette explication. Maxime
  15. @lecrabe, Ok je vois le concept j'arrive désormais à générer un tableau dans lequel j'ai indiqué les mauvais calques pour les différentes variables. Je continue mes tests de mon côté pour générer le tableau souhaité mais je suis sur la bonne piste ! EDIT: Le bloque à priori au TEXT_TYPE qui renvoi 0 dans le tableau généré. Est-ce dû à la police ? Maxime TEST2.dwg
×
×
  • 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é