DenisHen Posté(e) le 21 mars 2006 Posté(e) le 21 mars 2006 Bonjour, ou bonsoir, à tous... Voilà, j'essai de sortir l'angle ( ou vertex je pense) d'un segment d'une polyligne en cliquant sur celui-ci... Personne ne peut me répondre ! ! ! Et en VBA ? ! ? ! C'est impossible ? ou je suis trop bête ? ? ? Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
nazemrap Posté(e) le 21 mars 2006 Posté(e) le 21 mars 2006 Bonsoir. Sélection de la polylige en identifiant le point de sélection.Copier la polyligne si besoin.Décomposer la polyligne.Renvoyer la valeur de l'angle du segment correspondant au point de sélection. Le tout en visual. :) nazemrap [Edité le 21/3/2006 par nazemrap]
DenisHen Posté(e) le 23 mars 2006 Auteur Posté(e) le 23 mars 2006 Merci pour la réponse, nazemrap .Mais :1. Pourquoi la copier ?2. Pourquoi la décomposer3. Comment récupérer le segment choisi (je clique une polyligne ..4. Comment effacer les segments de lignes ? ? Je sais ça fait beaucoup de question, mais je nage et je n'ai qu'une vague idée de ce développement, je rame souvent longtemp pour une bétise... L'arbre me cache souvent la forêt... Merci ... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
nazemrap Posté(e) le 23 mars 2006 Posté(e) le 23 mars 2006 Bonsoir. Je ne suis pas très efficace en programation vb.Mon soucis est d'arriver à un résultat.La copie de la polyligne se justifie pour la conserver après avoir décomposer la première, sinon elle n' éxisterait plus.Elle est décomposée pour récupérer le segment souhaité.Le segment est identifié par la sélection effectuée qui insère un point.Attention le mode d'accrochage "proche" ou autre est utilisé pour la sélection, cela garantit que le point est sur le segmentLa méthode delete efface les segments.la valeur de l'angle est renvoyée en degré. Je joins le fichier exemple. 'renvoi l'angle d'un segment de polylignePublic Sub truc() Dim objetselection As AcadEntityDim polyligne, copiepolyligne As AcadLWPolylineDim pointdeselection As VariantDim coordodeselection(0 To 2) As DoubleDim explosepoly As VariantDim point As AcadPointDim intpoints As VariantDim ligne As AcadLine 'NB l'accrochage "proche" doit être utilisé pendant la sélection'Récupère la polyligneThisDrawing.Utility.GetEntity objetselection, pointdeselection, "Sélectionnez la polyligne !"Set polyligne = objetselection 'Récupère les coordonnées du point de sélectioncoordodeselection(0) = pointdeselection(0): coordodeselection(1) = pointdeselection(1) 'Insère un pointSet point = ThisDrawing.ModelSpace.AddPoint(pointdeselection) 'Decompose la polyligneexplosepoly = polyligne.Explode 'Boucle sur les objets résultantsDim I As IntegerFor I = 0 To UBound(explosepoly)If explosepoly(I).ObjectName = "AcDbLine" ThenSet ligne = explosepoly(I)'Teste l'intersection avec le pointintpoints = ligne.IntersectWith(point, acExtendNone) If VarType(intpoints) <> vbEmpty Then If UBound(intpoints) = 2 Then 'renvoi de la valeur de l'angle en degré MsgBox ligne.Angle * (180 / 3.141589) End If End IfEnd IfNextligne.Deletepoint.Delete End Sub
DenisHen Posté(e) le 24 mars 2006 Auteur Posté(e) le 24 mars 2006 Merci mille fois nazemrap, J'essai tout de suite... Mais je me demande si pour des macros de ce type, je ne devrai pas me mettre au Lisp ou VisualLisp ? ?Je pense qu'il serait plus judicieux, puisque c'est uniquement pour rester dans AutoCad... Non ? En tous cas... Merci encore... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
nazemrap Posté(e) le 24 mars 2006 Posté(e) le 24 mars 2006 Bonjour. Je pense que le Lisp est en effet plus performant.Mais je ne suis qu'un bricoleur, et j'aime bien le côté 'bout de ficelle" du VBA.Tu me dis si ça marche !? nazemrap
DenisHen Posté(e) le 24 mars 2006 Auteur Posté(e) le 24 mars 2006 Ok, j'ai regarder mais tout plante toujours la première fois. Mais c'est normal, Je dois vérifier si l'entité cliquée est bien une AcadLWPolyline, sinon, la transformée en AcadLWPolyline... Non ? Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
bonuscad Posté(e) le 24 mars 2006 Posté(e) le 24 mars 2006 Si tu veux te tourner vers une solution en lisp, regardes ce SUJET Et une application construite avec cette dernière ICI On peut en envisagé de toute sorte.La fonction (near_vertex_arr) dans l'exemple d'application est appelé avec sousmission (valable) d'un objet. Elle retourne une liste de points définissant les sommets les plus proche et le facteur d'arrondi de ce segment ex: (near_vertex_arr (car (entsel))) tu choisis un segment de polyligne et les infos te sont retournées que tu pourras exploiter pour ton développement (angle entre les 2 points retourné par exemple) ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
DenisHen Posté(e) le 25 mars 2006 Auteur Posté(e) le 25 mars 2006 Grand merci à toi, bonuscad, dont j'utilise déjà les macros inclues dans le MNS du même nom... je pense que je vais me mettre au LISP Mais -> ??????????? J'ai tenté une réponse, mais soit disant interdite dans le forum LISP.... Peut-être ne suis-je pas assez foncé dans la couleur de ma ceinture ? ! ? Mais j'expliquai que dans le forum "Discussion sur le LISP" Les exemples étaient bien, mais uniquement pour ce qui connaissait le LISP... Mais BonusCad, Tu me sauve encore...Mais je n'ai pas encore remercié nazemrap pour la macro qu'il m'a filé... De petits bug encore, dû à mon incompétence... Mais celà devrai convenir... Je vais étudier de près le LISP... Et seul, car personne n'est capable d'aidé un "Novice/Novice"........ Comme personne n'est capable de dire à quoi servent les parenthèses dans le lisp, ni comment on apelle une fonction ou une macro depuis la ligne de commande AutoCAD ! ! Ou même !! !! !! Quel est le principe de la syntaxe du LISP ! ! Je me dirige donc vers la litérature ? ! ? ! ( donc, pourquoi ce super site) et je reviendrai quand j'en saurais plus pour aider mon prochain... Merci encore à BonusCAD et à nazemrap.... Denis Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
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