-
Compteur de contenus
2 160 -
Inscription
-
Dernière visite
-
Jours gagnés
16
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par bryce
-
Bonjour, Voici une modif vite faite (pas testée): ;PROGRAMME POUR EFFACER LES BARBULES INFERIEURS A UNE PENTE DONNEE ;***************************************************************** (defun c:efb ( / ent calqent valpente pentedeblaimin pentedeblaimax jsb entb bdentb pointd pointf ptd ptf deltad deltaz penteb) ;initialisation des couleurs deblai et remblai (setq couldeblai 3) (setq coulremblai 1) ;initialisation de la variable de groupe PICKSTYLE à 1 (setvar "PICKSTYLE" 0) ;recuperation du nom de calque des entites a traiter (setq ent (car (entsel "\nCliquez un barbule :"))) (setq calqent (cdr (assoc 8 (entget ent)))) ;zoom etendu pour accelerer le traitement (command "zoom" "et") ;recuperation de la valeur limite de pente (setq valpente (getint "\nEntrez la valeur limite de la pente pour l effacement des barbules :")) (setq pentedeblaimin 190.0 pentedeblaimax 500.0) (setq jsb (ssget "x" (list (cons 8 calqent)))) (setq i 0) (repeat (sslength jsb) (setq entb (ssname jsb i)) (setq bdentb (entget entb)) (setq pointd (cdr (assoc 10 bdentb))) (setq ptd (list (car pointd) (cadr pointd))) (setq pointf (cdr (assoc 11 bdentb))) (setq ptf (list (car pointf) (cadr pointf))) (setq deltad (distance ptd ptf)) (setq deltaz (- (caddr pointd) (caddr pointf))) (if (> deltad 0) (progn (setq penteb (abs (* (/ deltaz deltad) 100))) ;comparaison des valeurs (if (<= penteb valpente) (command "effacer" entb "") (progn (if (and (> penteb pentedeblaimin) (< penteb pentedeblaimax)) (command "changer" entb "" "pr" "co" couldeblai "") (command "changer" entb "" "pr" "co" coulremblai "") );fin du if );fin du progn );fin du if );fin du progn (command "effacer" entb "");commenter cette ligne pour ne pas effacer les lignes de longueur 0 );fin du if (setq i (+ i 1)) );fin du repeat (command "zoom" "p") );fin du defun c:efb Les lignes de longueur nulle sont supprimées. Si tu pouvais poster un dessin de test, ce serait cool. :)
-
Là comme ça, je ne saurais dire... Il faudrait que tu sois plus précis: - quelle est la macro qui pose problème ? - quel est le problème exactement (tu peux appuyer sur F2 et copier-coller le contenu de la fenêtre de texte, ça nous aidera) ? - le problème se pose avec tous types d'objets ? avec certains objets seulement ?
-
extraction coordoonnées XY d'une polyligne
bryce a répondu à un(e) sujet de daemge dans AutoCAD 2012
Bonjour, Il y a la commande LISTE, ou sinon passer par un petit Lisp... De quoi as-tu besoin exactement: - récupérer les coordonnées d'UNE polyligne, ou de plusieurs ? - sous quelle forme (fichier texte, tableau...) ? -
Bonjour, Je ne pense pas qu'Autodesk s'amuse à introduire ce genre de fonctions dans AutoCAD, qui est un logiciel de dessin (ou de modélisation 3D) généraliste. Pour faire de la mécanique, il vaut mieux passer sur Inventor: l'écart de prix (qui n'est pas si important) sera rentabilisé très rapidement, vu le temps gagné... Comme (gile), je ne pense pas que ce soit une bonne idée de faire des filetages en 3D sur AutoCAD, sauf absolue nécessité. En général, je suggère à mes stagiaires de simplement donner une couleur (ou une texture) différente à la face pour indiquer la présence d'un filetage/taraudage.
-
C'est bien Cloud v8b que j'utilise... Quand tu importes le fichier CSV que j'ai posté, il faut faire attention de n'utiliser que les colonnes X, Y et Z, et non les colonnes Position X, Position Y et Position Z (qui contiennent les coordonnées d'origine, trop grandes pour SketchUp). http://www.youtube.com/watch?v=u_2qFhR7unU A part ça, je ne vois pas d'où pourrait venir ton souci... :unsure:
-
Ton CSV est bon, le problème vient de SketchUp qui a du mal avec les coordonnées trop éloignées du point 0,0,0. J'ai ouvert le CSV dans OpenOffice, et avec des formules dans 3 nouvelles colonnes j'ai soustrait 848000 à toutes les coordonnées X, 130100 à toutes les coordonnées Y, et 180 à toutes les coordonnées Z. Après enregistrement, aucun problème dans SketchUp pour importer les points depuis les nouvelles colonnes, puis trianguler... ;) Ci-joint le CSV modifié. test.zip
-
Bonjour, Voici une petite vidéo en exemple:
-
Bonjour, J'avais fait un exemple en vidéo il y a quelques temps : A adapter en fonction de tes besoins... ;) Un script n'a rien à voir avec de la programmation, il faut "seulement" bien maîtriser les commandes AutoCAD au clavier...
-
http://cadxp.com/index.php?/topic/33442-resolu-changer-une-couleur-de-texte-donnee-dans-lediteur/page__view__findpost__p__179994
-
*^C^C_.area;_object;\userr1;$M=$(+,$(getvar,userr1),$(getvar,area));modemacro;Cumul surfaces = "$M=$(rtos,$(getvar,userr1),2,2)";
-
Bonjour, Pour faire la même chose ("désassocier" les cotes) plus proprement, il existe la commande _DIMDISASSOCIATE ;)
-
Bonjour, C'est peut-être aussi à cause du style des cotes, qui aurait le même nom dans les 2 dessins mais avec des paramètres différents. Essaie de renommer le style de cotes dans un des dessins avant de faire le copier-coller...
-
Si j'ai bien compris ce qui te gêne, c'est dans les options du ViewCube que ça se passe (voir capture)... ;)
-
Bonjour, $(getvar,perimeter) permet de récupérer la valeur de la variable PERIMETER. Pour la surface, c'est la variable AREA qui nous intéresse. La macro devient donc: *^C^C_.area;_object;\userr1;$M=$(+,$(getvar,userr1),$(getvar,area));_.text;;$(rtos,$(getvar,area),2,2); ;)
-
Bonjour, Clic droit sur le ViewCube > Définir la vue en cours sur Début > Distance fixe, ou Ajuster (dans ce cas, il fait un zoom tout quand on rappelle la vue de début). ;)
-
Très intéressant, merci beaucoup ! Par contre je n'ai pas vraiment compris le rôle de la paire (280 . 1) dans la liste DXF d'une entrée de dictionnaire... :huh: A priori tu considères que les données sont forcément après cette paire, mais peut-on être sûr qu'elle existe toujours, et qu'elle aura toujours cette valeur ? L'aide indique pour le code 280 : Tu saurais traduire ? :unsure: Ça voudrait dire que si ce code existe et qu'il a pour valeur 1, tout ce qui suit dans la liste doit être considéré comme des données stockées dans l'entrée ?
-
Bon, en fait j'avais complètement zappé le code 330 qui permet de savoir à quel(s) groupe(s) appartient un objet... :blink: Voici donc une nouvelle version de mon lisp, beaucoup plus rapide: http://www.creao.fr/uploads/lisp/dg.lsp (defun c:dg (/ *error* oldcmdecho acdoc groups ss i li g gl) ; Décompose les groupes auxquels appartiennent les objets sélectionnés. ; Brice Studer, ocobre 2011 (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) groups (vla-get-groups acdoc) ) (defun *error* (msg) (and msg (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) ) (if ss (setq ss nil)) (setvar "cmdecho" oldcmdecho) (vla-endundomark acdoc) (princ) ) (vla-startundomark acdoc) (setq oldcmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (princ "\nSélectionnez les groupes à décomposer <entrée pour tous> : ") (if (setq ss (ssget)) (progn (setq i 0) (repeat (sslength ss) (setq li (entget (ssname ss i))) (while li (if (setq g (cdr (assoc 330 li))) (or (member g gl) (and (= (cdr (assoc 0 (entget g))) "GROUP") (setq gl (cons g gl)) ) ) ) (setq li (cdr li)) ) (setq i (1+ i)) ) (foreach g gl (entdel g) ) ) (vlax-for g groups (setq gl (cons g gl)) (vla-delete g) ) ) (princ (strcat "\n" (itoa (length gl)) " groupes décomposés !")) (*error* nil) (princ) ) (princ "\nCommande à utiliser : DG") (princ)
-
Ça doit être pour ça que la commande semble ne pas se terminer. Mon lisp n'est pas optimisé pour la rapidité, il parcourt pour chaque objet sélectionné l'ensemble du contenu de chaque groupe, donc vu le nombre d'objets dans ton dessin ça doit prendre un temps certain... <_< Je suppose qu'en étant très patient, il finirait par y arriver... :P Patrick, le problème c'est que je ne vois pas comment faire pour trouver les groupes auxquels appartient chaque objet de la sélection sans parcourir à chaque fois le contenu de chaque groupe. Si tu as une astuce, ça m'intéresse ! :)
-
C'est-à-dire ? :unsure: Je viens de retester sur un fichier contenant à peu près 5000 objets, et certes ça mouline quelques secondes, mais ça fonctionne...
-
Bonjour, La déduction de contraintes (qui n'existait pas encore dans la 2010) étant sans doute activée quand tu as dessiné tes carrés, et des contraintes géométriques ont donc été appliquées automatiquement... ;) Il faut la désactiver (voir capture jointe). Pour supprimer les contraintes existantes, utilise la commande SUPPRCONTRAINTE.
-
MODIFIER LA VALEUR NUMERIQUE D UN PARAMETRE DYNAMIQUE DE BLOC
bryce a répondu à un(e) sujet de PHILPHIL dans Routines LISP
Ok, je n'avais pas lu le lisp suffisamment en détail pour voir que tu voulais ajouter une valeur à la valeur actuelle du paramètre... <_< -
MODIFIER LA VALEUR NUMERIQUE D UN PARAMETRE DYNAMIQUE DE BLOC
bryce a répondu à un(e) sujet de PHILPHIL dans Routines LISP
Justement si, ou alors je n'ai pas compris ce que tu veux faire. Si par exemple tu as plusieurs blocs "porte" avec une propriété dynamique "largeur" dont les valeurs sont différentes. Si tu sélectionnes ces blocs "porte", dans la palette Propriétés la propriété dynamique "largeur" affiche *VARIE*, mais tu peux cliquer dans la case et sélectionner dans une liste une largeur qui sera affectée à toutes les portes sélectionnées. Ce n'est pas ce que tu veux faire ? -
Voici ma proposition : http://www.creao.fr/uploads/lisp/dg.lsp Le code (obsolète, voir nouvelle version plus bas): (defun c:dg (/ *error* oldcmdecho acdoc groups group ss e i) ; Décompose les groupes auxquels appartiennent les objets sélectionnés. ; Brice Studer, ocobre 2011 (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) groups (vla-get-groups acdoc) ) (defun *error* (msg) (and msg (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) ) (if ss (vla-delete ss)) (setvar "cmdecho" oldcmdecho) (vla-endundomark acdoc) (princ) ) (vla-startundomark acdoc) (setq oldcmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (princ "\nSélectionnez les groupes à décomposer <entrée pour tous> : ") (if (setq ss (ssget)) (progn (setq ss (vla-get-activeselectionset acdoc)) (vlax-for e ss (vlax-for group groups (vlax-for i group (if (eq (vlax-vla-object->ename e) (vlax-vla-object->ename i)) (vla-delete group)) ) ) ) ) (vlax-for group groups (vla-delete group) ) ) (*error* nil) (princ) ) (princ "\nCommande à utiliser : DG") (princ) 3 boucles vlax-for imbriquées, j'espère que (gile) ne va pas faire une attaque ! :P
-
En effet. L'édition de bloc dans le dessin m'affiche les mêmes erreurs. Par contre avec l'éditeur de blocs, ça fonctionne...
-
MODIFIER LA VALEUR NUMERIQUE D UN PARAMETRE DYNAMIQUE DE BLOC
bryce a répondu à un(e) sujet de PHILPHIL dans Routines LISP
Bonjour, Tu peux sélectionner les blocs, puis simplement utiliser la palette Propriétés, non ? :unsure:
