Aller au contenu

Toute l’activité

Ce flux se met à jour automatiquement

  1. Hier
  2. La dernière semaine
  3. Hello @Maxime10 MERCI pour le rappel de "NUM_INC" de Lee-Mac ! SVP ne pas oublier que le Lisp / VLisp "NUMBER_TYPE_AREA_Table" n est pas "de moi" , neanmoins il rend bien des services ! Cependant je suis l auteur du CDC / CCTP ... Bon WE, Bye, lecrabe
  4. 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
  5. Invité

    LISP AVEC ETAT DE VISIBILITE

    Bonjour, Je me permets de répondre à Monsieur Michel. Il est toujours attendrissant de voir quelqu’un découvrir AutoLISP comme on découvrirait un outil magique sans vraiment lire le mode d’emploi. Alors, si je comprends bien : vous voulez automatiser l’insertion de deux blocs dynamiques avec états de visibilité, ajouter un texte, puis regrouper le tout avec la fonction GROUP, en imaginant que cela constitue une démarche rigoureuse ? L’intention est là. Le reste… beaucoup moins. Vous parlez d’états de visibilité sans connaître la manipulation des propriétés dynamiques via AutoLISP. Et vous pensez qu’un simple GROUP suffit à faire le travail d’un vrai bloc structuré et intelligent ? C’est un peu comme si un vendeur de foin se prenait soudain pour un architecte, désolé, bien sûr, si vous êtes réellement vendeur de foin… auquel cas votre démarche aurait sans doute été plus structurée. L’enthousiasme est louable, mais le fond manque cruellement. Il existe une documentation claire, des outils puissants, et des pratiques éprouvées. Encore faut-il les consulter avant de bricoler à l’aveugle. Je vous encourage sincèrement à commencer par les bases. Parce que là, franchement, vous êtes en train de planter un piquet dans une prise électrique en espérant que ça trace un réseau. Bien cordialement, en vous souhaitant de belles moissons de compréhension du LISP.
  6. Bonjour @AlexisF, Ce ruban appartient à mon plug-in téléchargeable ICI : https://apps.autodesk.com/MAP3D/fr/Detail/Index?id=7146835859656784994&appLang=fr&os=Win64 Olivier
  7. bonjour j'ai eu la réponse à ma problématique dans une des différentes réponses. Merci à vous
  8. C'est exactement cela qu'il me fallait @Olivier Eckmann Je ne trouve malheureusement pas la fonction SHOW OD Pourriez vous m'aider ? je n'aipas sla même interface autocad que vous Un tout grand merci
  9. Pas tout compris. Vous voulez les surfaces des contours rouge ou de chaque pièce? Sinon, une autre solution avec AutoCAD Map 3D (inclus dans votre abonnement AutoCAD) : https://youtu.be/9lXGagNRuLo Olivier
  10. Bonjour @AlexisF OK, merci Sélectionner les polylignes qui m'intéresse ou filtrer via calques Quelles polylignes ? le calque contour ? Sélectionner les textes (situés à l'intérieur des polylignes) qui m'intéresse ou filtrer selon les calques. Quels textes, je n'en vois pas dans les pièces, les pièces ne sont même pas détourées en polylignes closes. Obtenir un tableau de toutes les polylignes sélectionnées et les textes associés avec leurs surfaces. Mêmes remarques, pas de polylignes Est-ce que vous avez toutes les informations nécessaires ? La réponse est, logiquement, NON. Sans compter que les polylignes qui existent sur le calque contour ne peuvent, en aucun cas, servir de support à un mesurage de superficie. Elles ne sont pas du tout dessinées dans les règles de surfaces utiles. Ce dessin ne peut supporter, en l'état, la programmation pour automatiser des calculs de superficies. C'est bien pour ça que j'ai insisté pour connaître les données entrantes. Tout ce qu'on vous a répondu précédemment se basait sur une hypothèse de dessin adapté, ce n'est pas le cas. Les blocs de portes vont gêner, si on désactive le calque des blocs, il faudra créer une ligne pour clore l'ouverture de la porte, etc. Il va falloir retravailler sur ce dessin, écrire les noms des pièces, détourer les superficies. Aucun programme ne saura détecter et indiquer que telle polyligne est une salle de séjour ou un wc. J'espère que vous comprenez ce que je dis, non pas par manque de respect, mais pour nous assurer que nous pouvons avoir une conversation productive. Je suis capable de vous soumettre une solution et réaliser un travail d'exemple, mais si votre idée était de vous en sortir avec simplement quelques clics, c'est hors de question avec ces données. Amicalement
  11. Hello @ChatGris Donc tu as verifie : UCSFOLLOW et UCSVP ?? Bye, lecrabe
  12. Bien le bonjour m'sieur dames ! Comme l'indique le titre : en travaillant en double fenêtre : - fenêtre de gauche, ma situation - fenêtre de droite, un tableau contenant X champs. Quand j'édite un champ du tableau (fenêtre de droite), pour lui indiquer l'objet à prendre en considération (hâchure >> aire), en cliquant l'objet sur la situation (fenêtre de gauche), aussitôt après avoir validé l'objet dans le champ, j'ai droit à un recentrage de la vue dans la fenêtre de gauche, telle qu'elle apparaît dans la fenêtre de droite, donc centrée sur le champs précédemment édité. Inutile de vous dire à quel point c'est agaçant , car cela nécessite de revenir (fenêtre de gauche) à l'endroit où se trouvent les objets concernés sur la situation ... J'avais pensé à UCSFOLLOW, mais rien n'y fait ... Une idée svp ?
  13. merci pour la réponse et désolé pour mon retard en effet, c'est bien grâce aux fourreaux que je vais pouvoir arriver à mes fins. Pas encore eu le temps de tester, mais Geomedia m'a fait la même réponse que toi ... Merci beaucoup !
  14. Hello @cedricK Je t ai DEJA repondu ICI : https://forums.autodesk.com/t5/autocad-tous-produits-francais/autocad-full-2017-fichier-installation/td-p/13430575 Bye, lecrabe PS: SVP quand tu fais un DOUBLE Post, tu l indiques !! PS2: et même un TRIPLE Post avec dessein-tech, ca m enerve !!!
  15. Hello TON DWG demande du travail pour etre exploite ! 1) MTEXTs a exploser / decomposer pour avoir des textes simples 2) Le chiffre 1/2/3/4/etc (No de Lot Appart) doit etre separe du texte APPARTEMENT / CAVE / TERRASSE / BALCON 3) Les TEXTs simples APPARTEMENT / CAVE / TERRASSE / BALCON / etc sur UN Calque specifique 4) Les TEXTs simples 1/2/3/4/etc (No de Lot Appart) sur UN AUTRE Calque specifique 5) Les TEXTs simples COMMUN sur un AUTRE Calque ou ALORS avec une Polyligne autour pour les traiter !? etc Bye, lecrabe PS: je te donne "quand meme" la routine "NUMBER_TYPE_AREA_Table" ... Ainsi un développeur Lisp pourra l améliorer !? ;; ;; Routine par doaiena pour Patrice B. ;; ;; Routine: NUMBER_TYPE_AREA_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 !! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; ATTENTION : Le Style de Tableau STANDARD doit etre correct et adapte ;; (vl-load-com) (defun c:NUMBER_TYPE_AREA_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 "NUMERO") ;; Numero FACULTATIF pour le TRI / REGROUPEMENT dans le tableau (setq _typeLay "PIECE") ;; Nom / Identifiant de la PIECE (setq _areaLay "SURFACE") ;; Surface (setq _polyLay "POLYGONE") ;; Polygones (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
  16. Comment créer un chiffre rapidement des une 100aines de contours différents ?
  17. Hello @AlexisF SVP tu regardes bien l image jointe ... Tu vois les Surfaces generees par la routine Lisp POLYAREA de Gilles (qui ont ete decomposees / explosees pour la routine Lisp suivante) Tu vois un CHIFFRE facultatif qui est utilise pour trier dans le tableau Tu vois un Texte (Nom de Piece) ou autre Identifiant ou Texte quelconque ET tu vois le tableau (Style Copropriete) genere par la routine Lisp "NUMBER_TYPE_AREA_Table" ... Est ce que cela te convient ?? Si c OK pour toi, SVP tu me le dis ! La routine "NUMBER_TYPE_AREA_Table" devrait etre amelioree "un poil" pour INTERPRETER le MTEXT Dynamique de la Surface (genere par POLYAREA) ainsi il ne serait plus necessaire de decomposer / exploser les Surfaces ... Facile pour un developpeur Lisp comme Didier ou Gilles ou autre ... Bye, lecrabe
  18. Voici un petit exemple de fichier dwg J'aimerais donc: - selectionner les polylignes qui m'intéresse ou filtrer via calques - selectionner les textes ( situer à l'intérieur des polylignes ) qui m'intéresse ou filtrer selon les calques - obtenir un tableau de toutes les polylignes sélectionnées et les textes associés avec leurs surfaces Est ce que vous avez toutes les informations nécessaires? Un tout grand merci pour l'attention portée à ma demande QUOTITES CADXP.dwg
  19. Bonjour @AlexisF Je me permets de renouveler ma demande de fourniture de fichier de votre part. Dans ce dessin, ce serait sympa d'y trouver ce que vous avez comme renseignements. Mais aussi ce que vous voulez obtenir du programme que vous souhaitez faire ou nous demander d'écrire. Sans ce dessin, on peut échanger des dizaines de messages avant de vous donner une bonne piste de recherche ou de travailler efficacement pour vous. C'est fatigant et stérile pour vous et pour nous. Amicalement
  20. ok et ensuite comment lier la désignation de pièce a cette surface ?
  21. Hello DONC DEJA SVP tu testes cette belle routine de Gilles : POLYAREA Qui traite les objets (ayant une surface possible) et genere un champ dynamique de la Surface ... Au fait tu "regles" TEXTSIZE a une bonne hauteur avant le lancement de POLYAREA ! SVP est ce OK pour toi ? Bye, lecrabe ;; ;; PolyArea par GC - 03/03/2018 ;; ;; Micro-Modif par Patrice B. ;; ;; ------------------------------------------------------------------------------------- ;; SVP changer la Variable System TEXTSIZE AVANT d'executer la Routine ! ;; Car la routine utilise la valeur de TEXTSIZE comme Hauteur de MTEXT par defaut ... ;; ------------------------------------------------------------------------------------- ;; ;; J'ai revu les codes, le probleme venait de la methode utilisee pour placer le texte/champ sur le barycentre de la polyligne. ;; Cette methode ne fonctionnait qu'avec des polylignes. ;; ;; J'ai change cela. Le texte est desormais place au centre de la boundingbox de l'entite. ;; J'ai aussi revu les filtres de selection qui ne devraient pas etre tout à fait les memes pour l'aire et la longueur. ;; ;; Pour l'aire, je te laisse choisir entre uniquement les objets fermes, ou pas. ;; ;; Pour les longueurs, les champs sont differents pour les cercles (Circumference), les regions et mpolygons (Perimeter) ;; et n'existent pas pour les ELLIPSEs et SPLINEs, j'ai donc remplace le champ par un MTEXT simple qui affiche la longueur. ;; ;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Area \f "%lu2">% ;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Length \f "%lu2">% ;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Perimeter \f "%lu2">% ;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Circumference \f "%lu2">% ;; ;; Liste sur ELLIPSE --> Aire & Circonference ?? ;; Liste sur SPLINE --> Aire & Circonference ?? ;; ;; --- Interrogation Entite/Objet en Lisp --- ;; (entget (car (entsel)) '("*")) ;; (defun c:PolyArea (/ *error* filter ss acSpace minPt maxPt pt id str txt) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))) (or *util* (setq *util* (vla-get-Utility *acdoc*))) (defun *error* (msg) (and msg (/= msg "Fonction annulée") (/= msg "Function cancelled") (princ (strcat "Erreur: " msg)) ) (vla-EndUndomark *acdoc*) (princ) ) ;; entités fermées ;| (setq filter (list '(-4 . "<OR") '(0 . "CIRCLE,MPOLYGON,REGION") '(-4 . "<AND") '(0 . "ELLIPSE") '(41 . 0.0) (cons 42 (* 2 pi)) '(-4 . "AND>") '(-4 . "<AND") '(0 . "LWPOLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "AND>") '(-4 . "<AND") '(0 . "POLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "<NOT") '(-4 . "&") '(70 . 120) '(-4 . "NOT>") '(-4 . "AND>") '(-4 . "<AND") '(0 . "SPLINE") '(-4 . "&") '(70 . 9) '(-4 . "AND>") '(-4 . "OR>") ) ) |; ;; entités fermées ou ouvertes (setq filter (list '(-4 . "<OR") '(0 . "ARC,CIRCLE,LWPOLYLINE,MPOLYGON,REGION,ELLIPSE") '(-4 . "<AND") '(0 . "POLYLINE") '(-4 . "<NOT") '(-4 . "&") '(70 . 120) '(-4 . "NOT>") '(-4 . "AND>") '(-4 . "<AND") '(0 . "SPLINE") '(-4 . "&") '(70 . 8) '(-4 . "AND>") '(-4 . "OR>")) ) (prompt "Hauteur courante de MTEXT - Voir la Variable System TEXTSIZE ... \n" ) (prompt "\nPOLYAREA traite: ARC,CIRCLE,ELLIPSE,POLYLINE 2D,ELLIPSE,SPLINE,MPOLYGON,REGION \nSelectionnez les objets ou Entree pour tous ") (if (or (ssget filter) (ssget "_X" (cons (cons 410 (getvar 'ctab)) filter)) ) (progn (vla-StartUndomark *acdoc*) (setq acSpace (vla-get-Block (vla-get-ActiveLayout *acdoc*))) (vlax-for obj (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (vla-GetBoundingBox obj 'minPt 'maxPt) (setq pt (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2.)) (vlax-safearray->list minPt) (vlax-safearray->list maxPt) ) id (vla-GetObjectIdString *util* obj :vlax-false) str (strcat "%<\\AcObjProp Object(%<\\_ObjId " id ">%).Area \\f \"%lu2%pr1%ps[,m²]%\">%" ) txt (vla-addMText acSpace (vlax-3d-point pt) 0. str) ) (vla-put-AttachmentPoint txt acAttachmentPointMiddleCenter) (vla-put-insertionPoint txt (vlax-3d-point pt)) ) (vla-Delete ss) ) ) (*error* nil) )
  22. C'est bien ça sans avoir à retranscrire chaque nom de pièce qui serait déjà existant Merci d'avance
  23. Hello J essaye de resumer : -- Tu as un DWG en METRE -- Tu as des Polylignes 2D (sur un Calque specifique) avec un Texte SIMPLE "Identifiant" (sur un Calque specifique) a l interieur PARTOUT -- TU veux la Surface en M2 (au fait 1 ou 2 decimales ?) -- TU veux un tableau avec le Listing des pieces (Identifiants + Surfaces + Le total general) Ai je bien compris ? Bye, lecrabe
  24. En fait ma problématique réside surtout dans le faite de ne pas devoir écrire soi-même la désignation des pièces. Nous recevons les plans déjà établis avec une désignation bien particulière ( parfois plus de 100 appartement ) Il est alors long de nommer chaque pièce sachant que le travail est déjà fait. L'option que je recherche est vraiment celle comme sur la vidéo posté précédemment mais sans devoir passer par la création de MNT.
  25. je trouve aussi que le module cubature multi-emprise n'a pas sa place dans ce que je veux réaliser mais aucune autres options n'est apparement faite pour associer un texte , une polyligne et une surface rapidement. Cordialement
  26. Car il faut indiquer le nom de chaque pièce dans les calques ce qui peut prendre énormement de temps lorsque l'on réalise les quotités de 100aines d'appartements
  27. Hello, Dans la série plans du client à mettre au propre, je cherche à remettre les blocs en miroir à 0 en X,Y,Z (ça c'est facile 😁) mais SANS le déplacer, c'est là que je cale....j'ai trouvé sur le forum un lisp (echb) mais cela ne fait que les remettre à 0 (pas besoin d'un lisp pour ça...) et donc...pas à la bonne place. Je passe les blocs insérés à l'échelle 35.37...à chaque jour suffit sa peine🤣 Help please ! Angélique
  1. Charger plus d’activité
×
×
  • 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é