Sami2601 Posté(e) le 17 avril Posté(e) le 17 avril Bonjour tout le monde, J'ai une fonction qui permet de changer les hachures d'un calque avec une échelle. (defun c:HatchReben () ; Set variables for layer name, new hatch pattern, hatch scales, and hatch color (setq layerName "01232 - Bodenbedeckung - Reben Füllfläche" newHatchPattern "GB_REBEN" hatchscales 0.25 hatchColor '(130 130 130)) ; RGB color (130, 130, 130) ; Check if the specified layer exists (if (tblsearch "LAYER" layerName) (progn ; Get information about the existing layer (setq oldLayer (tblsearch "LAYER" layerName)) (setq oldLayerColor (cdr (assoc 62 oldLayer))) (setq oldLayerLinetype (cdr (assoc 6 oldLayer))) (setq oldLayerLinetypescales (cdr (assoc 48 oldLayer))) ) ; Display a message if the layer is not found (prompt (strcat "\nLayer " layerName " not found.")) ) ; Select all hatches on the specified layer (setq ss (ssget "X" (list (cons 8 layerName) (cons 0 "HATCH")))) ; Check if hatches are found on the specified layer (if ss (progn (setq i 0) ; Loop through each selected hatch (while (< i (sslength ss)) ; Get the entity name of the hatch (setq hatchEntity (ssname ss i)) ; Get the layer of the hatch (setq hatchLayer (cdr (assoc 8 (entget hatchEntity)))) ; Check if the hatch is on the specified layer (if (= hatchLayer layerName) (progn ; Modify the hatch entity to change its pattern and scales (entmod (subst (cons 2 newHatchPattern) (assoc 2 (entget hatchEntity)) (entget hatchEntity))) (entmod (subst (cons 41 hatchscales) (assoc 41 (entget hatchEntity)) (entget hatchEntity))) ; Change hatch color to RGB (130, 130, 130) (entmod (subst (cons 62 hatchColor) (assoc 62 (entget hatchEntity)) (entget hatchEntity))) ; Restore original layer properties (entmod (subst (cons 6 oldLayerLinetype) (assoc 6 (entget hatchEntity)) (entget hatchEntity))) (entmod (subst (cons 48 oldLayerLinetypescales) (assoc 48 (entget hatchEntity)) (entget hatchEntity))) ) ) ; Move to the next hatch in the selection set (setq i (1+ i)) ) Le problème c'est que bien que l'échelle soit correcte quand on vérifie sur les propriétés de la hachure, mais visuellement elle ne l'est pas. Si on remodifie manuellement l'échelle en remettant la même valeur (sur cet exemple 0.25) dans les propriétés de la hachure sélectionnée, ca marche. Quelqu'un aurait il une idée sur la provenance de ce problème? Je vous remercie d'avance. Meilleures salutations.
didier Posté(e) le 17 avril Posté(e) le 17 avril Bonjour @Sami2601 Je n'ai pas envie de chercher à comprendre le travail des autres aussi je propose cette routine qui demande de cliquer sur une entité Hachure et qui modifie toutes les hachures du calque de l'entité exemple en ansi31 échelle 0.5, est-ce que ça vous va ? Je ne change pas l'angle de la hachure Je peux la retravailler en faisant des demandes en ligne de commande au lieu de cliquer une entité. Changer les valeurs de nom de hachure et d'échelle dans le code pour coller à vos besoins pour l'instant. La commande à taper est "sami2601" Amicalement (defun c:sami2601 ( / ec ex ln n ob ss typh) (setq ex (car (entsel "\nCliquez sur la hachure pour détecter le calque :\n"))) (if (= (cdr (assoc 0 (entget ex))) "HATCH") (progn (setq typh "ansi31" ec 0.5 ln (cdr (assoc 8 (entget ex))) ss (ssget "X" (list (cons 8 ln) (cons 0 "HATCH"))) ) (repeat (setq n (sslength ss)) (setq ob (vlax-ename->vla-object (ssname ss (setq n (1- n))))) (vla-put-patternscale ob ec) (vla-SetPattern ob acHatchPatternTypePreDefined typh) ) ) (alert" l'entité n'est pas une hachure ") ) ) Éternel débutant... Mon site perso : Programmer dans AutoCAD
Sami2601 Posté(e) le 18 avril Auteur Posté(e) le 18 avril Merci beaucoup @didier J'ai juste changé pour que ca sélectionne directement les hachures du calque voulu et ca marche parfaitement!
didier Posté(e) le 18 avril Posté(e) le 18 avril Bonjour @Sami2601 Il est possible de rajouter une ligne de code pour demander à l'utilisateur le type de hachures et s'il veut sélectionner la totalité du calque ou juste quelques-unes. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
philsogood Posté(e) le 18 avril Posté(e) le 18 avril hello "totalité du claque" bigre @didier relis toi, je n'en peux plus de tes fautes de praffes 😛 j'ai vu la même faute de frappe sur l'aide AutoCAD ajd encore!! 😉 Phil Projeteur Revit Indépendant - traitement des eaux/CVC
didier Posté(e) le 18 avril Posté(e) le 18 avril Bonjour @philsogood Je te remercie pour l'alerte, je corrige de ce pas. je n'en peux plus de tes fautes de praffes j'en fais donc tant que ça ? Je l'aurais sans doute vue tout seul et corrigée, mais puisque tu m'alertes, ce sera encore plus rapide. Se relire et se relire encore permet d'éviter 90 % des fautes de frappe ou d'orthographe, ce serait bien que cette règle soit plus appliquée (hihi). Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Luna Posté(e) le 18 avril Posté(e) le 18 avril il y a 17 minutes, didier a dit : fautes de frappe ou d'orthographe, e serait bien que cette règle soit plus appliquée (hihi). *se (du coup ?) 🙂 Désolée, Luna
didier Posté(e) le 18 avril Posté(e) le 18 avril Bonjour @Luna Décidément !!! Quand ça veut pas, ça veut pas... Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
philsogood Posté(e) le 2 mai Posté(e) le 2 mai @Luna @didier j'ai une explication à toutes ses erreurs, le 18/4, c'est la Saint Parfait ;) Projeteur Revit Indépendant - traitement des eaux/CVC
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant