Aller au contenu

macro TRANS_LA


philous2

Messages recommandés

Bsr,

Je trouve cette macro très utile mais serait-il possible en joignant les plolylignes après transformation de pouvoir imposer un genre de "pas" avec une ligne de commande proposant la valeur de ce pas afin de combler un éventuel espace si ces polilygnes ne sont pas vraiment jointes pile poil.

Autrement c'est nickel

 

)

(progn

(command "pedit" (ssname ent_l compte) "o" "")

 

(ssadd (entlast) nv_ent)

)

)

 

(princ "\r") (princ compte)

 

(setq compte (1+ compte))

)

 

 

 

(princ "\nRattache les polylignes entre-elles... \n")

 

 

(setq nb_nv_ent (sslength nv_ent))

 

(if (> nb_nv_ent 0)

(progn

 

(repeat nb_nv_ent

 

(setq x_ent nil)

(setq x_ent (entget (ssname nv_ent compte1)))

(if (/= x_ent nil)

(progn

(command "pedit" (ssname nv_ent compte1) "j" nv_ent "" "s")

(princ "\r") (princ compte1)

)

)

 

(setq compte1 (1+ compte1))

)

 

)

)

 

(princ "\nFin du programme.")

)

)

(princ)

 

 

) ; defun

 

(princ "\n==> TRANS_LA")

(princ)

Lien vers le commentaire
Partager sur d’autres sites

Salut Philou2 , je ne sais pas si j'ai bien compris et je n' ai pas essayé ta macro , mais ci-dessous

un petit lisp que j'utilise avec l'écart entre polylignes fixé à 1. (valeur après le "_j" )

 

; joindre arc ligne polyligne 

(defun c:JPO (/  jpo:pa) 
 (setq jpo:pa (getvar "peditaccept" ))
 (setvar "peditaccept" 1) (vl-cmdf "_.pedit" "_m" (ssget) "" "_j" 1.0 "")  
 ;; (ssget) (command "pedit" "_m" "_p" "" "_j" "0.0" "") ;;  ancienne methode
 (setvar "peditaccept" jpo:pa)
 (princ)
)

 

 

on peut en faire ça

 

(defun c:JPo (/  jpo:pa e) 
 (or (setq e (getdist "\n Tolérance entre polylignes <1> :"))
       (setq e 1.0)
 )
 (setq jpo:pa (getvar "peditaccept" ))
 (setvar "peditaccept" 1) (vl-cmdf "_.pedit" "_m" (ssget) "" "_j" e "")  
 (setvar "peditaccept" jpo:pa)
 (princ)
)

 

[Edité le 15/10/2009 par usegomme]

Lien vers le commentaire
Partager sur d’autres sites

Slt,

Merci de ta réponse et de ton lisp très intéressant ma foi.

Ce matin j'avais refait un lisp sur le m^me principe mais ça ne marche pas.

 

 

 ; JPL_.LSP

; =================================
; transforme toutes les lignes, arcs 
; en polylignes, les joint selon une selection et 
;change épaisseur de polyligne.
; =================================

