Aller au contenu

Dersou

Membres
  • Compteur de contenus

    2
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Dersou

  1. Merci pour vos réponses. Comme je tâtonne avec le LISP, je voulais effectivement débuter avec des modifications sur base de Pline_Block pour aborder la chose. Pour mon premier test d'ajout d'un attribut j'ai ajouté les éléments gras ci dessous: ;;; Pline_block -Gilles Chanteau- 13/04/07 ;;; Insère le bloc "pline_block" après sélection d'une polyligne ;;; Attribut 1 : Nom de la pièce ;;; Attribut 2 : Longueur de la polyligne ;;; Attribut 3 : Aire de la polyligne ;;; Attribut 3 : Calque de la polyligne (defun c:pline_block (/ AcDoc Space bloc nom ent obj ins op reg ech id long aire layer ref) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (if (or (tblsearch "BLOCK" (setq bloc "Pline_block")) (findfile (setq bloc "Pline_block.dwg")) ) (progn ;; attribut "nom de la pièce" (if (not (setq nom (getname "Nom de la pièce"))) (setq nom "") ) (while (not (setq ent (car (entsel))))) (setq obj (vlax-ename->vla-object ent)) (if (= "AcDbPolyline" (vla-get-ObjectName obj)) (progn (if (not (setq ins (getpoint "\nSpécifiez le point d'insertion ou < Centre >: " ) ) ) (progn (if (= (vla-get-closed obj) :vlax-false) (progn (vla-put-closed obj :vlax-true) (setq op T) ) ) (setq reg (vlax-invoke space 'addRegion (list obj)) ins (vlax-get (car reg) 'Centroid) ) (if op (vla-put-closed obj :vlax-false) ) (vla-delete (car reg)) ) ) (if (not (vlax-ldata-get "Pline_block" "ech")) (vlax-ldata-put "Pline_block" "ech" 1) ) (if (not (setq ech (getreal (strcat "\nEntrez le facteur d'échelle <" (rtos (vlax-ldata-get "Pline_block" "ech")) ">: " ) ) ) ) (setq ech (vlax-ldata-get "Pline_block" "ech")) (vlax-ldata-put "Pline_block" "ech" ech) ) (setq id (vla-get-ObjectID obj) ;; Attribut périmètre (m -> m) long (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).Length \\f \"%lu2%pr2%ct8[1]\">%" ) ;; Attribut surface (m² -> m²) aire (strcat "%<\\AcObjProp Object(%<\\_ObjId" (itoa id) ">%).Area \\f \"%lu2%pr2%ct8[1]\">%" ) ) ;; Attribut calque de la polyligne layer (strcat "%<\\AcObjProp Object(%<\\_ObjId" (itoa id) ">%).Layer \\f \"%tc1\">%" ) ) (setq ref (vla-InsertBlock Space (vlax-3d-point (trans ins 1 0)) bloc ech ech 1 (angle '(0 0 0) (trans (getvar 'ucsxdir) 0 (trans '(0 0 1) 1 0 T))) ) ) ;; attribution de leur valeur aux attributs (mapcar '(lambda (x y) (vla-put-TextString x y)) (vlax-invoke ref 'GetAttributes) (list nom long aire layer) ) (vla-regen AcDoc acActiveViewport) ) (alert "L'objet sélectionné n'est pas une polyligne.") ) ) (alert "Le bloc \"Pline_block\" est introuvable.") ) (princ) ) Lors de la définition du nouvel attribut dans le bloc je ne parviens pas à faire le lien avec le paramètre de la polyligne. Je suis peut-être sur une fausse route.
  2. Bonjour à tous, J'ai un projet un peu ambitieux vu mon niveau (...) pour une énième application de calcul d'aire sur base de polylignes. L'idée première est de récupérer les aires de polylignes dans un bloc avec des champs dynamiques et de les exporter sous forme de tableau excel (ca c'est OK, j'ai regardé du coté du lisp Pline_Block et TotalArea) L'étape suivante serait de générer des hachures associées à ces polylignes avec des couleurs associées aux noms de pièces Et en bonus développer l'arborescence de classement de ces surfaces (par exemple bâtiment - étage - pièce) et gérer des déductions de polylignes à l'intérieur d'une surface.. Mais commençons par le début et à ma question: je n'arrive pas à comprendre comment fonctionne l'association entre le champ créé dans le bloc et la polyligne à laquelle on va l'associer. Par exemple, j'ai essayé d'ajouter au lisp Pline_Block un attribut pour indiquer le calque auquel la polyligne appartient mais je ne parviens pas à modifier le bloc de telle sorte que la valeur du champ dynamique s'ajuste correctement. C'est une question de base probablement mais je n'ai pas trouvé d'explication sur ce point. Si vous avez des éléments de réponse ou des liens vers des sujets où la question est traitée, je suis preneur. Merci!
×
×
  • 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é