Aller au contenu

Messages recommandés

Posté(e)

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 pas

ou

 

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.

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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

Posté(e)

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

Posté(e)

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?

Posté(e)

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 voir

non?

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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é.

post-33529-0-10822900-1372368511_thumb.png

 

 

Et ce sont également celles qui apparaissent en clair dans la fenêtre de propriétés d’AutoCAD.

post-33529-0-84951300-1372368583_thumb.png

 

A+

Apprendre => Prendre => Rendre

Posté(e)

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

Posté(e)

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.

 

Merci

Oupss !

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité