Aller au contenu

Les SPlines


Messages recommandés

Posté(e)

Salut,

Voilà ce que je te propose si ça peut résoudre ton problème.

 

Démarche à suivre:

utiliser le lisp pour convertir les entités SPLINE en POLYLIGNE "Splinés"

Faire un "pedit" "joindre", ce qui a pour effet de retouver les segments "enveloppe", il te faut donc "spliner" le résultat de l'option joindre et le tour est joué.


(defun c:spl3Dto2D ( / flag_erase old_osmd e l_dxf l_som 2d_lsom )
(setvar "cmdecho" 0)
(initget "Général Courant _Wolrd Current")
(if (eq (getkword "\nProjection 2D dans SCU [Général/Courant]: ") "Wolrd")
	(command "_.ucs" "_world")
)
(initget "Oui Non _Yes No")
(if (eq (getkword "\nEffacer la spline3D [Oui/Non] ") "No")
	(progn (princ "\nBien Chef, on conserve") (setq flag_erase T))
	(setq flag_erase nil)
)
(setq old_osmd (getvar "osmode"))
(setq js (ssget "_X" '((0 . "SPLINE") (67 . 0) (410 . "Model"))))
(cond
	(js
		(command "_.undo" "_begin")
		(setvar "osmode" 0)
		(repeat (setq n (sslength js))
			(setq l_dxf (entget (setq e (ssname js (setq n (1- n))))))
			(setq l_som (mapcar '(lambda (x) (trans x e 0)) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) l_dxf))))
			(setq 2d_lsom (mapcar '(lambda (x) (trans (list (car x) (cadr x) 0.0) 0 1)) l_som))
			(command "_.pline"
				(foreach n 2d_lsom (command n))
			)
			(command "_.pedit" (entlast) "_spline" "")
			(if (not flag_erase)
				(entdel e)
			)
		)
		(setvar "osmode" old_osmd)
		(command "_.undo" "_end")
	)
	(T
		(princ "\nAucune Spline trouvée")
	)
)
(setvar "cmdecho" 1)
(prin1)
)

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

Posté(e)

Zut, chaque fois je me fais avoir avec les caractères "<" et ">" dans le copier-coller.

 

(if (eq (getkword "\nProjection 2D dans SCU [Général/Courant]: ") "Wolrd")

devient

(if (eq (getkword "\nProjection 2D dans SCU [Général/Courant]"<"Courant">": ") "Wolrd")

 

et

 

(if (eq (getkword "\nEffacer la spline3D [Oui/Non] ") "No")

devient

(if (eq (getkword "\nEffacer la spline3D [Oui/Non]"<"Oui">" ") "No")

 

Enlever les " (guillemets) de part et d'autre du signe ">" et "<" après le copier-coller.

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

Posté(e)

Salut

Un petit lisp vite fait

(setq a (ssget))
(setq n 0 d (list))
(while (ssname a n)
 (setq b (entget (ssname a n)))
 (if (= n 0)
   (progn
     (setq c (vl-remove (assoc -1 b) b))
     (setq c (vl-remove (assoc 330 c) c))
     (setq c (vl-remove (assoc 5 c) c))
   )
   (progn
     (setq c (vl-remove-if-not '(lambda (x) (= (car x) 10)) b))
     (setq c (append c (vl-remove-if-not '(lambda (x) (= (car x) 11)) b)))
   )
 )
 (setq d (append d c))
 (setq n (1+ n))
)
(if (entmake d)
 (progn
   (setq n 0)
   (while (ssname a n)
     (entdel (ssname a n))
     (setq n (1+ n))
   )
 )
)
(princ)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é