ludo07 Posté(e) le 23 janvier 2012 Partager Posté(e) le 23 janvier 2012 Bonjour. Je fais appel a vos competences les lispeurs. Depuis des années j'utilise les cotes ordonnées puis a chaque je l'édite pour ajouter le préfixe - ou +. Alors oui je sais il y a la possibiliter des faire 2 style de cotations avec soit le prefixe - ou +. Mais je me dit que cela peut etre possible par un petit programme lisp? Une ame charitable pourrait eventuellement se pencher sur ce programmeMerki Lien vers le commentaire Partager sur d’autres sites More sharing options...
philsogood Posté(e) le 24 janvier 2012 Partager Posté(e) le 24 janvier 2012 helloj'ai une solution à 2 balles qui amrche bien : c'est lédition des cotes quand tu les créesj'utilise pour ça le lisp suivant (defun c:ni (/ p1) (while (setq p1 (getpoint "\nCote niveau: ")) (command "_DIMORDINATE" p1 pause) (command "_ddedit" "_l" "") ) (princ) ) tu n'as qu'a taper la commander ni (comme niveau) et tu crées tes cotes puis tu les éditesça peut t'aider...Phil Projeteur Revit Indépendant - traitement des eaux/CVC Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 24 janvier 2012 Partager Posté(e) le 24 janvier 2012 (modifié) (defun c:Altcot (/ i ss ent dxoj dxf13 dxf70) (prompt"\nChoisissez des objets ou <tout> :") (and (setq i 0 ss (cond ((ssget '((0 . "DIMENSION") (100 . "AcDbOrdinateDimension")))) ((ssget "x" '((0 . "DIMENSION") (100 . "AcDbOrdinateDimension")))) ) ) (while (setq ent (ssname ss i)) (setq i (1+ i) dxoj (entget ent) dxf70 (cdr(assoc 70 dxoj)) dxf13 (assoc 13 dxoj) ) (if(minusp(if(zerop(boole 1 64 dxf70))(caddr dxf13)(cadr dxf13))) (entmod (setq dxoj (subst (cons 1 "-<>") (assoc 1 dxoj) dxoj ))) (entmod (setq dxoj (subst (cons 1 "+<>") (assoc 1 dxoj) dxoj ))) ) ) (princ) ) ) Une petite routine inspirée d'une plus récente ( B) ).Lancer ALTCOT et pardonnez le "" qu'on ne voit que sur la ligne supérieure dans la fenêtre de commande. Modifié le 24 janvier 2012 par Tramber Ajout du + ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ludo07 Posté(e) le 24 janvier 2012 Auteur Partager Posté(e) le 24 janvier 2012 Bonjour Tramber. C'est un bon début. Par contre il ne me met pas le + sur les cotes positives. Pour le - ca marche bien. Peux tu ajouter le traitement pour les cotes positives.Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 24 janvier 2012 Partager Posté(e) le 24 janvier 2012 C'est fait. J'avais oublié. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
VDH-Bruno Posté(e) le 24 janvier 2012 Partager Posté(e) le 24 janvier 2012 Bonjour Tramber, Sympa l’emploie de la fonction boole faudrait vraiment que je m’y intéresse plus à à l'avenir, sinon pour :(prompt"\nChoisissez des objets ou <tout> :") (and (setq i 0 ss (ssget '((0 . "DIMENSION")(100 . "AcDbOrdinateDimension"))) ss (ssget "x" '((0 . "DIMENSION")(100 . "AcDbOrdinateDimension"))) ) Tu ne souhaitais pas plutôt faire un truc dans le genre :(and (setq i 0 ss (cond ((ssget '((0 . "DIMENSION") (100 . "AcDbOrdinateDimension")))) ((ssget "x" '((0 . "DIMENSION") (100 . "AcDbOrdinateDimension")))) ) ) Ps : Bizarrement sur une version 2007 ton filtre sur les cotes ordonnées ne fonctionne pas, il prend tous les cotes, désolé j’ai pas trop le temps pour me pencher sur le problème.. Amicalement Bruno Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
ludo07 Posté(e) le 24 janvier 2012 Auteur Partager Posté(e) le 24 janvier 2012 Aprés avoir essayer j'ai une requête a formuler. En effet le programme fonctionne que avec le scu general. Serat il possible qu'il prenne en compte le scu courranr plutot. Car je créé des scu différents afin de pouvoir faire différente coupe. Merki Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 24 janvier 2012 Partager Posté(e) le 24 janvier 2012 Normal, je l'ai mal écrit. Merci pour la correction ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
bryce Posté(e) le 24 janvier 2012 Partager Posté(e) le 24 janvier 2012 Bonjour, Une petite suggestion pour le filtre ssget : (ssget "_x" '( (0 . "DIMENSION") (-4 . "&=")(70 . 6) )) Ça fonctionnera peut-être mieux sur une version plus ancienne... :unsure: Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant Lien vers le commentaire Partager sur d’autres sites More sharing options...
VDH-Bruno Posté(e) le 24 janvier 2012 Partager Posté(e) le 24 janvier 2012 Bonsoir,oui, bryce le filtre sur le code 70 passe bien sur une version récente comme sur une ancienne, bien vu.. Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
ludo07 Posté(e) le 25 janvier 2012 Auteur Partager Posté(e) le 25 janvier 2012 Bonsoir à tous, Je me permet de relancer ce sujet a propos de prendre en référence le SCU courant et non le SCU général. Merki A+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
bryce Posté(e) le 25 janvier 2012 Partager Posté(e) le 25 janvier 2012 Bonjour, Essaie avec ceci: (defun c:signord ( / acdoc filter ss i dim code10 code13 dimtext ) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) filter '( (0 . "DIMENSION") (-4 . "&=")(70 . 6) )) (if (cadr (ssgetfirst)) (setq ss (ssget "_I" filter)) (progn (prompt "\nSélectionnez les cotes à modifier ou <entrée pour toutes> : ") (or (setq ss (ssget filter)) (setq ss (ssget "_X" filter)) ) ) ) (if ss (progn (vla-startundomark acdoc) (setq i 0) (repeat (sslength ss) (setq dim (entget (ssname ss i)) code13 (assoc 13 dim) code10 (assoc 10 dim) dimtext "") (if (/= 0 (cdr (assoc 42 dim))) (progn (if (zerop (boole 1 64 (cdr (assoc 70 dim)))) (if (< (caddr code13) (caddr code10)) (setq dimtext "-<>") (setq dimtext "+<>") ) (if (< (cadr code13) (cadr code10)) (setq dimtext "-<>") (setq dimtext "+<>") ) ) ) ) (entmod (subst (cons 1 dimtext) (assoc 1 dim) dim)) (setq i (1+ i)) );repeat (setq ss nil) (vla-endundomark acdoc) );progn ) (princ) ) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant Lien vers le commentaire Partager sur d’autres sites More sharing options...
ludo07 Posté(e) le 26 janvier 2012 Auteur Partager Posté(e) le 26 janvier 2012 Bonjour a tous. Bryce j'ai essayer le programme. Cependant il ne prend toujours pas en compte le scu courant. Mais j'y pense si tu pouvait ajouter la selection du point de reference et caler les + et les - par rapport a ce point se serait super. MerciA+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
bryce Posté(e) le 26 janvier 2012 Partager Posté(e) le 26 janvier 2012 Bonjour, Il ne prend pas en compte le SCU courant et ça me semble normal, car les cotes ordonnées ont leur propre point de référence (qui correspond généralement au point d'origine du SCU courant au moment de leur création).C'est donc ce point là que mon lisp prend en compte. ;) Si tu sélectionnes une cote ordonnée, tu verras une poignée correspondant à son point de référence.Tu n'as qu'à la déplacer si elle n'est pas au bon endroit, puis à relancer le lisp. Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant Lien vers le commentaire Partager sur d’autres sites More sharing options...
VDH-Bruno Posté(e) le 26 janvier 2012 Partager Posté(e) le 26 janvier 2012 Bonjour, Je pense que pour ce que tu souhaites c.a.d. ajouter la modification du point de référence aux cotes ordonnées, il vaut mieux le faire dans une routine spécialisée, plutôt que de modifier la version de Bryce qui est très bien. En repartant de ses lignes de codes, il est très facile de substituer les actuelles coordonnées du point de référence (code DXF 10) par des nouvelles coordonnées utilisateur : ;; Modifie le point de référence des cotes ordonnées (defun c:baseord (/ acdoc filter ss i base lst) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) filter '((0 . "DIMENSION") (-4 . "&=") (70 . 6)) ) (if (cadr (ssgetfirst)) (setq ss (ssget "_I" filter)) (progn (prompt "\nSélectionnez les cotes à modifier ou <entrée pour toutes> : " ) (or (setq ss (ssget filter)) (setq ss (ssget "_X" filter)) ) ) ) (vla-startundomark acdoc) (if (and ss (setq base (getpoint "Spécifiez le nouveau point de référence pour les cotes séléctionnées: " ) ) ) (repeat (setq i (sslength ss)) (entmod (subst (cons 10 base) (assoc 10 (setq lst (entget (ssname ss (setq i (1- i)))))) lst ) ) ) ;repeat ) (vla-endundomark acdoc) (princ) ) De plus comme dans son code Bryce a pris soin d’autoriser la sélection par grippe, il est très facile d’envelopper les 2 commandes dans une troisième bien qu’elles soient définie avec C: ;; Modifie le point de base et ajoute (ou met à jour) un préfixe +/- sur les cotes ordonnées sélectionnées (defun c:ludord () (cond ((cadr (ssgetfirst)) (c:baseord) (c:signord)) (T (c:baseord) (sssetfirst nil (ssget "_P")) (c:signord) (command))) (princ) ) Voilà à tester en théorie cela devrait pas trop mal fonctionner..A+ Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
ludo07 Posté(e) le 28 janvier 2012 Auteur Partager Posté(e) le 28 janvier 2012 Bonjour à tous et plus particulièrement à Bryce. Ton programme correspond exactement à ce que je souhaitais. Sauf que je l'utilisé de la mauvaise façon. Quand j'ai fais mes 2 premiers essais, dans le SCU général j'ai fait quelques cotes ordonnées. Puis j'ai lancé SIGNORD les + ou - se sont bien mis devant chaque cotations selectionnées.Puis aprés j'ai créé un nouvel SCU, et bêtement j'ai relancé SIGNORD puis j'ai sélectionné quelques cotations déjà créée et j'ai été surpris que le signe devant resté inchangé. J'en ais donc déduit que ton programme utilisé que le SCU général et pas le SCU courant.Mon dieu quelle térrible erreur que je faisais là!!!!!!!!! Surtout que quand j'utilise des cotes ordonnées je me mets dabord dans un SCU courant puis aprés je cote en ordonné. Donc aprés j'utiliserais ton trés bon programme SIGNORD. Merci à bryce et désolé pour vous avoir relancé. Merki A+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
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