Aller au contenu

PHILPHIL

Membres
  • Compteur de contenus

    1 256
  • Inscription

  • Dernière visite

  • Jours gagnés

    10

Tout ce qui a été posté par PHILPHIL

  1. hello si ca peu servir a tester ;;; --------------------------------------------- ;;;RE ASSOCIER DES HACHURES A UNE POLYLIGNE FERMEE ;;; --------------------------------------------- (defun c:hachure_reassocie (/) (setvar "cmdecho" 0) (setvar "dimzin" 0) (setq cav (getvar "clayer")) (setq osm (getvar "osmode")) (setq hachnam (getvar "hpname")) (setq hachech (getvar "hpscale")) (setq hachang (getvar "hpang")) (setq hachdet (getvar "HPISLANDDETECTION")) (setvar "osmode" 0) (setq calquehach nil ent1 nil ent2 nil test1 0 test2 0 ) (while (/= test1 1) (setq ent1 (car (nentsel "\nSELECTIONNER LA HACHURE A RE-ASSOCIER :"))) (setq test1 (cond ((= (cdr (assoc 0 (entget ent1))) "HATCH") 1))) ) (setq typehach (cdr (assoc 2 (entget ent1))) calquehach (cdr (assoc 8 (entget ent1))) ) (if (or (= typehach "SOLID") (= typehach "solid")) (setq echelhach 1 anglhach 0 ) (setq echelhach (cdr (assoc 41 (entget ent1))) anglhach (* (cdr (assoc 52 (entget ent1))) (/ 180 pi)) ) ) (while (/= test2 1) (setq ent2 (car (nentsel "\nCLIQUER SUR L'ENTITE POLYLIGNE A HACHURER :"))) (setq test2 (cond ((= (cdr (assoc 0 (entget ent2))) "LWPOLYLINE") 1))) ) (setq poly1 (cdr (assoc -1 (entget ent2)))) (setvar "hpname" typehach) (setvar "hpscale" echelhach) (setvar "hpang" anglhach) (setvar "HPISLANDDETECTION" 2) (command-s "-calque" "ch" calquehach "") (command-s "-fhach" "s" poly1 "" "") (command-s "effacer" ent1 "") (setvar "clayer" cav) (setvar "osmode" osm) (setvar "hpname" hachnam) (setvar "hpscale" hachech) (setvar "hpang" hachang) (setvar "HPISLANDDETECTION" hachdet) (princ) ) A+ phil
  2. bonjour merci a vous si besoin j'en ai fait ca (correction j=0 ) ;;;------------------------------ ;;;COMPTE LES ENTITES DANS UN BLOC ;;;------------------------------ (defun c:COMPTE_ENTITE_DANS_BLOC () (setq js (ssget '((0 . "INSERT")))) (if js (progn (setq I 0) (repeat (sslength js) (setq e (ssname js I)) (setq I (1+ I)) (setq a (entget e)) (setq NBLOC (cdr (assoc 2 a))) (setq BL (tblobjname "BLOCK" NBLOC)) (setq J 0) (while (setq BL (entnext BL)) (setq J (1+ J)) ) (princ (strcat "\nLE BLOC : " nbloc " CONTIENT : " (itoa j) " ENTITE(S) ")) ) ) (alert "rien sélectionné") ) (princ) ) ;;;---------------------------------------------------- ;;;DECOMPOSE UN BLOC SUIVANT NOMBRE ENTITE DANS UN BLOC ;;;---------------------------------------------------- (defun c:decompose_bloc_suivant_nombre_entite_dans_bloc () (setq nbentiteblocmini (atoi (getcfg "APPDATA/nbENTITEBLOCmini"))) (initget 4) (setq tmp (getint (strcat "\nENTRER LE NOMBRE D'ENTITE(S) MINIUM DANS LES BLOCS A DECOMPOSER <" (rtos nbentiteblocmini 2 0) ">: " ) ) ) (if tmp (setq nbentiteblocmini tmp) ) (setcfg "APPDATA/nbENTITEBLOCmini" (rtos nbentiteblocmini 2 0)) (prompt "\nSELECTIONNER LES BLOCS POUVANT ETRE DECOMPOSES :") (setq js (ssget '((0 . "INSERT")))) (if js (progn (setq i 0) (setq nbexp 0) (repeat (sslength js) (setq e (ssname js i)) (setq i (1+ i)) (setq a (entget e)) (setq nbloc (cdr (assoc 2 a))) (setq bl (tblobjname "BLOCK" nbloc)) (setq j 0) (while (setq bl (entnext bl)) (setq j (1+ j))) (if (<= j nbentiteblocmini) (progn (princ (strcat "\nLE BLOC : " nbloc " CONTIENT : " (itoa j) " ENTITE(S) [ DECOMPOSE ]")) (command "_explode" e) (setq nbexp (1+ nbexp))) (princ (strcat "\nLE BLOC : " nbloc " CONTIENT : " (itoa j) " ENTITE(S) [ NON DECOMPOSE ]")) ) ) (alert (strcat "\n" (itoa nbexp) " BLOCS ON ETE DECOMPOSE(S) SUR " (itoa (sslength js)) " SELECTIONNE(S) " ) ) ) (alert "rien sélectionné") ) (princ) ) a+ Phil
  3. bonjour je rencontre un souci, je n'arrive plus a mettre en XREF ou bloc des fichiers *.dwg issus de fichier REVIT ou ARCHICAD ... AVEZ VOUS LE MEME SOUCI ? soit trop de blocs internes, ou noms trop longs ? avec des fichiers *.dwg récupérés a base de fichier REVIT ou ARCHICAD on se retrouve avec des blocs par milliers qui sont UNIQUES et possedant tres peu d’entités ( ligne, polyligne, cercle, arc ... ) dedans je cherche un bout de Lisp me permettant de calculer combien il y a d’entités dans un bloc. et si suivant un nombre que j'aurais decide si je l'explose ou le deplace a x unites pour vérifier. comment calculer le nombre d'entites dans un bloc. chercher tous les cercles, puis les arcs, puis les lignes ... et additionner ? merci, a+, Phil
  4. PHILPHIL

    Lisp MDA

    hello nen tite question tes blocs que tu recois, ce sont toujours les meme, des meme interlocuteurs ? ou chaque semaine tu en as des nouveaux avec des noms d'attributs qui changent, ou tu veux récupérer les données vers TES blocs avec TES noms d'attribut. ca change tout pour l'élaboration d'un lisp spécifique a toi, et toi seul. ca peut etre lecture d'un blocs, récupération du nom de l'attribut et de sa valeur.( ceux donné par tes interlocuteur, sur une couche determiné ) recherche d'un bloc ( le tiens ) le plus proche a quelque unites a la ronde je crois qu'il y a un lisp pour ca ) sur une couche bien déterminé. correspondance des attributs, ecriture dans TON blocs des données récupérer. sans que tu es a cliquer bloc par blocs a+ Phil
  5. PHILPHIL

    Lisp MDA

    hello c'est normal c'est son boulot. je dois avoir une autre version, mais seulement pour des blocs qui ne soit pas sur le meme calque ou de nom different, mais il faut absolument qu'il y est concordance de nom d'attribut a+, Phil
  6. PHILPHIL

    Lisp MDA

    hello NEN je ne suis pas informaticien dans l'ame, mes LISP sont loin d'etre parfait et pure dans leurs écriture, ils fonctionnent tout simplement. celui ci ne marche effectivement que entre blocs ayant des attributs de meme NOM, il faut qu'il y est un minimum de correspondance pour que ce marche. en enlevant certaines lignes de code, ca fonctionne entre blocs de nom différent, calque différent mais pas de NOM d'attribut différent. A => A B => B C => C ta demande est : A => C B => D C => Z en essayant avec un Lisp ( je sais plus le nom ) de Gile ou Patrick35 ( je ne sais plus ) exportant les attributs dans un fichier excel et apres manipulation dans excel tu réimportes, ca devrait marcher A+, Phil
  7. hello Curlygoth ouvert avec NOtepad++ en *.txt a+ Phil
  8. hello gile ouii j'ai lu je cherchais juste une methode programmée en une etape et non pas en 3 etapes Merci
  9. hello j'avais bien pensé a la solution de tramber et c'est bien dans un fichier ascii j'ai chercher du coté des solutions complement de NOTEPAD++ mais il n'y a pas. il y a plusieurs occurrences a remplacer. je vais faire en notant les lignes, et les occurrences ca ira bien. Merci
  10. hello désolé mais le texte n'a rien a voir avec autocad. et fait pas mal de lignes merci, Phil
  11. hello vous auriez ce genre de programme sous la mains ? dans texte quelconque je voudrais intervertir des bout de textes texte1 = "exemple1" texte2 = "exemple2" remplacer tous les texte1 par texte2 remplacer tous les texte2 par texte1 Merci Phil
  12. bonjour j'ai testé Structural Precast Extension... je crée un mur en forme de T. puis j'applique la fonction scinder. je me retrouve avec des assemblages ( panneau beton et accroches struturelles ) si on intervient dessus on n'a plus que des elements beton en perdant les accroches struturelles. comment ensuite pouvoir regler la hauteur largeur des panneaux prefabriqués ? est ce que le mur a une trame modifiable,qui influe sur les limites des panneaux ? doit on modifier panneaux par panneaux les dimensions ? doit recouper le mur de base suivant notre trame voulue ? et appliquer scinder sur chaque murs ? https://www.hexabim.com/discussions/structural-precast-extension Merci, Phil
  13. hello Goldorak liste "1 2 3 4 5" choisir "un" avec un "interger slider" pas de probleme liste "SORTANT, NORMAL, ENTRANT" choisir "un" avec un "interger slider" pas de probleme faut juste savoir que "1 = SORTANT" " 2 = NORMAL" " 3 = ENTRANT" mais je ne connais pas de méthode pour choisir directement "NORMAL" (par exemple) en aillant la liste comme choix, ou en pouvant selectionner plusieurs choix. la liste se limite a trois la, mais pourrais etre beaucoup plus longue + Phil
  14. hello je cherche un noeud ou un *.dyf permettant de sélectionner plusieurs elements dans une liste ( chiffre ou texte ) on peut en sélectionner UN dans une liste en connaissant son index, ce qui sous entend de connaitre les index correspondant a l'avance a la liste quand celle ci est du texte. a+ Merci Phil
  15. PHILPHIL

    Lisp sélection

    HELLO moi j'ai ca Commande: SELECTSIMILAR Sélectionner des objets: PA *Sélection non valable* Attend un point ou Fenêtre/Dernier/Capture/BOîte/TOUT/TRajet/SPolygone/CPolygone/Groupe/Ajouter/Supprimer/Multiple/Précédent/annUler/AUto/uniQue j'ai du changer une variable systeme qui a une influence, mais laquelle mystere a+ Phil
  16. PHILPHIL

    Lisp sélection

    hello comment vous accédez a la boite de dialogue de "SELECTSIMILAR" car si je tappe "SELECTSIMILAR" il ne me propose que de choisir un objet, rien de plus. pas le choix d'option. est ce qu'il y a une variable systeme autre que "SELECTSIMILARMODE" qui regit cette commande ? a+ Phil
  17. hello Gile le code que tu donnes en message 4 existe til en version lisp ou vlisp. j'ai récupérer un IFC il y a des blocs avec des blocs imbriqués sur pas mal de niveaux, les couleurs des blocs semblent par contre bien ordonnées par type mon idée en lisp aurait été de décomposer tous les blocs comportant des blocs imbriqués et de redistribuer les blocs de niveau 1 ( qui ne comporte pas de blocs imbriqués) dans des couches en fonction de leurs couleurs ton code donnait déja la liste des blocks avec des blocks imbriqués a décomposer a+ merci Phil
  18. bonjour je cherche comment trouver toutes les options d'une commande, ou comment vous vous trouvez sur la ligne de commande "-calque" me donne ca : Commande: -CALQUE Entrez une option [?/Etablir/CHoisir/Nouv/Renommer/ACtif/INactif/COuleur/TLigne/EPaisseurl/TRANsparence/MAtériau/Tracé/Geler/Libérer/Verrouiller/Déverrouiller/étAt/deScription/RApprocher/Xréf]: hors dans un lisp j'ai cette commande qui fonctionne. elle permet de n'afficher dans la liste des calques déroulante d'une barre d'icone que les calques faisant parti d'un filtre nommé "TEXTE" ;;; REfiltrer les calques sur TEXTE (defun c:fctexte () (command-s "-calque" "f" "c" "TEXTE" "q" "") (princ)) l'option "F" fonctionne sur la ligne de commande, mais ou est la description ???? on ne le voit pas sur la ligne de commande, et j'ai beau chercher sur le net aucune description non plus, et impossible de savoir ou j'ai trouvé ca. en théorie on devrais pouvoir faire en ligne de commande la meme chose que dans la fenetre "calque" je cherchais a activer / désactiver /geler /degeler tous les calques faisant partis du filtre "TEXTE" par exemple mais il y a t'il les options possible sur la ligne de commande, mystere. en passant avec la version anglaise de la commande ? "-.layer" a+, Phil
  19. HELLO nicolas2 tu n'as pas a modifier le lisp juste a les utiliser dans le bon ordre tu dois avoir déja créer un sous repertoire : C:\Télétravail\15877\ATELIER\DXF\DXF PLASMA quand tu es dans ton fichier "PLAN DE DEPART" 1iere etape : utiliser la commande "sauve_repertoire_originaux" pour selectionner C:\Télétravail\15877\ATELIER\DXF\DXF PLASMA 2ieme étape : utiliser la commande "fichier_extrait_fichier_repertoire_originaux" a+ Phil
  20. hello nicolas2 voici des lisps pour enregistrer une partie d'un fichier dwg premiere étape choisir un sous répertoire ou seront enregistré les fichiers exportés cette info est enregistrée dans ton fichier de base (setcustombykey "REPERTOIRE_ORIGINAUX" "...") ;;; Commande sauve_repertoire_bloc ;;;Invite l'utilisateur à choisir un sous répertoire qui sera sauvegarder dans le fichier (boites de dialogue) (defun c:sauve_repertoire_originaux (/ dirbox rep) (defun dirbox (txt / cdl rep) (if (setq cdl (vlax-create-object "Shell.Application")) (progn (and (setq rep (vlax-invoke cdl 'browseforfolder 0 txt 512 "")) (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path)) ) (vlax-release-object cdl) ) ) rep ) (setq repertoireoriginaux (gc:getcustombykey "REPERTOIRE_ORIGINAUX")) (if (= repertoireoriginaux "...") (prompt "\nIL N'Y A PAS DE REPERTOIRE POUR LES ORIGINAUX :") (prompt (strcat "\nLA VALEUR ACTUELLE DE REPERTOIRE_ORIGINAUX EST :" repertoireoriginaux " ")) ) (princ) (princ) (setq rep (dirbox "CHSOISISSEZ UN REPERTOIRE OU SERONT RECHERCHES / SAUVEGARDES LES ORIGINAUX DU DESSIN.")) (setcustombykey1 "REPERTOIRE_ORIGINAUX" rep) (princ) ) (defun gc:getcustombykey (key / val) (vl-catch-all-apply '(lambda () (vla-getcustombykey (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) key 'val) ) ) val) (defun setcustombykey1 (key val) (vl-load-com) (not (vl-catch-all-apply '(lambda () (vla-setcustombykey (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) key val) ) ) )) (defun setcustombykey (key val) (vl-load-com) (not (vl-catch-all-apply '(lambda () (vla-addcustominfo (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) key val) ) ) )) deuxieme etape exporter les extrait de fichiers (defun c:fichier_extrait_fichier_repertoire_originaux () (setvar "cmdecho" 0) (setq repertoire_originaux (gc:getcustombykey "repertoire_originaux")) (prompt (strcat "\nLE REPERTOIRE DES BLOCS DE L'OPERATION EST : " repertoire_originaux)) (setq nomextraitfichier (getcfg "APPDATA/NOMEXTRAITFICHIER")) (setq boite "ENTRER LE NOM DU FICHIER DE SAUVEGARDE DE L'EXTRAIT ") (setq message "NOUVEAU NOM DE L'EXTRAIT") (inputbox2 boite message nomextraitfichier) (if (/= ret "") (setq nomextraitfichier ret) ) (setcfg "APPDATA/NOMEXTRAITFICHIER" nomextraitfichier) (setq poi nil) (while (null poi) (setq poi (getpoint "\nPOINT DE REFERENCE DU FICHIER EXTRAIT"))) (prompt (strcat "\nCLIQUER SUR LES OBJETS A EXTRAIRE DANS UN FICHIER")) (setq obj nil) (while (null obj) (setq obj (ssget))) (command-s "scu" "ez" poi "") (command-s "-WBLOC" (strcat repertoire_originaux "\\" nomextraitfichier ".DWG") "" poi obj "") (command-s "ANNULER" "") (command-s "scu" "p") (setq openfile1 (getcfg "APPDATA/openfile1")) (initget "oui OUI o O non NON n N") (setq tmp (getkword (strcat "\nVOULEZ VOUS OUVRIR LE FICHIER ENSUITE [ Oui / Non ] <" openfile1 "> : "))) (if tmp (setq openfile1 tmp) ) (setcfg "APPDATA/openfile1" openfile1) (if (or (= openfile1 "oui") (= openfile1 "OUI") (= openfile1 "o") (= openfile1 "O")) (progn ((vla-open (vla-get-documents (vlax-get-acad-object)) (strcat repertoire_originaux "\\" nomextraitfichier ".DWG"))) ) ) (princ) ) ;; InputBox (gile) ;; Ouvre une boite de dialogue pour récupérer une valeur ;; sous forme de chaine de caractère ;; ;; Arguments ;; tous les arguments sont de chaines de caractère (ou "") ;; box : titre de la boite de dialogue ;; msg : message d'invite ;; val : valeur par défaut ;; ;; Retour ;; une chaine ("" si annulation) ;; ;; Modifié par Patrick_35 pour inclure le caractère \n ;; comme retour chariot (defun inputbox2 (box msg val / subr temp file dcl_id ;;ret ) ;; Retour chariot automatique à 50 caractères (defun subr (str / pos) (cond ((setq pos (vl-string-search "\n" str)) (strcat ":text_part{label=\"" (substr str 1 pos) "\";}" (subr (substr str (+ 2 pos)))) ) ((and (< 80 (strlen str)) (setq pos (vl-string-position 32 (substr str 1 80) nil t))) (strcat ":text_part{label=\"" (substr str 1 pos) "\";}" (subr (substr str (+ 2 pos)))) ) (t (strcat ":text_part{label=\"" str "\";}")) ) ) ;; Créer un fichier DCL temporaire (setq temp (vl-filename-mktemp "Tmp.dcl") file (open temp "w") ret "" ) ;; Ecrire le fichier (write-line (strcat "InputBox:dialog{key=\"box\";initial_focus=\"val\";spacer;:paragraph{" (subr msg) "}spacer;:edit_box{key=\"val\";edit_width=120;allow_accept=true;} spacer;ok_cancel;}" ) file ) (close file) ;; Ouvrir la boite de dialogue (setq dcl_id (load_dialog temp)) (if (not (new_dialog "InputBox" dcl_id)) (exit) ) (set_tile "box" box) (set_tile "val" val) (action_tile "accept" "(setq ret (get_tile \"val\")) (done_dialog)") (start_dialog) (unload_dialog dcl_id) ;;Supprimer le fichier (vl-file-delete temp) ret ) ca devrait te convenir j'ai peut etre oublié des petits bouts de lisp a+ Phil
  21. hello les lignes ont des "Z" différents? fait sur la base d'un plan géomètre en "3D" ? une sélection des entites, puis un "control + fleche gauche ou droit" qui déplace les entités ? a+ Phil
  22. PHILPHIL

    Barre de progression

    hello voici un exemple en lisp dans une boucle "while" ca doit marcher avec un "foreach" en incrémentant un compteur : (setq compt (1+ compt) et un comparateur : (setq com (sslength entites)) il y a quelque soucis des fois avec la barre d'état d'autocad, car la barre de défilement prend la place de la barre d'état je pense donc suivant la régénération avec la carte graphique ca pose un probleme de visibilité (defun c:change_echelle_du_type_ligne_de_selection () (setvar "cmdecho" 0) (setvar "dimzin" 0) (setvar "osmode" 0) (setq echeltypeligne (atof (getcfg "APPDATA/echeltypeligne"))) (initget 4) (setq tmp (getdist (strcat "\nENTRER LA VALEUR DE L'ECHELLE DU TYPE D'OBJET < " (rtos echeltypeligne 2 8) " >: ") ) ) (if tmp (setq echeltypeligne tmp) ) (setcfg "APPDATA/echeltypeligne" (rtos echeltypeligne 2 8)) (prompt "\nCLIQUER SUR LES OBJETS A MODIFIER :") (setq entites nil) (setq entites (ssget '((-4 . "<NOT") (-4 . "<OR") (8 . "H_ISOLATION") (8 . "H_ISOLATION 1") (8 . "H_ISOLATION 2") (0 . "AEC_MVBLOCK_REF") (0 . "AEC_POLYGON") (-4 . "OR>") (-4 . "NOT>") ) ) ) (setq compt 0) (setq com (sslength entites)) (acet-ui-progress-init "AVANCEMENT" com) (while (< compt com) (progn (vla-put-linetypescale (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname entites compt))))) echeltypeligne ) (acet-ui-progress-init (strcat "AVANCEMENT " (rtos (/ (* compt 100) (float com)) 2 2) " %") com) (acet-ui-progress-safe compt) (setq compt (1+ compt)) ) ) (acet-ui-progress-done) ) a+ Phil
  23. PHILPHIL

    Imbrication de bloc

    HELLO GILE meme en lips on ne pourrait pas accéder aux propriétes des blocs dans le bloc ? et pourvoir les changer ? a+ Phil
  24. PHILPHIL

    blocktoxref

    HELLO FRAID he non, il y a bien des attributs dans le fichier c'est devenu une référence externe, et quand je l'ouvre comme tu dis, il y a les attibuts a+ phil
  25. bonjour des XREFS avec des attributs on implante un bloc avec des attributs on modifie les données des attributs on utilise BLOCKTOXREF sur le bloc et on se retrouve avec un xref avec des attributs dans ce cas pourrait on avoir des attributs en implantant directement l'XREF ? ou un lisp pour modifier les attributs ( car ils doivent etre la non ? ) et les faire apparaitre comment agrandir la boite de dialogue de BLOCKTOXREF ? a+ Phil
×
×
  • 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é