Aller au contenu

Création d'une lisp avec la commande mainlev


vinslille

Messages recommandés

Bonjour, 

Je débute totalement avec les lisp... je cherche à créer une routine me permettant de tracer des polylignes avec la fonction "mainlev", que ces polylignes se closent  et qu'une qu'une hachure (échelle annotative) remplisse l'intérieur.

A l'aide d'outils séparé, ça fonctionne, mais en utilisant trois outils distinct. Je souhaiterai que cela se fasse en une seule opération. j'ai fait quelque essais (un est en dessous, soyez indulgents, c'est ma première aventure ! ), mais ça ne fonctionne pas (je n'ai malheureusement assez de temps à y consacrer)

Pouvez-vous m'aider ? 

D'avance merci !

(defun c:essais (/ *error* oldcmd ply)
(vl-load-com)
 
(defun *error* (msg)
(if oldcmd (setvar "CMDECHO" oldcmd))
(if (not (member msg '("Function cancelled"
"quit / exit abort")))
(princ (strcat "\n<< Error: " msg " >>"))
(princ "\n<< Cancelled >>"))
(princ))
 
(setq oldcmd (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(setvar "HPNAME" "ETOILE-02")
(setvar "SKETCHINC" 0.001)
(setvar "SKPOLY" 1)
 
(command "mainlev" "")
(prompt "tracer EC")
(while (eq 1 (logand 1 (getvar "CMDACTIVE")))
(command pause))
 
(vla-put-Closed
(command "PEDIT" "M")
(setq ply(entlast))
"C"
(setq ply(entlast))
(command "_hatch" "_S" ply "" "")
(princ))
Lien vers le commentaire
Partager sur d’autres sites

Bonjour @vinslille

En lisant ça, on sait que tu débutes. Tout le monde a débuté et je ne me permettrais pas de me moquer.

Par contre, quand on débute, on ne se coltine pas tout de suite aux polylignes.
Il faut se familiariser avec des objets simples, comprendre chaque action et interaction...


Je vais regarder ce qu'on peut faire pour cette demande de dessin...

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

Je n'ai pas d'AutoCAD sous la main pour l'instant. Serait-il possible de savoir à quel endroit tu rencontres une erreur ? Une chose est sûre, la fin ne peut pas fonctionner ainsi et pour un début, tu fais déjà appel à des concepts assez complexes ! 

Si j'étais à ta place, j'essaierai d'y aller pas à pas, une fois le premier pas franchi, on passe au suivant, etc... Ainsi la première étape serait la commande MAINLEV (pas besoin de clore pour l'instant). Si tu arrives à tracer une polyligne avec cette commande, sans générer d'erreur alors on passe à la seconde étape : clore la polyligne dernièrement créée. Et ainsi de suite. Tu verras qu'en procédant de la sorte, tu auras beaucoup moins d'erreurs (ou du moins beaucoup moins les unes après les autres !

Bisous, Luna

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Bonjour, désolé pour la réponse tardive, j'ai essayé de suivre le conseil de @Luna, j'y suis allé pas à pas.

(Command "skpoly" "1")
(command "mainlev" "0.001")

Jusque là ça fonctionne, mais pas besoins d'une lisp si ça devait s'arrêter là.

La ou je bloque, c'est qu'une fois ma polyligne tracée, je voudrai la clore avec PEDIT, j'ai essayé de coder comme ça

(Command "skpoly" "1")
(command "mainlev" "0.001"
(command "PEDIT" "m" (entlast) "" "C" ""))

en gros, je souhaite sélectionner mon dernier tracé, et clore la polyligne créé avant de passer à la prochaine étape (les hachures). Là, quand je valide mon tracé par la touche entrée ou espace, ça interrompt la commande. 

Avez vous une solution (j'ai cherché mais pas trouvé) ?

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Peut être sous cette forme ? (en conservant tes paramètres de Main Levée et de motif de hachure propre à ton dessin.)

(defun c:essai ( / Borne ss Suivant)
	(setvar "SKPOLY" 1)
	(setq Borne (entlast))
	(command "_.SKETCH" 0.001)
	(while (not (zerop (getvar "CMDACTIVE")))
		(command pause)
	)
	(if (and Borne (entget Borne))
		(progn
			(setq ss nil ss (ssadd))
			(while (setq Suivant (entnext Borne))
				(ssadd Suivant ss)
				(setq Borne Suivant)
			)
			ss
		)
	)
	(command "_.PEDIT" "_Multiple" ss "" "_Close" "_eXit")
	(command "_.HATCH" "ETOILE-02" 0.2 0 ss "")
)

 

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

Le 24/10/2022 à 15:06, bonuscad a dit :

Bonjour,

Peut être sous cette forme ? (en conservant tes paramètres de Main Levée et de motif de hachure propre à ton dessin.)

 

Super, ça fonctionne très bien, et j'ai légèrement adapté et modifié pour répondre à mon besoin. J'ai "presque" entièrement compris le fonctionnement, maintenant je vais essayé d'aller plus loin, je reviendrai vers vous je pense, car j'ai beaucoup d'idée, mais pas sur que je soit en mesure de tout réussir moi-même!

En tout cas merci à vous trois pour vos réponses/conseil/solution 

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é