Aller au contenu

Aire polyligne en champs dynamique


phil_vsd

Messages recommandés

Bonsoir tous,

 

Je vous présente une petit routine qui insère des champs dynamiques renseignant l'aire des polylignes.

 

1- on choisit la polyligne

2- on choisit le lieux d'insertion du texte

3- on continue...

 

 

Public Sub champs()

 

line1:

 

On Error GoTo line2

 

Dim champs As String

Dim prefixe As String

Dim suffixe As String

Dim milieu As String

 

' Pour piquer l'objet polyligne

Dim entObjectID As Long

Dim entry As AcadObject

 

ThisDrawing.Utility.GetEntity entry, basePnt, "Sélectionnez un objet SVP"

entObjectID = entry.ObjectID

 

'Instruction des variables du champs en code ASCII Merci Gile, merci Didier

prefixe = Chr(37) & Chr(60) & Chr(92) & "AcObjProp Object" & Chr(40) & Chr(37) & Chr(60) & Chr(92) & "_ObjId"

milieu = entObjectID

suffixe = Chr(62) & Chr(37) & Chr(41) & " .Area " & Chr(92) & "f " & Chr(34) & Chr(37) & "lu2" & Chr(37) & "pr2" & Chr(34) & Chr(62) & Chr(37)

Dim tt As String

tt = (prefixe & " " & milieu & suffixe & " m²")

 

' insère le champs renseingnant l'aire

Dim Pt1 As Variant

Pt1 = ThisDrawing.Utility.GetPoint(, "Sélectionnez un Point SVP")

ThisDrawing.ModelSpace.AddText tt, Pt1, 3 'pour changer la hauteru de texte, changez le chiffre 3

 

GoTo line1 'Loope le programme

 

line2: 'Sortie si erreur

 

End Sub

 

 

La première étape est franchie, je m'attaque à la seconde !

 

 

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Merci pour ta routine!!!

 

Comment la mettre en place (depuis l'éditeur??)

 

Merci

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Lien vers le commentaire
Partager sur d’autres sites

Ok c'est bon pour la mise en place!!

 

Tres sympa comme routine

 

Mais encore une chose, mon unitée est le metre donc il faut convertir le résultat

Exemple : je fais un rectangle de 100/100 donc 1Metre par 1 Metre, j'aimerais avoir le résultat sous la forme de 1.00 m² et non pas 10000.00 m².

 

De plus il serait bien de pouvoir placer un texte au dessus des m²

Du style nom de la piece et m² avec une justification milieu par exemple

Donc il faudrait avoir une boite de dialogue qui demande le nom de la piece par exemple

EX:

 

Entree

8.25m²

 

Encore une question :

:P C'est quoi la deuxieme étape?

 

[Edité le 13/9/2006 par jalna]

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Lien vers le commentaire
Partager sur d’autres sites

Salut Jalna,

 

Je vais voir ça demain . En attendant y'a du code lisp qui pourrait te correspondre chez :

 

Accueil du Forum > LISP et Visual LISP > Routines LISP > Bloc avec champ dynamique

 

 

Gile nous a donné une routine qui pourrait t'aller.

 

Sinon tu modifie toi-même le champ manuellement. Double clik dans le texte, Clik droit dans le texte, "Modifier le champs", "Format du champ", "Facteur de conversion".

 

La deuxième étape sera d'additionner des champs pour avoir un total dynamique lui-aussi ! La il me faudra de l'aide. Quelqu'un a vu Didier ? Hé hé !

 

En attendant tu peut aller voir cette routine :

 

Accueil du Forum > VBA et VB > Routines VBA > Routine Additin de Surfaces

 

Mais attention, tu es limité à 12 pièces et le résultat n'est pas dynamique ! Tu bouges une surfaces et tu es obligé de relancer la routine.

 

A bientôt !

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Salut Jalma,

 

Mais encore une chose, mon unité est le mettre donc il faut convertir le résultat

Exemple : je fais un rectangle de 100/100 donc 1Metre par 1 Metre, j'aimerais avoir le résultat sous la forme de 1.00 m² et non pas 10000.00 m².

 

Si tu travail en centimètre et que tu veux avoir le résultat en mètre, il faut modifier le préfixe et le suffixe.

Avant modification:

prefixe = Chr(37) & Chr(60) & Chr(92) & "AcObjProp Object" & Chr(40) & Chr(37) & Chr(60) & Chr(92) & "_ObjId"

suffixe = Chr(62) & Chr(37) & Chr(41) & " .Area " & Chr(92) & "f " & Chr(34) & Chr(37) & "lu2" & Chr(37) & "pr2" & Chr(34) & Chr(62) & Chr(37)

 

Après modification:

prefixe = Chr(37) & Chr(60) & Chr(92) & "AcObjProp [surligneur] . 16.2[/surligneur] Object" & Chr(40) & Chr(37) & Chr(60) & Chr(92) & "_ObjId"

suffixe = Chr(62) & Chr(37) & Chr(41) & " .Area " & Chr(92) & "f " & Chr(34) & Chr(37) & "lu2" & Chr(37) & "pr2" & [surligneur] Chr(37) & "ct8" & Chr(91) & "0.0001" & Chr(93) &[/surligneur] Chr(34) & Chr(62) & Chr(37)

 

Cela donne l'expression complète avec pour l'exemple l'id de l'objet = 2213005504

avant modif: %<\AcObjProp Object(%<\_ObjId 2130055040>%).Area \f "%lu2%pr2">%

après modif: %<\AcObjProp [surligneur] .16.2[/surligneur] Object(%<\_ObjId 2130055040>%).Area \f "%lu2%pr2[surligneur]% ct8[0.0001][/surligneur]">%

Si tu veux modifier ton unité de mesure, tu dois changer la valeur 0.0001 dans l'expression suffixe du champ.

Tu peux également changer dans la partie suffixe le pr2 qui donne le résultat 1.00 (pour une précision au centimètre) en pr3 (pour une précision au millimètre, 1.000 ) ou en pr1 (pour une précision au décimètre) ou en ......... bon j'arrête là.

 

Je n’ai pas fait de test, ça doit marcher.

 

A+

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é