-
Compteur de contenus
2 764 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Bred
-
SCU 3 points : point Y par défault ?
Bred a répondu à un(e) sujet de Bred dans Pour aller plus loin en LISP
Salut Didier et merci, :casstet: Point 1 : 2,2,2 Point 2 : 4,2,5 Point Y proposé : 2,3,2 -------------------- Point 1 : 0,0,0 Point 2 : 2,2,0 Point Y proposé : -0.71,0.71,0 -------------------- Point 1 : 1,2,3 Point 2 : 4,5,6 Point Y proposé : 0.29,2.71,3 ? Conclusions -
Re, Alors, je vais ne pas être sympa dans un premier temps, je vais juste te donner une piste : Le lisp est fait pour traiter des listes.... et tu as une floppée de fonctions pour travailler sur des listes.... .... ;) Par contre, personnellement avant je faisais ça aussi, je créais un .txt ou je mettais ce qui m'interressais. Maintenant j'ai laissé tombé cette solution pour passer par la base de registre.
-
Salut, - Lorsque l'on fait une rotation du SCU par 3points, lors de la demande de sélection du "point de la zone positive de l'axe Y", Autocad nous propose par défaut (c'est ce que j'en ai déduit) des coordonnées Y ne faisant basculé le plan que sur 1 axe. Mon souci est donc de savoir calculer ce point qu'autocad nous donne d'office, afin de pouvoir utiliser les matrices de (gile) pour pouvoir calculer la normale au plan donné... merci d'avance. [Edité le 19/9/2007 par Bred]
-
Salut, Q1 Si tu n'as pas besoin de récupérer ces vriables d'un dessin à un autre, il est inutile de les enregistrer "à l'exterieur". 1 - Tu appels tes variables d'un nom non "commun", qui auront peux de chance d'avoir de doublons dans le même dessin. 2 - Si cette variable est le résultat d'une action auto et fixe tu peux en faire une routine que tu rappels pour avoir le résultat. Ex : Liste d'objet rouge: (defun Lst-Ob-Red () '("tomate" "cerise" "poivron") ) Donc, dans ton prog principal, si tu veux ressortir ta variable contenant tous les objets rouges : (Lst-Ob-Red) Q2 ; ouvrir/créer et écrire (setq f (open "c://VAR.TXT" "w") i 0) (repeat 5 (princ (strcat "Ligne " (rtos (setq i (1+ i))) "\n") f) ) (close f) ; ouvrir et lire 2nde ligne (setq f (open "c://VAR.TXT" "r")) (repeat 2 (setq 2ndeLigne (read-line f)) (close f) ) [Edité le 19/9/2007 par Bred]
-
Je l'avais pris comme ça ! Mon explication était surtout pour fabcad. D'ailleur, au vu des routines vl que j'ai mis ci-dessus, je me demande si te proposition, (gile) ne planterais pas si le calque existe, mais est verrouillé...
-
Concatener une liste avec un caractère de séparation...
Bred a répondu à un(e) sujet de Matt666 dans Routines LISP
lst2str.... faute ! :exclam: :exclam: ;) -
... parceque je trouve que lorsqu'il faut créer de nouveaux calque, rien n'est plus performant que les entmake/entmode.... et puis il y a la longueur du code.... :cool: mais, bon, il est vrais que je passe tous en vl maintenant... par exemple je me suis crées des routines en vl pour les calques : ;;;; Routine Test Existence ou créés Calque (defun test_exist_calque (nom Couleur) (if (not (tblobjname "LAYER" nom)) (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) nom)) (vla-put-Color (vlax-ename->vla-object (tblobjname "LAYER" nom)) Couleur) ) ;;; Routine changement calque de l'objet ; (defun chang_Calque (Ob Calq) (if (not (tblobjname "LAYER" Calq)) (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) Calq)) (vla-put-Lock (vlax-ename->vla-object (tblobjname "LAYER" Calq)) :vlax-false) ;déverouille calque (vla-put-layer (vlax-ename->vla-object Ob) Calq) ) ... ce que fait entmake et entmod tous seul !.. [Edité le 18/9/2007 par Bred]
-
Salut, restons simple... (pourquoi en visual ?...) (defun c:ent-lay-col (/ sel) (setq sel (car (entsel "\n Choix de l'objet :"))) (if (assoc 62 (entget sel)) (entmod (subst (cons 8 (strcat "Calque " (rtos (cdr (assoc 62 (entget sel)))))) (assoc 8 (entget sel)) (entget sel))) (princ "\n Couleur DuCalque") ) ) [Edité le 18/9/2007 par Bred]
-
Salut, pour installer les menus express sous 2008, la manière la plus simple est de passer par le panneau de config/ajouter-suppression de prog, tu choisis autocad 2008....
-
Rotation / Echelle en gardant l\'objet original
Bred a répondu à un(e) sujet de lecrabe dans Routines LISP
Salut, pour info, depuis la version 2006 (je crois), la rotation/copie ou echelle/copie est une option dans ces outils... -
Re, test ça : (defun c:test (/ BLC LST TXT VAL-TXT) (setq txt nil) (while (not txt) (setq txt (car (entsel "\n Choix du Texte :"))) (if (not (or (equal (cdr (assoc 0 (entget txt))) "MTEXT") (equal (cdr (assoc 0 (entget txt))) "TEXT"))) (setq txt nil) ) ) (setq blc nil) (while (not blc) (setq blc (car (entsel "\n Choix du Bloc avec attribut 'altitude' :"))) (if (not (equal (cdr (assoc 0 (entget blc))) "INSERT")) (setq blc nil) ) ) (setq val-txt (cdr (assoc 1 (entget txt)))) (setq lst (safearray-value (vlax-variant-value (vla-getAttributes (vlax-ename->vla-object blc))))) (foreach n lst (if (equal (strcase (vla-get-TagString n)) "ALTITUDE") (progn (vla-put-TextString n val-txt) (vla-delete (vlax-ename->vla-object txt)) ) (princ "\nPas d'attribut 'altitude'") ) ) (princ) ) (hop là, j'edite : je n'avais pas suprimé le texte après traitement ....) [Edité le 14/9/2007 par Bred]
-
Salut, N'aurais-tu pas un exemple en image à nous montrer (ton bloc avant, ton tableau excel, et ton bloc après) [Edité le 14/9/2007 par Bred]
-
Salut, Est-ce que ton texte est toujours au même différence de coordonnées par rapport au bloc altitude ? (cela permettant d'automatiser la selection texte/altitude, sinon je ne vois pas comment tu peux dire à un programme que tel texte va dans tel attribut...)
-
Salut, et bienvenue ! Quel est le genre d'entité de tes "symbole" ? bloc ? texte ? Cercle ? Carré ? ....
-
Salut. ici peut-être ?
-
Salut, Variable SDI à 0
-
Salut, Pour éviterde faire trop "mouliner" ton ordi, une astuce est de copier ta face (=région), de la mettre dans une partie de ton plan vierge, et de réaliser les hachures sur cette copie, puis tu replace les hachures sur ton solide 3D.
-
Et bin !!!... comme d'habitude ! Je cherchais, et je n'en étais trés loin ! encore merci !
-
merci (gile), L'aide ne dit rien de tel j'ai l'impression :mad: c'est ce que je voudrais éviter !
-
Alors ça fonctionne... mais que pour des entités avec une normale sur les Z à 1 j'ai l'impression... :mad: J'ai dans l'idée de faire une bascule de ma région avant de la hachurer, mais j'ai une erreur avec (vla-put-normal ... : avec ent une region en vla-objet : (vla-put-normal ent (vlax-3D-point '(0 0 1))) une idée ???... merci.
-
OK ! je vais essayer ça. merci ! :P :D
-
Salut, Je n'arrive pas à hachurer en vl... J'arrive à créer l'objet hachure (ex repiqué) (setq vla_hatch (vla-addhatch (vla-get-modelSpace (vla-get-activeDocument (vlax-get-acad-object))) acHatchPatternTypePredefined "SOLID" :vlax-false)) mais pour l'appliquer à un contour.... je ne comprends pas l'aide... j'ai l'impression qu'il faut que j'utilise vla-AppendInnerLoop.... pour info, ma forme à hachurer esr une région. merci d'avance !
-
Ceci ? (j'y vais à taton...) Sub DMN() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :") ThisDrawing.SendCommand "(princ)" & vbCr MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr End Sub [Edité le 7/9/2007 par Bred]
-
Re, le fait que tu ais le "\n" dans la ligne de commande montre que le saut de ligne n'est pas pris en compte. Tu peux donc l'enlever. Pour différence en la ligne de commande et la saisie dynamique, je n'en sais rien. Peut-être n'est ce plus GetString qu'il faut utiliser .... Mais essaye avec ça pour voir (pas beau mais pour tester) : Sub DMN() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :") [b]ThisDrawing.Utility.GetString(True, "(princ)")[/b] MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr End Sub [Edité le 7/9/2007 par Bred]
-
Salut, Pour ne pas voir les commandes en ligne de commande, il faut mettre la variable cmdecho à 0 : (defun c: DMN() (setvar "cmdecho" 0) (command "-vbarun" "PROJET.DVB!INSAUTO.DMN") (setvar "cmdecho" 1) (princ) ) pour le doublon sur la ligne de commande, essaye de mettre un saut de ligne dans ton message (pas testé) : Sub DMN() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "\nVeuillez entrer la largeur de la réservation :") MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr End Sub
