Aller au contenu

Topheur

Membres
  • Compteur de contenus

    93
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Topheur

  1. Bonjour tous le monde, Je cherche un lisp pour sélectionner des blocs ayant le même nom ex. 00_MON_BLOC (bloc avec attributs) et mettre en vert ces blocs. J'ai écrit le code suivant: (defun c:sb (/ ss) (setq ss (ssget "_X" (list '(0 . "INSERT") '(2 . "00_NUM_TUBE")))) (command "_.change" ss "" "p" "CO" "4" "") (princ) ) Mais ça ne sélectionne pas mes blocs :( et la commande changer, bloque à 0,255,0 Bref rien ne marche :( (sauf la couleur :P )
  2. De rien ;)
  3. C'est également celui vers lequel je m'orientais, pense tu qu'un 8 Go Ram mais avec des Ghz à 2,4 pourrais faire l'affaire ? Pour ce qui est des pdf, j'ai eu un seul cas en 2 ans et normalement on refuse de travailler avec. Merci de ton aide.
  4. Bonjour à tous et à toutes, Je cherche un pc à petit prix mais performant pour faire tourner Autocad 2014. Je ne sais pas trop comment vous expliquer le type de plan que je reçois mais je vais essayé. Je travail pour des électriciens. La plupart du temps j'ai le fond de plan archi soit déjà lier dans le fichier soit en xref (que nous venons lier dans le fichier) d'un niveau (voir de tous les niveaux dans certains cas) avec les calques des différents intervenants (plaquiste avec les faux plafond), le plombier avec ces blocs chauffe eau, robinets etc et le plus important, électrique avec les appareillages de la maison (interrupteur, prises, etc...). Les plans sont uniquement en 2D. Mon travail est de dessiner des "pieuvres électriques", pour ce faire je trace des arcs, j’insère des blocs et je fais de la cotation. Voilà, je m'oriente sur un pc reconditionné (question de coup), j'ai trouvé ces deux là (désolé pour la pub) : Mon lien Mon lien Voilà, l'idée c'est de trouvé un pc à 200€ maxi. Pour comparé (si c'est comparable), je dispose d'un PC de bureau HP Compaq 8100 Elite SFF sur lequel cela fonctionne parfaitement, je cherche donc le même en portable. Merci de votre aide.
  5. Ok, c'est noté et la réponse fonctionne merci
  6. Merci didier, J'en ai profité pour regarder ton site et celui-ci m'a permis de trouver un début de réponse sur la commande getstring. J'ai besoin d'une variable n_CLIENT (nom du client) qui peut comporter un espace. j'ai donc écrit la ligne suivante (setq n_CLIENT (getstring "Cr" "\nEntrer le nom du client :")) L'espace fonctionne MAIS en question utilisateur j'ai Cr au lieu de ma question Entrer le nom du client. J'ai essayé avec des parenthèses, sans les "", avec des [] mais rien ni fait :( Un coup de pouce :P
  7. Bonjour bonuscad, Désolé de ne pas avoir répondu hier... C'est parfait, ça marche. Il ne me reste plus qu'à adapter le tout. Sujet clos. Je te dis au prochain Lisp :P
  8. Bonjour bonuscad, Je crois que tu vas devoir m'aider encore un peu :( J'ai modifier le Lisp comme tu me l'a dit et cela marche parfaitement SAUF si le bloc est un bloc dynamique :( Pourtant il se nomme correctement (pas de *U...) mais cela ne fonctionne pas. Une idée ? :P
  9. C'est parfais ! Sujet clos UN GRAND MERCI POUR TON AIDE :) Et si on est complètement fou et que l'on veut mettre selectionner un bloc qui touche un autre bloc J'ai essayé (ssget "_X" (list '(0 . "INSERT") '(2 . "00_CPR_LD_LFA") Mais ça ne marche pas erreur AcDbCurve 4658 Après j'arrête :P
  10. Bonjour, Je vais faire le rabats joie, c'est presque ça. J'aimerais seulement qu'au lieu de me demander de sélectionner les splines, que le Lisp sélectionne de lui même toutes les splines du calque SPLINE (ou que je sélectionne une spline du calque SPLINE et que le Lisp sélectionne toutes les splines du calque SPLINE). Sinon c'est exactement ce que je cherche :P
  11. Je n'ai pas autocad sous la main donc petit dessin sous paint :P Dans le cas 1 se que nous devrions faire (la croix rouge pour le point d'insertion des blocs représentés par des ronds). Les splines partent d'un point d'insertion de bloc vers un autre (ce qui me va si on sélectionne toutes les splines du calque SPLINE uniquement (il peut y avoir d'autre spline sur d'autre calque à ne pas prendre en compte) Dans le cas 2 se qui arrive sur quelques blocs (peut être 2% sur le dessin entier). On part d'un bloc vers un autre MAIS pas forcement sur le point d'insertion des blocs. Le cas 1 me conviendrais parfaitement, il faut bien qu'il me reste un peu de travail :P Et comme dans la gêne il n'y a pas de plaisir :P , sur ces spline je met un bloc INFO_SP(à un endroit au hasard mais qui touche la spline), y a t-il possibilité de sélectionner toutes les splines touché par un bloc INFO_SP(pour vérifier que toutes les splines ont un bloc INFO_SP) Merci de ton aide
  12. Bonjour à toutes et à tous, Je ne pensais pas que ma demande ferais autant d'émule :P Pour répondre aux premières questions : - Les splines sont des vrais, tracé avec le bouton spline (2D). - Je ne dispose pas d'AUTOCAD MAP. - Le nombre de spline est aléatoire mais très souvent plus de 200 par dessins. - Et les splines sont obligatoire pour des raisons de reprise de dessins et de process interne. Concernant le code de bonuscad, c'est ce que je cherche ! Bon j'avoue que si la spline n'est pas sur le point d'insertion du bloc (mais qu'elle le touche quand même) ça ne sélectionne pas le bloc. C'est dommage MAIS (en théorie) les splines sont reliées via les points de centre des blocs donc je valide (et dans le cas contraire, il faudra vérifier les quelques splines restantes). Seul bémol, je ne voudrais pas sélectionner UNE spline mais toutes les splines du calque SPLINE :P . Encore un coup de pouce bonuscad (ou un(e) autre) et tu sera mon sauveur(se) :P
  13. Bonjour les lispeuses et les lispeurs :) Petit défis du jour :P , quelqu'un aurait il un lisp pour sélectionner les blocs touchés par des splines d'un même calque. Je m'explique : J'ai un calque SPLINE. Sur celui-ci je relis différents blocs (ma spline par d'un bloc et va sur un autre et cela plusieurs fois et aléatoirement), les blocs sont sur des calques différents. Pour être sur de ne pas avoir oublier un bloc, je cherche un lisp qui sélectionne tous les blocs touché par mes splines du calque SPLINE uniquement(ensuite je mettrez ces blocs dans une couleur). Pour info, la spline commence au point d'insertion d'un bloc et touche un autre bloc sur son point d'insertion (je ne sais pas si cela à une importance...) Voilà, je sais qu'il existe de nombreux lisp de sélection mais il faut un cercle, un rectangle ou une polyligne fermé... Merci de votre aide.
  14. Topheur

    Spline Méthode

    Bonjour Gile (notre maitre à tous :P ) En deux coups de cuillere à pot ! Tu es trop fort, exactement ce dont j'ai besoin :) Merci !
  15. Topheur

    Spline Méthode

    Bonjour didier, En terme de rendu cela n'est pas grave, mais je ne vous ai pas tous dit :P En fait, je réutilise ces cercles et splines, sur différent plans, parfois je tombe bon, parfois il faut déplacer certains point des splines. Pour le moment, je sélectionne toutes mes spline et dans propriété je change Méthode en Ajuster. C'est pas très long mais quand on multiplie par le nombres de plans, c'est 3 secondes par plans de perdu et mis bout à bout, c'est des heures de travail perdu... C'est pour cela que je cherche une commande (ou un lisp, je suis preneur) pour faire cela en une commande du genre SPAJUSTE ;) Merci de ton aide
  16. Topheur

    Spline Méthode

    Merci de ce premier élément de piste, C'est se que j'aimerais obtenir mais sur toutes mes splines sélectionnée. Une autre idée ?
  17. Topheur

    Spline Méthode

    Bonjour, J'utilise la commande EXTRIM d'autocad pour ajuster des splines qui parte du centre d'un cercle. En clair, j'ai un cercle et je trace des splines depuis le centre du cercle vers des éléments en dehors du même cercle. Lorsque j'utilise EXTRIM à l'intérieur du cercle, cela "nettoie" l'intérieur mais si je clique sur mes splines, les points de lissages ne corresponde plus à ajustement. Pour palier à cela, je sélectionne toutes mes splines et je passe l'option Méthode (dans propriété) à Ajustement. Je cherche la commande me permettant de le faire en ligne de commande sans succès. J'ai essayé de sélectionner mes splines et de taper SPLMETHOD mais cela ne fonctionne pas. Merci de votre aide.
  18. Tous d'abord (re) merci pour le lisp qui fonctionne parfaitement. Eh bien non, le lisp précédent ajoute tous les calques nécessaires pour mon filtre de groupe. Je crée des filtres de groupes pour n'afficher que les calques dont j'ai besoins en fonction des cas. Mais se n'est pas grave, le lisp précédent me fais gagner un temps fou. Merci à toi de ton aide.
  19. C'est parfais, c'est exactement se que je cherche !!! Allez j'abuse encore un peu, peut on convertir ces même filtres en filtres de groupe ? :P
  20. Bonsoir, ça ne marche pas :( ça me crée un seul filtre (le premier dans defun c:MesFiltre) J'ai modifier dans la "routine" ;;(-3 ( "ACAD" (1000 . "( NAME== \"*PLAF*\" )"))) par ;;(-3 ( "ACAD" (1000 . "( NAME== \"*propFiltre*\" )"))) pour récupérer le nom du filtre Je ne suis pas très fort en lisp, peut être une fausse manip de ma aprt. Une idée ? Merci de votre aide.
  21. Bonjour, En fait, quand j'ouvre mes plans clients, je peux avoir plusieurs calques de type Faux Plafond, mais également poutres ainsi que les calques de l'entreprise qui m'emploie qui commence tous par CSN_xxx Du coup, j'ai un lisp qui me permet de filtrer les calques FX PLAFOND, un pour les poutres et un pour les calques de l'entreprise. Du coup je lance 1 première ligne de commande FILTRE_FX_PLAF Puis FILTRE_POUTRE Et pour finir FILTRE_ENT Le but final c'est qu'avec une commande lisp (ex FILTRES_PERSO) je puisse générer les 3 d'un coup. Ensuite, il me reste à les transformer en filtre de propriété en faisant clic droit dessus et convertir en filtre de groupe (je ne sais pas le faire en lisp) Merci de ton aide
  22. Bonjour les forumeurs et les forumeuses :P , J'utilise le lisp suivant afin de me créer un filtre de propriete : (defun c:FILTRE_FX_PLAF (/ dict xdic) ;(setq nom_filtre (getstring "\nEntrer le nom des éléments à filtrer :")) (setq xdic (vlax-vla-object->ename (vla-getextensiondictionary (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))))) (if (setq dict (dictsearch xdic "ACAD_LAYERFILTERS")) (setq dict (cdr (assoc -1 dict))) (setq dict (dictadd xdic "ACAD_LAYERFILTERS" (entmakex '((0 . "dictionary") (100 . "AcDbDictionary") (280 . 0) (281 . 1) ) ) ) ) ) (dictadd dict "DenisH" (entmakex '((0 . "xrecord") (100 . "AcDbXrecord") (280 . 1) (1 . "FX_PLAFOND") (1 . "*PLAF*") (1 . "*") (1 . "*") (70 . 0) (1 . "*") (1 . "*") (-3 ( "ACAD" (1000 . "( NAME== \"*PLAF*\" )"))) ) ) ) (princ) ) Mais j'aimerais pouvoir en créer plusieurs en une seul fois. Merci de votre aide.
  23. Finalement, je vous propose mon code aujourd'hui :(rires forts): Par contre j'aimerais éviter de demander à l'utilisateur de choisir la cotation, j'aimerais que le lisp récupère la cotation qui viens d'être tracé. AU SECOURS bonuscad (ou lecrabe :D si tu as la réponse) Par contre le code est peut être complexe pour les vraie lispeurs mais au moins je comprends mieux les étapes de ce dernier. Par la suite je pense supprimer la question utilisateur sur la marge à ajouter car je pense que se sera toujours 50 (mais dans le code on le demande une fois, merci pour la commande car je ne la connaissais pas et je pense la réutiliser dans d'autres lisp) J'ai également modifié le nom de la commande par DIM-P (P pour +) (defun c:dim-p ( / js n ent_dim dxf_ent p1 p2 p_nw1 p_nw2) ;déclaration des variable locales (if (not value) ; value n'a pas été mis en variable locale, cette variable sera valide pendant toute la session du dessin. Cela veut dire que dès que value sera définie, il ne posera plus la question sur la valeur à lui affecter. (progn (initget 2) ; arme le bit d'entrée utilsateur: interdit la valeur zéro (setq value (getreal "\nValeur à retrancher à la côte sélectionnée <0.20>: ")) (if (not value) (setq value 0.2)) ;si entrée utilisateur nulle alors valeur par défaut affectée à value ) ) (setq pdep (getpoint "\nSpécifiez le premier point: ")) ;; point de départ (centre de la pieuvre) (while T ;; t=true la boucle se répétera tant que l'on n'en sortira pas avec un echap (setq pfin (getpoint pdep "\nSpécifiez le deuxième point: ")) (command "_dimaligned" pdep pfin pause) ;; dessine la côte ;alors on le grip et pose la question de traiter celui-ci ou d'en créer un nouveau. (cond (js (sssetfirst nil js) (initget "Existant Nouveau _Existent New") ; arme le bit en mode français/international (progn (sssetfirst nil nil) (setq js (ssadd) js (ssget '((0 . "DIMENSION"))))) ) ;autrement on demande une selection filtrée sur les cotation (T (setq js (ssget '((0 . "DIMENSION"))))) ) ;on continu si un jeu de selection existe (cond (js ;on boucle sur le nombre d'entités contenu dans la sélection. (repeat (setq n (sslength js)) ;on récupére le nom de l'entité par incrémentation, ici plus exactement par décrémentation (n-1) (setq ent_dim (ssname js (setq n (1- n)))) ;on extrait les code dxf de celle-ci (setq dxf_ent (entget ent_dim)) (cond ;on vérifie que la cotation appartient au type alignée, pivotée, horizontale ou verticale. ;on veut écarter des cotation de type radiale, coordonnée, angulaire où le type de traitement que l'on veut appliquer ne serait pas possible. ((or (zerop (rem (cdr (assoc 70 dxf_ent)) 32)) (eq (rem (cdr (assoc 70 dxf_ent)) 32) 1)) ;on récupère les points de définitions des côtes: 13 et 14 (setq p1 (cdr (assoc 13 dxf_ent)) p2 (cdr (assoc 14 dxf_ent))) ;on applique à ces points la correction voulue ;le calcul se fait à l'aide (polar), c'est ici que tu doit adapter si tu ne veut faire que un seul côté... (setq p_nw2 (polar p2 (angle p1 p2) value)) ;on substitue les nouvelles valeurs aux anciennes. (setq dxf_ent (subst (cons 14 p_nw2) (assoc 14 dxf_ent) dxf_ent)) ;on met à jour l'entité (entmod dxf_ent) ) (T (princ "\nN'est pas une côte alignée, pivotée, horizontale ou verticale.") ) ) ) ) ) ) ;while (prin1) ) J'espère encore avoir de vos nouvelles pour ma demande : "éviter de demander à l'utilisateur de choisir la cotation, j'aimerais que le lisp récupère la cotation qui viens d'être tracé." Merci à vous en tous cas :)
  24. Merci bonuscad ! :(rires forts): ça marche ! Tu es mon héro du jour :P Par contre j'aurais jamais pu trouver le code tous seul :blink: Merci :D Bonsoir lecrabe, Je ne partagerais pas mon code ce soir car il est en plusieurs morceaux (qui fonctionnent indépendamment). J'assemble le tous (en espérant que ça marche) et je le mettrais en ligne d'ici peu avec plaisir (au plus tard le week end prochain). Par contre il ne sera pas parfais. Je fusionne des morceaux de codes donc c'est plutôt moche mais en règle générale ça marche et si d'autres personnes ont besoin de morceaux à adapter se sera ma contribution avec l'aide que j'ai reçu. Mon lisp fera la chose suivante : Pt d'origine (défini par l'utilisateur), cotations depuis ce point (boucle while), sélection des cotes et ajout de ces fameux 50 (lisp de bonuscad adapté). Encore merci.
  25. Bonsoir, Au secours bonuscad ! J'ai adapté le code, tous fonctionne mais je n'arrive pas à rajouter 50 à ma cote. J'ai essayé (setq p_nw2 (+ p_nw2 p_nw2)) (setq p_nw2 (polar p2 (angle p2 p1) (/ value 1.0))) Sans succès :( Merci de ton aide
×
×
  • 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é