Aller au contenu

Messages recommandés

Posté(e)

Bonjour.

J'ai trouvé un lisp pour réaliser des hachures dans un rectangle suivant 3points, mais cela ne fonctionne pas.

Pourriez vous m'indiquer ce qui coince.?

(defun C:INSULHATCH ( / old_snap old_lay first_pt second_pt third_pt hatch_scale rectangle_name)
;
;insulation batting hatch tool from www.CADhatch.com for metric & imperial drawings
;to use, pick first point on left end of line, second point on right end of same line, third point needs to be opposite the second point.
;
(setq old_snap (getvar "OSMODE"));save osnap so we can reset it on exit
(setvar "OSMODE" 1); set osnap to end point
(setq old_lay (getvar "CLAYER")); save current layer name so we can reset it on exit

(prompt "\nSelect 2 points on lower line and 3rd on top line at 90degs to 2nd: ")
(setq first_pt (getpoint)) 
(setq second_pt (getpoint))
(setq third_pt (getpoint))
(setq hatch_scale (/ (distance second_pt third_pt) 100.0)); hatch scale needs to be distance between lines divided by 100
(command "LAYER" "M" "HATCHLAYERNAME" "");edit layer name to suit your requirments, if layer exists in the drawing will set to that, if not it will create it.
(command "rectangle" first_pt "R" second_pt third_pt);draw a rectangle to hatch
(setq rectangle_name (ssget "L" ));name the rectangle so we can delete it if required
(command "UCS" "3" first_pt second_pt "")
(command "HATCH" "P" "H1INSUN1" hatch_scale 0 "S" "L" "")
(command "ERASE" rectangle_name "");erases the hatch boundary rectangle, delete this line if you normally want to keep the boundary

(command "UCS" "P");resets UCS to previous setting
(setvar "OSMODE" old_snap); resets osnap to previous setting
(command "LAYER" "M" old_lay "");reset to orginal layer
); end defun

Par avance merci

ps: je n'y connais rien

Posté(e)

Coucou,
Le soucis principal que je vois : Aucune option n'a été définie en international (ils ont développé chat uniquement pour des AutoCAD anglais) mais rien de bien méchant vu qu'en international il suffit d'ajouter un underscore "_" devant les noms anglais. Et les commandes "LAYER" et "HATCH" ouvre une boîte de dialogue donc il faut plutôt utiliser les versions en ligne de commande (précédées d'un tiret "-").

(defun C:INSULHATCH ( / old_snap old_lay first_pt second_pt third_pt hatch_scale rectangle_name)
;
; insulation batting hatch tool from www.CADhatch.com for metric & imperial drawings
; to use, pick first point on left end of line, second point on right end of same line, third point needs to be opposite the second point.
;
  (setq old_snap (getvar "OSMODE"));save osnap so we can reset it on exit
  (setvar "OSMODE" 1); set osnap to end point
  (setq old_lay (getvar "CLAYER")); save current layer name so we can reset it on exit

  (prompt "\nSelect 2 points on lower line and 3rd on top line at 90degs to 2nd: ")
  (setq first_pt (getpoint)) 
  (setq second_pt (getpoint))
  (setq third_pt (getpoint))
  (setq hatch_scale (/ (distance second_pt third_pt) 100.0)) ; hatch scale needs to be distance between lines divided by 100
  (command "_-LAYER" "_M" "HATCHLAYERNAME" "") ; edit layer name to suit your requirments, if layer exists in the drawing will set to that, if not it will create it.
  (command "_RECTANG" first_pt "_R" second_pt third_pt) ; draw a rectangle to hatch
  (setq rectangle_name (ssget "_L" )) ; name the rectangle so we can delete it if required
  (command "_UCS" "3" first_pt second_pt "")
  (command "_-HATCH" "_P" "H1INSUN1" hatch_scale 0 "_S" "_L" "")
  (command "_ERASE" rectangle_name "") ; erases the hatch boundary rectangle, delete this line if you normally want to keep the boundary

  (command "_UCS" "_P") ; resets UCS to previous setting
  (setvar "OSMODE" old_snap) ; resets osnap to previous setting
  (command "_-LAYER" "_M" old_lay "") ; reset to orginal layer
) ; end defun

L'écriture du programme est très bancale et je vois de nombreuses améliorations possibles mais je manque de temps pour te proposer une version plus propre.
(version ci-dessus non testée !)

Bisous,
Luna

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é