[Résolu][Draw] Customshape : obtenir les points de la ligne
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Membre hOOnoraire
- Messages : 120
- Inscription : 23 déc. 2015 18:49
- Localisation : Annecy
[Résolu][Draw] Customshape : obtenir les points de la ligne
Bonjour à tous,
Lorsqu'on insère une forme depuis la barre d'outils "Dessin" de Draw on obtient un objet dont la propriété Shapetype est "com.sun.star.drawing.CustomShape".
Sauf erreur de ma part, aucune propriété ou méthode de cet objet ne donne accès à un objet type "Polygon" qui contient les coordonnées des points de la ligne extérieure de la forme.
En sélectionnant la forme avec la souris, le menu contextuel contient une commande qui permet de convertir la forme en Polygone. Le Shapetype de cet objet est "com.sun.star.drawing.PolyPolygonShape" et nous avons accès à une structure "Polygon" qui contient les coordonnées des points.
Je me dis donc que je pourrais récupérer ces coordonnées si je savais faire la conversion par macro.
D'où ma question : est-ce possible ? si non avez vous une idée pour que je puisse récupérer les coordonnées des points de la ligne extérieure de la forme Customshape ?
Merci d'avance.
Lorsqu'on insère une forme depuis la barre d'outils "Dessin" de Draw on obtient un objet dont la propriété Shapetype est "com.sun.star.drawing.CustomShape".
Sauf erreur de ma part, aucune propriété ou méthode de cet objet ne donne accès à un objet type "Polygon" qui contient les coordonnées des points de la ligne extérieure de la forme.
En sélectionnant la forme avec la souris, le menu contextuel contient une commande qui permet de convertir la forme en Polygone. Le Shapetype de cet objet est "com.sun.star.drawing.PolyPolygonShape" et nous avons accès à une structure "Polygon" qui contient les coordonnées des points.
Je me dis donc que je pourrais récupérer ces coordonnées si je savais faire la conversion par macro.
D'où ma question : est-ce possible ? si non avez vous une idée pour que je puisse récupérer les coordonnées des points de la ligne extérieure de la forme Customshape ?
Merci d'avance.
Dernière modification par ddorange le 29 avr. 2021 06:25, modifié 1 fois.
LibreOffice 7.5 et OpenOffice 4.1.14 sous Ubuntu 22.10, Windows 7, Windows 10, MacOs Monterey
-
- ManitOOu
- Messages : 3031
- Inscription : 02 juil. 2014 17:25
Re: [Draw] Obtenir les points de la ligne d'un Customshape
Bonsoir,
En utilisant le dispatcher et la commande : .uno:ChangePolygon
Il faut que la forme soit sélectionnée avant d’exécuter le code
@+
En utilisant le dispatcher et la commande : .uno:ChangePolygon
Code : Tout sélectionner
Sub Main
actionName = ".uno:ChangePolygon"
oDoc = Thiscomponent
oCC = oDoc.CurrentController
oUtilUrl = CreateUnoStruct("com.sun.star.util.URL")
oUtilUrl.Complete = actionName
servUrlTrans = CreateUnoService("com.sun.star.util.URLTransformer")
servUrlTrans.parseStrict(oUtilUrl)
action = oCC.queryDispatch(oUtilUrl, "_self", 0)
action.dispatch(oUtilUrl, Array())
obj = oDoc.CurrentSelection.GetByIndex(0)
xray obj
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- Membre hOOnoraire
- Messages : 120
- Inscription : 23 déc. 2015 18:49
- Localisation : Annecy
Re: [Draw] Obtenir les points de la ligne d'un Customshape
Bonjour,
Merci zeguedon, cela fonctionne parfaitement.
Avec l'accord des modérateurs, j'attends 1 ou 2 jours, pour le cas où quelqu'un proposerait une solution sans utiliser le dispatcher, avant de marquer le fil résolu.
Bien cordialement.
Merci zeguedon, cela fonctionne parfaitement.
Avec l'accord des modérateurs, j'attends 1 ou 2 jours, pour le cas où quelqu'un proposerait une solution sans utiliser le dispatcher, avant de marquer le fil résolu.
Bien cordialement.
LibreOffice 7.5 et OpenOffice 4.1.14 sous Ubuntu 22.10, Windows 7, Windows 10, MacOs Monterey
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Draw] Obtenir les points de la ligne d'un Customshape
Salut,
Où est le document sur lequel on doit s'appuyer ?
Où est le document sur lequel on doit s'appuyer ?
La création de cette forme est décrite dans le Wiki : https://wiki.openoffice.org/wiki/FR/Doc ... f_Drawingsddorange a écrit :cet objet est "com.sun.star.drawing.PolyPolygonShape" et nous avons accès à une structure "Polygon" qui contient les coordonnées des points.
-
- Membre hOOnoraire
- Messages : 120
- Inscription : 23 déc. 2015 18:49
- Localisation : Annecy
Re: [Draw] Obtenir les points de la ligne d'un Customshape
Bonjour,
Pas la peine que je fournisse un document, c'est facile d'insérer un dessin avec la barre d'outils dessin.
Je sais créer une forme PolyPolygonShape. Ce n'est pas ma question.
Je souhaite pouvoir transformer un CustomShape qui n'a pas la propriété Polygon en un Polypolygonshape qui lui la possède.
La solution de zeguedon convient tout à fait à ceci près qu'elle utilise le dispatcher, nécessite de sélectionner l'objet à transformer ce qui n'est pas tout à fait transparent pour l'utilisateur qui voit de façon furtive l'objet être sélectionné.
Raison pour laquelle, je n'ai pas encore mis le fil en résolu, pour le cas où quelqu'un saurait faire sans dispatcher.
Pas la peine que je fournisse un document, c'est facile d'insérer un dessin avec la barre d'outils dessin.
Je sais créer une forme PolyPolygonShape. Ce n'est pas ma question.
Je souhaite pouvoir transformer un CustomShape qui n'a pas la propriété Polygon en un Polypolygonshape qui lui la possède.
La solution de zeguedon convient tout à fait à ceci près qu'elle utilise le dispatcher, nécessite de sélectionner l'objet à transformer ce qui n'est pas tout à fait transparent pour l'utilisateur qui voit de façon furtive l'objet être sélectionné.
Raison pour laquelle, je n'ai pas encore mis le fil en résolu, pour le cas où quelqu'un saurait faire sans dispatcher.
LibreOffice 7.5 et OpenOffice 4.1.14 sous Ubuntu 22.10, Windows 7, Windows 10, MacOs Monterey
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Draw] Obtenir les points de la ligne d'un Customshape
Si tu le dis...ddorange a écrit :Pas la peine que je fournisse un document,
Bon courage.
-
- Membre hOOnoraire
- Messages : 120
- Inscription : 23 déc. 2015 18:49
- Localisation : Annecy
Re: [Draw] Obtenir les points de la ligne d'un Customshape
Voici un
Son exécution transforme le CustomShape en PolypolygonShape.
La question est : peut-on obtenir le même résultat sans utiliser le dispatcher ?
document avec un CustomShape et la macro de zeguedon.Son exécution transforme le CustomShape en PolypolygonShape.
La question est : peut-on obtenir le même résultat sans utiliser le dispatcher ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.5 et OpenOffice 4.1.14 sous Ubuntu 22.10, Windows 7, Windows 10, MacOs Monterey
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Draw] Obtenir les points de la ligne d'un Customshape
Pas d'API pour accéder à ce service.
Avec la méthode (un)lockControllers, tu peux masquer cela :ddorange a écrit :ce qui n'est pas tout à fait transparent pour l'utilisateur qui voit de façon furtive l'objet être sélectionné
Code : Tout sélectionner
Sub ConvertEnPolygone
actionName = ".uno:ChangePolygon"
oDoc = Thiscomponent
oDoc.LockControllers
oPage = oDoc.DrawPages(0)
oForme = oPage.getByIndex(0)
oCC = oDoc.CurrentController
oCC.select(oForme)
oUtilUrl = CreateUnoStruct("com.sun.star.util.URL")
oUtilUrl.Complete = actionName
servUrlTrans = CreateUnoService("com.sun.star.util.URLTransformer")
servUrlTrans.parseStrict(oUtilUrl)
action = oCC.queryDispatch(oUtilUrl, "_self", 0)
action.dispatch(oUtilUrl, Array())
oCC.select(oCC)
oDoc.UnlockControllers
End sub
-
- Membre hOOnoraire
- Messages : 120
- Inscription : 23 déc. 2015 18:49
- Localisation : Annecy
Re: [Draw] Obtenir les points de la ligne d'un Customshape
Bonjour,
Merci Dude pour ce complément intéressant.
J'attends encore 2 jours avant de marquer le fil résolu pour le cas où quelqu'un proposerait une solution sans dispatcher.
Cordialement.
Merci Dude pour ce complément intéressant.
J'attends encore 2 jours avant de marquer le fil résolu pour le cas où quelqu'un proposerait une solution sans dispatcher.
Cordialement.
LibreOffice 7.5 et OpenOffice 4.1.14 sous Ubuntu 22.10, Windows 7, Windows 10, MacOs Monterey