Aller au contenu

LUDWIG

Membres
  • Compteur de contenus

    1 396
  • Inscription

  • Dernière visite

Tout ce qui a été posté par LUDWIG

  1. LUDWIG

    "insérer un bloc"

    Vas-y, raconte-nous ! C'est quoi ces objets, des dinosaures ?
  2. LUDWIG

    "insérer un bloc"

    c'est un fichier DWG que m'a transmis un BE structure. Je suppose que c'est une conversion depuis un autre logiciel. Les blocs sont de simples portes. Je n'ai pas accès à l'éditeur de bloc par le clic droit, mais bedit me permet de le modifier. Cette entité a bien des propriétés "colonnes" et "rangée", ainsi que "espacement de colonnes" et "espacement de rangées".
  3. Bonjour, Juste pour vous partager un truc bizarre sur un fichier autocad : dans les propriétés, mes blocs sont des "insérer un bloc" et non pas des "références de blocs". Ca vous parle ?
  4. merci pour ton retour ! je cherchais à ne pas avoir de masque suivant la valeur d'arrière plan, ni même suivant une couleur de la liste, mais avec la couleur logique ducalque (256) : cela permet que le fond change de couleur quand il change de calque. Mon code fonctionne, sauf quand le texte a une couleur vraie de définie dans la liste (et ça, que le masque soit actif ou non !).
  5. Je n'avais peut être pas actualisé la page de Cadxp ! Ni débloqué le fichier ZIP (mais je ne suis pas sûr que ça ait changé quelque chose). Ca fonctionne nickel ! Merci (gile)
  6. (gile), merci pour le retour. J'ai toujours le même message d'erreur sur XROS et LOKO...
  7. Bonjour, Je ne sais pas ce que je fait mal. J'ai toujours du mal à faire fonctionner le programme. J'ai lancé l'installation, les répertoires se sont bien créés dans %appdata%\Autodesk\ApplicationPlugins Je n'ai pas pu débloqué les DLL : pas de bouton pour débloquer Dans Autocad, j'ai déclaré les répertoires comme emplacements approuvés Au lancement XROS et LOKO, j'ai systématiquement ce message : Que puis-je faire ? Merci d'avance
  8. Bonjour et bonne année à tous ! Cela fait un moment que je déplore l'absence de la couleur logique "Ducalque" dans la couleur du masque d'arrière plan d'un Texte Multiligne... Je voulais juste des textes NOIRS sur un fond JAUNE, ou BLEU, etc. (de la couleur du calque) (et sans passer par des blocs avec attributs). Et puis je découvre par hasard sur internet, que cette couleur n'est pas disponible depuis l'interface , mais en programmation, oui : code DXF 63 valeur 256 (DuCalque). Youpi, ça fonctionne ! J'en profite pour ajouter à mon code le texte en noir, la valeur de décalage et ... un encadrement. Dans un premier temps, je ne trouve pas de code DXF lié à cet encadrement. Puis je comprends que l'encadrement est lié au code 90, mais aucune source dans l'aide (l'aide ne propose que les valeurs 0, 1 et 2 : pas de masque, masque couleur choisie, masque couleur d'arrière plan). DXF MTEXT Je fouille un peu le net, et je crois comprendre qu'il faut ajouter la valeur 16 au code DXF 90 pour avoir un cadre. Mais je ne suis pas sûr d'avoir toutes les bonnes infos. Auriez-vous des sources pour ce code 90 ? Mon programme fonctionne!!! ... mais pas complètement. Sur certains textes, la couleur de fond se met en gris plutôt que DuCalque. En faisant des tests, je remarque que ces Textes fautifs sont encadrés et n'ont pas de masque. Quand je leur ajoute un masque ou que j'enlève le cadre, le programme fonctionne ! Quand je copie les propriétés de ce texte fautif sur un texte normal, le programme fonctionne. Quand je vais dans la boîte de dialogue masque d'arrière plan, même si le masque n'est pas coché, je m'aperçois que la couleur est définie sur 200,200,200 (c'est justement le gris que j'obtiens à la place de la couleur DuCalque). En parcourant les valeurs DXF (avec DXF list Data), je vois que c'est textes ont un code DXF 421 de 13158600. Les autres textes n'ont pas ce code 421. Je suppose que le secret est là. Faut-il que je supprime tous les DXF de 420 à 439 pour m'assurer que mon programme fonctionne ? Question subsidiaire : il existe un code DXF 441 qui gérerait la transparence cette couleur de fond, mais l'aide indique "not implemented". Est-ce que ça veut dire qu'on y aura jamais accès ? Merci d'avance pour vos futures réactions. ;background bylayer (defun c:bg () (setq sel (ssget '((0 . "MTEXT")))) ; Sélectionner uniquement les MText (if sel (progn (repeat (sslength sel) (setq ent (ssname sel 0)) ; Obtenir l'entité (setq data (entget ent)) ; Récupérer les données DXF ;; Modifier ou ajouter le code DXF 62 pour définir la couleur du texte sur noir (setq data (subst '(62 . 7) ; Définir la couleur du texte sur noir (assoc 62 data) ; Remplacer le code 62 existant (append data (if (not (assoc 62 data)) '((62 . 7)) ; Ajouter le code 62 s'il n'existe pas nil)))) ;; Modifier ou ajouter le code DXF 90 pour activer l'arrière-plan (setq data (subst '(90 . 17) ; Activer l'arrière-plan ; valeur 1 pour activer l'arrière plan + valeur 16 pour activer l'encadrement (assoc 90 data) ; Remplacer le code 90 existant (append data (if (not (assoc 90 data)) '((90 . 17)) ; Ajouter le code 90 s'il n'existe pas nil)))) ;; Modifier ou ajouter le code DXF 45 pour le facteur de décalage de bordure (setq data (subst '(45 . 1.2) ; Définir le facteur de décalage de bordure à 1.2 (assoc 45 data) ; Remplacer le code 45 existant (append data (if (not (assoc 45 data)) '((45 . 1.2)) ; Ajouter le code 45 s'il n'existe pas nil)))) ;; Modifier ou ajouter le code DXF 63 pour la couleur d'arrière-plan (setq data (subst '(63 . 256) ; Définir une couleur explicite (par exemple, 7 pour blanc/noir) (assoc 63 data) ; Remplacer le code 63 existant (append data (if (not (assoc 63 data)) '((63 . 256)) ; Ajouter le code 63 s'il n'existe pas nil)))) (entmod data) ; Appliquer les modifications DXF à l'entité (ssdel ent sel)) ; Supprimer l'objet de la sélection pour éviter une boucle infinie (princ "\nMasque activé avec couleur d'arrière-plan sur 256, texte noir, facteur de bordure 1.2, et encadrement activé pour tous les MText sélectionnés.") ) (princ "\nAucun MText sélectionné.") ) (princ))
  9. Bonjour et merci ! Ca a l'air de tourner en boucle, je ne sais pas pourquoi. J'ai supprimé l'appelle à la fin du programme, et j'ai remplacé le nom par S::STARTUP, ca fonctionne. (defun s::startup () (foreach file (vl-directory-files "C:\\Users\\studi\\OneDrive - Studiplan\\Documents\\PRO\\Sources\\Autocad\\Lisp" "*.lsp" 1) (load file (strcat file " did not load")) );fin de foreach ); fin defun Je vais compléter pour traiter FAS et DCL. Encore merci. (mais quelle était mon erreur dans le premier ?)
  10. Bonjour le forum, J'utilise depuis un moment un lisp (de gile si je me souviens bien). Ce lisp charge tous les programmes d'un répertoire donné. Ca évite de rajouter une application à liste de démarrage à chaque fois que j'en collecte un (_appload > Démarrage contenu > Ajouter ...) Sauf qu'il ne fonctionne plus 😭 J'ai voulu changer son appel par S::STARTUP pour que le chargement de tous mes LISPS se fasse automatiquement à chaque ouverture de dessin. Je suis bien revenu en arrière mais le mal était fait. Note : le repertoire en question est dans la liste des répertoires approuvés. TOUTCHARGER.LSP : (defun c:cg () ; load lisps (setq *lsppath* "C:\\Users\\studi\\OneDrive - Studiplan\\Documents\\PRO\\Sources\\Autocad\\Lisp") (mapcar '(lambda (x) (princ (strcat "\n" x)) s) (acad_strlsort (vl-remove "toutcharger.lsp" (apply 'append (mapcar '(lambda (x) (vl-directory-files *lsppath* x)) '("*.lsp" "*.fas")))) ;'("*.lsp" "*.dvb" "*.arx" "*.fas")))) )) (princ)) Le "Princ" me renvoie bien la liste complète des programmes, mais il ne les charge pas. J'ai l'impression qu'il manque un "load" quelque part, l'aurais-je supprimer par mégarde ? Merci d'avance pour votre aide
  11. Ca peut venir du changement d'échelle entre l'Xref et le dessin Je ne sais pas pour les Xref, moi j'insère mes fonds de plan en tant que bloc et voilà ce qui se passe : Souvent, les DWG fonds de plans sont en mètre, et mon dessin en mm. Autocad fait bien la conversion SAUF pour l'échelle de type de ligne*. Du coup, des pointillés qui étaient visibles deviennent des lignes continuent visuellement (l'inverse peut se produire, les pointillés sont trop espacés, 1 point tous les 2 mètres, on ne voit plus les lignes). Il faut alors multiplier chaque échelle de type de ligne du bloc par la valeur de conversion (en l'occurence 1000 quand on a un fond de plan en mètre dans un dessin en mm). Sauf que c'est là que ça peut être galère : si on a déjà plein d'échelles différentes, il faudrait se taper toutes les entités une par une. Heureusement, Lecrabe nous a fait un petit lisp : ;; ;; Routine: ScaleLineTypes by GC for Patrice ;; (defun c:ScaleLineTypes (/ ss i scl dxf) (prompt "\nSelectionnez les Objets ou Entree pour Tous : ") (setq ss (cond ((ssget)) ((ssget "X")))) (initget 7) (setq scl (getreal "\nEntrez le Facteur de Changement RELATIF du Facteur d Echelle LOCAL: ")) (repeat (setq i (sslength ss)) (setq dxf (entget (ssname ss (setq i (1- i))))) (if (setq lts (assoc 48 dxf)) (entmod (subst (cons 48 (* scl (cdr lts))) lts dxf)) (entmod (append dxf (list (cons 48 scl)))) ) ) (princ) ) * : encore que ce matin, je n'arrive plus à reproduire le soucis. Peut être qu'autocad 2025 gère mieux?
  12. Merci ça marche très bien. J'aurais pu trouvé tout seul, mais je ne me suis pas douté, pour moi -1 c'était pas de masque (j'aurais tenté la valeur +1 pour mettre un masque !)
  13. Merci pour ton retour Bonuscad. L'instruction ne renvoie pas d'erreur mais n'enlève pas le masque...
  14. Bonjour, J'ai paramétrer mon bouton Mtext pour qu'il me fasse des textes de taille 100, milieu centre, (^C^C_mtext \j mc l 0 ) Le seul truc que je n'arrive pas à régler, c'est de ne pas avoir de masque d'arrière plan sur les Mtext créés. Existe-t'il une variable pour activer / désactiver les masques lors de la création de Mtext ? Je n'ai pas trouver ! Ou des options à ajouter à la commande ? Merci d'avance
  15. Merci (gile) pour ta disponibilité et ta réactivité ! Tout ça gratuit en plus ! Merci pour la communauté (je suis prêt à acheter s'il faut !). Et je confirme, cela fonctionne !
  16. Bonjour (gile) Layerlockselection correctement installé sur autocad 2025 Mais non fonctionnel (quelque soit l'état de la variable). J'ai tenté une réparation : même message que Alleck
  17. Ah je précise que ça met toutes les entités des blocs sur le calque 0
  18. J'ai eu le même besoin il y a fort longtemps. La base du lisp (traiter tous les blocs en 0 dubloc dubloc) n'est pas de moi. Je ne me rappelle même pas si c'est moi qui l'ai adapté à ce besoin. ;********************************************************************************************************************************************************** ;NORMALISER BLOCS ;********************************************************************************************************************************************************** ;Place les entités constituant chaque blocs sur le calque 0 en couleur d'ORIGINE (defun c:nb2 () (setq echoold (getvar "cmdecho")) (setvar "cmdecho" 0) ;(command "-calque" "a" "e" "Normalise" "" "" "") (COMMAND "-calque" "L" "*" "AC" "*" "D" "*" "") (COMMAND "-calque" "E" "0" "") ;Normalisation des blocs dans la table des blocs (if (/= nil (setq i (tblnext "block" t)))(progn ; RECHERCHE LA PREMIERE ENTREE DANS LA TABLE DES BLOCS (setq tot 1) (while i (setq n (cdr (assoc -2 i))) ; SELECTIONNE LA PREMIERE ENTITE QUI COMPOSE LE BLOC (while n (setq n (entget n)) (setq colorigin (cdr (assoc 62 n))) (if (or (= nil colorigin)(= 256 colorigin)(= "BYLAYER" colorigin))(setq colorigin (cdr(assoc 62 (tblsearch "layer" (cdr (assoc 8 n))))))) (if (> 0 colorigin)(setq colorigin (- 0 colorigin))) ;Récupère la couleur de l'entité d'origine (ou de son calque si la couleur est "bylayer") ; RECUPERE LES VALEURS DES ENTITES QUI COMPOSE LE BLOC (if (/= (cdr (assoc 8 n)) "0") (progn (setq n (subst (cons 8 "0") (assoc 8 n) n)) ;SI L'ENTITE N'EST PAS SUR 0, LA DEPLACE SUR 0 (entmod n) ) ;_ Fin de progn ) ;_ Fin de if (if (not (assoc 62 n)) ;SI L'ENTITE N'A PAS LE CODE DXF 62 (=DuCalque), LE CREE ET LUI AFFECTE LA VALEUR de son calque d'origine (setq n (append n (list (cons 62 colorigin))))) ;CHANGE LA COULEUR EN COULEUR D4ORIGINE (setq n (subst (cons 62 colorigin) (assoc 62 n) n)) (entmod n) (setq n (entnext (cdr (assoc -1 n)))) ;ENTITE SUIVANTE ) ;_ Fin de while (setq i (tblnext "block") tot (1+ tot) ) ;BLOC SUIVANT ) ;_ Fin de while ;Normalisation des étiquettes d'attributs de blocs dans le dessin (car une étiquette peut avoir des valeurs de calque, couleur, etc. différentes de l'attribut) (setq j 0) (setq nat 0) (if (/= nil (setq sel (ssget "x" (list (cons 0 "INSERT")))))(progn (while (ssname sel j) (setq n (entget (ssname sel j))) (if (assoc 66 n) (progn (setq i (entget (entnext (cdr (assoc -1 n))))) (while (/= (cdr (assoc 0 i)) "SEQEND") (setq i (subst (cons 8 "0") (assoc 8 i) i)) ; mettre l'attribut sur le calque 0 (if (not (assoc 62 i))(setq i (append i (list (cons 62 0))))) (if (/= (cdr (assoc 62 i)) 0)(setq i (subst (cons 62 0) (assoc 62 i) i))) ; mettre l'attribut en couleur dubloc (entmod i) ; modifier l'entité (entupd (cdr (assoc -1 i))) ; mettre à jour sur l'écran l'entité (setq nat (+ 1 nat)) (setq i (entget (entnext (cdr (assoc -1 i))))) ) ;_ Fin de while ) ;_ Fin de progn ) ;_ Fin de if (setq j (1+ j)) ) ;_ Fin de while ) ;_ Fin de progn ) ;fin de if ;Résultat ;----------------------------------------------- (princ (strcat "\nTraitement de " (itoa (+ tot nat)) " bloc(s) (" (itoa tot) " dans la table des blocs et " (itoa nat) " étiquette(s) d'attribut(s) de bloc(s) dans le dessin)" ) ;_ Fin de strcat ) ;_ Fin de princ ;(command "-calque" "a" "s" "Normalise" "" "") (command "regen") (setvar "cmdecho" echoold) (graphscr) (princ) ) ) ) (prompt "\nnb2 : Normaliser les blocs du dessin (calque 0 - Couleur d'ORIGINE)" ) ;_ Fin de prompt Attention, cela traite TOUS les blocs du dessin d'un coup. Attention cela ne traite QUE les blocs (donc j'avais l'habitude de faire un bloc de tout mon dessin avant de le lancer ; mais doit y avoir moyen de modifier le programme). Il faudrait ajouter un traitement des calques verrouillés je crois, sinon, ça marche
  19. Je ne pense pas qu'on puisse "imprimer" la couleur d'arrière plan. Le mieux (peut-être) c'est de créer une hachure solide avec une transparence sur ta présentation, par dessous ta fenêtre.
  20. Bonjour, J'ai toujours utilisé des Wipeout dans mes blocs (pourtant compliqué, plein de paramètres et actions) et pas de soucis de couleur des PDF. MAIS... des collègues ont eu ce souci. J'ai corrigé en remplaçant l'imprimante "DWG to PDF" qu'ils avaient par la mienne. Pas sûr que le souci vienne de là, mais ça a marché !
  21. Tu ne vas pas polluer le post, c'est le tien, et je ne préfère pas donner mon mail. Ci-joint version plus propre, avec plus de densité des hachures. Zone de maintenance.dwg
  22. Je ne vois pas comment faire du remplissage solide de tes hachures, alors j'ai fait plusieurs 10 hachures décalées pour "simuler" le remplissage. J'ai régler l'échelle de hachure pour que cela corresponde à peu près à ton écartement. Les contours de hachures sont transformées en géométrie de construction (commande constructbloc) pour qu'ils n'apparaissent pas. Ensuite des paramètres de point de base et linéaire, et des actions d'étirement (dont variateurs de distance 0.5 pour les étirement du motif central et du point de base).
  23. Ci-jointZone de maintenance.dwg
  24. Bonjour le forum ! Je fais des présentations sur lesquelles j'ai un certains nombres de fenêtres. J'ai beaucoup de calques. J'utilise donc les état de calque pour avoir les mêmes états d'une fenêtre à l'autre, mais je trouve la démarche fastidieuse. Déjà, il faut déjà ouvrir la première fenêtre, développer le ruban "calques", sélectionner l'état, sortir de la fenêtre, passer à la suivante. Ensuite, il n'y a pas de "dynamisme". Si je change l'état d'un calque (en gelant un calque par exemple), les fenêtres ne "suivent " pas. Il faut repasser dans chacune pour redéfinir l'état du calque à afficher. Avez-vous un retour d'expérience la dessus ? Des méthodes ? De programmes ? Je rêverais d'un paramètre "état de calque" dans les propriétés des fenêtres !!!
  25. Dans l'éditeur de bloc, tu crées un rectangle autour de ton objet, puis tu lances la commande CONTOUR pour créer une polyligne délimitant l'objet (il ne faut pas qu'il y ait de "trou" sinon la commande détectera mal le contour). Il faut parfois bidouiller les entités car certaines ne sont pas reconnues (je crois spline et ellipse à transformer en polyligne). Avec la commande NETTOYER, tu sélectionnes ce contour qui servira de masque. Tu peux choisir d'effacer ou non la polyligne créée. Si tu ne veux pas que le contour de cet objet NETTOYER apparaisse, tu changes la variable WIPEOUT à 0. Problème 1 : tu ne peux pas générer de NETTOYER depuis une polyligne composée d'arc. Problème 2 : Avec les objets NETTOYER, tu ne peux pas faire de "trou" dans ton objet qui permettrait de voir derrière. Une autre méthode consiste donc à plutôt créer une hachure. Crée le contour extérieur ET les contours intérieurs délimitant les trous. Puis lance la commande HACHURE, motif "solide", couleur 255,255,255 (pas blanche sinon elles deviennent noir à l'impression), et sélectionner les différents contours. Autocad reconnaîtra les différents îlots et le résultat sera celui escompté. Astuce : sur les objets complexes, avant de lancer la commande CONTOUR, fais une préselection grossière des objets existants délimitant déjà l'objet, isole les en les copiant sur le côté. La commande CONTOUR aura moins d'objet à analyser et fonctionnera mieux.
×
×
  • 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é