-
Compteur de contenus
2 764 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Bred
-
Problème de boucle sur les attributs de bloc
Bred a répondu à un(e) sujet de Morgul dans Débuter en LISP
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.... -
... 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
-
Renseigner un attribut de bloc après selection
Bred a répondu à un(e) sujet de Morgul dans Débuter en LISP
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) ) -
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
-
Renseigner un attribut de bloc après selection
Bred a répondu à un(e) sujet de Morgul dans Débuter en LISP
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 ... -
récupération de texte, comment faire ???
Bred a répondu à un(e) sujet de TitOoN dans Pour aller plus loin en LISP
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 ... -
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...
-
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 .....
-
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....
-
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.
-
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é :")) )
-
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 ...
-
??? .... ben ce n'est pas ce qu'il demande ???
-
... 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 !!!!)
-
merci pour tout
-
... 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
-
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 ...
-
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 ...
-
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...)
-
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))))
-
... merci .
-
... 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...
-
Dans ? (aide) -> atelier des nouvelle fonctions , et faire le choix des nouveauté par rapport à 2006
-
erreur précedent : variables attdia à 1 et attreq à 1 ... désolé
-
variables attdia à 0 et attreq à 1
