Aller au contenu

Bred

Membres
  • Compteur de contenus

    2 764
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Bred

  1. Salut, dans ton précedent message http:// http://www.cadxp.com/sujetXForum-11471.htm je te donnais un exemple de lisp où justement une boucle se fait jusqu'à rencontrer "SEQEND" qui signale la "fin" d'un bloc ... mais pour que l'on puisse te répondre plus facilement, tu devrais poster ton code....
  2. Bred

    VB : Récup Point dans SCU ???

    ... bon ben il faut que j'aprenne à utiliser un peu mieux l'aide moi... j'ai trouvé mais c'était marqué comme "le port Salut" .... :P :P donc, la réponse, pour info, est : Dim ptSCG As Variant, ptSCU As Variant ptSCG = ThisDrawing.Utility.GetPoint(, vbCr & "Point d'Insertion : ") ptSCU = ThisDrawing.Utility.TranslateCoordinates _ (ptSCG, acWorld, acUCS, False) ... merci
  3. un lisp récupérer dans le forum je crois et qui regroupe un peu ce que tu demandes, si tu veux t'en inspirer... (ce lisp copie la valeur d'un attribut de bloc dans un autre...) ;;;============================================================== ;;; ; ;;; CAT.LSP V1.20 ; ;;; ; ;;; Copier des attributs ; ;;; ; ;;; Copyright (C) Patrick DEWEVRE ; ;;; ; ;;;============================================================== (defun c:cat(/ chemin cmd fichier nom_bloc s p) ;;;------------------------------------------------------------- ;;; ;;; Gestion des erreurs ;;; ;;;------------------------------------------------------------- (defun *errcat* (msg) (if (/= msg "Function cancelled") (if (= msg "quit / exit abort") (princ) (princ (strcat "\nErreur : " msg))) (princ)) (setq *error* s) (setvar "pickadd" p) (setvar "cmdecho" cmd) (princ) ) ;;;------------------------------------------------------------- ;;; ;;; Routine principale ;;; ;;;------------------------------------------------------------- (defun changer_texte_attributs(/ a b c n r s ttt u v) ;;;------------------------------------------------------------- ;;; ;;; Changement de texte de l'entité ;;; ;;;------------------------------------------------------------- (princ "\nSélectionner le Bloc de Référence.") (setvar "pickadd" 0) (setq s (ssget '((0 . "INSERT")))) (setvar "pickadd" 1) (if s (progn (setq r (entget (ssname s 0))) (if (= (cdr (assoc 66 r)) 1) (progn (princ "\nSélection des Blocs à Mofifier.") (if (setq s (ssget '((0 . "INSERT")))) (progn (setq n 0 u 0) (while (/= (ssname s n) nil) (setq a r v 0 b (entget (ssname s n))) (if (= (cdr (assoc 0 b)) "INSERT") (setq ttt 1)) (while (and (/= (cdr (assoc 0 a)) "SEQEND") (/= (cdr (assoc 0 b)) "SEQEND")) (setq c (subst (assoc 1 a) (assoc 1 b) b)) (entmod c) (setq a (entget (entnext (cdr (assoc -1 a)))) b (entget (entnext (cdr (assoc -1 b)))) v 1) ) (if (/= v 0) (progn (entupd (cdr (assoc -1 (entget (ssname s n))))) (setq u (1+ u)) ) ) (setq n (1+ n)) ) (if (and (= ttt 1) (= u 0)) (alert "Pas de blocs correspondant au bloc de référence.")) (if (= ttt nil) (alert "Pas de blocs sélectionnés.")) (if (/= u 0) (princ (strcat "\n" (itoa u) " blocs modifiés..."))) ) ) ) (alert "Bloc sans Attributs") ) ) (princ "\nAucune Sélection...") ) ) ;;;------------------------------------------------------------- ;;; ;;; Routine de lancement ;;; ;;;------------------------------------------------------------- (setq s *error*) (setq *error* *errcat*) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.undo" "_group") (setq p (getvar "pickadd")) (changer_texte_attributs) (setvar "pickadd" p) (command "_.undo" "_end") (setq *error* s) (setvar "cmdecho" cmd) (princ) )
  4. Salut, Je me sert des boites de dialogues VB afin de passer des arguments à un lisp.... avant d'essayer de "bidouiller" quelque chose en lisp, peut-être quelqu'un connaitrait t'il la solution (certainement en fait.... vu les hautes éminences grises participant à ce Forum.... ;) ) afin de récupérer un point dans le SCU actif .... pour l'instant je fait pt = ThisDrawing.Utility.GetPoint(, vbCr & "Point d'insert : ") ... mais le point est en SCG .... (on m'a appris dans ce forum en LISP à transformer un point dans un certains système à dans un autre grâce à (trans.... mais je voulais savoir si il y aurait une manip équivalent en VB.... ça me permettrais d'éviter de trop toucher à mes routines lisp....) ... merci
  5. Salut, avant de faire ça en lisp, j'ai l'impression que ta question autocad y répond de lui même avec les attributs étiquette ,invite et valeur, et pour modifier avec "éditer les attributs".... voir l'aide des attributs ...
  6. Salut.... pour récupérer une valeur de texte : (code dxf 1) (setq ent (entsel "/n selectioner 1 texte :")) (setq txt (cdr (assoc 1 (entget (car obj))))) .... tu peux aussi réaliser des filtres de selections.... je te laisse chercher ;) pour la virgule, je cherche ...
  7. Bred

    Double écrans

    Salut, pas de solution... pour info, l'une des utilités du double écran est aussi la possibilité de lancer un second autocad, et d'y mettre des plans de réferences, gabarits, etc... afin de les consulter plus "agréablament" que si il était dans une autre fenêtre, et on peut même récupérer des choses afin de les insérer dans le plan où l'on travail grâce au "copier / coller" windows...
  8. merci... beaucoup !!! après un premier test ça a l'air d'être ça... ------------------------------------------------------------------- pour le banquier.... c'est un hazard de "concaténation" d'initiale.... je ne pourrait malheuresement pas t'avoir un taux de crédit préférentiel pour service rendu .....
  9. Bred

    While / test coordonnées

    merci (gile)... c'est ça.... en fait je m'excuse, car je crois que tu m'avais déjà parlé de ce problème d'approximation en 3D, et j'aurais pû y penser par moi-même....
  10. Salut, Je cherche en VB à sélectionner UN objet (quelqu'il soit) et à en récupérer son calque ... (je sais le faire en lisp, mais en VB je suis au stade du "crétacé" .... :P ) en recherchant j'ai trouvé : http:// http://www.cadxp.com/sujetXForum-4941.htm et http:// http://www.cadxp.com/sujetXForum-4798.htm ... mais je suis completement incapable de l'exploiter .... :P merci d'avance.
  11. Bred

    While / test coordonnées

    en effet Tramber : (setq ptd nil pta nil) (while (or (and (equal (car pta) (car ptd)) (equal (cadr pta) (cadr ptd))) (equal (caddr pta) (caddr ptd))) (setq ptd (getpoint "\n Point de départ :") pta (getpoint ptd "\n Point d'arrivé :")) )
  12. Salut, je n'arrive pas à trouvé mon erreur ... je cherche à faire un test sur les coordonnées de 2 points tel que si ils ont le même z, OU si ils ont les même x et y (2 points superposés sur les z) la réponse n'est pas valide... j'ai écris : (while (or (and (equal (car pta) (car ptd)) (equal (cadr pta) (cadr ptd))) (equal (caddr pta) (caddr ptd))) (setq ptd (getpoint "\n Point de départ :") pta (getpoint ptd "\n Point d'arrivé :")) ) ... ça ne fonctionne pas pour le test des même x et y ((and (equal (car pta) (car ptd)) (equal (cadr pta) (cadr ptd))) ... faux .... merci de votre aide ...
  13. ??? .... ben ce n'est pas ce qu'il demande ???
  14. ... je le teste .... et ça à l'air génial !!!! (faudrait peut-être un titre de post plus "racoleur", car je suis passé dessus s'en y faire attention !!!!)
  15. Bred

    Diviser/Mesurer 3D

    merci pour tout
  16. Bred

    Diviser/Mesurer 3D

    ... mais j'espère ne pas être désobligeant ... :exclam: dans tout les cas merci !!!! ... mais je vais encore exagerer .... afin de comprende ce lisp, en parrallèle de tes explication sur les vecteurs et matrices, pourrais-tu m'expliquer quel est la logique (et la raison) dans ton lisp pour que tu utilises : le produit vectoriel (vecteur) de deux vecteurs puis le vecteur normal du plan défini par 3 points (en fait je pense que c'est pour définir le sens ET direction 3D, mais je ne suis pas certain de mon raisonnement) et Transpose une matrice ... ça, malgré ton explication sur les matrices dans un précedent post ça me laisse "pantois"... double merci
  17. Salut, ce que tu demandes reviendrait à faire une IMAGE de ta fenêtre de présentation .... comme ça elle serait impossible à modifier alors que tu modifie ton plan en espace objet... à part faire une impression au format image de ta fenêtre puis de l'inserer ensuite dans ta présentations je ne vois pas ...
  18. Bred

    Pbm Icône CUI perso

    perso je met tous mes icones dans un repertoire que je déclare dans les fichiers supports, et je ne rentre surtout pas le chemin de recherche du bouton dans le champ de recherche mais que le nom. Cela semble bien fonctionner si l'on installe la même config sur un autre poste, vu que c'est le chemin des fichiers supports qui prime ...
  19. Bred

    Diviser/Mesurer 3D

    Salut, Si ils sont dans "la collection", cela veut dire qu'ils ont été déjà inséré à un moment ou à un autre... même si il ne sont pas "dans" le plan, il font parti de ce plans parceque insérer au moins une fois... (ou créé dedans) si par contre, je veux insérer un bloc qui n'a jamais été inséré dans le plan (donc ne faisant pas partie de la collection), que ce bloc fait parti d'un des repertoire déclaré comme tel dans les fichiers supports (ces blocs je peux les appeler au clavier en faisant -inserer (nomdubloc) (echx) (echy) (echz) (rot) (... en sachant que la plupart du temps les echelles sont à 1 ....) Avec ta routine, si je veux insérer un bloc il faut qu'il soit dans la collection,ou que j'aille le chercher dans un repertoire (ce qui est trés utile si je ne me souvient plus du nom du bloc)... mais si je connais le nom, et que je veux éviter de passer par l'étape de recherche dans les repertoires, je n'aurais qu'à taper le nom afin qu'il s'insert (il irait chercher le bloc dans mon fichier support de biblio...)
  20. Bred

    Diviser/Mesurer 3D

    Salut (gile), Suggestion : Lors de la demande sur la ligne de commande je comprends que tu ais voulu retrouver le même fonctionnement que la commande standard d'autocad, mais personnellement j'aime bien lorsqu'il y a des options à choisir d'avoir une option par "défaut en validation" , c'est à dire que ici, si tu valides sans rentrer de nombre de segment, il comprends que tu veux rentrer un nom de bloc... je ferait : (if (equal nb nil) (setq nb "Bloc")) ----------------------------------------------------------- Demande : N'y a t'il pas moyen, en plus de la posibilité d'aller chercher un fichiers que tu viens de rajouter, d'avoir une zone de texte "libre" où l'on taperait le nom d'un bloc existant (pas forcément dans la liste déroulante, donc déjà inséré) et en l'insérant ensuite avec (commande "-insert" ...) ou plûtot j'imagine que tu préfereras en vl du genre (vla-insertblock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) ; (vlax-3d-point (trans pt 1 0)) Nom 1 1 1 ; (angle '(0 0 0) (trans (getvar "UCSXDIR") 0 (trans '(0 0 1) 1 0 T))))
  21. Bred

    Diviser/Mesurer 3D

    ... merci .
  22. Bred

    Diviser/Mesurer 3D

    ... touché !!! ... j'avoue que je le chercherais volontier, mais j'ai vraiment du boulot par dessus la tête en ce moment... de plus les boite de dialogue dcl sont de domaine de l'inconnu pour moi, et je passe tellement de temps à déjà décortiqué de "simple" lisp que je met les boites de dialogues dcl de côté... Et puis c'est ta faute aussi, avec tous les cours/rxplications de lisp que tu donnes (fonctions récursives, matrices, ....) et les lisps que tu proposes (ainsi que Patrick_35) je suis balader dans tous les sens !!! donc je ne pense vraiment pas m'y pencher de si-tôt...
  23. Bred

    Nouveautés 2007

    Dans ? (aide) -> atelier des nouvelle fonctions , et faire le choix des nouveauté par rapport à 2006
  24. Bred

    HELP ME sur des attribut

    erreur précedent : variables attdia à 1 et attreq à 1 ... désolé
  25. Bred

    HELP ME sur des attribut

    variables attdia à 0 et attreq à 1
×
×
  • 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é