(defun c:jpl (/ ss) ;Converti en polyligne et change épr. de ligne
 (princ "\nConverti en polyligne et change épr. de ligne.") 
 (princ "\nConverti en polyligne et change d'épaisseur de polylignes. -bk") 
 (setq poliss (ssget))
 (setq epr (getreal "\nNouvelle épaisseur de polylignes : "))
 (if (and poliss 
       epr
(and (or
(and (= (getvar "pickfirst") 1)
(setq ss (ssget "_I" '((0 . "ARC,LINE,LWPOLYLINE"))))
)
(setq ss (ssget '((0 . "ARC,LINE,LWPOLYLINE"))))
)
(if (= (getvar "peditaccept") 1)
(vl-cmdf "_.pedit" "_m" ss "" "_j" 0.0 "")
(vl-cmdf "_.pedit" "_m" ss "" "_y" "_j" 0.50 "")
(vl-cmdf "_.pedit" "_m" ss "" "_w "" epr ""k)
)
)

(fin)
)
(princ)
) 
;;;___________________________________________________
(defun fin ()
 (princ "\n Mauvaise données...-bk")
 (princ)
)

 

Ton lisp répond en très grande partie à mon souhait car il transforme bien lignes arcs en polyligne et les joient avec un pas ou tolérance ou jointure au cas ou celles ne soient pas tt à fait jointes.

Je voulais savoir s'il était possible de rajouter une ligne de commande pour modifier éventuellement l'épaisseur de la nouvelle polyligne ds la m^me opération.

Par contre pour ta "tolérance" il peut y avoir un problème ou cela risque fausser aussi car ta tolérance est bassée sur la prolongation tolérée d'une droite.

Alors imagine que tu es 2 segments lignes ou arcs qui soit presque parallèlle ou et que l'extrémité d'une entité soit presque parallèlle à l'extrémltié de l'autre cela ne fonctionne pas logique car la téolérance risque d'être importante logique.

Ici au boulot cela arrive souvent avec les fichiers de géomêtres ou les lignes ne sont pas souvent toujours très bien faites.

J'espère que je me suis bien expliqué car pas facile à expliquer.

 

Lien vers le commentaire
Partager sur d’autres sites

Re salut

Voilà quelque chose de rapidos , qu'il faudrait améliorer au niveau des entrées utilisateur,

pour ce qui est des lignes mal dessinées , je ne sais pas faire.

 

 
(defun c:JPe (/  jpo:pa e elast ss s ep)
 (setq elast (entlast))
 
 (or (setq e (getdist "\n Tolérance entre polylignes <1> :"))
       (setq e 1.0)
 )
 (or (setq ep (getdist "\n Epaisseur polylignes <0.5> :"))
       (setq ep 0.5)
 )
 (setq ss (ssget))
 (setq jpo:pa (getvar "peditaccept" ))
 (setvar "peditaccept" 1) (vl-cmdf "_.pedit" "_m" ss "" "_j" e "")  
 
 (setq s nil s (ssadd))
 (while (entnext elast)
   (ssadd (entnext elast) s)
   (setq elast (entnext elast))
 )

 (vl-cmdf "_.pedit" "_m" ss s "" "_w" ep "")

 (setvar "peditaccept" jpo:pa)
 
 (princ)
)

Lien vers le commentaire
Partager sur d’autres sites

Reslt,

Super sympa et grand merci, n'étant pas du tout un spécialiste de la programation pour les fameuse lignes je vais poser question sur le forum peut-être quelqu'un aura quelque chose une idée. C'est vrai que qd tu réfléchis cette tolérance peut fausser en cas de grande valeur. Autre cas ou elle ne marche pas non plus et que est logique qd un arc n'est pas vraiment qd l'alignement tangent du prolongement d'un segment. Mais c'est une macro que j'uiliserai souvent car la plupart du temps les écarts sont minime car plus rapide que pedit et qd ils sont plus grand je procède différemment.

Mais encore merci

Phil

Lien vers le commentaire
Partager sur d’autres sites

Slt

 

J'ai essayé ton lisp à l'instant et ça ne fonctione pas l'as-tu essayé de ton coté

IL doit y avoir quelque chose qui ne fonctionne pas au chrgement j'ai ce message

 "_
appload JPe.LSP correctement chargé(s)
erreur: type d'argument incorrect: numberp: nil", 
puis ça en rentrant le code "inconnue "JPe".  Appuyez sur F1 pour obtenir de l'aide. "

 

A+

 

Phil

Lien vers le commentaire
Partager sur d’autres sites

reslt,

 

j'essaierai cela lundi suis en WE depuis ce midi.

ben j'ai chargé ton lisp jpo et le dernier jpe.

Qd tu dis changer le nom du lisp tu le fais ou sur le nom du fichier ou sur le code.

Au boulot comme chez moi c'est la version 2009, boulot version map 2009.

Je te souhaite un bon we, te dirais lundi ok.

A+

Phil

Lien vers le commentaire
Partager sur d’autres sites

Bsr,

usegomme

posté le 16/10/2009 à 15:43

Je viens de l'essayer avec la 2009 et tout va bien , vérifie si tu as bien copier le code , sinon c'est le nom de la commande qu'il faut changer en priorité ( defun c:JPe

Si quelqu'un d'autre veut bien l'essayer , on verra un peu plus clair.

Car au début de ton lisp tu as (defun c:JPe (/ [surligneur] jpo[/surligneur]:pa e elast ss s ep)

Et comme j'ai un lisp qui se nomme jpo avec le nom de code jpo serait-ce cela qui fait peut-être doublon ? car c'est bizarre qu'il n'y a qu"avec moi que cela ne fonctionne pas

Lien vers le commentaire
Partager sur d’autres sites

Slt,

 

J'ai réessayé ce matin rien à faire, j'ai renommé comme tu me l'as indiqué ci-après ton lisp renommé, regarde et dis-moi si c'est ok.

defun c:JPedit (/ jpo:pa e elast ss s ep)

(setq elast (entlast))

 

(or (setq e (getdist "\n Tolérance entre polylignes <1> :"))

(setq e 1.0)

)

(or (setq ep (getdist "\n Epaisseur polylignes <0.5> :"))

(setq ep 0.5)

)

(setq ss (ssget))

(setq jpo:pa (getvar "peditaccept" ))

(setvar "peditaccept" 1) (vl-cmdf "_.pedit" "_m" ss "" "_j" e "")

 

(setq s nil s (ssadd))

(while (entnext elast)

(ssadd (entnext elast) s)

(setq elast (entnext elast))

)

 

(vl-cmdf "_.pedit" "_m" ss s "" "_w" ep "")

 

(setvar "peditaccept" jpo:pa)

 

(princ)

)

 

Si tout est ok j'ai tjrs le m^me soucis avec le nouveau nom et code " jpedit" c'est à dire ce message d'erreur récurrent

Commande: _appload JPedit.LSP correctement chargé(s)

Commande: ; erreur: type d'argument incorrect: numberp: nil

Commande:

Commande: jpedit

Commande inconnue "JPEDIT". Appuyez sur F1 pour obtenir de l'aide.

 

Je vais l'essayer sur le pc d'un autre collègue de boulot e tje te dirais si cela a fonctionné ou pas

Lien vers le commentaire
Partager sur d’autres sites

Bonjour ,

Merci pour le test, Lili2006.

Quant à Philou2 , et au lisp , je constate que sur ce que tu as recopié , il manque une parenthèse avant le DEFUN

defun c:JPedit (/ jpo:pa e elast ss s ep) 

Donc c'est pour cela que ça ne marche pas !

Il te faut utiliser l'editeur VLISP pour vérifier les parenthèses et au moyen du double clic.

 

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é