Aller au contenu

Automatisation commande _pedit


Messages recommandés

Posté(e)

Bonjour à tous,

Je dois me planter mais je sais pas où!

J'essaie d'automatiser la _pedit par:

 

(defun c:pp ()

 (command "_pedit" "_m" sel "" "_i" "" )

 (princ)

)

 

Et j'ai le retour:

 

Commande: PP
Commande inconnue "PP".  Appuyez sur F1 pour obtenir de l'aide.
Commande: _i Commande inconnue "I".  Appuyez sur F1 pour obtenir de l'aide.
Commande: PP
Commande inconnue "PP".  Appuyez sur F1 pour obtenir de l'aide.
Commande:

 

Merci d'avance pour vos réponses.

Posté(e)

c'est franchement bizarre qu'il réponde commande inconnue.

Met le dans un .lsp à part et teste le seul.

 

à tout hasard et si j'ai bien compris la finalité, (Gile) avait pondu un truc pour inverser les poly (du temps ou cette commande n'était pas implémenté dans Pedit

 

 

;;; R_PLINE -Gilles Chanteau-
;;; Inverse l'ordre de sommets d'une polyligne (2D, 3D ou optimis?e)
;;; Toutes les propri?t?s de la polyligne sont conserv?es (arcs, largeurs ...)

;; Inverse l'ordre de sommets d'une lwpolyligne, d'une polyligne 2D ou 3D

(defun reverse_pline (ent / e_lst vtx v_lst p_lst l_vtx)
 (setq e_lst (entget ent))
 (cond
((= (cdr (assoc 0 e_lst)) "POLYLINE")
	(setq vtx (entnext ent))
	(while (= (cdr (assoc 0 (entget vtx))) "VERTEX")
  	(setq v_lst (cons (entget vtx) v_lst)
    	vtx   (entnext vtx)
  	)
	)
)
((= (cdr (assoc 0 e_lst)) "LWPOLYLINE")
	(setq p_lst (vl-remove-if-not
       '(lambda (x)
  		(member (car x) '(10 40 41 42))
		)
       e_lst
     )
      e_lst (vl-remove-if
       '(lambda (x)
  		(member x p_lst)
		)
       e_lst
     )
	)
	(while p_lst
  	(setq v_lst (cons
     	(list (car p_lst) (cadr p_lst) (caddr p_lst) (cadddr p_lst))
     	v_lst
       )
    	p_lst (member (assoc 10 (cdr p_lst)) (cdr p_lst))
  	)
	)
)
 )
 (setq	l_vtx (last v_lst)
l_vtx (subst (cons 40 (cdr (assoc 41 (car v_lst))))
     	(assoc 40 l_vtx)
     	l_vtx
 		)
l_vtx (subst (cons 41 (cdr (assoc 40 (car v_lst))))
     	(assoc 41 l_vtx)
     	l_vtx
 		)
l_vtx (subst (cons 42 (- (cdr (assoc 42 (car v_lst)))))
     	(assoc 42 l_vtx)
     	l_vtx
 		)
 )
 (setq	v_lst
    (mapcar
      '(lambda (x y)
 		(setq x (subst (cons 40 (cdr (assoc 41 y))) (assoc 40 x) x)
		x (subst (cons 41 (cdr (assoc 40 y))) (assoc 41 x) x)
		x (subst (cons 42 (- (cdr (assoc 42 y)))) (assoc 42 x) x)
 		)
	)
      v_lst
      (cdr v_lst)
    )
 )
 (if (= (logand 1 (cdr (assoc 70 e_lst))) 1)
(setq v_lst (append (list l_vtx) v_lst))
(setq v_lst (append v_lst (list l_vtx)))
 )
 (cond
((= (cdr (assoc 0 e_lst)) "POLYLINE")
	(mapcar 'entmake
    	(append (list e_lst) v_lst (list (entget vtx)))
	)
	(entdel ent)
)
((= (cdr (assoc 0 e_lst)) "LWPOLYLINE")
	(setq e_lst (append e_lst (apply 'append v_lst)))
	(entmod e_lst)
)
 )
)

;;; R_PLINE Fonction d'appel

(defun c:r_pline (/ ent)
 (while (not (setq ent (car (entsel)))))
 (if (or (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
 	(and (= (cdr (assoc 0 (entget ent))) "POLYLINE")
      	(zerop (logand 240 (cdr (assoc 70 (entget ent)))))
 	)
 	)
(reverse_pline ent)
(prompt "\nEntit? non valide")
 )
 (princ)
)

Posté(e)

eRf

je connais pas MAP 2016 mais je connais AutoCAD 2016 et en restant sur un sommet on peut en faisant un clic droit ajouter(ou supprimer) un sommet de manière simple et rapide

et oué, les lisp ça sert plus à rien!! hihihi

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

Posté(e)

Effectivement cela fonctionne, mais si tu es sur un arc map/atocad t’insère un segment et non un point sur ton arc cercle.

Chose que le lisp de gille respect.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é