Ptitony72
Membres-
Compteur de contenus
29 -
Inscription
-
Dernière visite
Ptitony72's Achievements
Newbie (1/14)
0
Réputation sur la communauté
-
Voila c'est réduit. Je savais pas qu'on pouvais régler la taille des images. Merci pour cette solution x_all.
-
Bonjour tout le monde. J'ai un problème avec certaines de mes hachures sur un projet. Comme vous pouvez le voir sur les screens si dessous, elle sont toutes déformées. Les hachures en gris sont normalement des HEX. 600x400http://img21.imageshack.us/img21/3397/47801798.jpg[/img] 600x400http://img21.imageshack.us/img21/6979/32795226.jpg[/img] Je pense que ce problème est lié aux fichiers car j'ai le problème sur plusieurs PC avec plusieurs versions Autocad (Map 2007, Map 2008, Full 2009). Par contre, je n'ai pas ce problème sur d'autres projets. Quelqu'un aurait-il une idée d'ou viens le problème? Vous trouverez un des fichiers ici : http://rapidshare.com/files/210736976/DCE_GO_Niveau_1.zip.html[Edité le 18/3/2009 par Ptitony72] [Edité le 18/3/2009 par Ptitony72]
-
Lisp mise à l\'échelle des côtes
Ptitony72 a répondu à un(e) sujet de Ptitony72 dans Pour aller plus loin en LISP
Impeccable Philphil Merci beaucoup. Pour répondre à ta question krunch, j'ai créé un fichier Calque.dwg avec dessus mes styles de cote et mes calques que je charge dans chaque plans afin d'avoir toujours les mêmes calques et les mêmes styles de cote sur tous mes plans. Par contre, tu est sur pour les guillemets ? Ca me mettais bien le nom du calque courant dans la variable "layer_courant". -
Bonjour tout le monde. J'ai créé le petit lisp suivant pour dessiner mes côtes à la bonne échelle. (defun c:COT20 () (setq "layer_courant" (getvar "clayer")) (command "_insert" "Calque=" "0,0" "" "" "" ) (command "-cotstyle" "r" "ETCO 20ème") (command "clayer" "ETCO 20 Cotation") (command "cotlin") (setvar "clayer" layer_courant) ) Seulement, j'ai un petit problème : je n'arrive pas à revenir sur le calque précédent après avoir tracé ma côte. Pourtant, la variable "layer_courant" contient bien le nom du calque précédent. Quelqu'un peut-il m'aider à compléter cette routine ? Merci d'avance.
-
En effet, je viens d'essayer sur le poste à mon collègue qui est en 2009, et ca marche très bien. Merci à tout le monde.
-
Ok merci pour cette explication (gile). Bienvue pour l'armoire, un bloc que j'ai pas encore remis à jour. J'ai encore un problème avec un plan, quand j'xécute le lisp, il me met nil d'entré et ne fait pas les modifications. Sinon, ça a bien marché sur tous les autres niveaux. --> J'ai rien dis, j'étais pas en SCU général. [Edité le 1/8/2008 par Ptitony72]
-
T'es sur quelle version lili2006 ? J'ai essayé sur la 2007 map3D et 2008 map3D et j'avais toujours le problème. Merci (gile). Une petite question, tu entends quoi par normale 0,0,1? (je vais aller consulter l'aide voir s'il parlent de ça)
-
C'était exactement ça mon probleme (gile). J'avais remarqué que mes blocs n'étaient pas à 0 en Z mais je pensais pas que ca venait de la (et je ne voyais pas comment les remettre à 0 apart le faire bloc par bloc). Merci beaucoup :) Ps : si vous utilisez les quelques lignes de (gile), dévérouillez tous les calques avant [Edité le 1/8/2008 par Ptitony72]
-
Voila, tu le trouvera ici.
-
Je reviens avec mon probleme de hachures. Sur ce plan : http://img522.imageshack.us/img522/323/pbautocadft6.jpg J'ai mes blocs de luminaire 1x36W dans le rangement et le local linge sale qui sont identiques. Pour je ne sais quelle raison, les hachures apparaissent dans un et pas dans l'autre. Et si je change de SCU (pour mettre mon plan droit par exemple) les hachures vont apparaitre dans l'autre luminaire et disparaitre de ceux là. Quelqu'un aurait une idée de pourquoi? La seule solution que l'ai trouvé, c'est de me mettre en SCU général et de réinsérer mes blocs 1 par 1 (j'en ai 3000 à 4000 par niveau). Vous pensez qu'un lisp peut m'inserer un nouveau bloc à la place de l'ancien à la bonne échelle (soit à l'échelle 100 sur ces plans), avec le meme point de base, la meme rotation, sur le meme calque, et en conservant l'emplacement et les valeurs des attributs? Sinon, y'a t'il une solution pour contacter Autodesk ? Ils ont peut etre une solution eux. Merci d'avance.
-
J'ai un problème dans le même genre : Mes hachures apparaissent bien dans certains blocs et pas dans d'autres. Plus étonnant, 2 blocs identiques l'un a coté de l'autre, je vais avoir des hachures dans un et pas dans l'autre. J'ai remarqué aussi que les blocs dont les hachures s'affichent varient en fonction du SCU. J'ai biens ma variable FILLMODE à 1 et REMPLIR actif. J'ai surtout le problème avec le type de hachure solid. Quelqu'un a déja eue (et résolu) le problème ? Autre question : Depuis le passage de Windows en SP3, j'ai des écritures qui apparaissent en italique. Quelqu'un sait comment les remettre normalement ?
-
Compléter une routine
Ptitony72 a répondu à un(e) sujet de Ptitony72 dans Pour aller plus loin en LISP
Merci beaucoup bred. Ca m'a permis de rendre fonctionnel ma légende automatique. Je laisse le code en dessous si ça intéresse du monde, je mettrais les fichiers qui vont avec dès que j'aurais trouvé comment faire. Y'a des trucs qui servent a rien pour le moment mais je compte l'améliorer un peu plus tard. ;;;----------------------------------------------------------------------------------------------------------------------------- ;;; LISTE DES VARIABLES ;;;----------------------------------------------------------------------------------------------------------------------------- ;;; ;;; ;;; os_courant --> accrochage aux objets courant ;;; sel_bloc --> liste des blocs sélectionnés ;;; nom_bloc --> nom du bloc courant ;;; bloc_insere --> liste blocs déjà inséré ;;; compteur --> compteur ;;; ptd --> point de départ ;;; pt1 --> point de départ éclairage ;;; pt2 --> point de départ commande ;;; pt3 --> point de départ courants forts ;;; pt4 --> point de départ éclairage de sécurité ;;; pt5 --> point de départ incendie ;;; pt6 --> point de départ appel malade ;;; pt7 --> point de départ courants faibles ;;; pt8 --> point de départ ;;; designation --> désignation du bloc courant ;;; categorie --> catégorie du bloc courant ;;; quantite --> quantité du bloc courant ;;;----------------------------------------------------------------------------------------------------------------------------- ;;; Routine principale ;;;----------------------------------------------------------------------------------------------------------------------------- (defun c:legende () (princ "Version 10/06/08") (command "_insert" "Calque=" "0,0" "" "" "" ) ;_ Insertion des calques (setvar "clayer" "0") ;_ Défini le calque "0" courant (setvar "cmdecho" 0) ;_ Désactive l'affichage à l'écran --> mettre à 1 (setvar "attreq" 0) ;_ Définit les attributs des blocs par défaut (setq os_courant (getvar "osmode")) ;_ Enregistre l'accrochage aux objets courant dans os_courant (setvar "osmode" 0) ;_ Désactive l'accrochage aux objets (setq bloc_insere nil) (setq ptd (getpoint "\nEntrer le point de départ : ")) ;_ Défini le point de départ par l'utilisateur (setq pt1 (polar ptd 0 0)) ;_ Défini le point 1 en fonction du point de départ (setq pt2 (polar ptd 0 9.5)) ;_ Défini le point 2 en fonction du point de départ (setq pt3 (polar ptd 0 19)) ;_ Défini le point 3 en fonction du point de départ (setq pt4 (polar ptd 0 28.5)) ;_ Défini le point 4 en fonction du point de départ (setq pt5 (polar ptd 0 38)) ;_ Défini le point 5 en fonction du point de départ (setq pt6 (polar ptd 0 47.5)) ;_ Défini le point 6 en fonction du point de départ (setq pt7 (polar ptd 0 57)) ;_ Défini le point 7 en fonction du point de départ (setq pt8 (polar ptd 0 66.5)) ;_ Défini le point 8 en fonction du point de départ (setq sel_bloc (ssget (list (cons 0 "insert")))) ;_ Sélectionne les blocs et les mets dans la variable sel_bloc (setq compteur -1) ;_ Initialise le compteur à -1 (car indexation dans un jeu de sélection commence à 0) (repeat (sslength sel_bloc) ;_ Répète la boucle autant de fois qu'il y'a de blocs (setq nom_bloc (cdr (assoc 2 (entget (ssname sel_bloc (setq compteur (+ compteur 1))))))) ;_ Met dans la variable nom_bloc le bloc courant et l'enlève du jeu de sélection sel_bloc (setq selection (ssget "_X" (list (cons 2 nom_bloc)))) (setq en (ssname selection 0)) (if (member nom_bloc bloc_insere) (princ (strcat "\nBloc déjà inséré")) (progn (setq bloc_insere (cons nom_bloc bloc_insere)) (setq enlist(entget en)) ;_ Récupère le groupe de codes DXF (setq blocType(cdr(assoc 0 enlist))) ;_ Enregistre le type d'entité (if (= blocType "INSERT")(progn ;_ Si le Type d'entité est une entité "Insert" (if(= (cdr(assoc 66 enlist)) 1)(progn ;_ --> See if the attribute flag equals one (if so, attributes follow) (setq en2(entnext en)) ;_ Récupère la prochaine sous-entité (setq enlist2(entget en2)) ;_ Récupère le groupe de codes DXF (while (/= (cdr(assoc 0 enlist2)) "SEQEND") ;_ --> Start the while loop and keep ;- looping until SEQEND is found. (if (= (cdr(assoc 2 enlist2)) "DESIGNATION")(setq designation (cdr(assoc 1 enlist2)))) ;_ Si l'étiquette de l'attribut est "DESIGNATION", mettre la valeur de cet attribut dans la variable "designation" (if (= (cdr(assoc 2 enlist2)) "CATEGORIE")(setq categorie (cdr(assoc 1 enlist2)))) ;_ Si l'étiquette de l'attribut est "CATEGORIE", mettre la valeur de cet attribut dans la variable "categorie" (if (= (cdr(assoc 2 enlist2)) "QUANTITE")(setq quantite (cdr(assoc 1 enlist2)))) ;_ Si l'étiquette de l'attribut est "QUANTITE", mettre la valeur de cet attribut dans la variable "quantite" (setq en2(entnext en2)) ;_ Récupère la prochaine sous-entité (setq enlist2(entget en2)) ;_ Récupère le groupe de codes DXF ) )) )) (princ (strcat "\nNom du bloc ----> " nom_bloc "")) (princ (strcat "\nCatégorie ----> " categorie "")) (princ (strcat "\nDésignation ----> " designation "")) (princ "\n ") (progn (if (and (= categorie "ECLAIRAGE")(/= (substr nom_bloc 1 1) "5"))(progn (command "_insert" nom_bloc pt1 "1" "1" "0") (command "changer" "d" "" "pr" "cal" "- ETCO - Luminaires -" "") (command "_insert" "*Cadre luminaire simple" pt1 "" "") (command "-style" "Romans" "romans.shx" "0.1" "1" "0" "" "" "") (command "texte" "j" "mg" (polar pt1 0 1.35) "0" designation) (setq pt1 (polar pt1 (* 3 (/ pi 2)) 0.4)) )) (if (and (= categorie "ECLAIRAGE")(= (substr nom_bloc 1 1) "5"))(progn (setq pt1 (polar pt1 (* 3 (/ pi 2)) 0.2)) (command "_insert" nom_bloc pt1 "1" "1" "0") (command "changer" "d" "" "pr" "cal" "- ETCO - Luminaires -" "") (command "_insert" "*Cadre luminaire double" pt1 "" "") (command "-style" "Romans" "romans.shx" "0.1" "1" "0" "" "" "") (command "texte" "j" "mg" (polar pt1 0 1.35) "0" designation) (setq pt1 (polar pt1 (* 3 (/ pi 2)) 0.6)) )) (if (= categorie "COMMANDE")(progn (command "_insert" nom_bloc pt2 "1" "1" "0") (command "changer" "d" "" "pr" "cal" "- ETCO - Courants forts -" "") (command "_insert" "*Cadre simple" pt2 "" "") (command "-style" "Romans" "romans.shx" "0.1" "1" "0" "" "" "") (command "texte" "j" "mg" (polar pt2 0 0.95) "0" designation) (setq pt2 (polar pt2 (* 3 (/ pi 2)) 0.4)) )) (if (= categorie "COURANT FORT")(progn (command "_insert" nom_bloc pt3 "1" "1" "0") (command "changer" "d" "" "pr" "cal" "- ETCO - Courants Forts -" "") (command "_insert" "*Cadre simple" pt3 "" "") (command "-style" "Romans" "romans.shx" "0.1" "1" "0" "" "" "") (command "texte" "j" "mg" (polar pt3 0 0.95) "0" designation) (setq pt3 (polar pt3 (* 3 (/ pi 2)) 0.4)) )) (if (= categorie "COURANT FAIBLE")(progn (command "_insert" nom_bloc pt4 "1" "1" "0") (command "changer" "d" "" "pr" "cal" "- ETCO - Courants Faibles -" "") (command "_insert" "*Cadre simple" pt4 "" "") (command "-style" "Romans" "romans.shx" "0.1" "1" "0" "" "" "") (command "texte" "j" "mg" (polar pt4 0 0.95) "0" designation) (setq pt4 (polar pt4 (* 3 (/ pi 2)) 0.4)) )) (if (= categorie "ECLAIRAGE DE SECURITE")(progn (command "_insert" nom_bloc pt5 "1" "1" "0") (command "changer" "d" "" "pr" "cal" "- ETCO - Eclairage de sécurité -" "") (command "_insert" "*Cadre simple" pt5 "" "") (command "-style" "Romans" "romans.shx" "0.1" "1" "0" "" "" "") (command "texte" "j" "mg" (polar pt5 0 0.95) "0" designation) (setq pt5 (polar pt5 (* 3 (/ pi 2)) 0.4)) )) (if (= categorie "ALARME INCENDIE")(progn (command "_insert" nom_bloc pt6 "1" "1" "0") (command "changer" "d" "" "pr" "cal" "- ETCO - Détection incendie -" "") (command "_insert" "*Cadre simple" pt6 "" "") (command "-style" "Romans" "romans.shx" "0.1" "1" "0" "" "" "") (command "texte" "j" "mg" (polar pt6 0 0.95) "0" designation) (setq pt6 (polar pt6 (* 3 (/ pi 2)) 0.4)) )) (if (and(/= categorie "ECLAIRAGE") (/= categorie "COMMANDE") (/= categorie "COURANT FORT") (/= categorie "COURANT FAIBLE") (/= categorie "ECLAIRAGE DE SECURITE") (/= categorie "ALARME INCENDIE") )(progn (command "_insert" nom_bloc pt8 "1" "1" "0") (command "changer" "d" "" "pr" "cal" "- ETCO - Remarques -" "") (command "_insert" "*Cadre simple" pt8 "" "") (command "-style" "Romans" "romans.shx" "0.1" "1" "0" "" "" "") (command "texte" "j" "mg" (polar pt8 0 0.95) "0" designation) (setq pt8 (polar pt8 (* 3 (/ pi 2)) 0.4)) )) ) ) )) ) ;_ Fin de la boucle (setvar "osmode" os_courant) ;_ Redéfinit l'accrochage aux objets courant ) Encore une fois, merci à tous ceux qui m'ont aidés. -
Compléter une routine
Ptitony72 a répondu à un(e) sujet de Ptitony72 dans Pour aller plus loin en LISP
Merci Patrick. Grace aux quelques lignes de Bred, ma légende est sur le point de fonctionner. Me manque juste une petite ligne. En faite, je cherche à comparer la variable Nom_bloc avec la liste Bloc_insere afin d'exécuter un programe si Nom_bloc ne s'y trouve pas. En gros : (if "Nom_bloc pas dans Bloc_insere" (progn ... )) Ce qu'il me manque, c'est ce qu'il va après le if ou, tout du moin, la façon de comparer une variable avec une liste. Ma liste est de la forme (BS DM PC HUB_PORTE 6213 . 0) Une autre question qui me viens a l'esprit, comment on vide la liste? La seule méthode que j'ai trouvé, c'est de faire (setq Bloc_insere 0), d'ou le . 0 à la fin. Merci d'avance. -
Compléter une routine
Ptitony72 a répondu à un(e) sujet de Ptitony72 dans Pour aller plus loin en LISP
@ Patrick_35 : Ton explication est claire dans le fonctionnement du lisp. En faite, mon problème est que dans le visual lisp, les commandes sont pas les mêmes que dans le lisp "normal". Même si je ne les connais pas en lisp "normal", je les retrouve facilement dans l'aide d'Autocad, alors qu'en visual lisp, je ne sais pas trop ou chercher. Sinon pour la commande lsp, ça n'en est pas une sur mon PC. Ca vient peut être de ma version autocad, c'est un autocad 2008 Map 3D (qui n'est pas tout à fait identique à un autocad 2008 complet aparament) @ Bred : Merci pour ces 2 lignes, maintenant ma légende marche dans son ensemble. Me reste plus qu'a insérer un symbole de chaque type et non pas autant de symboles qu'il y en a sur le plan. Faut juste que je fasse du tri dans la variable sel_bloc. En cherchant un peu, je devrais y arriver. Merci beaucoup. -
Compléter une routine
Ptitony72 a répondu à un(e) sujet de Ptitony72 dans Pour aller plus loin en LISP
Excuse moi Bred, merci à toi aussi. J'étais un peu à fond le lisp de Patrick. Malgré l'explication, j'ai quand même du mal à l'exploiter. En partant du Lisp que j'ai mis plus haut, j'ai réussi à en extraire les 2 attributs qui m'interressent : (defun c:lsp () (if (setq ent(entsel "\n Select a Block: ")) (progn (setq en(car ent)) (setq enlist(entget en)) (setq blkType(cdr(assoc 0 enlist))) (if (= blkType "INSERT") (progn (if(= (cdr(assoc 66 enlist)) 1) (progn (setq en2(entnext en)) (setq enlist2(entget en2)) (while (/= (cdr(assoc 0 enlist2)) "SEQEND") (if (= (cdr(assoc 2 enlist2)) "DESIGNATION")(setq designation (cdr(assoc 1 enlist2)))) (if (= (cdr(assoc 2 enlist2)) "CATEGORIE")(setq categorie (cdr(assoc 1 enlist2)))) (setq en2(entnext en2)) (setq enlist2(entget en2)) ) ) ) ) ) ) ) (princ (strcat "\nNom du bloc ----> " nom_bloc "")) (princ (strcat "\nCatégorie ----> " categorie "")) (princ (strcat "\nDésignation ----> " designation "")) ) ) Maintenant, je ne vois pas trop par quoi remplacer la ligne (if (setq ent(entsel "\n Selectionner un Bloc : ")) pour qu'il me prenne en compte le bloc courant (celui qui est dans la variable Nom_bloc) et pas le bloc sélectionné. En faite, je ne vois pas comment changer le Nom du bloc en Entité.
