Aller au contenu

Messages recommandés

Posté(e)

salut a tous,

Je cherche a eploder(decomposer) ma selection aui comprend une esction de piece hachurée.

Les hachures ne sont reconnues aont un autre logiciel que si elles sont decomposés.

 

Je voudrais le faire en lsp car j'ai beaucoup de fichier à traiter...

 

Merci d'avance pour votre aide

Posté(e)

Salut,

 

Vite fait, pour exploser toutes les hachures du dessin.

 

Enlever l'espace entre

 

(defun c:expl_hatch (/ ss hac)
 (if (setq
ss (ssget
     "_X"
     '((0 . "HATCH") (-4 . "[color=#FF0000]"))
   )
     )
   (repeat (setq n (sslength ss))
     (setq hac (ssname ss (setq n (1- n))))
     (command "_explode" hac "")
   )
 )
 (princ)
) 

 

[Edité le 18/4/2007 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

salut,

J'ai un souci: je n'arrive pas à faire ceci:

Je voudrais que ce lisp, qui explode les hachures, ouvre une serie de fichier nommé:

fichier_01 à fichier_50 et explode les hachures.

Puis ferme chaque fichier et enregistre sous le meme nom.

Il ne doit pas y avoir grand chose à modifier mais je ne sais comment faire.

Merci d'avance

:)

 

Posté(e)

Il ne doit pas y avoir grand chose à modifier mais je ne sais comment faire.

 

En effet, en LISP on ne peut le faire.

Une routine LISP ne fonctionne que dans le dessin dans lequel elle a été lancée.

 

Il faut passer par un SCRIPT qui ouvre chaque dessin, lance le LISP (qui doit être chargé dans chaque dessin), enregistre et ferme le dessin.

 

Tramber avait donné une méthode pour écrire des scripts avec Excel et sa fonction "concatenation", fais une recherche.

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Ok merci pour ta reponse

Je me sert beaucoup de ton lisp. vraiment nikel:)

C'est sur celui ci aue j'amerai exploder les hachures. sur chque section.

Peux tu m'indiquer ce que je dois modifier pour exploder les hachures?

Merci. ;)

 

 

(defun c:Wbloc-Coupe (/ epais obj alt0 alt1 nb n cnt file echo osmo coupe hach)

(if (zerop (getvar "DWGTITLED"))

(alert

"Le dessin doit être enregistré avant de lancer la commande."

)

(if (and (setq epais (getdist "\nSpécifiez le pas entre chaque coupe: "))

(setq alt0 (caddr

(getpoint

"\nSpécifiez un point sur le premier plan de coupe: "

)

)

)

(setq alt1 (caddr

(getpoint

"\nSpécifiez un point sur le dernier plan de coupe: "

)

)

)

(setq obj (car (entsel "\nSélectionnez le solide: ")))

(= (cdr (assoc 0 (entget obj))) "3DSOLID")

(if (< 0 epais)

(setq nb (/ (abs (- alt0 alt1)) epais))

(setq nb 0)

)

(if (= (fix nb) nb)

(setq nb (fix nb))

(setq nb (1+ (fix nb)))

)

(or (< alt0 alt1) (setq epais (- epais)))

(setq cnt 1)

(setq n 0)

(setq file (strcat (getvar "dwgprefix")

(vl-string-right-trim ".dwg" (getvar "dwgname"))

"_Coupe_"

)

)

)

(progn

(setq echo (getvar "CMDECHO"))

(setvar "CMDECHO" 0)

(setq osmo (getvar "OSMODE"))

(setvar "OSMODE" 0)

(while (findfile (strcat file (itoa cnt) ".dwg"))

(setq cnt (1+ cnt))

)

(if (< 0 nb)

(repeat nb

(command "_section"

obj

""

"XY"

(list 0.0 0.0 (+ alt0 (* n epais)))

)

(setq coupe (entlast))

(command "_move"

coupe

""

(list 0.0 0.0 (+ alt0 (* n epais)))

'(0.0 0.0 0.0)

)

(command "_bhatch" "_s" coupe "" "_p" "_u" "0" "0.02" "_n" "")

(setq hach (entlast))

(command "_wblock"

(strcat file (itoa cnt) ".dwg")

""

'(0.0 0.0 0.0)

coupe

hach

""

)

(setq cnt (1+ cnt)

n (1+ n)

)

)

)

(command "_section" obj "" "XY" (list 0.0 0.0 alt1))

(setq coupe (entlast))

(command "_move"

coupe

""

(list 0.0 0.0 alt1)

'(0.0 0.0 0.0)

)

(command "_bhatch" "_s" coupe "" "_p" "_u" "0" "0.02" "_n" "")

(setq hach (entlast))

(command "_wblock"

(strcat file (itoa cnt) ".dwg")

""

'(0.0 0.0 0.0)

coupe

hach

""

)

(setvar "CMDECHO" echo)

(setvar "OSMODE" osmo)

)

)

)

(princ)

)

