Aller au contenu

Vincent P.

Membres
  • Compteur de contenus

    328
  • Inscription

  • Dernière visite

  • Jours gagnés

    9

Tout ce qui a été posté par Vincent P.

  1. Redonne moi les dimensions de ta bordure, et je te prépare ça!
  2. Bonjour, Si c'est juste pour vider l'attribut, tu peut faire une sélection de tous les blocs, et si les attributs on bien le même nom, ca apparaîtras dans les Propriétés. Ainsi, pas de modification de blocs. Vincent P.
  3. Salut salut! Tu peux aussi tourner avec les "Vues". Dans une fenêtre de présentation tu créé une vue, et tu l’applique au différentes fenêtres. Tu auras donc exactement la même ... bah vue ! Cordialement, Vincent P.
  4. Bonjour bonjour, C'est un problème que j'ai aussi rencontré en bloc dynamique, et la solution que j'ai trouvée, c'est de ne pas utiliser un bloc, mais une multiligne. Ce n’est pas une entité qui est très utilisée sur Autocad, mais pour ta demande, je pense que c'est le plus simple Transcendentalement Vincent P.
  5. Bien le bonjour Mr. DoLLFaCe Le soucis des réseaux en bloc dynamique, c'est que ce qui est dynamique, c'est la longueur de ton réseau (donc le nombre de duplication de l'élément), pas la distance entre les rangées/colonnes. C'est pour ça que j'ai dessiné toutes les fixations et que je leur dit de restées alignées horizontalement/verticalement entre elles (pour varier l'écart et pas le nombre). Ce que je peux faire, c'est ajouter des visibilités. Ainsi, tu auras un onglet pour choisir le nombre de fixation sur ton panneau (2x2, 2x3, 3x5 ect...) et en suite avec des poignées tu élargiras ton panneau. Pour ça, il me faut le nombre maximum de fixations horizontales et verticales que tu peux avoir stp. Après, c'est ma manière de faire avec mes connaissances des blocs dynamiques. J'aurais plus de facilitées a te faire un LISP qui vas dessiner le panneau avec le bon nombre de fixations et les bon intervalles. Mais biensur les LISP ne sont pas accessibles au version LT d'Autocad. Ludiquement Vincent P.
  6. Bien le bonjour, Je t'ai fait un petit bloc ici : https://www.cjoint.com/c/IADnjN0uAic Dit-moi si c'est ce que tu cherches, si tu veux des modifications ect. (fait avec Autocad 2014, enregistré en version 2010) Dynamiquement Vincent P.
  7. Salut Come, Dans ton cas, je voie deux possibilités : - La commande POLY2D (autocad) qui est un autre moyen de dessiner une polyligne. Une fois la commande lacée, tu peut utiliser l’option "seGment" et donc suivre des contours. - La commande UNICONT (covadis) qui vas créer une polyligne faisant le contour de deux polylignes (qui doivent être fermées et sécantes). Tu a aussi MULTUNI qui fait la même chose, mais avec plus de deux polylignes de base. Dans le menu Covadis 2D, vas jeter un oeil dans "Topologie / Polygone". Dit moi si c'est bien ce que tu cherchais! Amicalement Vincent
  8. Bonjour à tous, De mon côté, je serais bien triste de voir ce forum passer aux oubliettes. J'y trouve une quantité d'information impressionnantes, et puisque je suis rarement le premier à bloquer sur des sujets, ils sont bien souvent déjà discutés ici. Quand je voie que plus grand nombre de connexion simultanées date de Août 2018 (1171 membres), je me dit qu'il y a quand même pas mal de monde à s'intéresser à ce qu'il se déroule ici.
  9. Bonjour, Pour moi, si un encart se situe au milieux d'une autre fenêtre, je met (dans l'espace objet) un hachure blanche (255,255,255) derrière le dessins de l'encart! Vincent P.
  10. Salut! Jeu de feuille? Il faut le préparer en amont, mais tu peut faire une sortie en 3 clics une fois le tous finalisé. http://help.autodesk.com/view/ACD/2016/FRA/?guid=GUID-34D889BC-19AD-4CD1-ADB1-F359D9B515FB (Je suppose que tu travaille sur Autocad ?)
  11. Vincent P.

    Inserer Plusieurs DXF

    Hé hé hé, J'ai fait un code (qui marche bien) pour importer des DXF sous forme de bloc : DCL : IGIR : dialog { label = "IGIR Multy"; // Titre de la case : column { : row { : boxed_column {label ="Choisissez les DXF"; : list_box { key = "LST"; height = 15; width = 50; multiple_select = true; fixed_width = false; } } } ok_cancel; } } Lisp : ;;----------------------------------------------------------------------------------;; ;;--------------------------------- Par Vincent P. ---------------------------------;; ;; Insérer massivement des DXF sous la forme de blocs, et dans un calque spécifique ;; ;;------------------- !! Nécessité l'utilisation de IGIR.DCL !! --------------------;; ;;----------------------------------------------------------------------------------;; (vl-load-com) ;;- ;; Routine insdxf ;;- (defun insdxf ( chem / nom ssb n) (setq nom (vl-filename-base chem) n 0) (if (= nil (tblsearch "layer" nom)) (command "FCALQUE" "Nouv" nom "")) (if (setq ssb (ssget "_X" (list (cons 2 nom)))) (repeat (sslength ssb) (entdel (ssname ssb n)) (setq n (1+ n)) )) (if (tblobjname "BLOCK" nom) (command "-PURGER" "BLOCS" nom "NON") ) (setvar "clayer" nom) (command "-INSERER" chem '(0 0 0) 1 1 0) (princ) ); /defun ;;- ;; Fonction principale ;; IGIR ;;- (defun c:IGIR (/ chem ddiag index start-lst dcl_id i n lst-nom lst lay) ;;;création de la liste qui sera affichée (setq chem (getvar "dwgprefix") start-lst (ACAD_STRLSORT (vl-directory-files chem "*.dxf" 1)) lay (getvar "clayer") n 0) ;;;chargement du fichier DCL (if (not (setq dcl_id (load_dialog "IGIR.dcl"))) (progn ;Si DCL non chargé (alert "Le fichier DCL n'a pas été trouvé !") (exit) ) (progn ;Si DCL chargé (if (not (new_dialog "IGIR" dcl_id)) (progn ;Si dialogue non présent (alert "la définition n'a pas été trouvée dans le fichier DCL !") (exit) ) (progn ;Si dialogue présent (start_list "LST") (mapcar 'add_list start-lst) (end_list) (action_tile "cancel" "(done_dialog 1)") (action_tile "accept" "(done_dialog 2)") (action_tile "LST" "(setq index $value)") ;;;Affichage de la case (setq ddiag (start_dialog)) (unload_dialog dcl_id) (if (= ddiag 1);; Si bouton annulé choisi : (alert "\n Vous êtes sorti sans rien choisir !") ) (if (= ddiag 2);;;Si bouton OK choisi : (progn (setq index (read (strcat "(" index ")"))) (foreach i index (insdxf (strcat chem (nth i start-lst))) (setq n (+ 1 n)) ) (alert (strcat "\n" (itoa n) " DXF ont étés importés\nsous la forme de blocs!")) ) ) ) ) ) ) (setvar "clayer" lay) (princ) );/defun (setq nom_lisp "IGIR") (if (/= app nil) (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp) (princ (strcat "..." nom_lisp " chargé.")) (princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter."))) (princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter."))) (setq nom_lisp nil) (princ) Les DXF sont choisis par l’utilisateur, parmi les DXF contenu dans le dossier dans lequel est enregistré le DWG où vous exécutez la commande. Il faut donc créer au préalable un fichier DWG dans le même dossier utilisé pour ranger les DXF des girations, et dans ce DWG utiliser la commande IGIR. Pensez à nommer proprement vos DXF car ces noms seront réutilisés comme noms de blocs et de calques. Si ça peut aider! Vincent P.
  12. Bonjour nen C'est un cas isolé ou tu à 50 textes (donc 150 champs) à rediviser?
  13. Bonjour, Je suis encore sur la version 2014 de totocad, mais c'est un problème que j'y ai déjà rencontré. Dans ton volet Xref, tu a la barre grise horizontale de titre affichant "Références de fichier" (en haut du volet). A l'extrémité droite de cette barre se situe deux icônes te permanentant de passer d'un affichage en liste à un affichage en arbo. Et bien en liste tu peut faire des sélections multiples, mais pas en arbo! J’espère avoir été claire, et répondu a ton interrogation!
  14. Bonjour big666, bonjour à tous! Je ne suis pas sur de comprendre ce que tu cherche : - Une palette reprenant des présentations type (pour les insérer facilement dans ton fichier) - Une palette reprenant toutes les présentations de ton projet actuel (ce qui correspond au jeu de feuilles) Woilou! Vincent!
  15. Salut! Le vrai problème n'est pas l'emplacement sécurisé ou non, mais du fait que tu charges un LISP. Que le message d'avertissement s'affiche ou pas, tu les charges tes LISPs, et tu ne vérifies pas le code à chaque foi que tu en charges un. Donc emplacement sécurisé ou non, affichage du message ou non, tu t'exposes au même risques. A+
  16. Vincent P.

    Hachure Autocad

    Salut! Autocad peut remplacer "visuellement" un type de hachure par du solide lorsque le contour/la surface de la hachure est trop petite pour afficher le motif,ou lorsque l'échelle de la hachure est trop petite. Cela pourrais être une première approche de ton problème.
  17. Vincent P.

    V19 Onglets dessins

    Salut salut. Moi j'ai joué avec la variable FILETABPREVIEW = 0 Au lieu d'avoir des miniatures, on a une liste déroulante des présentations (que je trouve aussi plus pratique que les onglets présentation sous la zone graphique) Woilou!
  18. Bien le bonjour! J'appui Mr. Redcao, pour qu'une Xref soit "non référencée", il faut que autocad ne trouve aucune occurrence dans le dessin. Petit essai : Importé une Xref, sélectionnez l'objet, supprimez le (sans le détacher). Alors, Autocad connais le chemin de la Xref (dans arborescence), mais ne sais pas ou et comment elle est positionnée dans le dessin (point d'insertion, échelle, rotation, espace obj ou papier ect...). Woilou! Vincent P.
  19. Salut salut, Pour moi il y a un problème dans ton calcule des X/Y. Le Code 10 DXF d'un cercle donne (X Y Z) du centre du cercle. La fonction CAR donne le 1er élément d'une liste => (car '(X Y Z)) => X La fonction CADR donne le 2eme élément d'une liste => (cadr '(X Y Z)) => Y La fonction CADDR donne le 3eme élément d'une liste => (caddr '(X Y Z)) => Z La fonction CADDDR donne le 4eme élément d'une liste => (cadddr '(X Y Z)) => nil (pas de 4eme élement) Donc pour moi tu extrait les Y au lieux des X, et les Z au lieux des Y. Enfin, pour (entmakex) si on précise le calque, mais que celui-ci n'existe pas, il est automatiquement créé? (je ne sais plus ...) Biz
  20. Salut Mr. Denis, Je pense que le soucis, je n'y vois pas de problèmes dans ce que tu à écrit, juste il manque pour moi un élément. Je t'enjoint à liste la page suivante avec soin, jusqu'en bas. https://www.da-code.fr/entmod/ ;) Amicalement !
  21. Bonjour Fraid, Merci pour tes conseilles, j’essaierais de faire plus propre pour le prochain sujet. :unsure: Pour les messages d'erreur, lors de la sectionnelle du bloc cartouche, 3 cas fonctionnent bien : - Je sélection un bloc qui contiens un attribut ECHELLE => mon champ se place dans l'attribut - Je clic dans le vide => créé un texte contenant le champ - Je valide => créé un texte contenant le champ Il reste deux cas qui bug le programme : - Je sélectionne une entité qui n'est pas un bloc (polyligne, fenêtre, etc...) - Je sélectionne un bloc, mais qui ne contient pas d'attribut ECHELLE. erreur: Demande ADS erronée J'aurais aimé remplacé ce message par quelque-chose du genre "Entité sélectionnée non valide". Pour la division par zéro, le diviseur est le facteur d’échelle d'une fenêtre, or l'échelle ne peut pas être à 0 (ou alors on tombe dans la 4eme dimension! :blink: ) Merci.
  22. Bien le bonjour a vous. Mon sujet ne soulève pas grand engouement. Pas très grave, ça me force à fouiller comme un grand. ;;; Par Vincent P. ;;; Créé un champ automatique affichant l'échelle d'une fenêtre dans un cartouche ou un texte. (vl-load-com) (defun c:EchCart (/ fen cart id ech ctab) (setq ctab (getvar "Ctab")) ; trouve le nom de la présentation courante (setq fen (ssget "_A" (list (cons 0 "VIEWPORT") (cons 410 ctab)))) ; selectionne toutes les fenêtres de la présentation courante (if (= (sslength fen) 2) ; si la selectione n'a qu'une fenêtre (progn ; oui (redraw (ssname fen 0) 3) ; surbrillance de la fenettre (princ "\nFenêtre auto-selectionnée") ) (progn ; non (princ "\nSelectionner une Fenêtre") (while (null (setq fen (ssget "_:S:E" '((0 . "VIEWPORT"))))) ; selection manuelle de la fenêtre (princ "\nCe n'est pas une fenêtre")) )) (redraw (ssname fen 0) 3) ; surbrillance de la fenettre (setq id (vla-get-ObjectID (vlax-ename->vla-object (ssname fen 0))) ; isoler l'ID de la fenêtre ech (strcat "1/%<\\AcExpr (1000/%<\\AcObjProp Object(%<\\_ObjId " ; créer le champ de l'échelle (itoa id) ">%).CustomScale \\f \"%lu2%qf2816\">%) \\f \"%lu2%zs12%th39\">% eme")) (setq cart (car (entsel "\nSelectionner un cartouche"))) ; selection du cartouche (if (= cart nil) ; si mauvaise selection (command "-TEXTE" (getpoint) "4" "100g" (strcat "Echelle : " ech)) ; création d'un texte contenant l'échelle (progn ; si bonne selection (setpropertyvalue cart "ECHELLE" ech) ; insérer le champ dans l'attribut Echelle du cartouche (command "METTREAJOURCHAMP" cart "")) ; mise à jour des champs du cartouche ) (redraw (ssname fen 0) 4) ; suprime la surbrillance de la fenêtre (princ) ) Je suis asse content de mon code, la sélection automatique de la fenêtre (VIEWPORT) se fait bien lorsqu'elle est seul sur la présentation, si non sélection manuelle. La sélection du bloc cartouche est plus fragile, mais ça ne pose pas de problème particulière. J'aurais aimé établir une gestion d'erreur pour personnaliser le message qui s'affiche, mais je ne maîtrise pas bien le sujet. Diffusé à mes collègues, et ça leur convient en l'état. Si vous avez des idées/pistes pour enrichir, simplifier, renforcer ce programme, n'hésitez pas à proposer!
  23. Vincent P.

    LISP & DXF

    Salut! J'ai repris le code de DenisHen, et j'ai ajouté la création du champ. ;;; ******************** ;;; Prog pour Golum69 ;;; ******************** (vl-load-com) (defun c:ZoneStockage ( / p zst id aire) (setq p (getpoint)) (command "_pline" p (while p (command (setq p (getpoint "\nPoint suivant (Return pour FIN) : " p))))) ;créer la polyligne (setq zst (entlast)) ; stoker la polyligne (command "pedit" zst "c" "") (setq id (vla-get-ObjectID (vlax-ename->vla-object zst)) ; isoler l'ID de la polyligne aire (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).Area \\f \"%lu2\">%")) ; stoke le texte pour créer un champ contenant l'aire (command "-TEXTE" (getpoint) "4" "100g" (strcat "Aire de Stockage : " aire " m2")) (princ) ) ;_ Fin de defun Dit nous si c'est ce que tu cherchais!
  24. Bien le bonjour! Alors me voici pour présenter mon dernier travaille. Le but de ce lisp sera de renseigner en "automatique" l'échelle d'une fenêtre dans le cartouche (dans une présentation, vous l'aurez compris) ;;; Par Vincent P. ;;; Créé un champ automatique affichant l'échelle d'une fenêtre dans un cartouche ou un texte. (vl-load-com) (defun c:EchCart (/ fen cart id ech) (princ "\nSelectionner une Fenêtre") (while (null (setq fen (ssget "_:S:E" '((0 . "VIEWPORT"))))) (princ "\nCe n'est pas une fenêtre")) (setq id (vla-get-ObjectID (vlax-ename->vla-object (ssname fen 0))) ech (strcat "%<\\AcExpr (1000/%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).CustomScale \\f \"%lu2%qf2816\">%) \\f \"%lu2%ps[1/, eme]%zs12%th39\">%")) (setq cart (car (entsel "\nSelectionner un cartouche"))) (if (= cart nil) (command "-TEXTE" (getpoint) "4" "100g" (strcat "Echelle : " ech)) (progn (setpropertyvalue cart "ECHELLE" ech) (command "METTREAJOURCHAMP" cart "")) ) (princ) ) Procédure : lancez la commande (ECHCART), sélectionnez une fenêtre, sélectionnez un bloc cartouche. Un champ est placé dans l'attribut ECHELLE du bloc. Si au lieu de sélectionner le cartouche je valide, alors je peux placer un simple texte contenant cette échelle (pratique pour les zooms/détailles) Ça marche, ... mais! J'ai réussi à consolider la première sélection. Seule une fenêtre (VIEWPORT) sera acceptée comme entité. Mais pas la seconde. Pour la seconde, si je sélectionne autre chose qu'un bloc qui contient un attribut ECHELLE ... bah ça marche plus. Il fraudait que je filtre ma sélection sur un bloc qui contient un attribut ECHELLE. Mais je souhaite conserver la possibilité de placer un texte hors du cartouche. Bon, déjà, une fois que j'aurais ça, je serais content. J'aurais surement de quoi développer après (et donc pauser plus de questions). Par avance, Merci
  25. Bonjour, J'ai laissé de coté mon lisp de bordure, car d'autres projet, et m'y suis remis cette semaine. J'ai donc un peut remanié, et appliqué ton conseil, et voila : (DEFUN c:Bordure (/ ep ent) (if (= oldbord nil) (setq oldbord 0.15) (princ oldbord)) (setq ep (getdist (strcat "\nLargeur de la Bordure? <" (rtos oldbord) ">: "))) (If (= ep nil) (setq ep oldbord) (princ ep)) (setq oldbord ep) (princ ep) (command "_POLY2D" "G" "_non" pause "_non" pause "" "") ; Créer une polyligne en suivant un contour (SETQ ent (entlast)) ; Selectionne la polyligne créée (COMMAND "_PEDIT" ent "_width" ep "") ; Modifie la largeur de la polyligne (COMMAND "_offset" (/ ep 2) ent pause "") ; Copier-décaler la polyligne (ENTDEL ent) ; Supprimer la 1er polyligne ) J'utilise donc une nouvelle variable nommée oldbord qui n'est pas déclarée, et donc garderas sa valeur après fermeture du programme. Ainsi, au lancement suivant, je peut retrouver sa valeur. La valeur se réinitialise que lorsque je ferme mon DWG. J'ai aussi retiré quelque fioriture (comme la sélection manuelle du type de bordure) pour me concentré sur l’essentielle! Merci zebulon_ pour ta précieuse 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é