Aller au contenu

Modification d\'un lisp


didicools

Messages recommandés

merci,

tu m'as fais gagner pas mal de temps.

 

je débute aussi en lisp

On doit pas avoir la meme definition du mot débuter.

 

j'ai pas encore regardé tab-cablage. Pour ma part, je suis sur mes blocs dynamiques ( Fc, rmbt, grille et, coffret ccr....) avec attributs pour faire mes devis avec l'extraction des données.enfin c'est une autre histoire...

Lien vers le commentaire
Partager sur d’autres sites

C'est peu etre pas la dernière version qu'il y a sur les messages précedent, je te met la dernière version qui va bien avec la dernière version de CABLAGE que tu as dans le message daté du 15/6/2009

 

TAB_CABLE:

 

 (vl-load-com)

(defun c:Tab_Cable ( / js AcDoc Space nb lst_layer lst_typ lst_1br lst_2br key_usr lst_length lst_length2 all_path j end_pos id_path fonts_path file_shx nw_style

                       n obj dxf_ent ename elist xd_list e_data oldim oldlay ins_pt_cell h_t w_c ename_cell n_row n_column)

 (princ "\nSélection d'une polyligne comme modèle pour désignation du calque à traiter.")

(while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE") (-3 ("RESEAU_CABLAGE"))))))

	(princ "\nSélection vide, ou n''est pas une polyligne valable!")

)

 (setq js

   (ssget "_X" 

     (list

       '(0 . "LWPOLYLINE") '(-3 ("RESEAU_CABLAGE"))

       (assoc 8 (entget (ssname js 0)))

     )

   )

 )

 (cond

   (js

     (setq

       AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))

       Space

       (if (= 1 (getvar "CVPORT"))

         (vla-get-PaperSpace AcDoc)

         (vla-get-ModelSpace AcDoc)

       )

       nb 0

       lst_layer '()

       lst_typ '()

       lst_1br '()

       lst_2br '()    

       lst_length '()
       lst_length2 '()

     )

     (cond

       ((null (tblsearch "LAYER" "Tableau-Reseaux-Cables"))

         (vla-add (vla-get-layers AcDoc) "Tableau-Reseaux-Cables")

       )

     )

     (cond

       ((null (tblsearch "STYLE" "Texte-Cell"))

         (setq all_path (getenv "ACAD") j 0)

         (while (setq end_pos (vl-string-position (ascii ";") all_path))

           (setq id_path (substr all_path 1 end_pos))

           (if (wcmatch (strcase id_path) "*FONTS*")

             (setq fonts_path (strcat id_path "\\"))

           )

           (setq all_path (substr all_path (+ 2 end_pos)))

         )

         (setq file_shx (getfiled "Selectionnez un fichier de police" fonts_path "shx" 8))

         (if (not file_shx)

           (setq file_shx "txt.shx")

         )

         (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Texte-Cell"))

         (mapcar

           '(lambda (pr val)

             (vlax-put nw_style pr val)

           )

           (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag)

           (list file_shx 0.0 (/ (* 15.0 pi) 180) 1.0 0.0)

         )

         (command "_.ddunits"

           (while (not (zerop (getvar "cmdactive")))

             (command pause)

           )

         )

       )

     )

     (repeat (setq n (sslength js))

       (setq

         obj (ssname js (setq n (1- n)))

         dxf_ent (entget obj)

         ename (vlax-ename->vla-object obj)

         elist (entget obj (list "RESEAU_CABLAGE"))

         xd_list (cdr (assoc -3 elist))

         e_data (mapcar 'cdr (cdr (car xd_list)))

         lst_layer (cons (cdr (assoc 8 dxf_ent)) lst_layer)

         lst_typ (cons (cadr e_data) lst_typ)

         lst_1br (cons (cadddr (cdr e_data)) lst_1br)

         lst_2br (cons (caddr e_data) lst_2br)

         key_usr

           (strcat

             (cond

               ((eq (cadddr (cdr e_data)) "poteauEP") "3")

               ((eq (cadddr (cdr e_data)) "poteauBT") "4")

               ((eq (cadddr (cdr e_data)) "Poste") "5")

               ((eq (cadddr (cdr e_data)) "Candelabre") "6")

               ((eq (cadddr (cdr e_data)) "Boite") "7")

               ((eq (cadddr (cdr e_data)) "boRne") "8")

               ((eq (cadddr (cdr e_data)) "COffret") "9")

               ((eq (cadddr (cdr e_data)) "Armoire") "G")

             )

             (cond

               ((eq (caddr e_data) "poteauEP") "3")

               ((eq (caddr e_data) "poteauBT") "4")

               ((eq (caddr e_data) "Poste") "5")

               ((eq (caddr e_data) "Candelabre") "6")

               ((eq (caddr e_data) "Boite") "7")

               ((eq (caddr e_data) "boRne") "8")

               ((eq (caddr e_data) "COffret") "9")

               ((eq (caddr e_data) "Armoire") "G")

             )

           )

         lst_length

           (cons

             (strcat

               "%<\\AcExpr "

               "%<\\AcExpr ("

               (rtos (vlax-ldata-get "cablage" (substr key_usr 1 1)))

               " + "

               (rtos (vlax-ldata-get "cablage" (substr key_usr 2 1)))

               " + "

               "%<\\AcObjProp Object(%<\\_ObjId "

               (itoa (vla-get-ObjectID ename))

               ">%).Length>%)>% * 1.04 \\f \"%lu6\">%"

             )

             lst_length

           )







         lst_length2

           (cons

             (strcat

               "%<\\AcExpr "

               "%<\\AcExpr ("

               "%<\\AcObjProp Object(%<\\_ObjId "

               (itoa (vla-get-ObjectID ename))

               ">%).Length>%)>% * 1.04 \\f \"%lu6\">%"

             )

             lst_length2

           )









         nb (1+ nb)

       )

     )

     (setq oldim (getvar "dimzin") oldlay (getvar "clayer"))

     (setvar "dimzin" 0) (setvar "clayer" "Tableau-Reseaux-Cables")

     (initget 9)

     (setq ins_pt_cell (getpoint "\nPoint d'insertion haut gauche du tableau: "))

     (initget 6)

     (setq h_t (getdist ins_pt_cell (strcat "\nHauteur du texte <" (rtos (getvar "textsize")) ">: ")))

     (if (null h_t) (setq h_t (getvar "textsize")) (setvar "textsize" h_t))

     (initget 7)

     (setq w_c (getdist ins_pt_cell "\nLargeur des cellules: "))

     (vla-addTable Space (vlax-3d-point (trans ins_pt_cell 1 0)) (+ 3 nb) 5 (+ h_t (* h_t 0.25)) w_c)

     (setq ename_cell (vlax-ename->vla-object (entlast)) n_row (1+ nb) n_column -1)

     (vla-rotate ename_cell (vlax-3d-point (trans ins_pt_cell 1 0)) (angle '(0.0 0.0 0.0) (getvar "UCSXDIR")))

     (vla-SetCellValue ename_cell 0 0 (vlax-make-variant "TABEAU RECAPITULATIF DE METRE" 8))

     (vla-SetCellTextStyle ename_cell 0 0 "Texte-Cell")

     (vla-SetCellTextHeight ename_cell 0 0 (vlax-make-variant h_t 5))

     (vla-SetCellAlignment ename_cell 0 0 5)

     (foreach n

       (mapcar'list

         (append lst_layer '("Calque"))

;;          (append lst_typ '("Type de cablage"))

         (append lst_1br '("1er Raccordement par"))

         (append lst_2br '("2ème Raccordement par"))

         (append lst_length '("Longueurs de cable"))

         (append lst_length2 '("Longueurs de cable2"))

       )

       (mapcar

         '(lambda (el)

           (vla-SetText ename_cell n_row (setq n_column (1+ n_column)) el)

           (vla-SetCellTextStyle ename_cell n_row n_column "Texte-Cell")

           (vla-SetCellTextHeight ename_cell n_row n_column (vlax-make-variant h_t 5))

           (if (eq n_row 1)

             (vla-SetCellAlignment ename_cell n_row n_column 5)

             (vla-SetCellAlignment ename_cell n_row n_column 6)

           )

         )

         n

       )

       (setq n_row (1- n_row) n_column -1)

     )

     (vla-SetText ename_cell (+ 2 nb) 3

       (strcat "Total= " "%<\\AcExpr (Sum(D3:D" (itoa (+ 2 nb)) ")) \\f \"%lu6\">%")

     )

     (vla-SetCellTextStyle ename_cell (+ 2 nb) 3 "Texte-Cell")

     (vla-SetCellTextHeight ename_cell (+ 2 nb) 3 (vlax-make-variant h_t 5))

     (vla-SetCellAlignment ename_cell (+ 2 nb) 3 6)


(setq n_row (1- n_row) n_column -1)




     (vla-SetText ename_cell (+ 2 nb) 4

       (strcat "Total= " "%<\\AcExpr (Sum(E3:E" (itoa (+ 2 nb)) ")) \\f \"%lu6\">%")

     )

     (vla-SetCellTextStyle ename_cell (+ 2 nb) 4 "Texte-Cell")

     (vla-SetCellTextHeight ename_cell (+ 2 nb) 4 (vlax-make-variant h_t 5))

     (vla-SetCellAlignment ename_cell (+ 2 nb) 4 6)









     (vlax-release-object ename_cell)

     (vlax-release-object Space)

     (setvar "dimzin" oldim) (setvar "clayer" oldlay)

   ) 

   (T (princ "\nAucune LWPOLYLINE trouvé avec l'application RESEAU_CABLAGE"))

 )

 (prin1)

)

Lien vers le commentaire
Partager sur d’autres sites

le "key_usr (strcat "10" key_usr)))" ne fonctionne pas, si je remplace le "10" par un "G", ou une letre quelconque, ca fonctionne. mais pourquoi ? il accepte pas qu'on met 2 caractère peu etre ?

 

Désolé, j'avais "zappé" ta demande, mais le up de seafishII a rafraichi le sujet.

 

Pour te répondre:

(setq key_usr (strcat "X" key_usr)) est dans une boucle (repeat 2

En fait pour les deux extrémités de la polyligne, je stocke le type de cablage sur UN caractère concaténer au précédent caractère unique. Au final cette variable ne doit contenir que 2 caractères (avec "10" tu la mettais à 3 ou 4: si même type de branchement à chaque extrémités)

Ceux-ci sont extrait pour le champ dynamique par la suite (substr key_usr 1 1) et (substr key_usr 2 1)

 

Ta solution d'employer un caractère Alpha pour étendre le codage au delà de 9 est donc correcte.

 

Par contre une petite remarque sur (initget "poteauEP poteauBT Poste Candelabre Boite BOrne COffret Armoire")

 

Tu risque d'avoir des surprise sur l'interprétation du mot-clé, par exemple "BO" (BOrne) peut être interprété aussi pour "Boite".

 

Pousse un peu plus loin les majuscules quand des mots-clé commencent de manière identique.

 

Par exemple:

       (initget "poteauEP poteauBT Poste CAndelabre BOIte BORne COffret Armoire")
       (setq key_cab (getkword "\nBranchement pour cette extrémité sur [poteauEP/poteauBT/Poste/CAndelabre/BOIte/BORne/COffret/Armoire]? : "))

 

J'espère avoir eclairci ta demande ;)

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

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é