Posté(e)

J'ai modifier le LISP pour que les hachures soient décomposées avant de faire le bloc (pas testé)

 

 (defun c:Wbloc-Coupe
	     (/	epais obj alt0 alt1 nb n cnt file echo osmo
	      coupe hach ent ss)
 (if (zerop (getvar "DWGTITLED"))
   (alert
     "Le dessin doit être enregistré avant de lancer la commande."
   )
   (if
     (and (setq epais (getdist "\nSpécifiez le pas entre chaque coupe: "))
   (setq alt0
	  (caddr
	    (getpoint
	      "\nSpécifiez un point sur le premier plan de coupe: "
	    )
	  )
   )
   (setq alt1
	  (caddr
	    (getpoint
	      "\nSpécifiez un point sur le dernier plan de coupe: "
	    )
	  )
   )
   (setq obj (car (entsel "\nSélectionnez le solide: ")))
   (= (cdr (assoc 0 (entget obj))) "3DSOLID")
   (if (	     (setq nb (/ (abs (- alt0 alt1)) epais))
     (setq nb 0)
   )
   (if (= (fix nb) nb)
     (setq nb (fix nb))
     (setq nb (1+ (fix nb)))
   )
   (or (	   (setq cnt 1)
   (setq n 0)
   (setq file
	  (strcat (getvar "dwgprefix")
		  (vl-string-right-trim ".dwg" (getvar "dwgname"))
		  "_Coupe_"
	  )
   )
     )
      (progn
 (setq echo (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)
 (setq osmo (getvar "OSMODE"))
 (setvar "OSMODE" 0)
 (while	(findfile (strcat file (itoa cnt) ".dwg"))
   (setq cnt (1+ cnt))
 )
 (if (	   (repeat nb
     (command "_section"
	      obj
	      ""
	      "XY"
	      (list 0.0 0.0 (+ alt0 (* n epais)))
     )
     (setq coupe (entlast)
	   ss	 (ssadd)
     )
     (ssadd coupe ss)
     (command "_move"
	      coupe
	      ""
	      (list 0.0 0.0 (+ alt0 (* n epais)))
	      '(0.0 0.0 0.0)
     )
     (command "_bhatch"	"_s" coupe "" "_p" "_u"	"0" "0.02" "_n"
	      "")
     (setq hach (entlast))
     (command "_explode" coupe "")
     (command "_explode" hach "")
     (setq ent (entnext coupe))
     (while ent
       (ssadd ent ss)
       (setq ent (entnext ent))
     )
     (command "_wblock"
	      (strcat file (itoa cnt) ".dwg")
	      ""
	      '(0.0 0.0 0.0)
	      ss
	      ""
     )
     (setq cnt (1+ cnt)
	   n   (1+ n)
     )
   )
 )
 (command "_section" obj "" "XY" (list 0.0 0.0 alt1))
 (setq coupe (entlast)
       ss    (ssadd)
 )
 (ssadd coupe ss)
 (command "_move"
	  coupe
	  ""
	  (list 0.0 0.0 alt1)
	  '(0.0 0.0 0.0)
 )
 (command "_bhatch" "_s" coupe "" "_p" "_u" "0"	"0.02" "_n" "")
 (setq hach (entlast))
 (command "_explode" coupe "")
 (command "_explode" hach "")
 (setq ent (entnext coupe))
 (while	ent
   (ssadd ent ss)
   (setq ent (entnext ent))
 )
 (command "_wblock"
	  (strcat file (itoa cnt) ".dwg")
	  ""
	  '(0.0 0.0 0.0)
	  ss
	  ""
 )
 (setvar "CMDECHO" echo)
 (setvar "OSMODE" osmo)
      )
   )
 )
 (princ)
)

 

[Edité le 24/4/2007 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

merci gile pour ton aide ;)

ca explode nikel par contre quand je une des coupes sous corel draw, il n'y a pas le contour des coupes.( il n'y a que les hachures).

 

Je suis obligé de réouvrir chaque fichier, faire un ctrl+a (_ai_selall) et exploder le tout.

Sais tu pourquoi et comment corrigé cela sur le lsp?

 

Merci bien a toi.

:)

Posté(e)

Salut,

 

Ce doit être Crel Draw qui ne reconnaît pas les "régions" générées par la commande COUPE.

 

J'ai modifié le code ci-dessus pour décomposer celles-ci avnt de faire le wbloc.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é