phil_vsd Posté(e) le 12 septembre 2006 Posté(e) le 12 septembre 2006 Bonsoir tous, Je vous présente une petit routine qui insère des champs dynamiques renseignant l'aire des polylignes. 1- on choisit la polyligne2- on choisit le lieux d'insertion du texte3- on continue... Public Sub champs() line1: On Error GoTo line2 Dim champs As StringDim prefixe As StringDim suffixe As StringDim milieu As String ' Pour piquer l'objet polyligneDim entObjectID As LongDim 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 Didierprefixe = Chr(37) & Chr(60) & Chr(92) & "AcObjProp Object" & Chr(40) & Chr(37) & Chr(60) & Chr(92) & "_ObjId"milieu = entObjectIDsuffixe = 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 Stringtt = (prefixe & " " & milieu & suffixe & " m²") ' insère le champs renseingnant l'aireDim Pt1 As VariantPt1 = 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.
jalna Posté(e) le 13 septembre 2006 Posté(e) le 13 septembre 2006 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 DammeMon forum : http://plexus.forumactif.org/
jalna Posté(e) le 13 septembre 2006 Posté(e) le 13 septembre 2006 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 exempleDonc il faudrait avoir une boite de dialogue qui demande le nom de la piece par exempleEX: Entree8.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 DammeMon forum : http://plexus.forumactif.org/
phil_vsd Posté(e) le 13 septembre 2006 Auteur Posté(e) le 13 septembre 2006 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.
(gile) Posté(e) le 13 septembre 2006 Posté(e) le 13 septembre 2006 Salut Jalna, Tu trouveras ici un LISP qui devrait répondre à ta demande. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Micacao Posté(e) le 22 septembre 2006 Posté(e) le 22 septembre 2006 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 = 2213005504avant 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+
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant