Communauté
AutoCAD – tous produits - Français
Bienvenue sur les forums AutoCAD d’Autodesk. Partagez vos connaissances, posez des questions, et explorez les sujets AutoCAD populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

AutoCAD : inserer la valeur de la surface automatiquement

47 RÉPONSES 47
RÉSOLU
Répondre
Message 1 sur 48
Anonymous
44426 Visites, 47 Réponses

AutoCAD : inserer la valeur de la surface automatiquement

bonjour;

comment inserer la valeur du  resultat du calcul de l'air d'un objet automatiquement, car quand on utilse les outils de mesure de l'air le resultat s'affiche mais on ne peut pas l'inserer a moins de faire un copier coller lde a valeur.

donc ce que je cherche c'est transcrire directement la valeur de l'air de l'objet sur le plan. et si possible pouvoir specifier l'unité par exmple en m².


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original: inserer la valeur de la surface automatiquement

47 RÉPONSES 47
Message 2 sur 48
lrou
en réponse à: Anonymous

  1. créer un textmult.
  2. choisir dans le menu Options (la flèche vers le bas dans l'éditeur de texte) "insérer un champ"
  3. choisir la catégorie de chamsp "Objets"
  4. sous "Type d'objet", cliquer sur le bouton de sélection
  5. sélectionner l'objet dont on veut afficher la propriété
  6. choisir la propriété "Aire" et le format (nbre de décimales)

Après, on peut ajouter m² dans le textmult.

C'est un peu long s'il y a beaucoup d'objet à étiqueter de la sorte. Peut-être faut-il alors s'atteler à créer un lisp ?

----------------------------------------------------
Autocad R14 à 2012 - Civil 3D 2010 à 2012
Message 3 sur 48
Antonio_Barroca
en réponse à: Anonymous

La commande CHAMP (_FIELD pour la commande en Anglais) devrait faire l'affaire.

Taper la commande CHAMP, sélectionner Object dans la catégorie de Champ, sélectionner l'objet, sélectionner Aire dans la liste des Propriétés, sélectionner le point pour positionner le champ.

---------------------------------------------------------------------------------------
If my post answers your question, please mark it as an Accepted Solution, so that others can find answers quickly!
For more tips & tricks: http://upandready.typepad.com



Antonio Barroca
Product Support Specialist
Autodesk, Inc.
Message 4 sur 48
lrou
en réponse à: Antonio_Barroca

En effet, on gagne quelques étapes. Je ne connaissais pas cette commande. On en apprend tous les jours Smiley clignant de l'œil

----------------------------------------------------
Autocad R14 à 2012 - Civil 3D 2010 à 2012
Message 5 sur 48

Juste au cas où, pour simple information, dans la boite de dialogue CHAMP, le bouton Format supplémentaire permet d'insérer un Suffixe ou un Préfixe a la valeur du champ. Dans ce cas, insérer comme Suffixe "m²" et le résultat sera celui recherché.

---------------------------------------------------------------------------------------
If my post answers your question, please mark it as an Accepted Solution, so that others can find answers quickly!
For more tips & tricks: http://upandready.typepad.com



Antonio Barroca
Product Support Specialist
Autodesk, Inc.
Message 6 sur 48
Anonymous
en réponse à: Antonio_Barroca

merci pour vos réponses;

ce que je cherche c'est inserer la valeur de l'air des pieces d'un plan ,, par exmple une chambre qui va etre dessiner entre des lignes et qui n'est pas un objet en soi méme,, comme ci on coter l'air d'une surface qui n'est pas un objet.

encore une fois merci.

Message 7 sur 48
CADaSchtroumpf
en réponse à: Anonymous

Bonjour,

 

Ceci ? Ecris en 2008 ça pourrait convenir...

 

(vl-load-com)
(defun c:surf_plancher ( / AcDoc Space nw_style e_last pt_in htx rtx obj ename nw_obj)
	(setq
		AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
		Space
		(if (= 1 (getvar "CVPORT"))
			(vla-get-PaperSpace AcDoc)
			(vla-get-ModelSpace AcDoc)
		)
	)
	(cond
		((null (tblsearch "LAYER" "__METRE_Plancher"))
			(vlax-put (vla-add (vla-get-layers AcDoc) "__METRE_Plancher") 'color 3)
		)
	)
	(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 "romand.shx" 0.0 (/ (* 15.0 pi) 180) 1.0 0.0)
			)
		)
	)
	(setq e_last (entlast))
	(while (setq pt_in (getpoint "\nSpécifiez un point intérieur <Entrée pour finir>: "))
		(bpoly pt_in nil '(0 0 1))
		(cond
			((not (eq e_last (entlast)))
				(if (not htx)
					(progn
						(initget 6)
						(setq htx (getdist pt_in (strcat "\nSpécifiez la hauteur du champ <" (rtos (getvar "TEXTSIZE")) ">: ")))
						(if htx (setvar "TEXTSIZE" htx))
						(setq htx (getvar "TEXTSIZE"))
					)
				)
				(if (not rtx)
					(if (not (setq rtx (getorient pt_in "\nSpécifiez l'orientation du champ <0.0>: "))) (setq rtx 0.0))
				)
				(setq
					obj (entlast)
					ename (vlax-ename->vla-object obj)
				)
				(vlax-put ename 'Layer "__METRE_Plancher")
				(setq
					nw_obj
					(vla-addMtext Space
						(vlax-3d-point (trans pt_in 1 0))
						0.0
						(strcat
							"%<\\AcObjProp.16.2 Object(%<\\_ObjId "
							(itoa (vla-get-ObjectID ename))
							">%).Area \\f \"%lu2%pr2%ps[S=,"
							"m²]\">%"
						)
					)
				)
				(mapcar
					'(lambda (pr val)
						(vlax-put nw_obj pr val)
					)
					(list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation)
					(list 5 (getvar "TEXTSIZE") 5 (trans pt_in 1 0) "Romand-Field" "__METRE_Plancher" rtx)
				)
				(setq e_last (entlast))
			)
			(T
				(princ "\nAucun contour trouvé.")
			)
		)
  )
	(prin1)
)

 

Message 8 sur 48
otobox
en réponse à: lrou

Avec les champs, est-il aussi possible de faire une opération ? Par exemple, si on veut multiplier par 2 l'aire donnée ?

Est-il possible également de retrouver les xdata associées à l'objet ?

 

JM

Message 9 sur 48
Antonio_Barroca
en réponse à: otobox

Oui,

Dans la section Format supplémentaire, dans Facteur de conversion, entrer le facteur de multiplication, le résultat affiché sera la valeur extraite de l’objet dans ce cas l'aire, multiplié par ce facteur.

Par contre les xdata associées à l'objet ne sont pas exposés avec les champs.

---------------------------------------------------------------------------------------
If my post answers your question, please mark it as an Accepted Solution, so that others can find answers quickly!
For more tips & tricks: http://upandready.typepad.com



Antonio Barroca
Product Support Specialist
Autodesk, Inc.
Message 10 sur 48
otobox
en réponse à: Antonio_Barroca

OK, merci, je vais regarder ça.

 

JM

Message 11 sur 48
Anonymous
en réponse à: CADaSchtroumpf

bonjour,

merci CADaStroumph pour ta reponse mais il faut dire que je n'ai rien compris Smiley tirant la langue je n'ai ton experience donc si c possible de decoder ton msg, s'agit il d'une routine lisp??? si c'est le pourrais tu m'expliquer comment l'integrer et l'utilser sur autocad? merci d'avance

Message 12 sur 48
Anonymous
en réponse à: CADaSchtroumpf

bonjour,

merci cadastroumph pour ta reponse mais faut dire que je n'ai rien compris, s'agit il d'une routine lisp? et si c'est le cas pourrais tu m'indiquer comment l'integrer dans mon autocad et l'utiliser, merci d'avance.

Message 13 sur 48
CADaSchtroumpf
en réponse à: Anonymous

Bonjour,

 

Tu copie-colle le code dans le bloc-note.

Tu fais fichier "enregistrer sous" en fixant l'extention à ".lsp" , tu choisis un dossier.
Puis depuis ton navigateur de dossier, tu fais glisser se fichier enregistré dans la fenêtre GRAPHIQUE d'Autocad, la nouvelle commande SURF_PLANCHER sera dispo.

 

Cette manip simple te permmettra d'essayer la routine (on peut aussi coller directement le code en ligne de COMMANDE d'Autocad, sans l'enregistrer dans un fichier).

Après si tu veux pouvoir en disposer à tout moment, il y a d'autres procédures de chargement...

Message 14 sur 48
Anonymous
en réponse à: CADaSchtroumpf

bonjour

encore une fois merci cadastroumph pour tes explications, ça a marcher


CADaStroumph a écrit :

Bonjour,

 

Tu copie-colle le code dans le bloc-note.

Tu fais fichier "enregistrer sous" en fixant l'extention à ".lsp" , tu choisis un dossier.
Puis depuis ton navigateur de dossier, tu fais glisser se fichier enregistré dans la fenêtre GRAPHIQUE d'Autocad, la nouvelle commande SURF_PLANCHER sera dispo.

 

Cette manip simple te permmettra d'essayer la routine (on peut aussi coller directement le code en ligne de COMMANDE d'Autocad, sans l'enregistrer dans un fichier).

Après si tu veux pouvoir en disposer à tout moment, il y a d'autres procédures de chargement...



CADaStroumph a écrit :

Bonjour,

 

Tu copie-colle le code dans le bloc-note.

Tu fais fichier "enregistrer sous" en fixant l'extention à ".lsp" , tu choisis un dossier.
Puis depuis ton navigateur de dossier, tu fais glisser se fichier enregistré dans la fenêtre GRAPHIQUE d'Autocad, la nouvelle commande SURF_PLANCHER sera dispo.

 

Cette manip simple te permmettra d'essayer la routine (on peut aussi coller directement le code en ligne de COMMANDE d'Autocad, sans l'enregistrer dans un fichier).

Après si tu veux pouvoir en disposer à tout moment, il y a d'autres procédures de chargement...




