Giropode Posté(e) le 19 novembre 2015 Posté(e) le 19 novembre 2015 Bonjour à tous, Au bureau, nous nous sommes mis à REVIT il y a peu. Avec mes deux collègues galériens, nous sommes en train d'établir les fondement de notre gabarit pour ensuite transmettre à nos autres collègues.A l'heure actuelle, je suis sur le sujet des exports DWG, cher à notre direction (conservation de l'interopérabilité avec nos collègues encore sous AutoCAD). J'arrive donc à générer un fichier DWG correspondant "graphiquement" à ce que je voudrais. Cependant, une fois le fichier généré, il manque quelques petites manipulations à faire dans le fichier pour être en phase avec les habitudes du BE (éléments dans les bons calques, bonnes échelles de traits, de hachures, etc.) J'ai pondu un LISP qui créé les calques manquants de notre charte. Ce même LISP est censé déplacer les éléments d'un claque à un autre en fonction d'un filtre de sélection. Mais c'est à ce moment là que ça bloque. Petit déroulé du fonctionnement du LISP:Changement des variables MEASUREMENT, PSLTSCALE et LTSCALEImport des types de ligne CACHE et AXES2Création des calques manquantsDéplacement des éléments d'un calque à un autre (par exemple éléments magenta dans le calque BA-murs vers le calque BA-md) Code que j'ai pondu:(defun c:XPORTRVT (/ *error*) (setq XPORTRVT_CMDECHO (getvar 'CMDECHO) ) (setq XPORTRVT_MEASUREMENT (getvar 'MEASUREMENT) ) (setq XPORTRVT_PSLTSCALE (getvar 'PSLTSCALE) ) (setq XPORTRVT_LTSCALE (getvar 'LTSCALE) ) (defun *error* (MsgErreur) (setvar 'CMDECHO XPORTRVT_CMDECHO) (setvar 'MEASUREMENT XPORTRVT_MEASUREMENT) (setvar 'PSLTSCALE XPORTRVT_PSLTSCALE) (setvar 'LTSCALE XPORTRVT_LTSCALE) (princ "\nErreur : ") (princ MsgErreur) (princ "\nLa finalisation de l'export a échouée.") (princ) ); Fin de defun (setvar 'CMDECHO 0) ; Modification des variables selon gabarit BETREC (setvar 'MEASUREMENT 0) (setvar 'PSLTSCALE 0) (setvar 'LTSCALE 50) ; Importation des styles de ligne CACHE et AXES2 (command-s "_LINETYPE" "_LO" "CACHE" "B:/Gabarits/STR/acad.lin" "" "" "" "" "" "" "" "") (command-s "_LINETYPE" "_LO" "AXES2" "B:/Gabarits/STR/acad.lin" "" "" "" "" "" "" "" "") ; Création de la liste des calques BETREC (XPORTRVT_CreationCalque "BA-axes" "AXES2" "0.20" "110") (XPORTRVT_CreationCalque "BA-cartouche" "Continuous" "0.35" "254") (XPORTRVT_CreationCalque "BA-charpente" "Continuous" "0.25" "13") (XPORTRVT_CreationCalque "BA-cot" "Continuous" "0.20" "2") (XPORTRVT_CreationCalque "BA-cot impact" "Continuous" "0.15" "220") (XPORTRVT_CreationCalque "BA-cot reservations" "Continuous" "0.15" "191") (XPORTRVT_CreationCalque "BA-cot dalles escaliers" "Continuous" "0.35" "10") (XPORTRVT_CreationCalque "BA-existant" "CACHE" "0.25" "155") (XPORTRVT_CreationCalque "BA-fenetres" "Continuous" "0.20" "141") (XPORTRVT_CreationCalque "BA-hach" "Continuous" "0.15" "211") (XPORTRVT_CreationCalque "BA-hach dalles" "Continuous" "0.05" "133") (XPORTRVT_CreationCalque "BA-hach pot et cv" "Continuous" "0.15" "9") (XPORTRVT_CreationCalque "BA-md" "CACHE" "0.15" "6") (XPORTRVT_CreationCalque "BA-murs" "Continuous" "0.70" "7") (XPORTRVT_CreationCalque "BA-non porteur" "Continuous" "0.35" "253") (XPORTRVT_CreationCalque "BA-pieux puits" "Continuous" "0.35" "40") (XPORTRVT_CreationCalque "BA-pointillés" "CACHE" "0.15" "4") (XPORTRVT_CreationCalque "BA-poutres" "Continuous" "0.35" "1") (XPORTRVT_CreationCalque "BA-rep arma" "Continuous" "0.20" "82") (XPORTRVT_CreationCalque "BA-reservations" "Continuous" "0.15" "201") (XPORTRVT_CreationCalque "BA-reservations dalle" "Continuous" "0.15" "201") (XPORTRVT_CreationCalque "BA-semelles" "Continuous" "0.35" "30") (XPORTRVT_CreationCalque "BA-textes" "Continuous" "0.20" "3") (XPORTRVT_CreationCalque "BA-xrefs" "Continuous" "0.05" "7") ; Réatribution des élèments dans les bons calques (XPORTRVT_DeplacementElements "BA-murs" "BA-md" "LINE" "6" "CACHE") (setvar 'CMDECHO XPORTRVT_CMDECHO) (alert "Modification de l'export terminé !") (princ) ); Fin de la commande XPORTRVT ; -------------------------------------------------- ; Fonction permettant de créer les calques manquants (defun XPORTRVT_CreationCalque ( XPORTRVT_NomCalque XPORTRVT_TypeLigne XPORTRVT_EpLigne XPORTRVT_CouleurCalque / *error*) (defun *error* (MsgErreur) (princ "\nErreur : ") (princ MsgErreur) (princ) ); Fin de defun (if (not (tblsearch "LAYER" XPORTRVT_NomCalque) ) (entmakex (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") '(70 . 0) (cons 2 XPORTRVT_NomCalque) (cons 62 (atoi XPORTRVT_CouleurCalque) ) (cons 6 XPORTRVT_TypeLigne) (cons 370 (atoi XPORTRVT_EpLigne) ) ); Fin de list ); Fin de entmake ); Fin de if ); Fin de la fonction XPORTRVT_CreationCalque ; -------------------------------------------------- ; ---------------------------------------------------------- ; Fonction permettant de les éléments d'un calque à un autre (defun XPORTRVT_DeplacementElements ( XPORTRVT_CalqueOrigine XPORTRVT_CalqueDestination XPORTRVT_TypeElement XPORTRVT_CouleurElement XPORTRVT_TypeLigneElement / *error*) (defun *error* (MsgErreur) (princ "\nErreur : ") (princ MsgErreur) (princ) ); Fin de defun (ssget "X" (list '(-4 . "<AND") '(0 . "LINE") '(8 . "BA-murs") '(62 . 6) '(6 . "CACHE") '(-4 . "AND>") ) ) (command "CHPROP" "CA" XPORTRVT_CalqueDestination) (command "CHPROP" "CO" "DuCalque") (command "CHPROP" "T" "DuCalque") ); Fin de la fonction XPORTRVT_DeplacementElements ; ---------------------------------------------------------- Je reste à votre disposition pour toute précision. Bonne journée à tous. Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Patrick_35 Posté(e) le 19 novembre 2015 Posté(e) le 19 novembre 2015 Salut Pour créer le filtre(setq js (ssget "x" (list (cons 8 "BA-murs") (cons 62 6)))) Et ensuite avec la commande chprop par exemple, ou mieux avec les codes dxf. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Giropode Posté(e) le 20 novembre 2015 Auteur Posté(e) le 20 novembre 2015 Salut Pour créer le filtre(setq js (ssget "x" (list (cons 8 "BA-murs") (cons 62 6)))) Et ensuite avec la commande chprop par exemple, ou mieux avec les codes dxf. @+ Bonjour, Merci pour l'aide, j'arrive à faire ma sélection désormais. Petite question supplémentaire, comment j'indique un type de ligne "DuCalque" avec les codes DXF ??? Pour l'instant j'ai tapé un truc du genre :(setq XPORTRVT_DonneesEntite (subst (cons 6 "BYLAYER") (assoc 6 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite) ) (entmod XPORTRVT_DonneesEntite) Mais clairement je sais que ce n'est pas ByLayer qu'il faut indiquer... Merci d'avance ! Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Patrick_35 Posté(e) le 20 novembre 2015 Posté(e) le 20 novembre 2015 Petite question supplémentaire, comment j'indique un type de ligne "DuCalque" avec les codes DXF ???Salut Pour la couleur Ducalque(cons 62 256) Pour la couleur Dubloc(cons 62 0) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Giropode Posté(e) le 20 novembre 2015 Auteur Posté(e) le 20 novembre 2015 Hello, Merci, mais je cherche pour les types de lignes (j'avais réussi à trouvé tant bien que mal pour les couleurs ^^) Merci par avance. Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Patrick_35 Posté(e) le 20 novembre 2015 Posté(e) le 20 novembre 2015 Ah Alors(cons 6 "Bylayer") @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Giropode Posté(e) le 20 novembre 2015 Auteur Posté(e) le 20 novembre 2015 Merci ! Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Giropode Posté(e) le 20 novembre 2015 Auteur Posté(e) le 20 novembre 2015 Arrrrrrrrgggg ! :blink: J'arrive pas à faire fonctionner le Lisp ! Il m'indique l'erreur suivante:Erreur : type d'argument incorrect: lselsetp nil Voici le code:(defun c:XPORTRVT (/ *error*) (setq XPORTRVT_CMDECHO (getvar 'CMDECHO) ) (setq XPORTRVT_MEASUREMENT (getvar 'MEASUREMENT) ) (setq XPORTRVT_PSLTSCALE (getvar 'PSLTSCALE) ) (setq XPORTRVT_LTSCALE (getvar 'LTSCALE) ) (defun *error* (MsgErreur) (setvar 'CMDECHO XPORTRVT_CMDECHO) (setvar 'MEASUREMENT XPORTRVT_MEASUREMENT) (setvar 'PSLTSCALE XPORTRVT_PSLTSCALE) (setvar 'LTSCALE XPORTRVT_LTSCALE) (princ "\nErreur : ") (princ MsgErreur) (princ "\nLa finalisation de l'export a échouée.") (princ) ); Fin de defun (setvar 'CMDECHO 0) ; Modification des variables selon gabarit BETREC (setvar 'MEASUREMENT 0) (setvar 'PSLTSCALE 0) (setvar 'LTSCALE 50) ; Importation des styles de ligne CACHE et AXES2 (command-s "_LINETYPE" "_LO" "CACHE" "B:/Gabarits/STR/acad.lin" "" "" "" "" "" "" "" "") (command-s "_LINETYPE" "_LO" "AXES2" "B:/Gabarits/STR/acad.lin" "" "" "" "" "" "" "" "") ; Création de la liste des calques BETREC (XPORTRVT_CreationCalque "BA-axes" "AXES2" "0.20" "110") (XPORTRVT_CreationCalque "BA-cartouche" "Continuous" "0.35" "254") (XPORTRVT_CreationCalque "BA-charpente" "Continuous" "0.25" "13") (XPORTRVT_CreationCalque "BA-cot" "Continuous" "0.20" "2") (XPORTRVT_CreationCalque "BA-cot impact" "Continuous" "0.15" "220") (XPORTRVT_CreationCalque "BA-cot reservations" "Continuous" "0.15" "191") (XPORTRVT_CreationCalque "BA-cot dalles escaliers" "Continuous" "0.35" "10") (XPORTRVT_CreationCalque "BA-existant" "CACHE" "0.25" "155") (XPORTRVT_CreationCalque "BA-fenetres" "Continuous" "0.20" "141") (XPORTRVT_CreationCalque "BA-hach" "Continuous" "0.15" "211") (XPORTRVT_CreationCalque "BA-hach dalles" "Continuous" "0.05" "133") (XPORTRVT_CreationCalque "BA-hach pot et cv" "Continuous" "0.15" "9") (XPORTRVT_CreationCalque "BA-md" "CACHE" "0.15" "6") (XPORTRVT_CreationCalque "BA-murs" "Continuous" "0.70" "7") (XPORTRVT_CreationCalque "BA-non porteur" "Continuous" "0.35" "253") (XPORTRVT_CreationCalque "BA-pieux puits" "Continuous" "0.35" "40") (XPORTRVT_CreationCalque "BA-pointillés" "CACHE" "0.15" "4") (XPORTRVT_CreationCalque "BA-poutres" "Continuous" "0.35" "1") (XPORTRVT_CreationCalque "BA-rep arma" "Continuous" "0.20" "82") (XPORTRVT_CreationCalque "BA-reservations" "Continuous" "0.15" "201") (XPORTRVT_CreationCalque "BA-reservations dalle" "Continuous" "0.15" "201") (XPORTRVT_CreationCalque "BA-semelles" "Continuous" "0.35" "30") (XPORTRVT_CreationCalque "BA-textes" "Continuous" "0.20" "3") (XPORTRVT_CreationCalque "BA-xrefs" "Continuous" "0.05" "7") ; Réatribution des élèments dans les bons calques (XPORTRVT_DeplacementElements "BA-poutres" "BA-md" "LINE,CIRCLE" 6 "CACHE" "" 256) ; Déplacement des lignes d'impact (XPORTRVT_DeplacementElements "BA-poutres" "BA-md" "INSERT" 6 "CACHE" "" 256) ; Déplacement des blocs d'impact (XPORTRVT_DeplacementElements "BA-poutres" "BA-md" "HATCH" 6 "" "AR-SAND" 256) ; Déplacement des hachures d'impact de murs (XPORTRVT_DeplacementElements "BA-poutres" "BA-md" "HATCH" 6 "" "CROSS" 256) ; Déplacement des hachures d'impact de relevés (XPORTRVT_DeplacementElements "BA-murs" "BA-hach pot et cv" "HATCH" 9 "" "SOLID" 170) ; Déplacement des hachures d'impact de relevés (setvar 'CMDECHO XPORTRVT_CMDECHO) (princ "Modification de l'export terminé !") (princ) ); Fin de la commande XPORTRVT ; -------------------------------------------------- ; Fonction permettant de créer les calques manquants (defun XPORTRVT_CreationCalque ( XPORTRVT_NomCalque XPORTRVT_TypeLigne XPORTRVT_EpLigne XPORTRVT_CouleurCalque / *error*) (defun *error* (MsgErreur) (princ "\nErreur : ") (princ MsgErreur) (princ) ); Fin de defun (if (not (tblsearch "LAYER" XPORTRVT_NomCalque) ) (entmakex (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") '(70 . 0) (cons 2 XPORTRVT_NomCalque) (cons 62 (atoi XPORTRVT_CouleurCalque) ) (cons 6 XPORTRVT_TypeLigne) (cons 370 (atoi XPORTRVT_EpLigne) ) ); Fin de list ); Fin de entmake ); Fin de if ); Fin de la fonction XPORTRVT_CreationCalque ; -------------------------------------------------- ; ---------------------------------------------------------- ; Fonction permettant de les éléments d'un calque à un autre (defun XPORTRVT_DeplacementElements ( XPORTRVT_CalqueOrigine XPORTRVT_CalqueDestination XPORTRVT_TypeElement XPORTRVT_CouleurElement XPORTRVT_TypeLigne XPORTRVT_MotifHach XPORTRVT_NouvelleCouleur / *error*) (defun *error* (MsgErreur) (princ "\nErreur : ") (princ MsgErreur) (princ) ); Fin de defun ; On créé les filtres de sélection en fonction du type d'élément (cond ((= XPORTRVT_TypeElement "HATCH") (setq XPORTRVT_FiltreSelection (list (cons 0 XPORTRVT_TypeElement) (cons 2 XPORTRVT_MotifHach) (cons 8 XPORTRVT_CalqueOrigine) (cons 62 XPORTRVT_CouleurElement) ) ) ) ((or (= XPORTRVT_TypeElement "LINE,CIRCLE") (= XPORTRVT_TypeElement "INSERT") ) (setq XPORTRVT_FiltreSelection (list (cons 0 XPORTRVT_TypeElement) (cons 6 XPORTRVT_TypeLigne) (cons 8 XPORTRVT_CalqueOrigine) (cons 62 XPORTRVT_CouleurElement) ) ) ) ) (if (setq XPORTRVT_Selection (ssget "_X" XPORTRVT_FiltreSelection ) ) ; On créé le jeu de sélection (setq XPORTRVT_n 0) (while (ssname XPORTRVT_Selection XPORTRVT_n) (setq XPORTRVT_n (1+ XPORTRVT_n)) ; On incrémente le compteur XPORTRVT_n de +1 (setq XPORTRVT_NomEntite (ssname XPORTRVT_Selection XPORTRVT_n) ); On récupére le Entity name de l'objet DXF (setq XPORTRVT_DonneesEntite (entget XPORTRVT_NomEntite)) ; On récupére les infos de l'objet DXF numéro n ; On change le type de ligne de l'élément (setq XPORTRVT_DonneesEntite (subst (cons 6 "Bylayer") (assoc 6 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite) ) ; On change le calque de l'élément (setq XPORTRVT_DonneesEntite (subst (cons 8 XPORTRVT_CalqueDestination) (assoc 8 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite) ) ; On change la couleur de l'élément (setq XPORTRVT_DonneesEntite (subst (cons 62 XPORTRVT_NouvelleCouleur) (assoc 62 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite) ) (if (= XPORTRVT_TypeElement "HATCH") (cond ((= XPORTRVT_MotifHach "AR-SAND") (setq XPORTRVT_DonneesEntite (subst (cons 41 5) (assoc 41 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite)) ) ((= XPORTRVT_MotifHach "CROSS") (setq XPORTRVT_DonneesEntite (subst (cons 41 50) (assoc 41 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite)) ) ) ); Fin de if (entmod XPORTRVT_DonneesEntite) ); Fin de while ); Fin de if ); Fin de la fonction XPORTRVT_DeplacementElements ; ---------------------------------------------------------- Et le fichier avec lequel j'essaie de le faire fonctionner : Fichier DWG Merci par avance, je commence à être un poil désespéré ! :blink: Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
(gile) Posté(e) le 20 novembre 2015 Posté(e) le 20 novembre 2015 Salut, Erreur : type d'argument incorrect: lselsetp nilsignifie que la fonction qui attend un jeu de sélection comme argument reçoit nil. Le problème vient de l'expression (if (setq XPORTRVT_Selection ...)) dans XPORTRVT_DeplacementElements. (if expression_test expression_alors [expression_sinon] ) expression_alors doit être une expression unique. Dans ton code, si la condition est remplie (il y a un jeu de sélection) seule l'expression (setq XPORTRVT_n 0) est exécutée et la boucle (while ...) n'est executée que si la condition n'est pas remplie, d'où l'erreur. Il faut utiliser (progn ...) pour regrouper plusieurs expressions en une seule. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Giropode Posté(e) le 20 novembre 2015 Auteur Posté(e) le 20 novembre 2015 Oh l'erreur de débutant ! :wacko: Ceci dit, j'ai toujours une erreur... :blink: Erreur : type d'argument incorrect: lentityp nil Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
(gile) Posté(e) le 20 novembre 2015 Posté(e) le 20 novembre 2015 Erreur : type d'argument incorrect: lentityp nilsignifie que la fonction qui attend une entité (ENAME) comme argument reçoit nil. Je pense que ça vien du fait que tu incrémentes ton compteur (XPORTRVT_n) avant de l'utiliser pour assigner la variable XPORTRVT_NomEntite. Exemple ave un jeu de sélection qui contient 3 entités, quand XPORTRVT_n vaut 2, la condition du while : (ssname XPORTRVT_Selection XPORTRVT_n) n'est pas nil donc tu exécutes le orps de la boucle : tu incrementes XPORTRVT_n qui vaut maintenant 3 et quand tu fait :(setq XPORTRVT_NomEntite (ssname XPORTRVT_Selection XPORTRVT_n)) XPORTRVT_NomEntite vaut nil... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Giropode Posté(e) le 20 novembre 2015 Auteur Posté(e) le 20 novembre 2015 Merciiiiiiiiiiiiiiiiiiiiiiiiii !!!! Comme quoi ça tenait à pas grand chose ! :(rires forts): Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Giropode Posté(e) le 21 novembre 2015 Auteur Posté(e) le 21 novembre 2015 Bonjour à tous ! Comme je l'ai indiqué hier soir, le script fonctionne parfaitement. Pas d'erreurs, tous les éléments que je voulais déplacer/modifier, se déplacent/modifient. J'ai seulement une chose qui me pose problème. Comme vous l'aurez peut être remarqué dans le code, je modifie la variable MEASUREMENT de système métrique au système anglo-saxon. En effet, au bureau nous fonctionnons ainsi car cela permet d'avoir des valeurs d'échelles plus "logiques". Or l'export depuis Revit laisse cette variable sur le système métrique. Du coup, avec le Lisp j'ai beau changer la valeur d'échelle, mais les hachures ne s'affichent quand même pas de la façon souhaitée. Or si je le fais manuellement, les hachures s'affichent correctement. Est-ce qu'il y a une valeur que je dois modifier ?? Merci par avance de votre aide. Ci-joint la dernière version du code : [size=2]; Programme lisp permettant d'affiner un export REVIT > DWG chez BETREC[/size] ; Réalisé par Guillaume OJARDIAS - v15.11.17 (defun c:XPORTRVT (/ *error*) (setq XPORTRVT_CMDECHO (getvar 'CMDECHO) ) (setq XPORTRVT_MEASUREMENT (getvar 'MEASUREMENT) ) (setq XPORTRVT_PSLTSCALE (getvar 'PSLTSCALE) ) (setq XPORTRVT_LTSCALE (getvar 'LTSCALE) ) (defun *error* (MsgErreur) (setvar 'CMDECHO XPORTRVT_CMDECHO) (setvar 'MEASUREMENT XPORTRVT_MEASUREMENT) (setvar 'PSLTSCALE XPORTRVT_PSLTSCALE) (setvar 'LTSCALE XPORTRVT_LTSCALE) (princ "\nErreur : ") (princ MsgErreur) (princ "\nLa finalisation de l'export a échouée.") (princ) ); Fin de defun (setvar 'CMDECHO 0) ; Modification des variables selon gabarit BETREC (setvar 'MEASUREMENT 0) (setvar 'PSLTSCALE 0) (setvar 'LTSCALE 50) ; Importation des styles de ligne CACHE et AXES2 (command-s "_LINETYPE" "_LO" "CACHE" "B:/Gabarits/STR/acad.lin" "" "" "" "" "" "" "" "") (command-s "_LINETYPE" "_LO" "AXES2" "B:/Gabarits/STR/acad.lin" "" "" "" "" "" "" "" "") ; Création de la liste des calques BETREC (XPORTRVT_CreationCalque "BA-axes" "AXES2" "0.20" "110") (XPORTRVT_CreationCalque "BA-cartouche" "Continuous" "0.35" "254") (XPORTRVT_CreationCalque "BA-charpente" "Continuous" "0.25" "13") (XPORTRVT_CreationCalque "BA-cot" "Continuous" "0.20" "2") (XPORTRVT_CreationCalque "BA-cot impact" "Continuous" "0.15" "220") (XPORTRVT_CreationCalque "BA-cot reservations" "Continuous" "0.15" "191") (XPORTRVT_CreationCalque "BA-cot dalles escaliers" "Continuous" "0.35" "10") (XPORTRVT_CreationCalque "BA-existant" "CACHE" "0.25" "155") (XPORTRVT_CreationCalque "BA-fenetres" "Continuous" "0.20" "141") (XPORTRVT_CreationCalque "BA-hach" "Continuous" "0.15" "211") (XPORTRVT_CreationCalque "BA-hach dalles" "Continuous" "0.05" "133") (XPORTRVT_CreationCalque "BA-hach pot et cv" "Continuous" "0.15" "9") (XPORTRVT_CreationCalque "BA-md" "CACHE" "0.15" "6") (XPORTRVT_CreationCalque "BA-murs" "Continuous" "0.70" "7") (XPORTRVT_CreationCalque "BA-non porteur" "Continuous" "0.35" "253") (XPORTRVT_CreationCalque "BA-pieux puits" "Continuous" "0.35" "40") (XPORTRVT_CreationCalque "BA-pointillés" "CACHE" "0.15" "4") (XPORTRVT_CreationCalque "BA-poutres" "Continuous" "0.35" "1") (XPORTRVT_CreationCalque "BA-rep arma" "Continuous" "0.20" "82") (XPORTRVT_CreationCalque "BA-reservations" "Continuous" "0.15" "201") (XPORTRVT_CreationCalque "BA-reservations dalle" "Continuous" "0.15" "201") (XPORTRVT_CreationCalque "BA-semelles" "Continuous" "0.35" "30") (XPORTRVT_CreationCalque "BA-textes" "Continuous" "0.20" "3") (XPORTRVT_CreationCalque "BA-xrefs" "Continuous" "0.05" "7") ; Réatribution des élèments dans les bons calques (XPORTRVT_DeplacementElements "BA-poutres" "BA-md" "LINE,CIRCLE" 6 "CACHE" "" 256) ; Déplacement des lignes d'impact (XPORTRVT_DeplacementElements "BA-poutres" "BA-md" "INSERT" 6 "CACHE" "" 256) ; Déplacement des blocs d'impact (XPORTRVT_DeplacementElements "BA-poutres" "BA-md" "HATCH" 6 "" "AR-SAND" 256) ; Déplacement des hachures d'impact de murs (XPORTRVT_DeplacementElements "BA-poutres" "BA-md" "HATCH" 6 "" "CROSS" 256) ; Déplacement des hachures d'impact de relevés (XPORTRVT_DeplacementElements "BA-murs" "BA-hach pot et cv" "HATCH" 9 "" "SOLID" 170) ; Déplacement des hachures d'impact de relevés (setvar 'CMDECHO XPORTRVT_CMDECHO) (princ "Modification de l'export terminé !") (princ) ); Fin de la commande XPORTRVT ; -------------------------------------------------- ; Fonction permettant de créer les calques manquants (defun XPORTRVT_CreationCalque ( XPORTRVT_NomCalque XPORTRVT_TypeLigne XPORTRVT_EpLigne XPORTRVT_CouleurCalque / *error*) (defun *error* (MsgErreur) (princ "\nErreur : ") (princ MsgErreur) (princ) ); Fin de defun (if (not (tblsearch "LAYER" XPORTRVT_NomCalque) ) (entmakex (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") '(70 . 0) (cons 2 XPORTRVT_NomCalque) (cons 62 (atoi XPORTRVT_CouleurCalque) ) (cons 6 XPORTRVT_TypeLigne) (cons 370 (atoi XPORTRVT_EpLigne) ) ); Fin de list ); Fin de entmake ); Fin de if ); Fin de la fonction XPORTRVT_CreationCalque ; -------------------------------------------------- ; ---------------------------------------------------------- ; Fonction permettant de les éléments d'un calque à un autre (defun XPORTRVT_DeplacementElements ( XPORTRVT_CalqueOrigine XPORTRVT_CalqueDestination XPORTRVT_TypeElement XPORTRVT_CouleurElement XPORTRVT_TypeLigne XPORTRVT_MotifHach XPORTRVT_NouvelleCouleur / *error*) (defun *error* (MsgErreur) (princ "\nErreur : ") (princ MsgErreur) (princ) ); Fin de defun ; On créé les filtres de sélection en fonction du type d'élément (cond ((= XPORTRVT_TypeElement "HATCH") (setq XPORTRVT_FiltreSelection (list (cons 0 XPORTRVT_TypeElement) (cons 2 XPORTRVT_MotifHach) (cons 8 XPORTRVT_CalqueOrigine) (cons 62 XPORTRVT_CouleurElement) ) ) ) ((or (= XPORTRVT_TypeElement "LINE,CIRCLE") (= XPORTRVT_TypeElement "INSERT") ) (setq XPORTRVT_FiltreSelection (list (cons 0 XPORTRVT_TypeElement) (cons 6 XPORTRVT_TypeLigne) (cons 8 XPORTRVT_CalqueOrigine) (cons 62 XPORTRVT_CouleurElement) ) ) ) ) (if (setq XPORTRVT_Selection (ssget "_X" XPORTRVT_FiltreSelection ) ) ; On créé le jeu de sélection (progn (setq XPORTRVT_n 0) (while (ssname XPORTRVT_Selection XPORTRVT_n) (setq XPORTRVT_NomEntite (ssname XPORTRVT_Selection XPORTRVT_n) ); On récupére le Entity name de l'objet DXF (setq XPORTRVT_DonneesEntite (entget XPORTRVT_NomEntite)) ; On récupére les infos de l'objet DXF numéro n ; On change le type de ligne de l'élément (setq XPORTRVT_DonneesEntite (subst (cons 6 "Bylayer") (assoc 6 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite) ) ; On change le calque de l'élément (setq XPORTRVT_DonneesEntite (subst (cons 8 XPORTRVT_CalqueDestination) (assoc 8 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite) ) ; On change la couleur de l'élément (setq XPORTRVT_DonneesEntite (subst (cons 62 XPORTRVT_NouvelleCouleur) (assoc 62 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite) ) (if (= XPORTRVT_TypeElement "HATCH") (cond ((= XPORTRVT_MotifHach "AR-SAND") (setq XPORTRVT_DonneesEntite (subst (cons 41 5.0) (assoc 41 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite)) ) ((= XPORTRVT_MotifHach "CROSS") (setq XPORTRVT_DonneesEntite (subst (cons 41 50.0) (assoc 41 XPORTRVT_DonneesEntite) XPORTRVT_DonneesEntite)) ) ); Fin de cond ); Fin de if (entmod XPORTRVT_DonneesEntite) (setq XPORTRVT_n (1+ XPORTRVT_n)) ; On incrémente le compteur XPORTRVT_n de +1 ); Fin de while ); Fin de progn ); Fin de if ); Fin de la fonction XPORTRVT_DeplacementElements [size=2]; ----------------------------------------------------------[/size] Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Giropode Posté(e) le 26 novembre 2015 Auteur Posté(e) le 26 novembre 2015 Bonjour à tous, Je reviens vers vous pour savoir si quelqu'un parmi vous avez une piste de solution pour le dernier problème que j'ai soulevé. B) Merci et bon après-midi ! Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Giropode Posté(e) le 1 décembre 2015 Auteur Posté(e) le 1 décembre 2015 Bonjour à tous ! Je reviens à a charge concernant ces hachures (non non, je ne suis pas du tout un acharné =D) Et en bonus, j'ai d'autres questions :Est-il possible via la méthode que j'utilise depuis le début de modifier les entités d'un bloc ? Si oui comment ?Peut-on jouer sur l'ordre de tracé des éléments ? Si oui, comment ?Pour modifier l'épaisseur de ligne d'un élément, est-ce bien le code DXF 370 ? Sinon, lequel ?Merci par avance de vos réponse et bon après-midi ! Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Giropode Posté(e) le 16 décembre 2015 Auteur Posté(e) le 16 décembre 2015 Bonjour à tous ! Toujours pas d'âme charitable ? :unsure: Bonne journée à tous ! Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Patrick_35 Posté(e) le 16 décembre 2015 Posté(e) le 16 décembre 2015 Salut Tu as deux exemples pour comparer ?Un avec les bonnes hachures et l'autre non. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Giropode Posté(e) le 17 décembre 2015 Auteur Posté(e) le 17 décembre 2015 Salut, Ci-joint un lien pour récupérer trois fichiers:Fichier issu de l'export (brut)Fichier après utilisation de la routineFichier souhaitéMerci :(rires forts): Lien pour récupérer les fichiers Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Patrick_35 Posté(e) le 17 décembre 2015 Posté(e) le 17 décembre 2015 Salut, Ci-joint un lien pour récupérer trois fichiers:Fichier issu de l'export (brut)Fichier après utilisation de la routineFichier souhaitéMerci <img src='http://cadxp.com/public/style_emoticons/<#EMO_DIR#>/laugh.gif' class='bbc_emoticon' alt=':(rires forts):' /> Lien pour récupérer les fichiersSalut Dans le fichier n°2, tes hachures sont du type personnalisées.Dans le fichier n°3, tes hachures sont du type prédéfinies. Pour corrigerSélection d'une hachure(setq hatch (vlax-ename->vla-object (car (entsel)))) Et pour obtenir le résultat souhaité(vlax-invoke hatch 'setpattern acHatchPatternTypeUserDefined (vla-get-patternname hatch)) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Giropode Posté(e) le 17 décembre 2015 Auteur Posté(e) le 17 décembre 2015 Merci beaucoup ! Je vais m'empresser d’essayer ça ! Je te tiens au jus ! :D Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Patrick_35 Posté(e) le 17 décembre 2015 Posté(e) le 17 décembre 2015 Merci beaucoup ! Je vais m'empresser d’essayer ça ! Je te tiens au jus ! :DDe rien. J'ai continué mes recherches et si tu es allergique au vlisp, c'est le code dxf 76 qui est incriminé. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Giropode Posté(e) le 17 décembre 2015 Auteur Posté(e) le 17 décembre 2015 Hello, Du coup, j'ai essayé avec le code dxf 76 (vu que je suis parti pour fonctionner comme ça...) La hachure prend bien en compte la modification, cependant, visuellement parlant, rien ne se passe... Ci-joint mon lisp à jour.xportrvt.lsp Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Patrick_35 Posté(e) le 17 décembre 2015 Posté(e) le 17 décembre 2015 Et avec un regen ?Avec un entupd ? Sinon, ça fonctionne bien en vlisp. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Giropode Posté(e) le 18 décembre 2015 Auteur Posté(e) le 18 décembre 2015 Et avec un regen ?Avec un entupd ? Sinon, ça fonctionne bien en vlisp. @+ Hello, Du coup je n'arrive pas au résultat souhaité. Est-ce que tu peux m'aider sur l'intégration exacte du code en Vlisp ? Je n'ai pas encore abordé le sujet. Merci ! Mon pense bête : Mon blog fourre-toutMa bible : Aide AutoCADMon futur calvaire : Revit
Patrick_35 Posté(e) le 18 décembre 2015 Posté(e) le 18 décembre 2015 Salut (and (ssget "x" (list (cons 0 "HATCH") (cons 76 2))) (progn (vlax-for ele (setq sel (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))) (vlax-invoke ele 'setpattern acHatchPatternTypeUserDefined (vla-get-patternname ele)) ) (vla-delete sel) ) ) @+ 1 Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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