phil_vsd Posté(e) le 13 septembre 2006 Posté(e) le 13 septembre 2006 Messieurs, J'aimerai additionner des champs dynamiques que j'ai extrait. Je ne sais pas comment m'y prendre. Comment additionner des chaînes "String" qui par définition ne peuvent s'additioner ?Je sèche complètement, voilà un extrait des champs dynamiques. 'Instruction des variables du champs en code ASCII 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²") J'aimerai cliquer sur plusieurs surfaces successivement puis à la fin cela donnerai le total en dynamique. Merci à vous ! PS : Si qq'un a une routine Lisp je prend quand même ! "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.
Micacao Posté(e) le 14 septembre 2006 Posté(e) le 14 septembre 2006 Salut, Je n’ai pas la solution à ton problème en VBA mais presque (enfin je pense). Tu peux t’inspirer du principe d’addition de deux champs dynamiques dans AutoCAD, le principe et le suivant: Si tu insères un champ qui renseigne l’aire d’une polyligne tu obtiens l’expression de champ : %<\AcObjProp.16.2 Object(%<\_ObjId 2130055032>%).Area \f "%lu2%pr3%ct8[0.001]">% Maintenant le plus intéressant pour toi :Tu insère un champ et dans la boite de dialogue:--> choisir dans Catégorie de champ: objects--> choisir dans Noms de champs : Formule--> tu insère un, deux, trois….. champs dynamiques dans la zone de texte formule avec bien sûre un signe + entre chaque champ. Cela donne une expression du genre (exemple avec deux champs):%<\AcExpr (%<\_FldPtr 2130042032>%+%<\_FldPtr 2130042000>%) \f "%lu2">% :( :( En espérant que ce principe soit possible en VBA. Bon courage,
phil_vsd Posté(e) le 15 septembre 2006 Auteur Posté(e) le 15 septembre 2006 Salut Micacao ! Miller Merci de t'intéresser à mon sujet ! Effectivement tu m'as apporté une aide précieuse, je vais étudier le cas pour savoir si on peut piloter cette opération en VBA.Il faudrai que je sache à quoi correspond cette chaîne [surligneur]_FldPtr 2130042032 [/surligneur] et comment l'obtenir, comme avec "getentity" ou "ObjectId" par exemple. Maintenant le plus intéressant pour toi :Tu insère un champ et dans la boite de dialogue:--> choisir dans Catégorie de champ: objects--> choisir dans Noms de champs : Formule--> tu insère un, deux, trois….. champs dynamiques dans la zone de texte formule avec bien sûre un signe + entre chaque champ. Pour l'instant je fais les manip à la main, mon résultat sera de piquer les surface avec "getentity" plusieurs fois puis d'un seul clik toute l'opération de créer un champ addition se fait !... J'ai encore du chemin ! J'ai des contacts en lisp qui me propose aussi des options, faut que je mixe tout ça. Encore merci ! "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.
Micacao Posté(e) le 22 septembre 2006 Posté(e) le 22 septembre 2006 Salut phil_vsd, As-tu fait des tests? Il faudrai que je sache à quoi correspond cette chaîne [surligneur] _FldPtr 2130042032 [/surligneur] Normalement, [surligneur] 2130042032[/surligneur] est l'id de l'objet et pour [surligneur] _FldPtr[/surligneur] c'est le grand mystère.Car en faisant l'opération d'addition de champs dynamiques dans AutoCad l'id d'un objet n'est pas le même que dans dans champ dynamque "aire" seul. Objet 1 => %<\AcObjProp.16.2 Object(%<\_ObjId 2130055032>%).Area \f "%lu2%pr2%ct8[0.0001]">%Objet 2 => %<\AcObjProp.16.2 Object(%<\_ObjId 2130055040>%).Area \f "%lu2%pr2%ct8[0.0001]">% Somme des deux => %<\AcExpr (%<\_FldPtr 2130042096>%+%<\_FldPtr 2130042080>%) \f "%lu2%pr2%ct8[0.0001]">% Tu peux peut-être essayer de faire un essai avec des id d'objets identiques. A+
phil_vsd Posté(e) le 23 septembre 2006 Auteur Posté(e) le 23 septembre 2006 Salut Micacao, Oui j'ai remarqué : Objet 1 => %<\AcObjProp.16.2 Object(%<\_ObjId 2130055032>%).Area \f "%lu2%pr2%ct8[0.0001]">%Objet 2 => %<\AcObjProp.16.2 Object(%<\_ObjId 2130055040>%).Area \f "%lu2%pr2%ct8[0.0001]">% Somme des deux => %<\AcExpr (%<\_FldPtr 2130042096>%+%<\_FldPtr 2130042080>%) \f "%lu2%pr2%ct8[0.0001]">% L'id de Objet 1 est : 2130055032L'id de Objet 1 dans la somme est : 2130042096 L'id de Objet 2 est : 2130055040L'id de Objet 2 dans la somme est : 2130042080 Cette nouvelle ientification qui arrive de on ne sait où vient perturber l'ambiance... J'avais pensé transformer le tout en Ascii, même le _FldPtr mais cette nouvelle Id... BoumBadaboum... Ceci dit j'ai une piste : Pour additionner des champs dynamiques on prend leurs valeurs brutes, sans les m² ou tout suffixe, rien que des chiffres et on transfère cette valeur qui est une "String" dans une nouvelle valeur "Double" que l'on peut additionner à souhait ! J'aimerai additionner des champs dynamiques que j'ai extrait. Je ne sais pas comment m'y prendre. Comment additionner des chaînes "String" qui par définition ne peuvent s'additioner ? Comme ça : Dim S_info as string 'Pas de caractères alphanumériques Dim D_info as double D_info = val(S_info) Je vais repprendre ma routine "Addition de surface" dans le forum VBA routine, puis au lieu de piquer des polylignes et d'extraire leurs area, je vais concatainer le champs dynamiqe en Ascii, et balancer leurs valeurs dans des variable Double et faire la somme. Faut que je trouve du temps pour le faire. On sera limités à 12 pièces mais c'est déjà bien ! Te tiens au courant ! bye ! [Edité le 23/9/2006 par phil_vsd] "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.
phil_vsd Posté(e) le 15 octobre 2006 Auteur Posté(e) le 15 octobre 2006 Game over... Je n'y arrive pas, j'exporte mes attributs dynamiques concoctés par (Gile) dans un tableau et je fais le calcul en bas de colonne. Le résultat est lui-même dynamique... Anyway... "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.
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