Aller au contenu

Messages recommandés

Posté(e)

Coucou

 

Je travaille sur les fonctions VL en parallèle du DCL, y'a vraiment beaucoup de travail à faire (bien plus que je pensais)

 

Nouveauté :

J'ai mis une page de contact avec un formulaire, en vous en servant on pourra communiquer par mail

Je ne suis pas partisan de faire un forum mais si l'idée fait son chemin pourquoi ne pas creuser.

J'attends vos mails pour critiques, idées, questions, encouragements, insultes...

 

Le 18 février 2018 : 192 pages

 

Amicalement

Posté(e)

Salut Didier

 

Encore merci pour ton site (vrai complément avec l'intro de Master Gile ).

 

Je me permet toutefois de vous contacter car (en ce moment je m'y met au LISP) cela reste très flou... Les exercices m'aident vraiment car je vois la logique une fois que les variables et arguments sont mis en place. Je me permet donc de t'orienter vers ce site (trouver au grés de mes recherches) qui présente différement avec des exemples : http://www.afralisp.net/autolisp/tutorials/the-basics-part-2.php (ici une page qui m'a aider sur le "\n" )

 

C'est vrai que vos cours sont super car vous n'oubliez rien (niveau fonction, variable) mais cela dit il est compliqué de se mettre devant une page blanche et d'écrire un LISP sans avoir vu des exemples. Du coup en ce moment je prend des LISP que j'utilise tout les jours et je les "décompose" (finalement je fait du pas à pas avec les LISP complexes), ça me permet de voir comment appeler les fonctions, valider/tchéquer les variables, etc...

 

Je sais par expérience qu'il est dur de faire passer son savoir, pour un coup je suis dans l'autre position, du coup je propose des choses. je cherche avant tout à être constructif c'est à la fois pour moi mais également pour les autres futurs élèves.

 

En tout cas MERCI pour tout ce partage de savoir !

"98% des soucis informatiques sont assis entre la chaise et le bureau !"

 

"C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
  • 2 mois après...
Posté(e)

Coucou

 

Du temps est passé ... il n'a pas de mérite, il n'a que ça à faire "le temps"

Je continue à faire vivre le site et je ne sais pas si la fréquentation est à la hauteur de mon travail mais je suis obstiné et je persiste

Aujourd'hui je suis en train de créer des pages sur les fonctions VL.

Du même coup je découvre des trucs que je n'utilise pas dans "la vie de tous les jours".

 

J'ai quelque peu modifié la navigation en mettant des "ancres" dans les pages pour éviter de revenir sans cesse aux menus, qu'en pensez-vous ?

À bientôt, je suis toujours à l'écoute des commentaires.

 

Amicalement

 

Posté(e)

Salut,

 

Même si elles sont arrivées en même temps que Visual LISP (l'éditeur VLIDE et les fonctions vla-, vlax- et vlr-) avec les versions R14 et 2000, je considère les fonctions vl- comme une extension des fonctions AutoLISP.

Elle n'ont rien à voir avec l'interface COM/ActiveX (utilisée par le VBA AutoCAD qui arrive dans AutoCAD à la même époque) ou avec les réacteurs (fonctions vlr-).

D'ailleurs les fonctions vl- sont supportées par AutoCAD MAC contrairement aux fonctions (vla-, vlax- et vlr-).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Quelques commentaires vite faits :

 

vl-consp : vérifie si l'argument est une liste non vide (parce que (listp nil) renvoie T)

 

vl-member-if : renvoie la liste à partir de du premier élément vérifiant le prédicat.

 

À propos des fonction vl-, tu peux voir ce sujet qui définit des équivalences en "pur AutoLISP".

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Je me suis mal exprimé, ce que je voulais dire c'est que les descriptions de certaines fonctions sont inexacts :

 

vl-member-if 	Recherche dans une chaîne (string)
vl-member-if-not 	Recherche dans une chaîne (string) bis

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Coucou

 

Ben moi aussi je me suis mal exprimé, sur da-code, j'en conviens

Mais en trois/quatre mots quoi mettre dans le mémento et le titre ?

 

J'ai changé par cette tournure :

Test dans une chaîne (string) (par prédicat)

 

Qu'en penses-tu ?

As-tu une idée ?

 

Amicalement

Posté(e)

Salut Didier

 

Bon courage avec les fonctions vl.

 

L'avantage du vlax-get-or-create-object par rapport au vlax-create-object, c'est que si l'application est déjà lancée, tu te connectes à elle, sinon, tu la lances.

Si tu fais deux (vlax-create-object "Excel.Application"), regardes dans le gestionnaire des tâches et tu trouveras deux Excel.

 

Autre chose. Les fonctions vla... et vlax... sont très proches.

Je vais prendre un exemple très simple. Une ligne par exemple.

(setq obj (vlax-ename->vla-object (car (entsel)))) --> #<VLA-OBJECT IAcadLine 000001d44ba35878

Un (vlax-dump-object obj T) retourne

; IAcadLine: Interface AutoCAD Line

; Valeurs de propriétés:

; Angle (RO) = 5.84269

; Application (RO) = #<VLA-OBJECT IAcadApplication 00007ff7671551a8>

; Delta (RO) = (702.755 -331.266 0.0)

; Document (RO) = #<VLA-OBJECT IAcadDocument 000001d44bbeb708>

; EndPoint = (3676.75 963.589 0.0)

; EntityTransparency = "DuCalque"

; Handle (RO) = "266"

; HasExtensionDictionary (RO) = 0

; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000001d453cd7698>

; Layer = "0"

; Length (RO) = 776.918

; Linetype = "ByLayer"

; LinetypeScale = 1.0

; Lineweight = -1

; Material = "ByLayer"

; Normal = (0.0 0.0 1.0)

; ObjectID (RO) = 42

; ObjectName (RO) = "AcDbLine"

; OwnerID (RO) = 43

; PlotStyleName = "ByLayer"

; StartPoint = (2974.0 1294.85 0.0)

; Thickness = 0.0

; TrueColor = #<VLA-OBJECT IAcadAcCmColor 000001d453cd6e50>

; Visible = -1

; Méthodes prises en charge:

; ArrayPolar (3)

; ArrayRectangular (6)

; Copy ()

; Delete ()

; GetBoundingBox (2)

; GetExtensionDictionary ()

; GetXData (3)

; Highlight (1)

; IntersectWith (2)

; Mirror (2)

; Mirror3D (3)

; Move (2)

; Offset (1)

; Rotate (2)

; Rotate3D (3)

; ScaleEntity (2)

; SetXData (2)

; TransformBy (1)

; Update ()

 

Pour les propriétés :

Un vla-get... récupère des valeurs

Un vla-put... change des valeurs

 

Par exemple, pour connaitre le calque de l'objet

(vla-get-layer obj) --> "0"

Pour changer le calque de l'objet, à condition que celui-ci existe

(vla-put-layer obj "Nouveau")

Il est aussi possible d'utiliser les vlax-get et vlax-put

(vlax-get obj 'layer) --> "0"
(vlax-put obj 'layer "Nouveau")

 

A ce stade, quel différence entre vla-get et vlax-get, ou vla-put et vlax-put ?

Prenons par exemple la propriété StartPoint

(vla-get-StartPoint obj)   --> #<variant 8197 ...>
(vlax-get obj 'StartPoint) --> (2974.0 1294.85 0.0)

 

Et c'est le même principe avec les méthodes

Par exemple pour copier la ligne

(setq new (vla-copy obj)) et (setq new (vlax-invoke obj 'copy))

Et pour déplacer la copie

(vla-move new (vlax-3d-point '(0.0 0.0 0.0)) (vlax-3d-point '(100.0 100.0 0.0)))
(vlax-invoke new 'move '(0.0 0.0 0.0) '(100.0 100.0 0.0))

A chacun son style.

Tu noteras au passage qu'on mémorise dans une variable la copie.

 

Une chose encore.

On a (vlax-get-property...) versus (vlax-get...) et (vlax-invoke...) versus (vlax-invoke-method...)

C'est dû aux nombre d'arguments qui passent bien dans un premier cas, et pas toujours dans l'autre. C'est surtout quand tu travailles avec des applications tierces.

 

ps : la logique et les fonctions vla avec le vba sont très, très proches.

 

@+

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)

Coucou

 

Merci Patrick_35

C'est prévu d'écrire tout ça mais je fais ça petit à petit, j'ai rien de prêt pour le VL

Autant pour l'AutoLISP j'ai mis en page des centaines de pages tapées auparavant

Pour le VL je n'avais pas de matière première toute prête et j'écris "à la volée" ce qui explique certaines bourdes et hésitations (que vous me corrigez).

 

Amicalement

Posté(e)

Encore un grain de sel :

 

Les fonctions vla- (Visual Lisp Automation) ne concernent que l'API COM d'AutoCAD autrement dit toutes les propriétés, méthodes et évènements de l'Object Model d'AutoCAD, ce qui représente un nombre considérable de fonctions.

Personnellement, je ne me lancerais pas dans une description exhaustive de ces fonctions, je me contenterais d'expliquer comment utiliser l'aide ActiveX pour transposer propriétés et méthodes en fonctions Visual LISP (cette aide comporte depuis plusieurs versions des exemples Visual LISP en plus des exemples VBA).

 

Les fonctions vlax- (Visual Lisp ActiveX) concernent généralement l'accès à toute API ActiveX (celle d'AutoCAD comme celles d'applications tierces).

On y trouve aussi les fonctions géométriques vlax-curve-* qui peuvent s'avérer très utiles.

Comme pour les fonctions vla-, l'utilisation des fonctions vlax-get-(property), vlax-put-(property) et vlax-invoke-(method) suppose une connaissance ou un accès à la documentation de l'API concernée (AutoCAD ou autre).

De nombreuses fonctions sont incontournables pour convertir des objets de types COM (variants, safearray, vla-object) en types AutoLISP et inversement. C'est à mon sens la partie la plus "lourdingue" du "Visual LISP" et c'est pourquoi j'avais écrit les routines de AutomationHelpers.lsp qu'on trouve en bas de cette page.

 

Les fonctions vlr- (Visual Lisp Reactors) concernent les réacteurs. Je pense qu'elle ne concernent que des LISPeurs avertis dont le niveau d'expérience comprend certainement aussi la compréhension de la documentation en anglais.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Coucou

 

Je suis complètement d'accord avec tes propos.

Ça me donne le vertige toutes ces fonctions et c'est bien possible que je fasse un exposé dans le sens que tu expliques pour la gestion des propriétés et méthodes

Ensuite c'est dans les exemples que les fonctions apparaîtront et que les gens iront (peut-être) voir l'aide en ligne AutoCAD

Je réfléchis

Quant aux réacteurs, je plussoie d'autant plus que je suis plus que débutant dans le genre.

 

Amicalement

Posté(e)

+1 avec (gile)

 

Le plus simple est d'expliquer la logique, comment on retrouve ses petits.

Et l'aide en ligne sur les API est le moyen le plus simple. Reste à le traduire en lisp, ce qui n'est pas toujours le plus facile. Mais avec de la persévérance et Cadxp :D

 

@+

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)

Bonjour

 

Utiliser les réacteurs est relativement simple. Le plus compliqué est d'éviter les effets de bords.

Il faut bien avoir l'utilité d'utiliser ce type de fonction, car cela prend des ressources et bien souvent, une simple fonction qui traite l'ensemble du dessin suffit amplement.

Tu as ce message qui utilise la synthèse vocale de l'ordinateur qui dit ce que tu fais.

 

@+

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

  • 9 mois après...
Posté(e)

Coucou

 

Nouveau chapitre,

Le grand Bonuscad vient de nous proposer un CAMEMBERT et ça a été allègrement salué

Comme promis je complète les pages de da-code avec ce jeu de MEMORY

Je trouve cette façon de faire didactique car plein de fonctions sont utilisées et on comprend tout de suite à quoi ça sert, du moins je le pense...

 

Merci de vos retours

 

Amicalement

 

Lien vers la Page concernée

Posté(e)

Bonne idée, sympa et simple.

 

Un peut d'indentation ferais pas de mal, si ton html te le permet.

 

Amicalement.

 

Salut,

 

merci pour ce terme que je ne connaissais pas, on en apprend tous les jours : je me coucherai moins bête ce soir (enfin j'espère ...) laugh.gif

COME

 

La vie sans musique est tout simplement une erreur, une fatigue, un exil. »

Friedrich Nietzsche

  • 3 semaines après...
Posté(e)

Coucou

 

Je vous remercie de me dire si ma nouvelle page sur les BULGE est compréhensible ou pas

J'ai concaténé des connaissances glanées un peu partout pour tenter de clarifier cette étrange valeur

Mais plus j’avançais plus je me questionnais sur la pertinence de telle ou telle autre explication.

Merci de me tenir au parfum de votre ressenti, avez-vous appris quelque chose, n'ai-je pas fait d'erreurs, n'ai-je pas fait trop de raccourcis ?

 

la page est ICI

 

Amicalement

Posté(e)

Salut,

 

Juste un truc, pour aborder la notion de bulge sans passer par les angles et la trigonométrie (certains sont allergiques), on peut aussi définir le bulge comme le rapport entre la flèche et demi-corde (on peut y percevoir la notion de courbure), reste juste à préciser le sens (horaire ou anti-horaire) par le signe.

 

Une petite remarque :

"Si, au lieu du quart de la tangente de l'angle les développeurs avaient choisi la moitié de la tangente, il aurait fallu gérer les angles supérieurs à 180 ° par une valeur de signe alors qu'avec le quart de la tangente..."

Il s'agit plutôt de la tangente du quart de l'angle (ou du demi angle).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Hello

En résumé avec leurs histoires de corde, arc, flèche, etc, Didier et Gilles sont des Robins des Bois !?

Bye, lecrabe

Autodesk Expert Elite Team

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é