BIM G CO Posté(e) le 29 novembre 2006 Posté(e) le 29 novembre 2006 Voici le code que j'utilise pour créer les blocs pour chaque réseau dessiné.Pour chaque réseau différent nous avons un calque et suivant qu'il soit en plafond / en plinthe / encastré / ou sur le plan Masse il y a un style trait différent. (defun BLOC_LEGENDE (ARG_NIVEAU ARG_ECHELLE ARG_COLFIN / VAR_ListePt VAR_BLOCKNAME VAR_EpaisFIN VAR_EpaisTXT VAR_EpaisNOR VAR_TEXTE ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Fonction qui crée un bloc dans la table des blocs dont les caract. ;;; ;;; sont une polyligne pour cadre, une ligne pour le réseau tracé ;;; ;;; et un attribut pour la légende ;;; ;;; ;;; ;;; Arguments: Nom du calque où est mis le réseau ;;; ;;; Niveau Plafond / plinthe / sous dalle / plan Masse ;;; ;;; Echelle à laquelle le dessin est dessiné (1.0=1/50 ;;; ;;; 2.0=1/100 4.0=1/200 etc) ;;; ;;; Couleur pour les traits fins ;;; ;;; ;;; ;;; Retourne : le nom du bloc ajouté dans la table des blocs ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Variable local pour le nom du bloc (setq VAR_BLOCKNAME (strcat "LEGENDE_" (getvar "CLAYER") "_" (vl-princ-to-string ARG_NIVEAU) "_" (vl-princ-to-string ARG_ECHELLE) ) ;; Variable locale pour le texte VAR_TEXTE (tblsearch "STYLE" "Standard") ;; Variable locale pour la liste des points pour le tracé du bloc VAR_ListePt (list ;; LWPOLYLIGNE point Origine (list 0.0 0.0) ;; LWPOLYLIGNE point 1 (list (* 3 ARG_ECHELLE) 0.0) ;; LWPOLYLIGNE point 2 (list (* 3 ARG_ECHELLE) (* -0.5 ARG_ECHELLE)) ;; LWPOLYLIGNE point 3 (list (* 7.0 ARG_ECHELLE) (* -0.5 ARG_ECHELLE)) ;; LWPOLYLIGNE point 4 (list (* 7.0 ARG_ECHELLE) 0.0) ;; LWPOLYLIGNE point 5 (list (* 3 ARG_ECHELLE) 0.0) ;; LWPOLYLIGNE point 6 (list (* 3 ARG_ECHELLE) (* -0.5 ARG_ECHELLE)) ;; LWPOLYLIGNE point 7 (list 0.0 (* -0.5 ARG_ECHELLE)) ;; LINE Point 8 (assoc 10) (list (* 0.15 ARG_ECHELLE) (* -0.25 ARG_ECHELLE) 0.0) ;; LINE Point 9 (assoc 11) (list (* 2.85 ARG_ECHELLE) (* -0.25 ARG_ECHELLE) 0.0) ;; ATTDEF Point 10 (assoc 10) (list (* 3.1 ARG_ECHELLE) (* (/ (+ (* 2 (cdr (assoc 42 VAR_TEXTE))) 1.0) -4 ) ARG_ECHELLE ) 0.0 ) ;; ATTDEF Point 11 (assoc 11) (list (* 3.1 ARG_ECHELLE) (* -0.25 ARG_ECHELLE) 0.0) ) ;; Variable locale pour le forçage des épaisseur de trait FIN (sers uniquement pour embêter les puristes) VAR_EpaisFIN 13 ;; Variable locale pour le forçage des épaisseur des textes (sers uniquement pour embêter les puristes) VAR_EpaisTXT 18 ;; Variable locale pour le forçage des épaisseur de trait des réseaux (sers uniquement pour embêter les puristes) VAR_EpaisNOR 35 ) ;; CELTYPE = Type de ligne actuel ;; CECOLOR = Couleur actuelle ;; CELTSCALE = Echelle de type de ligne actuel ;|(princ "\n") (princ VAR_BLOCKNAME) (princ "\n") (princ VAR_TEXTE) (princ "\n") (princ VAR_ListePt) (exit)|; (entmake (list '(0 . "BLOCK") '(8 . "0") (cons 2 VAR_BLOCKNAME) '(70 . 2) '(4 . "") '(62 . 0) '(6 . "Byblock") (cons 10 (list 0.0 0.0 0.0)) ) ) (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0) '(8 . "0") (cons 62 ARG_COLFIN) '(6 . "Continuous") (cons 370 VAR_EpaisFIN) '(100 . "AcDbPolyline") '(90 . 11) '(70 . 1) '(43 . 0.0) '(38 . 0.0) '(39 . 0.0) (cons 10 (nth 0 VAR_ListePt)) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (nth 1 VAR_ListePt)) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (nth 2 VAR_ListePt)) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (nth 3 VAR_ListePt)) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (nth 4 VAR_ListePt)) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (nth 5 VAR_ListePt)) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (nth 6 VAR_ListePt)) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (nth 7 VAR_ListePt)) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (nth 0 VAR_ListePt)) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 210 (list 0.0 0.0 1.0)) ) ) (entmake (list '(0 . "LINE") '(100 . "AcDbEntity") '(67 . 0) '(8 . "0") '(62 . 0) '(6 . "ByBlock") (cons 48 (getvar "CELTSCALE")) (cons 370 VAR_EpaisNOR) '(100 . "AcDbLine") (cons 10 (nth 8 VAR_ListePt)) (cons 11 (nth 9 VAR_ListePt)) (cons 210 (list 0.0 0.0 1.0)) ) ) (entmake (list '(0 . "ATTDEF") '(100 . "AcDbEntity") '(67 . 0) '(8 . "0") (cons 62 (cdr (assoc 62 VAR_TEXTE))) '(6 . "Continuous") (cons 370 VAR_EpaisTXT) '(100 . "AcDbText") (cons 10 (nth 10 VAR_ListePt)) (cons 40 (cdr (assoc 42 VAR_TEXTE))) (cons 1 (strcat "Réseau " (vl-string-left-trim "Réseau " (substr (getvar "CLAYER") 6)) " " (vl-princ-to-string ARG_NIVEAU) ) ) (cons 50 (cdr (assoc 50 VAR_TEXTE))) (cons 41 (cdr (assoc 41 VAR_TEXTE))) '(51 . 0.0) (cons 7 (cdr (assoc 2 VAR_TEXTE))) (cons 71 (cdr (assoc 71 VAR_TEXTE))) '(72 . 0) (cons 11 (nth 11 VAR_ListePt)) (cons 210 (list 0.0 0.0 1.0)) '(100 . "AcDbAttributeDefinition") '(3 . "Désignation") '(2 . "DESIGNATION") (cons 70 (cdr (assoc 70 VAR_TEXTE))) '(73 . 0) '(74 . 2) '(280 . 0) ) ) (entmake (list '(0 . "ENDBLK") '(8 . "0") '(62 . 0) '(6 . "byblock") ) ) VAR_BLOCKNAME ) Cette routine est ici pour exemple particularismes- les calques sont nommés ainsi _xxx-Réseau ou _xxx-Eau froide- ARG_ECHELLE est une valeur enregistrée dans le style de cote propriétaire.- ce bloc est surtout fait pour une utilisation des plans en CTB avec le blanc en 0.18mm et rouge en 0.13mm- Si le bloc existe le entmake ne provoque pas d'erreurs : il est inopérant( sous AutoCAD 2007) [Edité le 29/11/2006 par Maximilien] Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant