Aller au contenu

bonuscad

Membres
  • Compteur de contenus

    5 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    56

Tout ce qui a été posté par bonuscad

  1. Super Evgeniy, (son terrain de predilection). Concis, même pas une variable en locale, juste les arguments et efficace ... saurais jamais faire! :( Bravo!
  2. bonuscad

    copier les propriétés

    D'accord pour la cible, mais la source, ce ne serait pas par exemple un attribut de bloc, car dans ce cas précis il ne récupère que le calque et pas le style du texte de l'attribut.
  3. Bonjour, Comme dit mikL44, changer ta résolution d'écran, tu peux tenter de la baisser aussi pour voir si autocad te ramème ta barre de commande. Tente aussi la touche F2 pour passer en fenetre de texte puis la reduire et la déplacer et/ou la réincruster dans la zone d'état. Changer de profil ou le refaire. Effacer les fichiers menu ".mnr" (se sont les fichier menus de ressources; ils sont automatiquement reconstitués si absents: ils sont dans le dossier user) Recharger le/les CUI. En gros essayer plein de manips, c'est vrai que ca n'a rien d'évident pour rattraper ces barres hors écran. Tu peux aussi essayer de passer en mode grosses icones, il va peut ré-agencer le truc.
  4. Oui tout à fait, vu que j'ai pu réaliser l'exo au boulot. L'avantage de cette méthode et que je peux me connecter en local car les postes sont bien verrouillés, mais là avec le pilote je peux me connecter avec mes droits USER à l'ODBC et réaliser la fusion. Je pense qu'avec une base Access cela pourra fonctionner aussi, donc cela m'ouvre des perspectives... Pour moi une base Oracle ou autre, c'est mort, à moins d'expliquer clairement mes besoins avec X personnes pendant X temps. Je te rappelle qu'il m'a fallu 4 ans pour obtenir une formation animé par tes soins (et c'est moi qui ai fais les démarches de prospections) Donc ce genre de bidouille me plait bien, même s'il y a mieux..., ca peut me simplifier la vie sans me heurter à des "FAUKON" "YAKA" interminables.
  5. Bonjour Patrice, Merci bien, j'ai réalisé l'exercice pas à pas avec le résultat escompté. Je garde ton PDF mis en lien, ca peut servir.
  6. Autocad écrit (car lui peut, malgré que la variable soit en lecture seule) la valeur de la tangente au point de fin (en radian, système trigo) du dernier arc mis en place ou l'angle du dernier segment droit. Ce qui explique, à mon sens, qu'ils ont mis cette variable en lecture seule pour éviter des dysfonctionnements ultérieur possibles. A contrario, on peut par contre modifier la variable "LASTPOINT" qui ne doit pas leur poser problème en fonctionnement interne de leurs commandes. Ca reste mon analyse, mais je pense avoir bon. Je me rappele que Serge Camiré avait donné un code qui montrait en temps réel la modification des variables. Avec celui-ci tu te serais apercu qu'Autocad cause pratiquement en permanence (en mode dessin) avec ce type de variable.
  7. @lili2006 Que tu utilise la méthode de didier , ou l'option LO de la commande polyline Autocad récupère le dernier angle utilisé (variable LASTANGLE) pour mettre en place la direction du segment suivant.
  8. Bonjour, Oui c'est possible avec la commande polyligne. Il suffit simplement après l'option "LI" (après le dessin de l'arc) de prendre l'option "LO" (pour longueur). Soit du donnes une longueur au clavier ou à l'écran (la direction n'importe peu) et le segment droit sera mis en place en mode tangent
  9. Ha! OK, je ne savais pas que tu faisais du "trading", il sont beaux les graphes en 3D sous Autocad? :(rires forts): :(rires forts): B) Trève de plaisanterie C'est vrai que dans ton cas avec 32Go, une fois chargé, tout se passe passe en mémoire. 32Go de mémoire vive = 2 bon SSD en prix. Avec un SSD cela devient inutile, même complétement déconseillé (tu abrège sa durée de vie par des réécritures inutiles). Bonne journée
  10. Si t'es prêt à investir quelques "roros" pour lui redonner du "peps": Avec mon Dell Latitude (i5, 8Go) perso, j'ai sacrifier le lecteur DVD et j'ai mis un HDD Caddy (plus trop besoin d'un lecteur; un lecteur virtuel avec des image ISO est largement suffisant). Ainsi j'ai conservé un HDD pour stocker les données (dommage de sacrifier cette capacité de stokage), et un SSD pour la partie logiciels. Avec cela, j'ai un portable qui a une seconde vie. Je pense que tu pourrais facilement récupérer 30% et + de rapidité. Windows 10 et aussi rapide (pour l'instant) que Xubuntu LTS (j'ai un dual boot en UEFI, c'est bien supporté par les Dell) Avec ce caddy pas besoin d'une grande capacité pour le SSD, puis que tu conserve ton HDD, donc tu peux diminuer le coût d'investissement, à toi de voir!
  11. J'avais fais un lisp tatto.lsp avec le DCL tatoo.dcl qui va avec. Ce cartouche est plutôt générique, mais il utilise les champs dynamiques, ce qui veut dire que si le dessin est lu par une autre bécane qui n'a pas le lisp, il sera encore mis à jour malgré tout. En effet il utilise quelques clés contenues dans "propriété du dessin...", donc sans avoir le lisp et en changeant la valeur de ces clés, le cartouche (ou les cartouches présents dans tous les onglets ou fenêtres) sera/seront mis à jour avec la valeur de ces clés. Ceci pour dire que les champs restent une bonne solution pour des cartouches à maintenir à jour. On ne pense pas assez à utiliser les "propriétés du dessin" pour personnaliser ceux-ci car ils fonctionneront partout et la modification sera aisée sans lisp et par n'importe quel utilisateur (une fois au courant, bien sur :(rires forts): ).
  12. Bonjour, J'avais fais une demande similaire -> voir le sujet Les réponses avaient fait mon affaire, j'espère qu'il en sera de même pour toi.
  13. C'est confirmé, car avec ta suggestion: (sssetfirst nil (car (SelParTablelsp "RD_METADATA"))), ça fonctionne! Je n'avais pas fais attention que le retour était une liste. Donc c'est OK pour l'instant avec des tests rapides. Le temps de traitement reste correct, pas de latence exagérée, c'est bien.
  14. C'est normal: L'antislash dans les macros d'autocad représente la pause pour entrée utilisateur. En lisp c'est un caractère spécial qui introduit une lecture particulière du/des caractères suivants, voir par exemple l'aide de (prin1) Donc deux méthodes restent applicables: *Soit tu doubles antislash \\ (le premier antislash dit à Autocad de lire le caractère suivant sans l'évaluer, donc devient un \ à la lecture). Autocad dans ces retours utilise plutôt cette syntaxe. Donc pour ma part j'opte plutôt pour celle-ci. Soit tu mets un slash / et Autocad lui substitue automatiquement \ Les deux fonctionnent, tu as le choix de ce qui te convient le mieux.
  15. Salut, Donc sur AutoCad Map 2014 (OS: Windows 7 64bits) Pas de souci avec ODSELECT. Avec SelParTablelsp et SelParODVal par contre... Bien qu'ils me retournent bien un nombre d'objets placés dans un "Selection set", pas moyen d'obtenir cette sélection effective. Il n'y a aucune sélection dans la fenêtre de propriété. Si je fais un "SELECT" "_previous" seul ma dernière sélection est retournée, qui n'a rien à voir avec la sélection faite par SelParTablelsp ou par SelParODVal.... Soit je m'en sert mal (c'est possible) ou soit ton jeu de sélection n'est pas valide pour être reconnu comme une sélection. Ce qui me fait dire ceci est que j'ai essayé en lisp la fonction suivante: (sssetfirst nil (SelParTablelsp "RD_METADATA")) et en retour j'ai:
  16. Bonjour, J'ai découvert aujourd'hui l'expression (w2u) dans les formules de champs (fields) Si manuellement j'arrive parfaitement à la mettre en œuvre, donc ça fonctionne! L'automatiser en lisp me fais buter sur un phénomène bizarre. Voici par exemple une ébauche en cours (defun c:field_ptUCS ( / AcDoc Space pt obj nw_obj) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vla-AddPoint Space (vlax-3d-point (setq pt (trans (getpoint "\nPoint?: ") 1 0)))) (setq obj (entlast)) (setq nw_obj (vla-addMtext Space (vlax-3d-point pt) 0.0 (strcat "%<\\AcExpr (w2u(" "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) ">%).Coordinates >%))" ) ) ) ) A l’exécution toutes les expressions sont évaluées (on voit les champs calculés) sauf "AcExpr" (d'ailleurs il est systématiquement "bouffé", il ne reste que "cExpr" ?!?! Je ne vois pas mon erreur (si erreur existe, car c'est peut être un bug) Vos avis seraient les bienvenus.
  17. Vu qu'il n'y a pas de fonction OBJ dans le code original, je pense simplement que tu t'es loupé dans ton copier-coller. Refais la procédure, et/ou vérifie que tu n'as pas une interférence avec un autre programme qui utiliserait le même appel... déja ield_Layout_Scale.lsp (il y a l'air de manquer le "F"), ce qui m'incite à dire que tu fais des copier-coller incomplet.. :(rires forts): Attention à la frénésie de la sélection à la souris pour le copié...
  18. Salut lilian, Quelle version de Map? à priori 2015 ou 2016! Voir ma réponse ICI
  19. Salut Gégé, Merci, mais j'ai essayé de tester sur Map 2014. Si pas de refus de chargement par NetLoad, ODSelect reste commande inconnue... @ Olivier A priori lili2006 à le même problème que moi avec MQSelect (je pense qu'il est sous la version Map2016 ou 2015). Je pense que tu vas être solicité pour un portage sous 2015 ou + Hé oui il ne pas y avoir que des avantages à utiliser .NEt, c'est ce côté sombre qui me rebute pour me tourner vers ce language ET surtout le partager dans toutes ses déclinaisons possibles. Celà doit être un gros investissement pour le programmeur ?!
  20. Bonjour, Pourtant ce qu'a dit Didier est valable. Tu peux te contenter de la ligne 9 car la ligne 8 force le formatage de la police de texte. donc "%<\\AcVar ctab>%" deviendrait ; "%<\\AcVar ctab>%" Après sur la ligne suivante, tu peux supprimer le tiret devant Echelle, donc " - Echelle 1/" deviendrait "Echelle 1/" Tu enregistre ton fichier, et tu RECHARGE le lisp
  21. A DenisH La réponse est oui. J'ai repris la routine d'Olivier, car celle-ci avait à mon goût quelque défauts (cela veut pas dire que la mienne n'en a pas!). En effet; elle ne traitait qu'une seule table et les valeurs étaient toutes des chaines. J'ai simplement amélioré ce point. Voici ma version. (defun C:OD2XD ( / LstTable Jeu I iNbJeu Elt EltLstTable iEltLst iNbEltLst EltTable oTableDef sNomTable exdata oLstChamp iChamp iNbChamp sNomChamp sTypeChamp sValChamp exdata newent) (setq LstTable (ade_odtablelist)) (setq Jeu (ssget)) (setq I 0 iNbJeu (sslength JEU)) (repeat iNbJeu (setq Elt (ssname Jeu I)) (setq I (1+ I)) (if (setq EltLstTable (ade_odgettables Elt)) (progn (setq iEltLst 0 iNbEltLst (length EltLstTable)) (repeat iNbEltLst (setq EltTable (nth iEltLst EltLstTable)) (setq iEltLst (1+ iEltLst)) (setq oTableDef (ade_odtabledefn EltTable)) (setq sNomTable (cdr (assoc "Tablename" oTableDef))) (regapp sNomTable) (setq exdata (list sNomTable)) (setq oLstChamp (cdr (assoc "Columns" oTableDef))) (setq iChamp 0 iNbChamp (length oLstChamp)) (repeat iNbChamp (setq sNomChamp (cdr (assoc "ColName" (nth iChamp oLstChamp)))) (setq sTypeChamp (cdr (assoc "ColType" (nth iChamp oLstChamp)))) (setq sValChamp (ade_odgetfield Elt EltTable sNomChamp 0)) (setq iChamp (1+ iChamp)) (setq exdata (append exdata (list (cond ((eq sTypeChamp "Real") (cons 1040 sValChamp )) ((eq sTypeChamp "Integer") (cons 1070 sValChamp )) ((eq sTypeChamp "Point") (cons 1010 sValChamp )) ((eq sTypeChamp "Character") (cons 1000 sValChamp )) ) ) ) ) ) (setq exdata (list (list -3 exdata))) (setq newent (append (entget Elt) exdata)) (entmod newent) ) ) ) ) ) Oui les XDATA sont plus facilement filtrable avec (ssget (liste de filtre)). Quand à exploiter les Xdatas! Elles ne le sont que par la programmation, donc facile si on manie au moins le lisp comme son vélo. Fais tu du vélo? ;) A Lecrabe Je pourrais éventuellement regarder ta demande pendant du temps libre. Par contre cela serait bien que tu me fournisse un extrait de DWG ayant ces particularités (cela m'éviterais d'en construire un, je n'ai pas d'OD multiples, vu que je purge avec ma routine)
  22. Salut, Pourquoi je ne me précipite pas? Les sélections filtrées par OD sont problématiques, alors qu'avec les XData ce n'est pas le cas: on peut inclure ceux-ci dans la liste de filtre à fournir à (ssget) Avec les OD, en lisp, je suis obligé de tout sélectionner et d'éplucher la sélection un à un, ce qui en terme de réactivité est franchement bof... La preuve pour moi flagrante est la fonction Sel_By_OD que j'avais écrite en lisp avec la fonction MQSelect écrite en Net par Olivier. C'est le jour et la nuit... Donc bien que ça reste faisable en lisp, pour moi la solution serait plutôt en Net; chose que je pratique pas. Si AutoDesk pouvait directement inclure les OD dans les filtres, ça serait l'idéal. Fais remonter la doléance, tu t'exprime mieux que moi en anglais. ;) PS:Je n'ai aucune idée de comment a procédé Olivier en NET, mais en tout cas c'est TOP!
  23. Certe, mais d'après ce que j'ai compris; avec des grands nombres cela peut apporté une imprécision à cause de l'usage de racine de 5. Mais comme (gile) à précisé jusqu'à 46, cela ne pose pas de problème dans ce cas précis...
  24. Une variante avec la formule de Binet. (defun fibo (n / ) (fix (* (/ 1 (sqrt 5)) (- (expt (* (1+ (sqrt 5)) 0.5) n) (expt (* (- 1 (sqrt 5)) 0.5) n)))) )
  25. Bonjour, Peut être modifié par tes soins. Le lisp met une échelle pour toutes les fenêtres trouvées dans chaque onglet de présentation. (defun make_field (obj p / nw_obj) (setq nw_obj (vla-addMtext Space (vlax-3d-point p) 0.0 (strcat "{\\fArial|b0|i0|c0|p34;" "%<\\AcVar ctab>%" " - Echelle 1/" "%<\\AcExpr (1000/" "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) ">%).CustomScale \\f \"%lu2%qf2816\">%" ") \\f \"%lu2%pr0\">%" ) ) ) (mapcar '(lambda (pr val) (vlax-put nw_obj pr val) ) (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation 'BackgroundFill) (list 3 3.5 5 p "Standard" "0" 0.0 -1) ) ) (defun c:Field_Layout_Scale ( / AcDoc Space js n ent dxf_ent pt_v l h pt) (vl-load-com) (foreach n (layoutlist) (setvar "CTAB" n) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (vla-get-PaperSpace AcDoc) ) (setq js (ssget "_X" (list '(0 . "VIEWPORT") '(67 . 1) (cons 410 n) ) ) ) (repeat (setq n (sslength js)) (setq pt_v (cdr (assoc 10 (setq dxf_ent (entget (setq ent (ssname js (setq n (1- n)))))))) l (cdr (assoc 40 dxf_ent)) h (cdr (assoc 41 dxf_ent)) pt (list (+ (car pt_v) (* 0.5 l)) (+ (cadr pt_v) (* 0.5 h)) 0.0) ) (make_field ent pt) ) ) (prin1) )
×
×
  • 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é