Aller au contenu

Messages recommandés

Posté(e)

Suite à cette réponse , j'ai voulu me pencher sur les champ en lisp.

 

Voici à quoi je suis arrivé, la solution est intéressante et peut être étendue par exemple pour mettre les longueurs ou les surfaces d'objets.

Ce que j'aurais voulu aussi réalisé est de mettre en œuvre les échelles d'annotation pour que cela soit exploitable à plusieurs échelles différentes, mais je ne sais pas du tout comment m'y prendre. :(

 

Donc voici le code, certainement imparfait, mais qui gagnerais beaucoup à être amélioré.

Si vous avez des idées...

 

(defun make_field (pt / obj AcDoc Space nw_style)
(setq
	AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
	Space
	(if (= 1 (getvar "CVPORT"))
		(vla-get-PaperSpace AcDoc)
		(vla-get-ModelSpace AcDoc)
	)
)
(vlax-put (vla-add (vla-get-layers AcDoc) "Id-XY") 'color 96)
(vlax-put (vla-add (vla-get-layers AcDoc) "Id-Z") 'color 174)
(vlax-put (vla-add (vla-get-layers AcDoc) "Id-Point") 'color 2)
(setq nw_style (vla-add (vla-get-textstyles AcDoc) "Anno-Romand25"))
(vlax-put nw_style 'fontfile "romand.shx")
(vlax-put nw_style 'height 0.0)
(vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180))
(vlax-put nw_style 'width 1.0)
(vlax-put nw_style 'textgenerationflag 0.0)
(vlax-put (vla-AddPoint Space (vlax-3d-point pt)) 'layer "Id-Point")
(setq obj (entlast))
(mapcar
	'(lambda (lx)
		(apply
			'(lambda (ins_point value_field att_point txt_height dwg_dir name_style name_layer / nw_obj)
				(setq nw_obj
					(vla-addMtext Space
						(vlax-3d-point (trans ins_point 1 0))
						0.0
						(strcat
							"%[b]<[/b]\\AcObjProp.16.2 Object(%[b]<[/b]\\_ObjId "
							(itoa (vla-get-ObjectID (vlax-ename-[b]>[/b]vla-object obj)))
							value_field
						)
					)
				)
				(vlax-put nw_obj 'AttachmentPoint att_point)
				(vlax-put nw_obj 'Height txt_height)
				(vlax-put nw_obj 'DrawingDirection dwg_dir)
				(vlax-put nw_obj 'InsertionPoint ins_point)
				(vlax-put nw_obj 'StyleName name_style)
				(vlax-put nw_obj 'Layer name_layer)
			)
			lx
		)
	)
	(list
     (list
       (mapcar '+ pt '(2.5 0.0 0.0))
       "[b]>[/b]%).Coordinates \\f \"%lu2%pt1%pr3%ps[X=,]\"[b]>[/b]%"
       7
       2.0
       5
       "Anno-Romand25"
       "Id-XY"
     )
     (list
       (mapcar '+ pt '(2.5 -0.5 0.0))
       "[b]>[/b]%).Coordinates \\f \"%lu2%pt2%pr3%ps[Y=,]\"[b]>[/b]%"
       1
       2.0
       5
       "Anno-Romand25"
       "Id-XY"
     )
     (list
       (mapcar '+ pt '(-2.5 0.0 0.0))
       "[b]>[/b]%).Coordinates \\f \"%lu2%pt4%pr3%ps[Z=,]\"[b]>[/b]%"
       6
       2.0
       5
       "Anno-Romand25"
       "Id-Z"
     )
   )
)
)
(defun c:renseign_pt ( / js dxf_cod n ent)
 (princ "\nChoix d'un point modèle pour le filtrage: ")
 (while (null (setq js (ssget "_+.:E:S" '((0 . "POINT"))))))
 (setq dxf_cod (entget (ssname js 0)))
 (setq js (ssget "_X" (foreach n '(-1 330 5 100 10) (setq dxf_cod (vl-remove (assoc n dxf_cod) dxf_cod)))) n -1)
(vl-load-com)
 (repeat (sslength js)
     (make_field (cdr (assoc 10 (entget (setq ent (ssname js (setq n (1+ n))))))))
     (entdel ent)
 )
 (prin1)
)

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

  • 3 semaines après...
Posté(e)

Plus de 300 lectures, et pas une seule remarque !

 

Pourtant le code est loin d'être parfait.

 

Je suis bon prince, je livre sur ma page une révision du code ci-dessus et en prime vous trouverez la même démarche pour des longueurs et des surfaces, toujours avec les champs dynamiques ;)

 

Si vous avez des remarques sur ceux-ci....

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

Posté(e)

Bonsoir à toutes et tous,

 

Désolé bonuscad, mais je n'ai pas le niveau pour te suivre,...

 

Pourrais-tu nous expliquer comment utiliser à bon escient ces outils que tu met gracieusement à notre disposition STP ?

 

Merci d'avance,..

 

PS: Je suis revenu régulièrement sur ce post en espérant une remarque de l'un d'entre-nous,...

 

[Pour être honnête, j n'avais pas vu le C: defun,..., alors qu'après avoir ouvert multitudes de tes lisps, je sais qu'on le trouve souvent faire la fin,... ;) )

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Re,

 

Heu, il suffisait p'têtre de tester pour trouver ces outils géniaux !

 

Merci bonuscad, en plus le rendu est tip-top =>

 

http://images4.hiboox.com/images/2708/c8920161715351369d1274731fe5dbab.jpg

 

Pas mal le coup de la selection d'un seul point pour avoir les infos des autres,....

 

Heu !, et si on pouvait faire une fenêtre de capture pour les objets ??

 

Je prend l'exemple de la ligne sur l'image, si je veux toutes les cotées d'un coup, par exemple,...

 

Que la surface et le périmètre de mon polygone se mettent à jour aprés étirement avec un malheureux "RG", c'est excellent ! Super également la gestion des calques.

 

Merci encore de ce partage,...

 

 

 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Salut Bonuscad,

 

Plus de 300 lectures, et pas une seule remarque !

Tu sais bien que c'est monnaie courante :cool:

Et encore, CADxp n'est vraiment pas le pire, sur le forum AutoCAD français d'AutoDESK je ne compte pas les réponses à des questions restées sans suite

 

J'ai fait une petite recherche sur des sujets (certes sûrement pas tous intéressants) que j'avais lancé et qui sont restés sans réponse (à par parfois les miennes) :

 

Centrer des objets dans la fenêtre courante 296 vues

Convertir un fichier .pat ou .lin 378 vues

Points de vue 3D avec le pavé numérique 519 vues

Ellipse -> polyligne 393 vues

ZoomObject 419 vues

Bouton bascule 863 vues

Piping 3d 440 vues

Bissectrice et médiatrice 287 vues

 

[Edité le 30/6/2008 par (gile)]

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

Posté(e)

[Pour être honnête, j n'avais pas vu le C: defun,..., alors qu'après avoir ouvert multitudes de tes lisps, je sais qu'on le trouve souvent faire la fin,...

 

C'est vrai que je place toujours mes (defun C: à la fin, La raison est que comme ça la dernière fonction chargée apparait dans la ligne de commande, exemple C:MAFONCTION, cela permet de savoir quelle commande taper pour lancer celle-ci.

 

Heu !, et si on pouvait faire une fenêtre de capture pour les objets ??

 

Je prend l'exemple de la ligne sur l'image, si je veux toutes les cotées d'un coup, par exemple,...

 

Ceci j'y ai pensé, mais ne l'ai pas mis encore en oeuvre.

Je pense me servir des milieux de ligne/polyligne pour la position et de récupérer leur orientation afin de placer le champ aligné à celui-ci. Ceci pour les longueurs.

Pour les surfaces, j'ai pensé au boundingbox pour récuperer a peu prés le milieu de l'encombrement de l'objet, et je pense laisser l'orientation à zéro pour ceux-ci.

 

J'en suis bien sur bien incapable, mais l'idée est géniale et ça, j'en suis sûr,...!

Ben par programmation, moi aussi. Mais après coup (je n'ai pas encore fait l'essai), je pense que de changer manuellement le style créé (ici "Romand-Field") en annotatif serait aussi simple, même moins compliqué ;)

 

Tu sais bien que c'est monnaie courante

Ho que oui! C'était pour avoir une réaction, mais comme d'hab c'est les membres les plus assidus qui répondent... :(

 

Je rejoins Bred dans sa 4ème dimension :P (Bred tu n'es plus seul ! )

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

Posté(e)

Bonjour à toutes et tous,

 

En effet bonuscad, les annotatifs, Mais utilisable que depuis la V2008 !!

 

Dis-donc (gile), moi qui pensait suivre tous tes posts,....

 

Remarque tu interviens tellement souvent que l'on a parfois du mal à te suivre et du coup passé à coté de quelque chose,...

Merci d'avoir mis les liens, on va pouvoir se refaire ;)

 

Bonne journée à tous et vive les développeurs.

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Heu !, et si on pouvait faire une fenêtre de capture pour les objets ??

 

Je prend l'exemple de la ligne sur l'image, si je veux toutes les cotées d'un coup, par exemple,...

 

Pas de capture, mais un filtrage effectué avec l'entité modèle.

 

Essayes les 3 routines que j'ai mises à jour sur mon site

 

J'espère que tu ne rencontrera pas de "bugs". :exclam:

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

Posté(e)

Bonsoir à toutes et tous,

 

Les lignes et polylignes (fermées ou non), même principe que les points ?

 

Bien vu bonuscad,...

 

 

http://images4.hiboox.com/images/2708/bd3cabb69031507d29c1f8e3bc806a79.jpg

 

 

Suivant l'orientation des coordonnées de pts (et l'echelle choisie, peut-être ??), les coordonnées x et y se recouvrent. A part ça, j'ai rien vu d'autres,....

 

http://images4.hiboox.com/images/2708/6ee87002521b3b20f3bff1729c5582b2.jpg

 

A quand les longueurs développées de splines ? Non, non, je blague !

 

Je réitère ce que j'ai déjà écrit, bientôt, plus besoin de progiciel type covadis pour les topos,... ;)

 

Beau travail, merci encore .

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Suivant l'orientation des coordonnées de pts (et l'echelle choisie, peut-être ??), les coordonnées x et y se recouvrent. A part ça, j'ai rien vu d'autres,....

 

Merci lili2006 pour tes tests ;)

 

Ceci est corrigé + 1 bug avec les polylignes 2D.

 

La routine PtDef-XYZ_Field.lsp permet de coter en x,y,z TOUT les points de définitions d'objet:

 

"LINE,LWPOLYLINE,POLYLINE,MLINE,POINT,ARC,CIRCLE,SPLINE,ELLIPSE,INSERT"

ce qui correspond en général au code DXF10 parfois 11 des définitions des entités.

 

NB:Le filtrage sur les polylignes se fait AUSSI sur le code dxf70, donc le filtrage se fera sur des polylignes closes OU ouvertes en plus du type lissée ou splinée ou en 3d

Le reste du filtrage se fait sur les propriétés communes :calques, couleur, type de ligne etc...

 

Cela devrait fonctionner quelque soit le SCU (sous réserve, malgré mes tests)

 

A quand les longueurs développées de splines ?

CurveLength_Field.lsp ne fonctionne pas pour les SPLINE, mais par contre fonctionne avec des polyligne splinées.

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

Posté(e)

Bonjour à toutes et tous,

 

bug avec les polylignes 2D.

 

Par curiosité, c'était quoi ce beug ?

 

polyligne splinées.

 

Heu, et comment obtient -on cela ?

 

Cela devrait fonctionner quelque soit le SCU

 

J'ai pas vu de problème non plus,...

 

Et trois routines de plus dans ma lispothèque,...

 

Merci encore bonuscad

 

Et les autres topos, vous en pensez quoi ?

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

citation extraite du message original:

bug avec les polylignes 2D.

 

Par curiosité, c'était quoi ce beug ?

 

J'ai voulu optimiser deux fonctions de (gile) en une seule, mais j'avais fais une "boulette".

 

Je vais lui faire part d'ailleurs de mon optimisation (c'est tout bête mais ça simplifie le code) ;)

 

Heu, et comment obtient -on cela ?

Une des toutes première spline d'autocad :P

Polyligne 2D en segment puis PEDIT option "Spline"....

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

Posté(e)

Bonjour à toutes et tous,

 

PtDef-XYZ_Field.lsp dans un scu le recouvrement persiste en tout cas avec AutoCAD 2009,

 

En reprenant les tests, effectivement (idem sous 2008)

 

Moi, j'ai carrément un nouveau jeu de points ???

 

http://images4.hiboox.com/images/2708/2d656cf416e4e0432f8519b2d82656dc.jpg

 

polyligne splinées.

 

J'avais déjà utiliser cette option sans connaître le nom,...

 

Merci bonuscad

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Merci à vous pour vos tests

 

Je pense avoir corrigé les dysfonctionnements depuis des SCU.

 

J'ai cherché un bon moment pour mettre les coordonnées dans le SCU courant, pour enfin remarquer au final que les champs ne renvoyaient que les coordonnées dans le SCG, ceci même en le faisant manuellement.

 

Donc retourne les coordonnées générales, mais positionnés par rapport au SCU courant.

 

NB: Les 2 autres fonctions ont été également corrigées.

 

Re-téléchargez celles-ci...

 

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

Posté(e)

Bonjour à toutes et tous,

 

L'ensemble semble fonctionner nickel maintenant !

 

http://images4.hiboox.com/images/2808/6e22768bd04d7e1d6d311bdc4e5ce461.jpg

 

Juste une idée : En option, pouvoir choisir une polyligne fermée ou non afin de donner la longueur totale ou bien la longueur des segments, pourrait être pas mal non plus, du coup, cela pourrait même être des cotes entre bornes si l'on ajoute le préfixe et suffixe "-", histoire de rester dans les habitudes,...(Ou bien faire l'objet d'une autre routines,...)

 

 

Ce qui pourrait donner =>

 

http://images4.hiboox.com/images/2808/e21fc2618951f1709804191ab2b75c6b.jpg

 

A suivre donc,...

 

 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Bonjour à tous,

Tout d'abord félicitations à tous pour toutes ces compétences partagées avec tant d'altruisme

Je suis sur le site depuis peu et je ne peux que m'incliner devant tant de savoir ... et ne pourrais que très rarement apporter ma petite pierre à votre édifice !

Petite question à bonuscad: j'utilise entre autre la 2006 et je rencontre le pb suivant avec le lisp CurveArea_Field.lsp, en effet les unités de surface sont indiquées en mm? ou cm? etc ...

Pb de police ? ou bien ...

Voilà j'arrive en soulevant un pb ... désolé !!!

Posté(e)

J'avais bien remarqué oui ... mais moi il me retourne un point d'interrogation en lieu et place du 2. J'ai essayé de regarder dans le lisp (sans rien y connaître biensûr sinon pas drôle ...)

si je voyais où est fait référence l'exposant 2 mais je reste bredouille

 

Posté(e)

C'est tout à fait ça ... bien vu !

J'ai remplacé la police de référence de "Romand-Field" par un banal romans.shx et tout est OK

 

Encore merçi ... et à bientôt sans aucun doute

Posté(e)

Bonjour,

 

Pour thry0

mais moi il me retourne un point d'interrogation en lieu et place du 2

 

Étrange car j'utilise une police standard d'Autocad "Romand.shx"

As-tu bien cette police dispo?

 

Si Romans.shx fonctionne... c'est bien un problème de police.

 

Toujours est-il que dans le/les lisp tu peux changer la police de référence ici:

 

(cond
	((null (tblsearch "STYLE" "Romand-Field"))
		(setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand-Field"))
		(mapcar
			'(lambda (pr val)
				(vlax-put nw_style pr val)
			)
			(list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag)
			(list [surligneur]"romand.shx"[/surligneur]  0.0 (/ (* 15.0 pi) 180) 1.0 0.0)
		)
	)
)

 

Tu peux remplacer ce qui est surligné par une police de ton choix (acceptant le ² bien entendu)

Si tu ne veux pas d'inclinaison dans ton style tu change (/ (* 15.0 pi) 180) par 0.0

Ici 15 représente l'angle d'inclinaison en degré.

 

Pour lili2006

afin de donner la longueur totale ou bien la longueur des segments

 

Les champs dynamiques ne me permettent pas de mettre en œuvre cette option souhaitée.

Si tu veux vraiment obtenir cette possibilité, c'est de décomposer la/les polylignes avant d'utiliser le lisp. Dans ce cas les surfaces ne seront plus possibles :mad: et si les champs de surfaces étés déjà en place, la décomposition de la polyligne fera perdre la liaison avec le champ et du obtiendra des "#####" dans celui-ci.

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

Posté(e)

Bonjour à toutes et tous,

 

Ok, bonsucad !

 

C'était une idée comme ça !

 

c'est de décomposer la/les polylignes avant d'utiliser le lisp

 

 

C'est ce que j'ai fait => J'ai copier la poly sur un autre calque, décomposer, coter. Et je garde la surface puisque l'original est toujours en place,...

 

Seul inconvénient, bien sûr, c'est quand il y a une modif, je change deux entités (la polyligne sur un calque Surface, par exemple, et la polyligne sur un calque "distance", par exemple,...!)

 

Il me semblait que le style, d'après les propriétés que le style utilisé est =>

"Romand-Field",
.

 

Merci encore bonsucad,

 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

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é