Aller au contenu

Pour aller plus loin en LISP

Vous avez déjà écrit des programmes LISP? Vous souhaitez vous perfectionner? Vous butez sur un problème de programmation? Les termes de DCL, ActiveX, réacteur, compilation ne vous sont pas inconnus? Ce forum est pour vous.


1 313 sujets dans ce forum

  1. grread et osmode

    • 4 réponses
    • 3,5 k vues
  2. Challenge antique

    • 9 réponses
    • 3,2 k vues
    • 10 réponses
    • 3 k vues
    • 4 réponses
    • 1,8 k vues
    • 4 réponses
    • 1,5 k vues
    • 4 réponses
    • 1,9 k vues
    • 4 réponses
    • 2,7 k vues
    • 5 réponses
    • 3,1 k vues
    • 15 réponses
    • 3,8 k vues
  3. Equivalent Lisp en VB

    • 5 réponses
    • 2,6 k vues
  4. Le Body Brut

    • 6 réponses
    • 2,1 k vues
    • 3 réponses
    • 1,7 k vues
    • 3 réponses
    • 2,2 k vues
    • 0 réponse
    • 1,5 k vues
    • 5 réponses
    • 2,7 k vues
  5. Pline_Block + Incrémentation

    • 1 réponse
    • 1,8 k vues
    • 2 réponses
    • 3,3 k vues
    • 11 réponses
    • 2,6 k vues
  6. Type de ligne

    • 3 réponses
    • 1,6 k vues
    • 3 réponses
    • 1,7 k vues
  7. Plot Size

    • 6 réponses
    • 3,4 k vues
  8. Inserer du texte

    • 0 réponse
    • 1,1 k vues
  9. Viewport

    • 4 réponses
    • 2,2 k vues
  10. dictionnaire

    • 3 réponses
    • 1,8 k vues
    • 9 réponses
    • 4,7 k vues


  • Statistiques des forums

    • Total des sujets
      48,7 k
    • Total des messages
      295,5 k
  • Sujets

  • Messages

    • Bonsoir, Ce n'est pas (substr) qui est pour les chaîne de caractères, mais (subst) pour substituer un élément à un autre.
    • Bonsoir à tous, J'essaie de créé une petite programmation qui me permettrai de faire pivoter un texte suivant un certain angle. (setq texte (entget (car (entsel "choix du texte")))) Résultat:   ((-1 . <Nom d'entité: 28f974116f0>) (0 . "MTEXT") (330 . <Nom d'entité: 28ff3f02230>) (5 . "93487") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "Renseignements cadastraux (N° parcelles - Propriétaires)") (100 . "AcDbMText") (10 -1.82413e+07 -7.18013e+06 0.0) (40 . 120.0) (41 . 0.0) (46 . 0.0) (71 . 7) (72 . 5) (1 . "G175R") (7 . "Roman") (210 0.0 0.0 1.0) (11 -0.882086 0.471089 0.0) (42 . 505.917) (43 . 124.615) (50 . 2.65107) (73 . 1) (44 . 1.0)) Ensuite, j'extrais l'angle du texte:  (setq ang (cdr (assoc 50 texte))) 2.65107 Pour le faire pivoter de 180° il faut soit ajouter PI  (setq ang (+ ang PI)) Je substitue le nouvel angle dans texte (substr (cons 50 ang) (assoc 50 texte) texte) Et là, je reçois cette erreur ; erreur: type d'argument incorrect: stringp (50 . 5.79266) D'où vient mon erreur ? Merci de votre aide.  
    • Bonjour Olivier, Je ne sais si ça pourra d'être d'utilité pour toi, mais j'ai fait ce code pour insérer un sommet (en boucle) sur une poly3D selon un point donné graphiquement; qu'il soit exactement sur la 3Dpoly ou proche, l'alignement du vertex impacté n'est pas changé. Le Z est interpolé. (defun l-coor2l-pt (obj lst flag / ) (if lst (cons (list (car lst) (cadr lst) (if flag (+ (if (vlax-property-available-p obj 'Elevation) (vlax-get obj 'Elevation) 0.0) (caddr lst)) (if (vlax-property-available-p obj 'Elevation) (vlax-get obj 'Elevation) 0.0) ) ) (l-coor2l-pt obj (if flag (cdddr lst) (cddr lst)) flag) ) ) ) (defun c:add_vertex-3D ( / ss AcDoc Space obj_vla l_coor last_p pt pt_vtx new_vtx prm indx flag nw_coor) (princ "\nSélection d'une polyligne non lissée") (while (null (setq ss (ssget "_+.:E:S" '((0 . "POLYLINE") (-4 . "<AND") (-4 . "&") (70 . 8) (-4 . "<NOT") (-4 . "&") (70 . 4) (-4 . "NOT>") (-4 . "AND>")))))) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (eq (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) obj_vla (vlax-ename->vla-object (ssname ss 0)) l_coor (l-coor2l-pt obj_vla (vlax-get obj_vla 'Coordinates) T) last_p (last l_coor) ) (initget 8) (while (setq pt (getpoint "\nNouveau sommet au point : ")) (setq pt_vtx (vlax-curve-getClosestPointToProjection obj_vla (trans pt 1 0) '(0 0 1) nil) new_vtx (vlax-3d-point last_p) prm (vlax-curve-getParamAtPoint obj_vla pt_vtx) indx -1 ) (cond ((and (not (equal pt_vtx (vlax-curve-getStartPoint obj_vla) 1E-08)) (not (equal pt_vtx (vlax-curve-getEndPoint obj_vla) 1E-08))) (vla-AppendVertex obj_vla new_vtx) (repeat (if (vlax-curve-isClosed obj_vla) (fix (vlax-curve-getEndParam obj_vla)) (1+ (fix (vlax-curve-getEndParam obj_vla)))) (setq indx (1+ indx)) (if (or (not (eq indx (1+ (fix prm)))) flag) (setq nw_coor (cons (vlax-curve-getPointAtParam obj_vla indx) nw_coor)) (setq nw_coor (cons pt_vtx nw_coor) indx (1- indx) flag T) ) ) (setq indx -1) (foreach e (reverse nw_coor) (vlax-put-property obj_vla 'Coordinate (setq indx (1+ indx)) (vlax-3d-point e)) ) (setq l_coor (l-coor2l-pt obj_vla (vlax-get obj_vla 'Coordinates) T) last_p (last l_coor) nw_coor nil flag nil ) (sssetfirst nil ss) ) (T (princ "\nPoint confondu à une des extrémités.")) ) (initget 8) ) (sssetfirst nil nil) (prin1) )  
    • Je me permet d'insister. vlax-curve-getClosestPointToProjection ne renvoie pas le même résultat que vlax-curve-getClosestPointTo. Essaye cette routine. (defun c:test (/ pl dxf pt) (if (and (setq pl (car (entsel "\nSélectionnez une polyligne 3d: "))) (= (cdr (assoc 0 (setq dxf (entget pl)))) "POLYLINE") (= 8 (logand 8 (cdr (assoc 70 dxf)))) ) (while (setq pt (getpoint "\nSpécifiez un point: ")) (setq pt (trans pt 1 0)) (entmake (list '(0 . "LINE") '(62 . 3) (cons 10 pt) (cons 11 (vlax-curve-getClosestPointToProjection pl pt '(0 0 1) ) ) ) ) (entmake (list '(0 . "LINE") '(62 . 1) (cons 10 pt) (cons 11 (vlax-curve-getClosestPointTo pl pt ) ) ) ) ) ) (princ) )
  • Sujets

×
×
  • 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é