Aller au contenu

Messages recommandés

Posté(e)

Re,

 

Bon, je suis chaud là, 3 nouveaux sujets dans la matinée !

Une question qui me turlupine depuis un moment. Je ne pense que ça doit pas être trop dur mais bon :

 

Comment mesurer plusieurs choses (genre trois polyligne) et que autocad m'affiche la somme de ce que j'ai mesuré à la fin ? En fait, pour l'instant, je note et je somme...ou j'utilise la commande multiple ....bof !

 

Merci,

Ribbit.

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

Et une autre au passage pour la forme,

 

Comment forcer autocad à mesurer en 2D...(autrement que par des cercles bien sur) ?

 

Ribbit.

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

he rebonjour,

 

Si tu connais l'Autolisp il te sera faile de recuperer les longueurs des objets selectionner et de les additionner

Si tu ne connais pas met toi s'y

C'est pas facile au debut mais quand on a compris la syntaxe et la construction sa vat tout seul.

 

Ta question est un bon exercice pour debuter

 

N'est pas peur lance toi

 

bon courage

Posté(e)

je sais je sais, mais c'est imbuvable (pour l'instant).....

 

Bientôt, je saurais faire des pavés comme dans l'exemple ;-)

 

Ribbit.

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

Il y a des fonctions de calcul intégérées à Autocad (je n'ai que le LT sous la main donc je ne veux dire aucune bétise).

 

Sous LT, la sous option Addition de la commande AIRE (qui renvoie la longueur de la polyligne aussi, pas des lignes), ne fonctionne maleureusement pas.

 

Aisni, tu peux additionner les aires mais pas les longueurs, dommage, non ?

 

AIRE ou LISTE vont t'aider qd même, tu feras l'addition toi-même.

Attention, PERIMETER ne renvoie que depuis AIRE et non LISTE, je crois.

 

Au fait, une polyligne est toujours 2D

Comment forcer autocad à mesurer en 2D...

alors là, FILTRES DE POINTS (que tout bon autocadien doit maitriser).

 

Distance .z 0,0 pause .z 0,0

(non vérifié)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Bonjour à tous

 

Voici un lisp qui donne la longueur sur une ligne, polyligne, arc ou encore sur une spline

 

Il ne reste plus qu'à le modifier pour ses propres besoins, le principe est là.

Ce mettre au lisp est le pas le plus dur à franchir, mais une fois que c'est parti, plus rien ne nous arrête sauf l'imagination peut-être

 

(defun c:long(/ deb fin sel)
 (if (setq sel (entsel))
   (progn
     (vl-load-com)
     (setq sel (entget (car sel)))
     (setq sel (vlax-ename->vla-object (cdr (assoc -1 sel))))
     (setq deb (vlax-curve-getStartParam sel))
     (setq fin (vlax-curve-getEndParam sel))
     (princ (strcat "\nLa longueur est de : " (rtos (vlax-curve-getDistAtParam sel fin))))
   )
 )
 (princ)
)
(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

Posté(e)

Je voulais pas vous embêter à faire du lisp. c'était surtout si une commande mystérieuse existait ou une option qui m'aurait échappée... en général, je me débrouille.

 

En tout cas, merci, je garde le lisp pour mon apprentissage futur. Avec un peu de persévérance, je vais piger ce script et faire ce que je voulais. Je reste quand même convaincu que le lisp c'est du charabia.... et puis j'aime bien le VB....

 

Mais bon je vais me motiver un de ces soirs à bûcher mon lisp....J'ai déjà essayé mais c'est pire que du yaourt :-)

 

Merci,

Ribbit.

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

alors là, FILTRES DE POINTS (que tout bon autocadien doit maitriser
).

 

ah oui, c'est vrai, ça m'étais sorti de la tête ! Je vais y trouvé oune belle bonne soluzion...

 

Ribbit. :P

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

Salut Ribbit,

Ca ne m'embête pas plus que ça, d'autant que je l'avais dans mes tablettes

Pour le lisp, courage, mais je te comprends, je suis comme toi, j'ai envie de me lancer dans le vba, mais pour l'instant, ce n'est qu'une envie, ce qui me rebute, c'est les orientations objets. J'aime bien tout maîtriser

 

@+

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

Posté(e)

Voilà :

 

Syntaxe du bouton (oui, je sais, encore un bouton, mais c'est du bricolage facile) :

^C^Cdi;.z 0,0 \.z 0,0 \

 

Voilà,

Ribbit.

 

Ps : pour le VB, j'ai envie de te dire c'est facile, mais bon, je suppose qu'on se regarde de chaque côté du fleuve sans oser traverser ;-) Pour ma part, j'ai l'impression de pas savoir ce que je manipule avec le lisp, tellement j'ai l'habitude de traiter avec des objets...

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

Super Ribbit, je suis fier de toi ;)

 

Essaies-voir :

'di ....bla bla, (avec l'apostrophe)

 

