Aller au contenu

Angle entre point d\'une Plign ?


Messages recommandés

Posté(e)

Bonsoir à tous...

 

Avant de faire ce nouveau sujet, j'ai cherché avant dan les forums mais je n'ai pas eu de réponse...

Mes mots clefs étaient :

LWpolyligne

LWpolylign

Aligné

long

segment

polyligne

.......

 

Rien... Alors, je me suis demandé si je savais encore cliquer ! !

 

Alors j'ai fouillé l'aide AutoCAD sur le Lisp.... Et j'ai tapé Polyligne...

 

J'ai quasiment tout lu.... Tout ce qui était lisible pour moi...

Je suis même tombé sur "Examen détaillé du comportement des réacteurs " Que j'ai trouvé passionant ! ! ! (Surtout que mon sujet devrait s'en servir...) Bon, je m'explique

 

Je cherche à aligner UN texte le long d'un segment de polyligne, exemple, le long d'une Plign (ou LWplign, j'aimerai écrire "Mur porteur". juste en cligant sur un segment...

 

(si je comprend les "réacteurs" le texte restera aligné, même si un des sommet du segment dont il "dépend" est déplacé...

 

Ma question est donc la suivante :

Pour avoir le "vecteur" (j'ai pas cherché avec cette clef) d'un segment de polyligne, doit-on utiliser la liste de ses sommets ( avec les XYZ du format DXF (10 x y z)) ? Ou doit-on passer pas d'autre astuces...

 

Je vais fouiller les forum pour plus de renseignement sur les réacteurs... Je croix avoir déjà lu un truc là-dessus de Tramber ou Patric_35...

 

Merci pour vos réponses...

 

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)

Posté(e)

Pour avoir les coordonnées des sommets d'une Lwpolyline, je crois que maintenant tu sais où trouver. Attention toutefois, les coordonnées retournées sont définies dans le SCO, pour les avoir dans le SCG faire :

 

;; Liste des sommets d'une lwpolyligne (dans le SCG)
 (defun lwpoly_pts (ent)
   (mapcar
     '(lambda (pt)
 (trans (list (car pt) (cadr pt) (val_dxf 38 ent)) ent 0)
      )
     (mapcar
'cdr
(vl-remove-if-not
  '(lambda (x) (= (car x) 10))
  (entget ent)
)
     )
   )
 ) 

 

Le vecteur de pt1 à pt2 :

 

(mapcar '- pt2 pt1) 

 

Pour le vecteur normé (de 1 unité) et des utilisations possible des vecteurs vois ici

 

Pour les réacteurs, je ne peux pas t'aider, je ne me suis pas encore penché sur la question.

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

Invité Patrick
Posté(e)
Bonsoir à tous...

 

Avant de faire ce nouveau sujet, j'ai cherché avant dan les forums mais je n'ai pas eu de réponse...

Mes mots clefs étaient :

LWpolyligne

LWpolylign

Aligné

long

segment

polyligne

.......

Rien... Alors, je me suis demandé si je savais encore cliquer ! !

 

La recherche sur "LWpolyligne" renvoie plus d'une centaine de résultats.

Posté(e)

Bon, n'hésite pas sur les commentaire...

 

;; Liste des sommets d'une lwpolyligne (dans le SCG)

---Ok, ça, je sais...

 

(defun lwpoly_pts (ent)

---Ca aussi...

 

(mapcar

---Ca applique une fonction non pas sur un "symbole" mais sur une liste...

 

'(lambda (pt)

---"fonction" temporaire....

 

(trans (list (car pt) (cadr pt) (val_dxf 38 ent)) ent 0)

---trans = Translation

---(car pt) premier élément de la liste pt

---(cadr pt) tous les éléments de la liste sauf l'entête

---(val_dxf 38 ent) Là, je ne vois pas

--- ent SCO

---0 SCG

 

Les deux derniers, c'est un peu du pif... je l'avoue...

 

(mapcar

'cdr

(vl-remove-if-not

---enlève si pas déjà fait ?

 

'(lambda (x) (= (car x) 10))

(entget ent)

donnée ent de l'entité ( :-o

 

Alors ? Sur 20, j'ai combien ?

 

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)

Posté(e)

Patrick, je viens à l'instant de le refaire en copiant/collant "LWpolyligne"

 

Forum : Lisp et Visual Lisp....

 

J'ai eu ceci :

http://www.cadxp.com/modules.php?op=modload&name=XForum&file=search

 

C'est une page sans réponses...

 

Je me plante où ?

 

PS : j'ai FireFox... Mais mes autres recherches sont généralement fructueuses...

 

Pour la clef "réacteur" j'ai eu 3 réponses...(toujours dans Lisp et Visual Lisp)

 

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)

Invité Patrick
Posté(e)

Il y a effectivement un problème, c'est que le forum "Lisp et visual LISP" avait été scindé il y a quelques mois en plusieurs sous-forums. Le forum "Lisp et visual LISP" ne contient que deux messages. La liste déroulante de choix du forum à rechercher ne propose que ce forum. J'essaierai de corriger cela dès que possible. En attendant, la centaine de résultats que j'indiquais résultait d'une recherche sur tous les forums, et pour l'instant, il faut procéder en recherchant sur tous les forums.

Posté(e)

Mille merci Patrick... J'y cours...

 

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)

Invité Patrick
Posté(e)

Le problème a été corrigé, vous pouvez maintenant sélectionner les sous forums pour y rechercher des mots-clés.

Posté(e)

Je ne vais pas te noter ;)

 

Les erreurs :

 

(cadr pt) tous les éléments de la liste sauf l'entête

(car lst) -> premier élément (là tu as juste)

 

(cdr lst) -> la liste privée du premier élément

 

(cadr lst) équivaut à (car (cdr lst)) soit le premier élément de la liste privée du premier élément, donc le deuxième élément de la liste.

 

De la même façon (caddr lst) est le troisième élément de la liste.

 

Ceci pour les plus courament utilisé (car pt) -> X, (cadr pt) -> Y, (caddr pt) ->Z

 

Ont peut faire d'autres combinaisons jusquà quatre niveaux d'imbrication, c'est expliqué dans l'aide aux dévellopeurs -> AutoLISP Developer's Guide -> Using the AutoLISP Language -> AutoLISP Basics -> AutoLISP Expressions -> List Handling -> Point Lists.

Ces fonctions sont très utiles le LISP (LISt Processing) ets un langage de manipulation de listes.

 

(val_dxf 38 ent) Là, je ne vois pas

Normal, l'erreur vient de moi, j'ai copié/collé sans relire val_dxf et un (defun ...) perso, j'aurais dû écrire (cdr (assoc 38 (entget ent))) le code de groupe 38 des lwpolylines est celui de l'élévation de l'objet.

 

Des précisions :

 

(mapcar

---Ca applique une fonction non pas sur un "symbole" mais sur une liste...

mapcar, je te l'ai déjà expliqué, mais il faut bien retenir que mapcar retourne une liste. dans cett petite routine la listée retournée par (mapcar 'cdr ...) est l'argument pour (mapcar '(lambda ... ) ...)

 

(trans (list (car pt) (cadr pt) (val_dxf 38 ent)) ent 0)

---trans = Translation

Translation va bien, pour son sens en français et sa traduction (justement) de l'anglais. la point pt (auquel on a précisé l'élévation) est translaté/traduit du SCO au SCG.

 

