Aller au contenu

Fundream

Membres
  • Compteur de contenus

    797
  • Inscription

  • Dernière visite

  • Jours gagnés

    5

Fundream a gagné pour la dernière fois le 13 octobre 2016

Fundream a eu le contenu le plus aimé !

Visiteurs récents du profil

Le bloc de visiteurs récents est désactivé et il n’est pas visible pour les autres utilisateurs.

Fundream's Achievements

Newbie

Newbie (1/14)

  • First Post Rare
  • Collaborator Rare
  • Posting Machine Rare
  • Conversation Starter Rare
  • Week One Done Rare

Recent Badges

14

Réputation sur la communauté

  1. Fundream

    Application.Getopenfilname

    Merci Luna je vais essayer RBloc mais de mon souvenir ça ne fait pas de changements de masse multiples. Sur autocad 2020 j'arrive à redéfinir les blocs mais va savoir pourquoi, à l'enregistrement ça perd les materiaux...
  2. Fundream

    Application.Getopenfilname

    Bonjour @didier Si je ne purge pas, l'insertion utilise les blocs déjà présent dans le fichier, ils ne se redéfinissent donc pas. En plus l'idée c'est de redéfinir les blocs en place, exactement au même endroit que les originaux, les plans étant déjà établis mais avec des bloc non à jour.
  3. Fundream

    Application.Getopenfilname

    Je suis désolé Gile mais cette séquence insère le bloc nommé sans mettre a jour l'ancien. J'ai tenté pas mal de chose mais autocad me dit "définition a double du bloc impossible", donc j'ai tenté de renommer les bloc avant insertion des nouveau mais rien ne se passe et ma liste reste désespérément vide... (defun c:UpdateBlocks (/ source-dwg block-list old-block-name new-block-name) (setq source-dwg (getfiled "Sélectionnez le fichier DWG source" "" "dwg" 8)) (if source-dwg (progn (setq block-list (vl-remove-if '(lambda (x) (= (cdr (assoc 2 x)) "*Model_Space")) (dictsearch (namedobjdict) "ACAD_BLOCK"))) (foreach block block-list (progn (setq old-block-name (cdr (assoc 2 block)) new-block-name (strcat old-block-name "-old")) (command "_.-rename" "_B" old-block-name new-block-name) (command "_.-insert" source-dwg old-block-name "_0,0" "_1" "_1" "_0") ) ) ) ) (princ) )
  4. Bonjour à tous, Je souhaite mettre à jour tous les bloc de mon dessin par les blocs portants le même nom contenus dans un autre fichier dwg. J'ai tenté le LISP sans succès, les blocs s'insèrent sans se redéfinir et j'essai donc le Vba dont je n'ai aucune notion. Pour choisir mon fichier source des bloc je souhaite utiliser Application.getopenfilename ("Fichier DWG (*dwg), *dwg") mais visiblement autocad ne reconnais pas la commande. Si vous avez une solution à m'apporter pour réaliser cette tache, se serait d'une grande aide. Merci
  5. Bon je me suis basé sur un lisp existant et j'ai réussi à sortir ça qui semble fonctionner : (defun c:rotmult () (prompt "Selectionner les objets à tourner") (setq ss (ssget)) (if (not ss) (setq ss (ssx))) (setq num (sslength ss)) (setq x 0) (setq axe (getstring nil "Axe de rotation (X/Y/Z): ")) (if ss (if (setq ang (getreal "Angle de rotation: ")) (repeat num (setq ename (ssname ss x)) (setq elist (entget ename)) (command "scu" "ob" ename) (command "3DRotation" ename "" axe "" ang) (setq x (1+ x)) ) ) ) )
  6. Bonjour, J'ai un dessin avec énormément de blocs identiques insérés dans l'espace mais 50% d'entre eux ont été inséré dans un mauvais SCU.J'aimerai pouvoir tourner tout ce beau monde de 90° autour de leur propre axe X (SCU OB) en une seule fois.Un petit lisp existe il ? Merci
  7. Pour moi il faut que tu mette l'image en fond de scene
  8. Bonjour, Je cherche à détecter la présence d'un bloc le long de la ligne formée par deux points de sélection quel que soit le sens de sélection (donc pas forcément pt1 au point d'insertion) Si la détection d'un bloc n'est pas possible, peux-t-on détecter un élément ligne ou polyligne qui est présent dans le bloc entre ses deux points ? L'idée c'est de faire une insertion automatique de bloc en fonction de ce qui est déjà présent. Déroulé de la fonction : On clique sur deux points, ça insère le bloc d'une conduite Ø900 nue Par la suite on veut ajouter de l'isolation sur cette conduite, on re-clique sur les deux points d'extremitée de cette conduite et cela remplace le bloc conduite nue par le bloc conduite isolé Par la suite la fonction finale deviendra : On souhaite enfin ajouter un chemin d’inspection sur certaines conduites isolé uniquement, on clique de nouveau sur le point, cela détecte une conduite isolé ou non, si elle est isolé cela insère un bloc chemin d'inspection pour conduite de 900 par dessus le bloc conduite,si elle n'est pas isolé cela la remplace par une conduite isolé. Des idées ?
  9. Je note, merci pour cette solution.
  10. C'est bon ! Un petit (if (/= (cadr ss3) nil) aura résolu mon problème.
  11. Salut ! Tu as une bonne mémoire ;) J'ai un problème sur le code, suite au filtre des blocs, si il s’avère que le jeu de sélection est vide, cela me redemande de sélectionner alors que je voudrai que cela se termine. Il faut donc que je rajoute un (if (ss /= nil)) mais cela ne fonctionne pas. Quelqu'un a une idée pour vérifier qu'un jeu de sélection est présent ?
  12. Oui oui effectivement, mais je suis surpris que tu t'en souvienne, je ne suis pas très actif sur le forum.
  13. FunDream 3D, d'où tu sors ça ? Pour le premier bout de code je t'enverrai des pistaches ^^ Ce sont des références de pièce, il faut demander au fabricant le pourquoi du comment. Merci en tout cas
  14. Exactement, j'ai modifié le ssatt et compilé les deux, ça donne ça et ca marche à merveille : (defun ssatt (/ att elst ss1 ss2 n ent) (and (setq ss2 (ssadd)) (sssetfirst nil nil) (princ "\nSélectionnez les blocs ou [b]<[/b]Tous>: ") (or (setq ss1 (ssget '((0 . "INSERT") (66 . 1)))) (setq ss1 (ssget "_X" '((0 . "INSERT") (66 . 1)))) ) (if ss1 (repeat (setq n (sslength ss1)) (setq ent (ssname ss1 (setq n (1- n))) att (entnext ent) ) (while (= (cdr (assoc 0 (setq elst (entget att)))) "ATTRIB") (if (and (= (cdr (assoc 2 elst)) "REF") (or (= (cdr (assoc 1 elst)) "kiko") (= (cdr (assoc 1 elst)) "kina") ) ) (ssadd ent ss2) ) (setq att (entnext att)) ) ) ) (sssetfirst nil ss2) ) (princ) ) (defun c:ddc (/ entdata vlaobj vallst ddc ) (ssatt) (mapcar '(lambda (x) (and (= 'ename (type x)) (foreach attobj (safearray-value (variant-value (vla-getattributes (setq vlaobj (vlax-ename->vla-object x))))) (and (= "comddc" (vla-get-tagstring attobj)) (setq vallst (cons (atof (vla-get-textstring attobj)) vallst)))))) (mapcar 'cadr (ssnamex (ssget '((0 . "INSERT") (66 . 1)))))) (setq ddc (+ (apply '+ vallst))) )
  15. Salut, Non le but est de simplifier au maximum donc de ne pas avoir d'extraction de donné et un tableur.Déja comme mon attribut est toujours "comddc", j'ai retiré le la definition de tagname avec getstring par "comddc" directement, ça évite de le saisir. (and (= "comddc" (vla-get-tagstring attobj)) Sortir le résultat dans un "text" insérable dans l'objet serai un gros plus également.
×
×
  • 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é