Aller au contenu

Orienter des Hachures


willy95

Messages recommandés

Bonjour à tous,

 

Bien qu'ayant chercher et comprendre longuement mon problème, je n'y trouve pas de réponse positive.

 

Quand je tape à l'invité de commande les éléments un par un cela fonctionne, mais l'ensemble dans une petite routine le programme bloque.

 

Je cherche à récupérer l'angle d'une ligne et l'appliquer sur toutes les hachures du même claque.

 

Quelqu'un pourrait-il m'éclairer sur mon problème ?

 

(defun c:ORIH ()

(setq p1 (getpoint "\nSaisir le 1er point d'orientation : "))  

(setq p2 (getpoint "\tSaisir le 2eme point d'orientation : "))			

(setq angle1 (angle p1 p2))

(setq ang1 (angtos angle1 2 4))

(setq selec1 (ssget "_X" '((8 . "MesHachures"))))

(command "_-HATCHEDIT" !selec1 "" "P" "" "" !ang1 "")

)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Ma 1ere remarque sera sur ton filtre, ici tu n'as filtrer que sur le nom du calque, il serait judicieux de filtrer aussi sur le type d'entité: puisque que tu veux éditer des hachures.

Ma 2eme remarque, si effectivement HATCHEDIT fonctionne avec un jeu de sélection en ligne de commande (tu as d'ailleurs oublié d'enlever le ! devant, pareil pour l'angle), en mode procédure ça ne fonctionne plus!

Il te faut balayer ton jeu de sélection.

(defun c:ORIH ( / p1 p2 angle1 ang1 selec1 n)
(setq p1 (getpoint "\nSaisir le 1er point d'orientation : "))
(setq p2 (getpoint "\tSaisir le 2eme point d'orientation : "))
(setq angle1 (angle p1 p2))
(setq ang1 (angtos angle1 2 4))
(setq selec1 (ssget "_X" '((0 . "HATCH") (8 . "MesHachures"))))
(repeat (setq n (sslength selec1))
	(command "_.-HATCHEDIT" (ssname selec1 (setq n (1- n))) "_properties" "" "" ang1)
)
)

Dans l'état, cela devrait fonctionner, mais le code n'est pas sécurisé du tout (getpoint) pouvant être nul. Méfie toi aussi de HATCHEDIT dont les options peuvent changer suivant le modèle de hachures utilisé. Je pense à SOLID et au modèle Utilisateur par exemple.

ET LES VARIABLES LOCALES .

Bonne continuation.

 

  • Upvote 1

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Merci Bonuscad pour tes précieux conseils et remarques.

 

Après un test positif qui fonctionne à merveille, j'ai analysé tes lignes de code qui sont effectivement encore un peu trop complexe pour moi, du fait de certaines fonctions que je ne maîtrise pas du tout (repeat et ssname).

 

Je vais regarder ça de plus près et essayer de comprendre un peu plus ces fonctions.

 

C'est clair que ce bout de code n'est pas parfait et me sera utile uniquement dans un cas bien précis et ne peu en l'état servir autrement.

 

Merci encore pour ton retour, ta clarté d'explication et ton temps passé.

Lien vers le commentaire
Partager sur d’autres sites

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é