Aller au contenu

Bred

Membres
  • Compteur de contenus

    2 764
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Bred

  1. Bred

    Challenge 12

    Salut..... Ben je suis largué !... en fait je pense qu'il n'y a qu'une seule manière de résoudre ton problème : un fonction récursive ... ;) et je sais que (gile) est sur les starting-bloc.... Le truc que j'ai essayé de faire c'est de tester un l'angle d'un point avec tous les autres pour ressortir les points alignés... puis à partir de ces points alignés je teste la distance pour ressortir les plus éloigné et suprimer les autres... mais je plante lamentablement sur la manière d'interroger TOUS les points, dans toutes les configurations possibles.... J'abandonne pour l'instant.... Un challenge trés interressant !... La routine pour tester une multitude de points les uns par rapport aux autre me semble être un trés bon outils !....
  2. Bred

    \"Commande :\" en trop !!!

    merci.... mais non... j'avais testé, tourner dans tout les sens, rien n'y fais.... encore merci. .... pas de solution ? :casstet:
  3. Salut, Il faut que la fenêtre soit active ! Ce n'est pas le même cadenas (il est un peu plus à gauche....)
  4. Hey ! mais ça fonctionne !!! parceque je pensaiq être obligé de faire le (trans pt 3 2) en espace papier, puis activer la fenêtre et faire le (setq p (trans p 2 0)) .... Génial ! merci, comme d'habitude ! :D :D :D
  5. Re, Tu pourrais utiliser la base de registre pour cela. Sinon, vite fait : avec un fichier dans c: "test.ini" (defun GetVariable (param) (setq f (open "c://test.ini" "r") a (read-line f) i 0) (while (and a (not (vl-string-search param a))) (setq a (read-line f)) ) (close f) (if a (vl-string-subst "" (strcat param " = ") a)) ) (GetVariable "param5") -> "trtr" [Edité le 11/10/2007 par Bred]
  6. ... ça fonctionne mais je trouve ça d'un laid !!!! si vous avez une solution, n'hésitez pas ! moi, je continues à chercher, mais sans aucun résultat .....
  7. Salut, Y aurait-t'il quelqu'un qui ce serait déjà penché sur la création d'une caméra en v-lisp (ou par entmake) ? Attention! "CAMERA" version 2007 : avec délimitations, etc.... ! merci d'avance.
  8. Salut, il doit y avoir quelque chose qui m'echappe : que veux tu faires avec un fichier ".ini" ? A moins que ce ne soit un fichier texte que tu veuilles enregistrer en .ini ??? Edit : Ah, doublé par (gile) (même heures....)... qui réponds en parallèlle à ce que j'écris ci-dessus.... mais cela m'ettonnerais que ce soit si simple.... [Edité le 9/10/2007 par Bred]
  9. Salut, un détail, mais pour le principe. Quand j'ai un message à afficher dans un lisp, j'ai un "Commande:" qui s'affiche en trop... Ex : (defun c:test () (princ "\n Je ne veux pas ce 'commande :':") (princ) ) Donne : .... alors qu'en fonctionnement général, Quand AutoCAD affiche un texte : Ex :
  10. J'ai honte mais voilà une solution pour que ça fonctionne : ; routine de récupération de coordonnées de point ; dans l'espace papier transformer en espace objet. ;(setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (defun trans-ptEP->ptEO (pt fen / ACDOC P) [b](Correct-bug-recup-trans-ptEP->ptEO fen)[/b] (setq p (trans pt 3 2) AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-put-ActiveSpace AcDoc acPaperSpace) (vla-Display fen :vlax-true) (vla-put-MSpace AcDoc :vlax-true) (vla-put-ActivePViewport AcDoc fen) (setq p (trans p 2 0)) (vla-put-MSpace AcDoc :vlax-false) p ) [b]; Routine pour correction bug (???) (defun Correct-bug-recup-trans-ptEP->ptEO (fen / ACDOC) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-put-ActiveSpace AcDoc acPaperSpace) (vla-Display fen :vlax-true) (vla-put-MSpace AcDoc :vlax-true) (vla-put-ActivePViewport AcDoc fen) (vla-put-MSpace AcDoc :vlax-false)[/b] )
  11. Wow ! ?.... c'est des ActivePViewport... c'est le cas aussi ? (parceque j'ai beau tourner le code dans n'importe quel sens, mettre (vla-delete (vla-get-ActivePViewport (vla-get-ActiveDocument (vlax-get-acad-object)))) au début, rien n'y fait... (j'ai une erreur : [Edité le 8/10/2007 par Bred]
  12. Bred

    Challenge 12

    Vantar ! ;) :)
  13. En approfondissant mes test, je pense avoir mis le doigt sur le problème : mais ce n'est pas logique : Ceci ; routine de récupération de coordonnées de point ; dans l'espace papier transformer en espace objet. (defun trans-ptEP->ptEO (pt fen / ACDOC VPOBJ P) (setq p (trans pt 3 2) AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-put-ActiveSpace AcDoc acPaperSpace) (vla-Display fen :vlax-true) (vla-put-MSpace AcDoc :vlax-true) (vla-put-ActivePViewport AcDoc fen) (setq p (trans p 2 0)) (vla-put-MSpace AcDoc :vlax-false) p ) Active la fenêtre précedement activer... au prmier changement de fenêtre..... puis après cela prends la bonne (fen) on dirait que (vla-put-ActivePViewport AcDoc fen) ne fonctionne pas à la première utilisation ... :casstet: [Edité le 8/10/2007 par Bred]
  14. Bred

    Caméra

    Ho! désolé, je suis allez trop vite, tu es sous 2006.... Mais là je ne comprends pas : Il est possible de faire une vidéo sur 2006 ??? je ne pense pas.... :casstet:
  15. Bred

    Caméra

    Salut, variable CAMERADISPLAY à 1 ?
  16. Salut, je n'arrive pas à trouver mon erreur. J'ai fait des routines me permettant de retourner les coordonnées d'un point pris dans une fenêtre non active en espace papier en coordonnées SCG... Et bien, ça fonctionne... pas tout le temps.... Si je change de selction de point selectionné, le lancement du test est faux la première fois, puis tant que je ne change pas de fenêtre ça à l'ai juste..... merci de votre aide... (defun c:test () (setq p (getpoint "\n Choisir un point :")) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-put-ActiveSpace AcDoc acPaperSpace) (setq fen (Pt->Fen p)) (trans-ptEP->ptEO p fen) ) ; Valeur +Grande ou égale et +Petite ou égale que ; 2<=50<=90 -> (<=val<= 2 50 90) => T ; 45<=48<=48 -> (<=val<= 45 48 48) => T (defun <=val<= (val- val val+) (if (and (> val val-) (< val val+)) t (if (or (equal val val-) (equal val val+)) t)) ) ; routine de récupération de coordonnées de point ; dans l'espace papier transformer en espace objet. (defun trans-ptEP->ptEO (pt fen / ACDOC VPOBJ P) (setq p (trans pt 3 2) AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-put-ActiveSpace AcDoc acPaperSpace) (vla-Display fen :vlax-true) (vla-put-MSpace AcDoc :vlax-true) (vla-put-ActivePViewport AcDoc fen) (setq p (trans p 2 0)) (vla-put-MSpace AcDoc :vlax-false) p ) ; Routine de récupération de le fenêtre contenant le point. (defun Pt->Fen (pt / I MAXPT MINPT SEL-F VLA-FEN VLA-FEN-OK) (setq sel-F (ssget "_X" '((0 . "VIEWPORT,*POLYLINE,SPLINE,ELLIPSE,CIRCLE,REGION")))) (repeat (setq i (sslength sel-F)) (setq vla-fen (vlax-ename->vla-object (ssname sel-F (setq i (1- i))))) (vla-GetBoundingBox vla-fen 'minPt 'maxPt) (setq minPt (vlax-safearray->list minPt) maxPt (vlax-safearray->list maxPt)) (if (and (<=val<= (car minPt) (car pt) (car maxPt)) (<=val<= (cadr minPt) (cadr pt) (cadr maxPt))) (setq Vla-fen-OK vla-fen)) ) Vla-fen-OK )
  17. Bred

    TEXTES PREFIXE & SUFFIXE

    Re, pour automatiser un peu plus l'incrémentation, tu trouveras ci-dessous un lisp qui incrémente de +1 par rapport à la valeur maxi trouvé dans les blocs déjà présent dans ton plan. J'ai considéré que ton bloc s'appelle SF, à toi de modifier le lisp si ce n'est pas le cas. (defun c:inc+ (/ BLC I INC LST SEL SF) (setq sel (ssget "_X" '((2 . "[b]sf[/b]"))) inc 1) (if sel (progn (repeat (setq i (sslength sel)) (setq sf (vlax-ename->vla-object (ssname sel (setq i (1- i)))) lst (safearray-value (vlax-variant-value (vla-getAttributes sf)))) (foreach n lst (if (equal (strcase (vla-get-TagString n)) "REPERAGE") (if (> (atoi (vla-get-TextString n)) inc) (setq inc (atoi (vla-get-TextString n)))))))) ) (while (not blc) (setq blc (car (entsel "\n Choix du Bloc avec attribut 'REPERAGE' :"))) (if (not (equal (cdr (assoc 0 (entget blc))) "INSERT")) (setq blc nil) ) ) (setq lst (safearray-value (vlax-variant-value (vla-getAttributes (vlax-ename->vla-object blc))))) (foreach n lst (if (equal (strcase (vla-get-TagString n)) "REPERAGE") (vla-put-TextString n (rtos (+ (atoi (vla-get-TextString (nth 0 lst))) inc))) ) ) ) ... on pourrait encore plus automatiser la chose, en le faisant à l'insertion par exemple. A toi de le dire.
  18. Bred

    TEXTES PREFIXE & SUFFIXE

    Salut, Tu touveras un petit lisp ci-dessous qui incrémente de +1 un attribut. Pour faire ce que tu cherches à réaliser, il faut que tu créés un bloc ayant un texte "SF", à côté un attribut constant REPERAGE pour le reperage, et un attribut que tu renseignes à l'insertion pour la dimension. Par contrelaisse de la place entre l'attribut REPERAGE etl'attribut de dimension car si tu dépasses la dixaine il risque d'y avoir superposition. (defun c:inc+ (/ BLC LST) (while (not blc) (setq blc (car (entsel "\n Choix du Bloc avec attribut 'REPERAGE' :"))) (if (not (equal (cdr (assoc 0 (entget blc))) "INSERT")) (setq blc nil) ) ) (setq lst (safearray-value (vlax-variant-value (vla-getAttributes (vlax-ename->vla-object blc))))) (foreach n lst (if (equal (strcase (vla-get-TagString n)) "REPERAGE") (vla-put-TextString n (rtos (+ (atoi (vla-get-TextString (nth 0 lst))) 1))) (princ "\nPas d'attribut 'REPERAGE'")) ) )
  19. Bred

    vla-addLightWeightPolyline

    C'est qu'il n'y a rien à dire ! C'est parfait ! Juste un détail pratique personnel : Ceci : (setq ACDOC (vla-get-activedocument (vlax-get-acad-object))) (setq SPACE (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace ACDOC) (vla-get-ModelSpace ACDOC) ) ) est peut-être astucieux d'en créer un routine : tu n'auras qu'a l'appeller dans tes routines Undo, et tu en auras besoin dans d'autre !....
  20. Bred

    Calculer un volume

    De rien.... :casstet: :P ;)
  21. Bred

    SUPPRIMER UN BLOC

    De rien, Pour info, tu as le * qui explose le bloc à l'insertion.
  22. Bred

    Calculer un volume

    Salut, commende _massprop
  23. Bred

    vla-addLightWeightPolyline

    Ben oui... mais j'suis bête je n'avais pas compris ça comme ça : vu qu'il y avait un c dedans, je pensais qu c'était un appel de defun différent... En fait je le fait, aussi bien pour les routines que pour les commandes. Pour les commandes, la raison en est que si j'en cherche une, je rentre l'intro puis le fait Tab, elle ressortiras à un moment.... Ok, vu. Pour les setq, c'est en effet une question de gout... et de rapidité déxécution. Moins il y en a d'écris, plus vite ça va. Et pour finir, je ne vais être pas sympa : je verrais bien un centrage des cassures entre les deux points (si la norme le permet) Et si le trait est trop petit pour dessinner la cassure, divisiser l'ecart automatiquement... ;) ;)
  24. Bred

    vla-addLightWeightPolyline

    Salut zebulon_, J'avoue ne pas connaitre cette manière de créer des sous-routine avec un (defun cs:maroutine () Surtout que tu es obligé pour l'appeller de d'écrire un (cs:maroutine ....) Pour gagner un peu de temps, assemble tes (setq (setq PT2 (getpoint PT1 "\nDeuxième point : ") ANG (angle PT1 PT2) L (distance PT1 PT2) (setq H (/ RB_DIST 2)) ... mais j'avoue que je l'ai testé, et chez moi ça ne fonctionne pas.... je pense qu'il y a un problème dans ta demande du pt1 : si on donne l'espace, tu ne le remandes pas.
  25. Bred

    blocs, plusieurs grips

    salut, Pour info : variable GRIPBLOCK
×
×
  • 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é