(vl-remove-if-not

---enlève si pas déjà fait ?

Retourne la liste sans les éléments qui ne retournent pas T à la fonction, dans ce cas le (lambda ...) avec vl-remove-if-not, vl-remove-if, vl-every, vl-some la fonction (predicate function) doit être une fonction qui retourne T ou nil.

 

Donc dans ce cas, enlève de la liste entget tous les élément (liste ou paires pointées) dont le premier élément n'est pas 10. La lista retournée par (vl-remove-if-not ...) est l'argument pour (mapcar 'cdr ...)

 

 

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

Posté(e)

Merci Gile....

 

J'ai copier ta routine "dxf_lst" depuis un autre forum et l'utilise pour étudier les Code DXF des entités... Et en gros... Les code DXF résument... Enfin contiennent toutes les propriétés d'une entité, c'est ça ? Si on veut changer l'entité de calque (Code 8) ou si on veut ajouter une constante à un texte (code 1).... On peut passer par çà pour intéroger ses attribues ?

 

Par contre, dxf_lst sur une LWpolyligne de 39 sommets m'a donné :

Choix de l'objet:
(-1 . )
(0 . "POLYLINE")
(330 . )
(5 . "1870")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "FB1 Routes(Bordure)")
(100 . "AcDb2dPolyline")
(66 . 1)
(10 0.0 0.0 0.0)
(70 . 130)
(40 . 0.0)
(41 . 0.0)
(210 0.0 0.0 1.0)
(71 . 0)
(72 . 0)
(73 . 0)
(74 . 0)
(75 . 0)

Commande:

 

C'est parce qu'elle est lissée ?

 

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)

Posté(e)

En rapport avec le titre du sujet, il y avait eu cette discussion , cela pourra peut être te donner des idées!

 

Par contre, dxf_lst sur une LWpolyligne de 39 sommets m'a donné :

 

(0 . "POLYLINE")

 

Ce n'est pas une LWpolyligne, ici tu as obtenu que la définition d'entête d'une polyligne ancienne ou 3D. Pour avoir les sommets, il te faut parcourir les entités suivantes (0 . "VERTEX") avec (entnext) jusqu'à l'entité (0 . "SEQEND").

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é