Aller au contenu

bonuscad

Membres
  • Compteur de contenus

    5 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    56

Tout ce qui a été posté par bonuscad

  1. bonuscad

    Cherchez Charlie !

    Il y a ceux-ci aussi (facile il sont autofocus sur le pictogramme de visite) http://pix.toile-libre.org/upload/img/1433507569.png Ceux-là aussi, plus difficile à trouver... http://pix.toile-libre.org/upload/img/1433507608.png
  2. Bonjour, Il n'y a pas d'endroit précis en lisp, tant que tu respecte l'imbrication des parenthèses dans les fonctions. Après l'ajout de la fonction ne sert qu'a se débarrasser de l'erreur que tu avais:no function definition: INCVALUE Si cela ne fonctionne pas comme tu le désire, c'est que la routine n'est pas adaptée à ton besoin... Il faudra te tourner vers autre chose, ou faire une adaptation encore plus spécifique de la routine. J'ai quand même tester le code suivant avec du texte simple (ayant un suffixe numérique), et cela fonctionne sans erreur. ;;=================== COMMANDES ===================;; ;; INCSUF (gile) 14/02/08 -version 2.2- ;; Incrémente le suffixe des textes, mtextes ou attributs successivement sélectionnés. ;; Le suffixe est déterminé automatiquement en fonction de la nature des caractères qui ;; le compose et du paramètre "Type(s) de caractère du suffixe" courant. ;; L'utilisateur peut modifier les paramètres courants dans une boite dialogue. ;; ;; Modif 24/05/2015 ligne de commande avec paramètres par défaut (defun c:incsuf (/ ValidSel temp typ inc cp file dcl_id what_next ent elst val prop save ) (defun ValidSel (elst / val) (setq val (cdr (assoc 1 elst)) val (ascii (substr val (strlen val))) ) (< 47 val 58) ) (or *suffixbin* (setq *suffixbin* 1)) (or *incrvalue* (setq *incrvalue* 1)) (setq typ *suffixbin* inc *incrvalue* cp 0 ) (if typ (progn (setq *suffixbin* typ *incrvalue* inc ) (while (not (and (setq ent (nentsel "\nSélectionnez le texte de départ: " ) ) (setq elst (entget (car ent))) (setq typ (cdr (assoc 0 elst))) (member typ '("ATTRIB" "TEXT" "MTEXT")) (setq val (cdr (assoc 1 elst))) (or (zerop cp) (setq prop (vl-remove nil (mapcar (function (lambda (n) (assoc n elst) ) ) '(8 62 40 7) ) ) ) ) ) ) ) (if (ValidSel elst) (IncValue "" val "" *incrvalue* *suffixbin* typ save prop) (princ "\nParamètre de suffixe incorrect.") ) ) ) (princ) ) ;;=================== SOUS-ROUTINES ===================;; ;; INCSUFF (version 1.2) -Gilles Chanteau- 15/01/08 ;; Incrémente le suffixe d'une chaîne de caractères de la valeur spécifiée. ;; Est pris en compte comme suffixe, l'ensemble des caractères [0-9] et/ou [A-Z] ;; et/ou [a-z] depuis la fin du texte, en fonction de la valeur de alpha ;; ;; Arguments ;; str : une chaîne avec un suffixe valide ;; inc : un entier positif ;; alpha : un entier, somme des codes binaires suivant ;; 1 pour les caractères [0-9] ;; 2 pour les caractères [A-Z] ;; 4 pour les caractères [a-z] ;; ;; Retour ;; la chaîne avec son suffixe incrémenté (ou nil si aucun suffixe valide) ;; ;; Exemples : ;; (incsuff "N°002" 12 1) = "N°014" ;; (incsuff "Dessin9" 1 1) = "Dessin10" ;; (incsuff "test_ZZ9" 1 3) = "test_AAA0" ;; (incsuff "test_ZZ9" 1 1) = "test_ZZ10" ;; (incsuff "12-" 1 1) = nil ;; ;; Modification (13/02/08) : codes binaires pour l'argument alpha (defun incsuff (str inc alpha / lst crt pas ind val quo ret) (setq lst (reverse (vl-string->list str))) (while (and (setq crt (car lst)) (cond ((and (< 47 crt 58) (= 1 (logand 1 alpha))) (setq pas 10 ind 48 ) ) ((and (< 64 crt 91) (= 2 (logand 2 alpha))) (setq pas 26 ind 65 ) ) ((and (< 96 crt 123) (= 4 (logand 4 alpha))) (setq pas 26 ind 97 ) ) ((< 0 quo) (setq crt (if (= 10 pas) ind (1- ind) ) lst (cons (car lst) lst) ) ) ) ) (setq val (- crt ind) quo (/ (+ val inc) pas) ret (cons (+ ind (rem (+ val inc) pas)) ret) ) (if (zerop quo) (setq ret (append (reverse (cdr lst)) ret) lst nil ) (if (cdr lst) (setq lst (cdr lst) inc quo ) (setq lst (list ind) inc (if (= 10 pas) quo (1- quo) ) ) ) ) ) (if ret (vl-list->string ret) ) ) ;;==================================================;; ;; IncValue ;; Incr?mente un valeur dans les textes ou attributs s?lectionn?s ;; ;; Arguments ;; pref : pr?fixe (string) ;; val : valeur ? incr?menter (string) ;; suff : suffixe (string) ;; inc : valeur d'incr?ment (entier, positif) ;; bin : type de caract?res ? incr?menter (entier, code binaire) ;; typ : type d'entit? (string, valeur du code de groupe DXF 0) ;; tag : Etiquette d'attribut (string) ;; save : liste de sauvegarde des anciennes valeurs de texte (liste d'association) (defun incvalue (pref val suff inc bin typ save prop / ent elst) (while (or (initget 1 "annUler") (setq ent (nentsel (strcat "\nS?lectionnez le texte suivant" (if save " ou [annUler]: " ":" ) ) ) ) ) (if (= ent "annUler") (if save (progn (setq elst (car save)) (entmod elst) (and (= typ "ATTRIB") (entupd (cdr (assoc 330 elst)))) (setq val (incsuff val (- inc) bin) save (cdr save) ) ) (princ "\nPlus rien ? annuler.") ) (and (setq elst (entget (car ent))) (= (cdr (assoc 0 elst)) typ) (setq save (cons elst save)) (setq val (incsuff val inc bin)) (if prop (entmod (append (vl-remove-if (function (lambda (x) (member (car x) '(1 8 62 40 7)) ) ) elst ) (if (null (assoc 62 prop)) '((62 . 256)) ) (cons (cons 1 (strcat pref val suff)) prop) ) ) (entmod (subst (cons 1 (strcat pref val suff)) (assoc 1 elst) elst) ) ) (and (= typ "ATTRIB") (entupd (cdr (assoc 330 elst)))) ) ) ) )
  3. Bonjour, Et si on utilise l'excellent MQSELECT d'olivier, on filtre la table avec la donnée "SOUSTERRAIN", et une fois la sélection faite; dans le volet de propriété, on change en "SOUTERRAIN"
  4. bonuscad

    Fichiers .shx - .shp -

    Bonjour, Pourtant ICI, après avoir créer un compte, cela à l'air possible...
  5. bonuscad

    Cherchez Charlie !

    Et on arrête pas! Une panoramique du mont blanc d’une définition de 365 gigapixels. in2white.com
  6. Bonjour zebulon, Comme je me suis permis de prendre un bout de code de ta publication pour en améliorer une autre, je publie donc ègalement la modification que j'ai faite. Je l'ai d'ailleurs donné en réponse ici. Cette fonction modifiée permet de rechercher/changer du texte dans un tableau (objet ACAD_TABLE) (defun my_replace_text (new_string old_string / js n ename) (vl-load-com) (defun string-subst (nam_obj / value_string nbs tmp_nbs) (setq value_string (vlax-get nam_obj 'TextString) nbs 0) (while nbs (if (setq nbs (vl-string-search old_string value_string (setq tmp_nbs nbs))) (setq value_string (vl-string-subst new_string old_string value_string tmp_nbs) nbs (1+ nbs) ) ) ) (vlax-put nam_obj 'TextString value_string) ) (defun tabl_subst (obj / eRows eColumns R C val nbs tmp_nbs) (setq eRows (vla-get-rows obj) eColumns (vla-get-columns obj) R 0 ) (repeat eRows (setq C 0) (repeat eColumns (setq val (vla-GetText obj R C) nbs 0 tmp_nbs nil) (while nbs (if (setq nbs (vl-string-search old_string val (setq tmp_nbs nbs))) (setq val (vl-string-subst new_string old_string val tmp_nbs) nbs (1+ nbs) ) ) ) (vla-SetText obj R C val) (setq C (+ C 1)) ) (setq R (+ R 1)) ) ) (setq js (ssget "_X" '( (-4 . "<OR") (0 . "*TEXT,MULTILEADER,ATTDEF,ACAD_TABLE") (-4 . "<AND") (0 . "INSERT") (66 . 1) (-4 . "AND>") (-4 . "OR>") ) ) ) (cond (js (repeat (setq n (sslength js)) (setq ename (vlax-ename->vla-object (ssname js (setq n (1- n))))) (cond ((vlax-property-available-p ename 'TextString) (string-subst ename) ) ((vlax-property-available-p ename 'Rows) (tabl_subst ename) ) (T (mapcar '(lambda (att) (string-subst att) ) (vlax-invoke ename 'GetAttributes) ) ) ) ) ) ) (prin1) )
  7. Bonjour, Certainement un oubli de (gile) , tu peux récupérer la fonction qui est une sous-routine dans l'application originale que tu trouveras dans Increment.lsp sur sa page.
  8. bonuscad

    Prolonger / Ajuster

    Bonjour, Sous Map 2014, j'ai aussi le même problème, je ne peux pas prolonger (les arc sur la polyligne basse de ton exemple). Je pense que cela vient du vecteur d'extrusion des entités, quand Autocad calcule avec ces vecteurs il doit y avoir une imprécision résultante qui engendre une non réalisation de la commande invoquée. Ca comfirme mon hypothése, d'ailleurs si j'applique cette petite routine de test sur ton dessin qui fait a peu près la même procédure (mais sans passer par un dessin temporaire), j'y arrive aussi. (defun c:test ( / ent1 ent2 dxf_ent1 dxf_ent2) (setq dxf_ent1 (entget (car (setq ent1 (entsel "\n1ere entité"))))) (setq dxf_ent2 (entget (car (setq ent2 (entsel "\n2eme entité"))))) (entmod (subst '(210 0.0 0.0 1.0) (assoc 210 dxf_ent1) dxf_ent1)) (entmod (subst '(210 0.0 0.0 1.0) (assoc 210 dxf_ent2) dxf_ent2)) (command "_.UCS" "_World") (command "_.PLAN" "_World") (command "_.ZOOM" "_Object" (car ent1) (car ent2) "") (command "_.EXTEND" ent1 "") (while (not (zerop (getvar "CMDACTIVE"))) (command pause)) (setq dxf_ent2 (entget (cdar dxf_ent2))) (entmod (subst (assoc 210 dxf_ent1) '(210 0.0 0.0 1.0) dxf_ent1)) (entmod (subst (assoc 210 dxf_ent1) '(210 0.0 0.0 1.0) dxf_ent2)) (command "_.UCS" "_Previous") (command "_.PLAN" "_Current") (command "_.ZOOM" "_Object" (car ent1) (car ent2) "") ) Je pense qu'il n'y a pas de solution miracle actuellement, il faut trouver des combines et qu'Autodesk améliore ses processus de calcul. Une autre combine, qui pourrait fonctionner, serait d'appliquer un facteur d'échelle (de 0.001 par exemple) a ton dessin afin d'améliorer la précision des décimales, d'appliquer les commandes à problème, puis de remettre tes objets à l'echelle.(ça marche un peu mieux , avec ton dessin, mais ça reste aléatoire tout de même) Va falloir faire avec....
  9. Pas trop en rapport avec le sujet, mais voulant profiter du mode 64bits pour Firefox, j'ai installé : Firefox developeur edition Bien sûr je l'ai pris en francais et pour Windows 64bits. Quelqu'un a t-il tenté l'expérience? Pour l'instant cela fait seulement quelque semaines que je l'utilise (usage peu intensif), mais je le trouve très réactif et stable, les add-ons malgré les avertissements ne m'ont pas posé de problèmes. Il faut dire que j'ai abandonné Adblock Plus en faveur de uBlock Origin suite à la lecture de cet article, ce qui a peut être contribué à la réactivité de firefox. Pour l'instant je suis satisfait de ce choix dans son ensemble, le surf est fluide et rapide.
  10. En comprenant l'anglais cela fais appel à une mnémmonique: ItoA = Integer TO Alphanumeric AtoI = Alphanumeric TO Integer RtoS = Real TO String
  11. Bonjour, Ma réponse en 2005 ici et voir aussi les suivantes...
  12. bonuscad

    donnée d'objet

    C'est bien le principe de pouvoir écrire des bouts de code ;) Toujours sur la même stucture de code: ((lambda ( / js_pl n_pl ent) ;on filtre les polylignes dans l'espace objet appartenant au calque BRANCH (setq js_pl (ssget '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "BRANCH") (100 . "AcDbPolyline")))) ;si une sélection est effective ( il y a des objets) (cond (js_pl ;alors on boucle sur le nombre d'entité polyligne sélectionnées (repeat (setq n_pl (sslength js_pl)) ;on extrait le nom de l'entité (setq ent (ssname js_pl (setq n_pl (1- n_pl)))) ;on extrait sa longueur qu'on applique au champ de données d'objet "Longueur" de la table "BRANCH" (ade_odsetfield ent "BRANCH" "Longueur" 0 (vlax-get (vlax-ename->vla-object ent) 'Length)) ) ) ) ))
  13. bonuscad

    donnée d'objet

    Bonjour, Si la table "EQ_SPE" est déjà attachée aux points, ceci devrait fonctionner. ((lambda ( / js_pt n_pt ent dxf_ent pt) (setq js_pt (ssget '((0 . "POINT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "BRANCH") (100 . "AcDbPoint")))) (cond (js_pt (repeat (setq n_pt (sslength js_pt)) (setq ent (ssname js_pt (setq n_pt (1- n_pt)))) (setq dxf_ent (entget ent)) (setq pt (cdr (assoc 10 dxf_ent))) (if pt (progn (ade_odsetfield ent "EQ_SPE" "Abscisse" 0 (car pt)) (ade_odsetfield ent "EQ_SPE" "Ordonnee" 0 (cadr pt)) ) ) ) ) ) )) Tu copie-colle en ligne de commande, ça ne sert qu'une fois...
  14. bonuscad

    Accrochage aux Objets

    Bonjour, Je pense que la priorité d'accrochage vient de l'ordre de création d'entité et non du survol du curseur. Si la dernière entité créé est la bleu, il prendra le Z de celle-ci; c'est à dire 20 Si c'est la rouge (ce qui doit être le cas ici), il prendra l'extrémité de celle-ci, soit 0. Je ne peux vérifier mes propos, je n'ais pas 2015... Peut être que l'ordre de tracé peut avoir une influence? (passer la rouge devant), à essayer! En tout cas c'est vrai qu'avec la 2014, je n'ai pas ce problème!?!? C'est comme quand le curseur vient se coller au poignées quand celles-ci sont activées, mais cela s'applique aussi à l'élastique que tu as du point de référence au point projeté. Peut tu donner les valeurs que tu as aux variables: AUTOSNAP OSMODE OSNAPCOORD OSOPTIONS
  15. Bonjour, Relis ma réponse (c'est vrai que j'avais modifié ma réponse entre temps) ça répond à ta question!
  16. Bonjour, (command "_move" "p" pt_ins) Ca c'est pour une sélection précédente, ce qui n'est pas le cas. Ce que tu veux c'est le dernier objet créé, donc: (command "_.move" "_last" "" pt_ins pause) NB: Si tu veux internationaliser tes commandes, il faut TOUTES les faires (autrement ça ne sert à rien, autant rester en Français) (command ".deplacer" "dernier" "" pt_ins pause)
  17. Bonjour, Pour la manipulation des chaines, regarde: strlen et substr en mode vanilla lisp Autrement tu as aussi les fonctions vl-string-**** qui peuvent simplifier les choses.
  18. (entsel) retourne une liste composée du nom de l'entité et du point de sélection, je pensais faire d'une pierre 2 coup en utilisant celui-ci. Donc: (trans (cadr ent) 1 0) à la fin du code place le texte à ce point, c'est ici que tu doit agir. Dans ton code tu fais une erreur en rajoutant tes drapeaux de suivi, notemmment dans le if. IF requiert SEULEMENT 2 conditions vrai ou faux, s'il y a plusieur conditions vrai ou faux, IL FAUT LES REGROUPER avec progn (tu les as seulement regrouper avec une paire de parenthèses supplémentaires) A la fin tu as aussi une erreur sur l'écriture du texte. (princ "\nEcriture du texte...") (command "-texte" xy "0.20" "" x_apha Texte) Doit être: (princ "\nEcriture du texte...") (command "-texte" xy "0.20" (angtos x_alpha) Texte) Une entrée en trop "" x_alpha et non x_apha Utiliser (angtos), autrement l'angle sera lu en radian... Si tu passe par (entmake) on peut alors utiliser directement cet angle en radian.
  19. Et si tu colle ce qui suit directement en ligne de commande, ça ressemble à ce que tu veux faire? ((lambda ( / ) (while (not (setq js (ssget "_+.:E:S" '((0 . "INSERT") (2 . "PTRL_PROF") (66 . 1))) ) ) ) (setq ename (vlax-ename->vla-object (ssname js 0))) (setq att_val (strcat "pf:" (car (mapcar '(lambda (att) (vlax-get att 'TextString)) (vlax-invoke ename 'GetAttributes))))) (setq ent (entsel "\nChoix du segment de polyligne: ") ename (car ent) ang (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv ename (vlax-curve-getParamAtPoint ename (vlax-curve-getClosestPointTo ename (trans (cadr ent) 1 0)) ) ) ) ) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (setq nw_obj (vla-addMtext Space (vlax-3d-point (polar '(0.0 0.0 0.0) (* pi 0.5) (getvar "TEXTSIZE"))) 0.0 att_val ) ) (mapcar '(lambda (pr val) (vlax-put nw_obj pr val) ) (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'Layer 'Rotation) (list 8 (getvar "TEXTSIZE") 5 (trans (cadr ent) 1 0) (getvar "CLAYER") ang) ) (prin1) ))
  20. bonuscad

    enchainer copie et -pan

    Bonjour, Très sommairement, pour t'inspirer... (defun dir_choice (sel / key) (princ "\n<2/4/6/8> pour choix direction") (if sel (command "_.copy" sel "" "_none" (getvar "VIEWCTR")) (command "_.pan" "_none" (getvar "VIEWCTR")) ) (setq key (grread nil 2 1)) (cond ((eq (cadr key) 50) (command "_none" (list (car (getvar "VIEWCTR")) (- (cadr (getvar "VIEWCTR")) (getvar "USERR1")))) ) ((eq (cadr key) 52) (command "_none" (list (- (car (getvar "VIEWCTR")) (getvar "USERR1")) (cadr (getvar "VIEWCTR")))) ) ((eq (cadr key) 54) (command "_none" (list (+ (car (getvar "VIEWCTR")) (getvar "USERR1")) (cadr (getvar "VIEWCTR")))) ) ((eq (cadr key) 56) (command "_none" (list (car (getvar "VIEWCTR")) (+ (cadr (getvar "VIEWCTR")) (getvar "USERR1")))) ) ) ) (defun c:my_copypan ( / ) (setvar "cmdecho" 0) (if (zerop (getvar "USERR1")) (progn (initget 7) (setvar "USERR1" (getdist "\nDistance de déport: ")) ) ) (princ "Selectionner les objets à copier ou rien pour un pan") (dir_choice (ssget)) (setvar "cmdecho" 1) (prin1) )
  21. Bonjour, Fais une recherche sur CadXp dans les discussions avec cahier_bloc Peut être cela te conviendra...
  22. Bonjour, Avec ceci? (setq ent (entsel) ename (car ent) ang (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv ename (vlax-curve-getParamAtPoint ename (vlax-curve-getClosestPointTo ename (trans (cadr ent) 1 0)) ) ) ) ) (angtos ang)
  23. Bonjour, J'ai des comportements différents selon le destinataire. 1 - En interne ou vers des BE, j'applique la méthode de titi95 (cartouche automatique, tous les renseignement sont mis à jour; date, emplacement et nom du fichier, échelle ), et aussi quand j'assure la sortie papier du document. 2 - Quand le format de sortie est numérique (PDF ou autre) et que je ne sais comment le support papier sera produit, j'opte pour une mire en noir et blanc graduée placée dans l'espace objet de manière à donner une référence de mesure si besoin. (j'ai des mire pour le km, le m , le cm et le mm) A la personne de faire sa règle de 3 pour obtenir sa cote mesurée si l'impression a été faite par dessus la jambe. 3 - Quand je sais que le destinataire n'a pas un kutsch (et ne sais même pas ce que c'est), je place quelques côtes essentielles dans le dessin. De toute façon à l'air du numérique de moins en moins de gens sortent un kutsch de leur poche pour mesurer sur un plan et je dirais même qu'on s'attache plus au visuel du plan papier qu'à son exactitude: couleur, symbolique de représentation, style du texte....
  24. Bonjour, En fouillant dans les fonds de tiroir (à voir si ça fonctionne avec AutoCAD Architecture 2015, normalement oui car c'est basique) 3dfto3dpo
  25. Patrick a en fait voulu bénéficier de Windows 10 : mise à jour gratuite, même pour les pirates depuis sa version asiatique :P :(rires forts):
×
×
  • 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é