Ca donne une commande transparente, en principe.

 

Le ^C^C n'est pas obligatoire, c'est un annuleur de commandes en cour.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

OKI ca marche. Y'a bon macro ! :P

 

Ribbit.

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

Je vous propose 2 alternatives en lisp

la 1ere cumule des polylignes suivant leur type de ligne.

(defun mkfilt (typ / bdd lstflt)
(setq bdd '(8 6 0))
(if (assoc 210 typ)
	(if (not (equal (assoc 210 typ) '(210 0.0 0.0 1.0)))
		(progn
			(initget "Oui Non")
			(if
				(eq
					(getkword
						(strcat
							"\nRécupérer les entités "
							(cdr (assoc 0 typ))
							" non construites dans le SCG [Oui/Non]: "
						)
					)
					"Oui"
				)
				(setq bdd
					(cons -4
						(append (list (cons -4 "*") '(210 0.0 0.0 1.0)) bdd)
					)
				)
				(setq bdd
					(cons -4
						(append (list (cons -4 "=") '(210 0.0 0.0 1.0)) bdd)
					)
				)
			)
		)
	)
)
(setq bddtyp bdd)
(repeat (length bdd)
	(cond
		((assoc (car bdd) typ)
			(setq lstflt (cons (assoc (car bdd) typ) lstflt))
		)
		((= (car bdd) -4)
			(setq lstflt (cons (cadr bdd) (cons (caddr bdd) lstflt)))
			(setq bdd (cddr bdd))
		)
	)
	(setq bdd (cdr bdd))
)
(print lstflt)
(initget "Toutes Sélectionnées")
(cond
	((eq (getkword "\nMode de récupération des polylignes [Toutes/Sélectionnées] :? ") "Sélectionnées")
		(ssget lstflt)
	)
	(T
		(ssget "X" lstflt)
	)
)
)
(defun c:METREPL ( / sav_dim sav_lup typent typ_l js cmpt nbr ent)
(setvar "CMDECHO" 0)
(setq sav_dim (getvar "DIMZIN"))
(setq sav_lup (getvar "LUPREC"))
(setvar "DIMZIN" 0)
(if (not precision)
	(progn
		(initget 4)
		(setq precision
			(getint
				(strcat
					"\nEntrer la précision désiré <"
					(itoa (getvar "LUPREC"))
					">: "
				)
			)
		)
	)
)
(if (not precision) (setq precision (getvar "LUPREC")))
(setvar "LUPREC" precision)
(if (not unite)
	(progn
		(initget "KM M CM MM")
		(setq unite (getkword "\nEntre l'unité utilisé [KM/M/CM/MM] : "))
	)
)
(if (not unite) (setq unite "M"))
(while (null (setq typent (entsel "\nChoix du type d'entité : "))))
(setq typent (entget (car typent)) js (ssadd) typ_l (if (assoc 6 typent) (cdr (assoc 6 typent)) "ByLayer"))
(cond
	((= (cdr (assoc 0 typent)) "LWPOLYLINE")
		(setq js (mkfilt typent))
	)
	((= (cdr (assoc 0 typent)) "POLYLINE")
		(setq js (mkfilt typent))
	)
	(T (prompt "\nLa commande ne traite que les POLYLIGNES simples ou optimisées.") (setq js nil))
)
(cond
	(js
		(setq cmpt 0 nbr 0)
		(print (sslength js))
		(prompt (strcat " Entité(s) " (cdr (assoc 0 typent)) " trouvé(s).\n"))
		(repeat (sslength js)
			(setq ent (ssname js nbr))
			(command "_.area" "_object" ent)
			(setq cmpt (+ (getvar "perimeter") cmpt))
			(setq nbr (1+ nbr))
			(if (< nbr 32767)
				(setq nbr (1+ nbr))
				(setq nbr (+ 1.0 nbr))
			)
		)
		(print cmpt)
		(princ (strcat unite " de Polyligne avec type de ligne " typ_l))
	)
	(t (prompt "\nSélection vide ou non valide..!"))
)
(setq *error* olderr)
(setvar "DIMZIN" sav_dim)
(setvar "LUPREC" sav_lup)
(princ)
)

 

La 2eme permet d'obtenir une distance curviligne d'un morceau de ligne arc polyligne et spline

 

(defun c:lg_curv ( / sv_osm ent typ_ent pt_brk nw_ent abs_cur ordon_y dxf_ent dxf_10 dxf_11 dxf_50 dxf_51)
(setvar "cmdecho" 0)
(setq sv_osm (getvar "osmode") nw_ent nil)
(setq ent (entsel "\nChoix de l'objet: "))
(while ent
	(setq typ_ent (cdr (assoc 0 (entget (car ent)))))
	(cond
		((or (eq typ_ent "LWPOLYLINE") (eq typ_ent "SPLINE") (and (eq typ_ent "POLYLINE") (<= (rem (cdr (assoc 70 (entget (car ent)))) 128) 13)) (eq typ_ent "ARC") (eq typ_ent "LINE"))
			(redraw (car ent) 3)
			(setvar "osmode" 2048)
			(while (setq pt_brk (getpoint "\nChoix du point pour définir l'abscise curviligne "))
				(setvar "osmode" 0)
				(cond
					(pt_brk
						(command "_.undo" "_mark")
						(if (or (eq typ_ent "ARC") (eq typ_ent "LINE"))
							(progn
								(redraw (car ent) 4)
								(command "_.lengthen" ent "_dynamic" ent pt_brk "")
								(setq dxf_ent (entget (car ent))
								      dxf_10 (cdr (assoc 10 dxf_ent))
								      ordon_y (caddr pt_brk)
								      nw_ent ent
								)
								(redraw (car nw_ent) 3)
								(if (eq typ_ent "ARC")
									(progn
										(setq dxf_40 (cdr (assoc 40 dxf_ent))
										      dxf_50 (cdr (assoc 50 dxf_ent))
										      dxf_51 (cdr (assoc 51 dxf_ent))
										)
										(if (< dxf_51 dxf_50) (setq dxf_51 (+ (* 2.0 pi) dxf_51)))
										(setq abs_cur (* pi (* dxf_40 2.0) (/ (rem (- dxf_51 dxf_50) pi) (* pi 2.0))))
									)
									(progn
										(setq dxf_11 (cdr (assoc 11 dxf_ent))
										      abs_cur (distance (list (car dxf_10) (cadr dxf_10)) (list (car dxf_11) (cadr dxf_11)))
										)
									)
								)
								(princ (strcat "\nAbscise curviligne du point = " (rtos abs_cur 2 3) " Z du point = " (rtos ordon_y 2 3)))
								(grread)
							)
							(progn
								(command "_.break" ent "_first" pt_brk pt_brk)
								(redraw (car ent) 4)
								(while (not (setq nw_ent (entsel "\nChoix de la partie de l'objet à mesurer "))))
								(setq typ_ent (cdr (assoc 0 (entget (car nw_ent)))))
								(cond
									((or (eq typ_ent "LWPOLYLINE") (eq typ_ent "SPLINE") (eq typ_ent "POLYLINE"))
										(redraw (car nw_ent) 3)
										(command "_.area" "_entity" nw_ent)
										(setq abs_cur (getvar "perimeter") ordon_y (caddr pt_brk))
										(princ (strcat "\nAbscise curviligne du point = " (rtos abs_cur 2 3) " Z du point = " (rtos ordon_y 2 3)))
										(grread)
									)
									(T
										(redraw (car nw_ent) 3)
										(princ "\n** Sélection invalide! **")
									)
								)
							)
						)
						(command "_.undo" "_back")
					)
				)
				(setvar "osmode" 2048)
				(if nw_ent (redraw (car nw_ent) 4))
				(redraw (car ent) 3)
			)
		)
		(T
			(princ "\nL'objet n'est pas un arc, une ligne, une polyligne ou une spline. ")
		)
	)
	(if ent (redraw (car ent) 4))
	(if nw_ent (redraw (car nw_ent) 4))
	(setq ent (entsel "\nChoix de l'objet: ") nw_ent nil)
)
(setvar "osmode" sv_osm)
(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)

Facile, on m'a soufflé....victoire à CADXP !!!

 

Promis, je lispe un truc bientôt, même un truc bidon (promesse personnelle)

 

Ribbit.

 

PS : bonuscad, comment ca marche en fait ? Pardonne mon inculture, Maitre lisp, mais c'est quoi une abscisse curviligne (lg_curv) ?

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

Cher ribbit, ce ne sont point des carottes pour un lapin ;)

 

Comment ça marche?

Tu fais un copier-coller du listing vers le bloc-note.

Tu sauvegarde sous un nom (généralement le même nom que spécifié à la suite de "defun C:") avec une extension LSP.

Le chargement s'effectue

* soit par appload (menu outil "chargement application...")

* soit par un glisser déposer depuis l'explorateur

* soit la vieille méthode (load c:\......\....\application.lsp")

 

Par abscisse curviligne j'entends le mot courbe. La distance curviligne est donc la distance développée par une courbe, différente de la distance entre 2 points que peut retourner la commande DISTANCE.

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

Posté(e)

Hello encore,

 

Croc croc.....

 

Comment ça marche?

Tu fais un copier-coller du listing vers le bloc-note.

Tu sauvegarde sous un nom (généralement le même nom que spécifié à la suite de "defun C:") avec une extension LSP.

Le chargement s'effectue

* soit par appload (menu outil "chargement application...")

* soit par un glisser déposer depuis l'explorateur

* soit la vieille méthode (load c:\......\....\application.lsp")

 

Ca je sais bien mais comment on l'exploite ? Pourquoi demander un point ? Je dois etre trop fatigué :-( Désolé, j'espère que je ne suis pas trop exigeant....

 

Par abscisse curviligne j'entends le mot courbe. La distance curviligne est donc la distance développée par une courbe, différente de la distance entre 2 points que peut retourner la commande DISTANCE.

 

en gros, une distance périmétrique ? Je suis pas sûr de comprendre trop l'utilité de ce script en fait....

 

Ribbit

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

Ca y est j'ai pigé...c'est la distance entre l'origine de l'arc et la projection sur l'arc d'un point (celui que l'on clique). non ?

Mais ca fait pas avancer mon schmilblick...

C'est intéressant tout de même (et une belle platée de lisp). Je suis sûr que ça peut servir...

Tu as du courage en tout cas !

 

Bonne journée,

Ribbit.

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Posté(e)

Salut ribbit

encore du lisp

 

cumul longueur :

 

(defun C:TL (/ ss tl n ent itm obj l)

(setq ss (ssget)

tl 0

n (1- (sslength ss)))

(while (>= n 0)

(setq ent (entget (setq itm (ssname ss n)))

obj (cdr (assoc 0 ent))

l (cond

((= obj "LINE")

(distance (cdr (assoc 10 ent))(cdr (assoc 11 ent))))

((= obj "ARC")

(* (cdr (assoc 40 ent))

(if (minusp (setq l (- (cdr (assoc 51 ent))

(cdr (assoc 50 ent)))))

(+ pi pi l) l)))

((or (= obj "CIRCLE")(= obj "SPLINE")(= obj "POLYLINE")

(= obj "LWPOLYLINE")(= obj "ELLIPSE"))

(command "_.area" "_o" itm)

(getvar "perimeter"))

(T 0))

tl (+ tl l)

n (1- n)))

(alert (strcat "Total length of selected objects is " (rtos tl)))

(princ)

)

 

 

 

cumul surfaces

 

(defun c:stot ( / gr tot cont)

(setvar "cmdecho" 0)

(prompt "\nChoisir les polylignes ....")

(setq gr (ssget))

(setq tot 0 cont 0)

(repeat (sslength gr)

(command "_area" "_o" (ssname gr cont))

(setq tot (+ tot (getvar "area")))

(setq cont (+ 1 cont))

)

(princ "\nSurface totale: ")

(princ tot)

(princ)

)

 

 

@+

Le Hamac est une science exacte qui ne tolère pas l'amateurisme.

Posté(e)

Hello,

 

You are the best !

 

Je vous remercie de tout ça en tout cas, mais je voudrais pas que l'on crois que je vous demande tout ça pour vous faire développer à la demande. c'est principalement pour connaître mieux autocad et pour ceux qui cherche des trucs à développer pour le plaisir. En tout cas, ça me servira par la suite pour faire moi-même des scripts en lisp.

 

Hier soir, je suis resté jusqu'à point d'heure pour piger le fonctionnement bizzarroïde du lisp...ça vient ça vient...

 

Ribbit.

 

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

  • 4 mois après...
  • 10 mois après...
Posté(e)

Je vous propose 2 alternatives en lisp

la 1ere cumule des polylignes suivant leur type de ligne.

 

 

Euh, c bizzard, ca me met :

 

Commande: mkfilt

; erreur: nombre d'arguments insuffisants

 

Pourquoi?

 

Je suis sous 2005 et 2006(démo)

L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai.
"Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok.
"ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana

Ma bibliothèque de blocs électrique :symbole elec.dwg

Posté(e)

en fait que l 2006 en démo, la 2005 est finie.

Apparemment, i faut corriger la 1ere ligne:

(defun C:MESURE (/ typ bdd lstflt)

 

mais aprés la selection, il me met:

Commande: mesure

 

nil

Mode de récupération des polylignes [Toutes/Sélectionnées] :? s

 

Choix des objets: Spécifiez le coin opposé: 5 trouvé(s)

 

Choix des objets:

[surligneur] Selection set: 9d [/surligneur]

 

:casstet:

 

[Edité le 31/8/2005 par Oli553]

L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai.
"Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok.
"ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana

Ma bibliothèque de blocs électrique :symbole elec.dwg

Posté(e)

bon benh, euh, je me demande si y' pas un petit probleme avec la 2006. Comme si ils avaient remplacé des définitions de commande :casstet:

 

La selection "Toutes" ne marche pas non plus

 

Help me (cf Leloo in le 5e Elements) ( Bon d'acord, je vais me coucher :P :))

 

[Edité le 31/8/2005 par Oli553]

L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai.
"Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok.
"ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana

Ma bibliothèque de blocs électrique :symbole elec.dwg

Posté(e)

Salut Oli553

 

Je vais essayer de regarder cela sous une 2005 (par contre pour une 2006, je pourrais pas car aucune licence dans mon BE)

 

Je l'ai écrite sous une 2002, j'ai peut être utilisé involontairement un nom de variable qui serait réservée sous une 2005?

 

Enfin je regarde ça au plus vite et te tiens au courant

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

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é