Message 15 sur 48
Anonymous
en réponse à: CADaSchtroumpf

Bonjour,

 

Je rebondis tardivement sur ce sujet super intéressant.

J'ai tenté de bidouiller le code pour l'adapter à mes besoins, mais mes connaissances en LISP étant limitées, ça ne marche pas.

 

Buts recherchés :

- créer les champs dans le calque courant, et pas dans un nouveau calque (qui n'est pas dans ma charte)

- créer les champs dans le style de texte courant (raisons = dito)

- exprimer les valeurs en m² pour un dessin en centimètres

 

Quelqu'un pourrait-il m'aider à faire ça ?

 

Merci !!!

Message 16 sur 48
CADaSchtroumpf
en réponse à: Anonymous

Bonjour,

 

Est-ce les modifications souhaitées?

 

(vl-load-com)
(defun c:surf_plancher ( / AcDoc Space e_last pt_in htx rtx obj ename nw_obj)
  (setq
    AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
    Space
    (if (= 1 (getvar "CVPORT"))
      (vla-get-PaperSpace AcDoc)
      (vla-get-ModelSpace AcDoc)
    )
  )
  (setq e_last (entlast))
  (while (setq pt_in (getpoint "\nSpécifiez un point intérieur <Entrée pour finir>: "))
    (bpoly pt_in nil '(0 0 1))
    (cond
      ((not (eq e_last (entlast)))
        (if (not htx)
          (progn
            (initget 6)
            (setq htx (getdist pt_in (strcat "\nSpécifiez la hauteur du champ <" (rtos (getvar "TEXTSIZE")) ">: ")))
            (if htx (setvar "TEXTSIZE" htx))
            (setq htx (getvar "TEXTSIZE"))
          )
        )
        (if (not rtx)
          (if (not (setq rtx (getorient pt_in "\nSpécifiez l'orientation du champ <0.0>: "))) (setq rtx 0.0))
        )
        (setq
          obj (entlast)
          ename (vlax-ename->vla-object obj)
        )
        (vlax-put ename 'Layer (getvar "CLAYER"))
        (setq
          nw_obj
          (vla-addMtext Space
            (vlax-3d-point (trans pt_in 1 0))
            0.0
            (strcat
              "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
              (itoa (vla-get-ObjectID ename))
              ">%).Area \\f \"%lu2%pr2%ps[S=,m²]%ct8[0.001]\">%"
            )
          )
        )
        (mapcar
          '(lambda (pr val)
            (vlax-put nw_obj pr val)
          )
          (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation)
          (list 5 (getvar "TEXTSIZE") 5 (trans pt_in 1 0) (getvar "TEXTSTYLE") (getvar "CLAYER") rtx)
        )
        (setq e_last (entlast))
      )
      (T
        (princ "\nAucun contour trouvé.")
      )
    )
  )
  (prin1)
)

 

Message 17 sur 48
Anonymous
en réponse à: CADaSchtroumpf

Bonjour,

 

Merci beaucoup pour cette réponse.

 

La modif est presque parfaite : le résultat est trop grand d'un facteur 10 (je sais corriger).

Personnellement, je préfère supprimer le préfixe "S=" avant la valeur de la surface et laisser un blanc entre la valeur et le suffixe "m²" (je sais modifier).

Pour résumer j'ai remplacé la ligne 

">%).Area \\f \"%lu2%pr2%ps[S=,m²]%ct8[0.001]\">%"

par

">%).Area \\f \"%lu2%pr2%ps[, m²]%ct8[0.0001]\">%"

 

En revanche, j'ai encore besoin d'aide parce que je ne sais pas modifier la précision : comment faire pour n'avoir qu'une décimale ?

Et ce qui serait top, ce serait de sauter l'étape "direction du texte", en supposant que l'utilisateur s'est mis dans le bon SCU.

 

Merci !!!!

 

Message 18 sur 48
braudpat
en réponse à: Anonymous

 

Hello

 

Welcome to the Autodesk/AutoCAD Forums !

 

%pr2 ---> 2 decimales
%pr1 ---> 1 decimale

%pr0 ---> 0 decimale
Patrice ( Supporting Troops ) - Autodesk Expert Elite
If you are happy with my answer please mark "Accept as Solution" and if very happy please give me a Kudos (Felicitations) - Thanks

Patrice BRAUD

EESignature


Message 19 sur 48
Anonymous
en réponse à: braudpat

Parfait, merci !

 

 

Si quelqu'un sait comment supprimer l'étape "direction du texte" ce sera parfait !

Message 20 sur 48
braudpat
en réponse à: Anonymous

 

Hello

 

Tu commentes CETTE LIGNE :

;;        (if (not (setq rtx (getorient pt_in "\nSpécifiez l'orientation du champ <0.0>: "))) (setq rtx 0.0)) 

 

Et tu ajoutes CECI (juste derriere - ligne suivante) :
          (setq rtx 0.0)

 

 

Patrice ( Supporting Troops ) - Autodesk Expert Elite
If you are happy with my answer please mark "Accept as Solution" and if very happy please give me a Kudos (Felicitations) - Thanks

Patrice BRAUD

EESignature


Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report