Aller au contenu

Polyligne to Multiligne


marionsname

Messages recommandés

Bonjour à tous,

Je cherche une routine qui permet de convertir un ensemble de ligne qui se joignent bout a bout en multiligne, ca dire sans passer par PEDIT, joindre ...etc.

J'ai trouvé un lisp qui convertit les polyligne en multiligne qui marche impeccablement pas ne répond pas à mon besoin car je veux aussi traiter un ensemble de polyligne en meme temps.

Je ne sais pas comment poster un fichier ici, sinon je vous aurais montrer un exmple.

Merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

As-tu essayé la commande PEDIT avec l'option Multiple, c'est exactement ce que fait ce lISP :

 

(defun c:mjoin (/ pa ss)
 (and
   (setq ss (ssget '((0 . "ARC,LINE,LWPOLYLINE"))))
   (setq pa (getvar "PEDITACCEPT"))
   (setvar "PEDITACCEPT" 1)
   (vl-cmdf "_.pedit" "_m" ss "" "_j" 0.0 "")
   (setvar "PEDITACCEPT" pa)
 )
 (princ)
) 

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

Lien vers le commentaire
Partager sur d’autres sites

AutoCAD 2000 :o ;)

 

Essayons un petit diagnostic pour comprendre pourquoi ça ne fonctionne pas.

 

Quand tu entres PEDIT, as-tu ça qui s'affiche à la ligne de commande ?

 

Commande: pedit

Sélectionnez la polyligne ou [Multiple]:

 

Sinon, c'est que l'option date de la 2002, tu n'as pas de chance.

 

Si tu as bien l'option, ça peut venir de la variable PEDITACCEPTqui n'existait pas à l'époque, dans ce cas il faut répondre Oui (_Yes) à l'invite :

Convertir les lignes et les arcs en polylignes [Oui/Non]?

 

Mais cette invite n'existe que si des lignes et/ou des arcs sont sélectionnés ce qui peut faire échouer la routine.

 

Si tu as bien l'option multiple, tu peux essayer cette version, avec les restrictions données ci dessus.

 

(defun c:mjoin (/ pa ss)
 (and
   (setq ss (ssget '((0 . "ARC,LINE,LWPOLYLINE"))))
   (command "_.pedit" "_m" ss "" "_y" "_j" 0.0 "")
 )
 (princ)
)

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

Lien vers le commentaire
Partager sur d’autres sites

Un de mes vieux lisp que j'utilisais sous les anciennes versions, où il n'y avait pas l'option "multiple".

 

Essayes le, si ça peut convenir... à l'époque il m'a bien rendu service.

 

(defun c:jxpall ( / js nbr ent nbe)
(setvar "cmdecho" 0)
(setq
	js (ssget
		'((-4 . "[b]<[/b]OR")
			(-4 . "[b]<[/b]AND")
				(0 . "POLYLINE")
				(-4 . "[b]<[/b]NOT")
					(-4 . "&") (70 . 249)
				(-4 . "NOT>")
			(-4 . "AND>")
			(-4 . "[b]<[/b]AND")
				(0 . "LWPOLYLINE")
				(-4 . "[b]<[/b]NOT")
					(-4 . "&") (70 . 128)
				(-4 . "NOT>")
			(-4 . "AND>")
			(0 . "LINE")
			(0 . "ARC")
		(-4 . "OR>"))
		)
	nbe 0
)
(if js (setq nbr (sslength js)) (setq nbr 0))
(while js
	(setq ent (ssname js 0))
	(if (not (equal (assoc 210 (entget ent)) '(210 0.0 0.0 1.0)))
		(command "_.ucs" "_e" ent)
		(command "_.ucs" "_w")
	)
	(cond
		((or
			(= (cdr (assoc 0 (entget ent))) "POLYLINE")
			(= (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
		 )
			(command "_.pedit" ent "_j" js "" "_x")
			(setq nbe (1+ nbe))
		)
		(T
			(command "_.pedit" ent "_y" "_j" js "" "_x")
			(setq nbe (1+ nbe))
		)
	)
	(setq js (ssget "p"
		'((-4 . "[b]<[/b]OR")
			(-4 . "[b]<[/b]AND")
				(0 . "POLYLINE")
				(-4 . "[b]<[/b]NOT")
					(-4 . "&") (70 . 249)
				(-4 . "NOT>")
			(-4 . "AND>")
			(-4 . "[b]<[/b]AND")
				(0 . "LWPOLYLINE")
				(-4 . "[b]<[/b]NOT")
					(-4 . "&") (70 . 128)
				(-4 . "NOT>")
			(-4 . "AND>")
			(0 . "LINE")
			(0 . "ARC")
		(-4 . "OR>"))
		)
	)
)
(if (zerop (getvar "worlducs"))
	(command "_.ucs" "_w")
)
(print nbr) (prompt " entités ont étées soumises à la commande.")
(print nbe) (prompt " entités résultantes.")
(setvar "cmdecho" 1)
(setq js nil) (gc)
(prin1)
)

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

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é