Clément.a Posté(e) le 27 juin 2013 Posté(e) le 27 juin 2013 Bonjour à tous, voila je voudrait changer plusieur propriété d'un arc mais j'ai je n'y arrive pas voila mon petit bout de code : (setq vla-obj_arc (vlax-ename->vla-object (handent handle_arc))) (vla-put-endpoint vla-obj_arc end_point) (vla-put-center vla-obj_arc centre_toit) (vla-put-startpoint vla-obj_arc start_point) et ça me retourne comme erreur : Commande: ; erreur: Le serveur ActiveX a renvoyé une erreur: Le type ne correspond pasou Commande: ; erreur: valeur Lisp sans contrainte avec VARIANT de ce type: (0.0 0.0 0.0) je pense que ça vient de end_point centre_toit et start_point mais je ne sais pas quoi ? Merci de votre aide.
Patrick_35 Posté(e) le 27 juin 2013 Posté(e) le 27 juin 2013 Salut Deux exemples pour changer le centre d'un arc de cercle. Selection de l'arc de cercle(setq ent (vlax-ename->vla-object (car (entsel)))) Changer son centre en cliquant à l'écran Méthode 1 --> Avec une liste simple de coordonnées(vlax-put ent 'center (getpoint)) Méthode 2 --> En transformant la liste de coordonnées en vla(vla-put-center ent (vlax-3d-point (getpoint))) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Clément.a Posté(e) le 27 juin 2013 Auteur Posté(e) le 27 juin 2013 ça fonctionne pour le centre mais pas pour le point de départ et de fin de l'arc ?
Clément.a Posté(e) le 27 juin 2013 Auteur Posté(e) le 27 juin 2013 je suis en train de lire cesujet et je commence à voir pourquoi ça ne marche pas. je commence a comprendre que le vlisp est vraiement puissant!!!
Clément.a Posté(e) le 27 juin 2013 Auteur Posté(e) le 27 juin 2013 En cherchant un peu sur les startpoint en endpoint avec ce code : (while (null ent ) (setq ent (car(entsel "Séléctionné l'objet à modifier ?"))) ) (setq vla-obj_arc (vlax-ename->vla-object ent)) (setq dd (vla-get-endpoint vla-obj_arc)) (setq ddd (vlax-variant-value dd)) (setq dddd (vlax-safearray->list ddd))ce qui donne dd est variant dont sa valeur est un safearray, et la valeur de ce safearray sont les coordonnées du point. bon c'est la même chose pour le centre alors pourquoi quand je fait :(vla-put-endpoint vla-obj_arc (vlax-3d-point end_point))ça ne marche pas? Merci
Olivier Eckmann Posté(e) le 27 juin 2013 Posté(e) le 27 juin 2013 Bonjour, sans avoir vérifier, mais je pense que le point de début et de fin sont des variables calculées à partir du Centre / Rayon / angle de départ et angle de fin. Donc on peut les consulter, mais pas les modifier.I faut certainement passer par la modif du StartAngle et EndAngle pour modifier les points de début et de fin Olivier
Clément.a Posté(e) le 27 juin 2013 Auteur Posté(e) le 27 juin 2013 est ce que ça peut venir que le point que je veut metre doit ce trouver sur le cercle que décrit l'arc de cercle et ainsi avec des arrondis et tout ça... il n'accepte pas mon point?
Clément.a Posté(e) le 27 juin 2013 Auteur Posté(e) le 27 juin 2013 on doit pouvoir les modifier parce que vla-put-endpoint apparait en bleu sur VisualLISP alors que vla-put-ArcLength est en noir donc impossible de le changer seulement de le voirnon?
Patrick_35 Posté(e) le 27 juin 2013 Posté(e) le 27 juin 2013 Salut Olivier a raison. Pour changer les points d'un arc, cela se calcul.Tu as le centre (Center), l'angle de départ (StartAngle), l'angle d'arrivée ou de fin (EndAngle) et son rayon (Radius). Si tu tests StartPoint ou EndPoint de la même manière que le centre de l'arc mais sur une ligne, tu verras que cela fonctionne. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 27 juin 2013 Posté(e) le 27 juin 2013 Salut, Ne pas oublier de consulter dans l'aide aux développeurs : ActiveX and VBA Reference > Properties > EndPoint ou StartPoint. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
VDH-Bruno Posté(e) le 27 juin 2013 Posté(e) le 27 juin 2013 Bonsoir, Pour savoir si une propriété est modifiable ou pas, il existe plusieurs moyen plus ou moins direct: Tout d’abord un vlax-dump-object, retourne la liste des propriétés de l’objet, les propriétés suivie de (RO) signifie qu'elles ne sont accessible qu'en lecture seul (vlax-get), sinon elles sont en plus accessible en écriture (vlax-put). Exemple sur un arc :_$ (vlax-dump-object (vlax-ename->vla-object (car(entsel)))) ; IAcadArc: Interface AutoCAD Arc ; Valeurs de propriétés: ; Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140102308> ; ArcLength (RO) = 784.38 ; Area (RO) = 84936.2 ; Center = (1738.22 1330.67 0.0) ; Document (RO) = #<VLA-OBJECT IAcadDocument 0000000002c162c8> ; EndAngle = 4.60922 ; EndPoint (RO) = (1719.89 1153.57 0.0) ; EntityTransparency = "DuCalque" ; Handle (RO) = "236" ; HasExtensionDictionary (RO) = 0 ; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 00000000330cb198> ; Layer = "0" ; Linetype = "ByLayer" ; LinetypeScale = 1.0 ; Lineweight = -1 ; Material = "ByLayer" ; Normal = (0.0 0.0 1.0) ; ObjectID (RO) = 42 ; ObjectID32 (RO) = 42 ; ObjectName (RO) = "AcDbArc" ; OwnerID (RO) = 43 ; OwnerID32 (RO) = 43 ; PlotStyleName = "ByLayer" ; Radius = 178.043 ; StartAngle = 0.203658 ; StartPoint (RO) = (1912.59 1366.68 0.0) ; Thickness = 0.0 ; TotalAngle (RO) = 4.40556 ; TrueColor = #<VLA-OBJECT IAcadAcCmColor 00000000330cb070> ; Visible = -1 T Il est également possible d’utiliser l’argument optionnel check-modify de la fonction vlax-property-available-p pour savoir si une propriété d’objet est modifiable dans le cas d’un arc la fonction retourne nil pour la propriété StartPoint, cette dernière étant consultable en lecture seul._$ (vlax-property-available-p (vlax-ename->vla-object (car(entsel))) 'StartPoint T) nil D’une manière générale les propriétés modifiables sont celles que l’on retrouve dans la définition dxf de l’entité. Et ce sont également celles qui apparaissent en clair dans la fenêtre de propriétés d’AutoCAD. A+ Apprendre => Prendre => Rendre
Clément.a Posté(e) le 28 juin 2013 Auteur Posté(e) le 28 juin 2013 Bonjour, Je ne trouve pas ceci dans l'aide Ne pas oublier de consulter dans l'aide aux développeurs : ActiveX and VBA Reference > Properties > EndPoint ou StartPoint. c'est un endroit particulié ou je suis aveugle... Sinon merci à tous pour vos précisions. Merci
(gile) Posté(e) le 28 juin 2013 Posté(e) le 28 juin 2013 Bonjour, Je ne trouve pas ceci dans l'aide c'est un endroit particulié ou je suis aveugle... Sinon merci à tous pour vos précisions. MerciOupss !J'oubliais qu'Autodesk avait eu la brillante idée de supprimer l'aide ActiveX/VBA dans certaines versions...Tu peux voir ce sujet. Si tu veux l'aide aux développeurs complète (version A2010) tu peux la télécharger ici, extraire tous les fichers dans un dossier et mettre un raccourci sur ton bureau vers acad_dev180.chm. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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