-
Compteur de contenus
2 764 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Bred
-
Orbite Transparente avec Maj+clic roulette
Bred a répondu à un(e) sujet de Pieroka dans AutoCAD 2007
Salut mon p'tit ! Pense pas que ce soit ça mais on ne sait jamais : variable "MBUTTONPAN" ? (moi je l'ai a 1 et ça marche) -
Salut, es-tu sûr que c'est bien du texte ? est pas du texte explosé ? Qaund tu fais le test avec le gabarit aclt.dwt, est-ce un copier-coller de ce texte ???
-
Bienvenue ! Désolé, pas de solution, mais que ce passe t'il dans le gestionnaire de tâche ? (ctrl+Alt+suppr) Si ton UC est à 100% tu as peut-être des connexions réseau qui te ralentisse la bécane, voir un virus ...
-
... C'est ce que l'on appel la Nature.... Ce n'est pas parcequ'on ne la comprends pas, que l'on n'arrive pas à la mettre en équation irréfutable, qu'il faut fermer les yeux et "imaginer" .... C'est trés beau de réver (je suis un fervent supporter des croyance enfantile du type père Noël, Cloches de paques, petite souris des dents ....) mais au bout d'un moment, et c'est peut-être malheureux, on réalise .... Ah non.... pas tout le monde on dirait.... :o
-
... et la dernière Mise à jour date du 14 Février 2005.
-
Trouvé ça. Connaissais pas.
-
C'est bon, j'ai vu le truc pour les attributs, merci ! j'edite le code ci-dessus.
-
OK! OK!!! En fait j'ai tord de trop regarder les résultats donnés par la console VL .... Ton exemple est trés parlant, merci !
-
En effet, c'est identique... mais comment faire alors : j'ai dans le plan que l'on m'a demandé de regarder des coordonnée de point du genre (465116.0 574565.0 3.799) Et qui ne me donne qu'un seul chiffre apère la virgule quansd je sort les coordonnées en forme de liste .... Donc, si je ne dit pas de bétise, lorque je fait un calcul de différence de coordonnée, et que cette différence est de 0.05, ça sera faux !....) :casstet:
-
merci (gile) en fait j'avais fait tout ça pour une raison : j'avais pensais avoir remarqué que lorsque je calculais des différences de coordonnées en sortant dabord les coordonnées avec vla-get-Coordinates, elle était moins juste que de calculer toutes de suite le variant... mais quand je regarde mon code maintenant, et après ta remarque, je m'aperçois en fait que je le faisais aussi....) J'ai quand même un doute sur l'éxactitude du calcul de différence entre le point nodal et le text, par rapport au nombre de chiffre après la virgule que l'on récupère ...
-
J'ai testé, chez moi ça fonctionne .... :casstet:
-
Salut, Essaye ça (pas testé) (defun c:TTB () (setq scala (getreal "Facteur?:")) (setq sel (ssget '((0 . "INSERT")))) (repeat (setq n (sslength sel)) (setq entb (vlax-ename->vla-object (ssname sel (setq n (1- n))))) (if entb (if(=(vla-get-ObjectName entb)"AcDbBlockReference") (vlax-for bloc (vla-get-blocks(vla-get-activedocument (vlax-get-acad-object))) (if(=(vla-get-Name bloc)(vla-get-Name entb)) (progn (vlax-for i bloc (if(=(vla-get-ObjectName i)"AcDbText") (vla-put-height i (* (vla-get-height i) scala))))))))) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acAllViewports) (vla-item (vla-get-blocks(vla-get-activedocument (vlax-get-acad-object))) (vla-get-name entb)) ) (princ (strcat "\n "(rtos (sslength sel)) " Blocs traités.")) ) [Edité le 3/4/2007 par Bred]
-
NON ?????? c'est tout ?????..... alors, là, je suis bluffé !!!! merci !!!! :D :D :D :exclam:
-
ça fonctionne chez moi.... je met le .dcl dans un répertoire déclaré en support.
-
Salut, je ne sais pas si je n'aurais peut être pas dû poster ce message dans la "liste de souhait" ... Je me demandais si il était possible d'empécher la décomposition d'un bloc, non pas afin de le protéger contre le "piratage", mais pour se protéger de mauvaise manip... Je m'explique : j'ai des blocs contenant des attributs fixes me permettant de gérér mes nomenclatures. J'ai des blocs imbriqués réalisés avec ces blocs. Il m'arrive de vouloir récupérer un bloc unitaire (ou plusieurs) dans un bloc imbriqué (ou de le modifier). Donc, à part passer par l'éditeur de bloc pour le modifier, j'ai pour habitude d'exploser mes blocs imbriqués.... (je passe mon temps à ça en fait...) Mais il m'arrive, oh malheur!, d'exploser par inadvertance un bloc isolé (caché derrière mon bloc imbriqué par ex.)... donc je perd la liaison et la valeur des attributs, donc ma nomenclature est fausse !!! Connaissez vous donc une manip qui, lorque qu l'on veut explose un bloc "unitaire", nous envois un message de confirmation par exemple ??? (tiens... ne serait-ce pas un réacteur encore .... : (if (equal (cdr (assoc 0 (entget (entnext entité)))) "ATTRIB") (alert "Attention !!!")) je connais un nouveau dieu en réacteur qui va se régaler !!! ;)
-
Salut, pour le fichier support : (setq acadObject (vlax-get-acad-object)) (setq prefsObject (vlax-get-property acadObject 'Preferences)) (setq tabnameObject (vlax-get-property prefsObject 'Files)) (setq List_File_Support (strcat List_File_Support "c:\\toto" ";")) (vlax-put-property tabnameObject 'SupportPath List_File_Support)
-
J'ai écrit une routine permettant de reconstruire ton plan ici. Cela part du principe que tous les text avait un point nodal identique.
-
Bonjour, afin de réponde à ce message, j'ai réalisé une routine permettant de reconstruire des points topo explosés. Il faut pour cela au minimum un text de point topo explosé acompagné de son nodal explosé (afin de calculer la différence de coordonnées entre le text et le nod). Le traitement se fera sur tous les text qui seront dans le même calque. Pour finir, les points reconstruit seront placé sur le niveau de Z correspondant. Attention : ce prog part du principe que tous les points topo ont été fait avec le même bloc, donc le point d'insertion aura toujour la même position par rapport au text. - Cette routine utilise des routines récupérés sur CadXP - Les auteurs se reconnaitront et je les en remercies) Nota : je vais me faire tirer les oreilles : j'ai mélangé de l'entmake avec du vl .... mais je n'ai pas trouvé la manière de créér un atribut en vl ... :( merci de vos remarques !!! Edit : Modification suivant tous les conseils de (gile) afin de nettoyer le code et réalisation de l'attribut en vl. ;;; Transforme pt+txt en point topo + modifie tous les txt en idem dans le plan.;; ;;; + met les points sur le Z correspondant ; (defun c:ass-pt-topo (/ ACDOC BLC-I COORD-BL COORD-NOD COORD-NOD/TXT COORD-PT COORD-PT/TXT COORD-TXT H-TXT LAY-NOD LAY-TXT LST-BLC LST-PT N NOD NOMBLC PT-NOD ROT-TXT SEL SEL-T SPACE TXT VAL VAL-TXT VLA-NOD VLA-TXT X) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc)) sel (ssadd) lst-pt nil) (initget 1) (setq NomBlc (getstring T "\nNom du Bloc Topo à créer: ")) (while (not (and (setq nod (car (entsel "\n Choix du point :"))) (equal (cdr (assoc 0 (entget nod))) "POINT")))) (ssadd nod sel) (while (not (and (setq txt (car (entsel "\n Choix du Texte :"))) (equal (cdr (assoc 0 (entget txt))) "TEXT")))) ; Récup valeurs (setq vla-nod (vlax-ename->vla-object nod) lay-nod (vla-get-layer vla-nod) vla-txt (vlax-ename->vla-object txt) lay-txt (vla-get-layer vla-txt) h-txt (vla-get-Height vla-txt) val-txt (vla-get-TextString vla-txt) coord-nod (vlax-get vla-nod 'Coordinates) coord-txt (vlax-get vla-txt 'InsertionPoint) coord-pt/txt (mapcar '- coord-nod coord-txt) coord-nod/txt (mapcar '+ coord-txt coord-pt/txt)) ; création attribut (vla-addAttribute Space h-txt acAttributeModePreset "Niveau" (vlax-3d-point (trans coord-txt 1 0)) "Niveau" val-txt) (chang_Calque (entlast) lay-txt) (ssadd (entlast) sel) ; création Bloc (Creatbloc NomBlc coord-nod sel) (vla-delete vla-txt) ; Récupère tous text idem dans dessin (setq sel-T (ssget "_X" (list (cons 0 "TEXT")(cons 8 lay-txt))) pt-nod (ssget "_X" (list (cons 0 "POINT")(cons 8 lay-nod)))) (repeat (setq x (sslength sel-T)) (setq txt (vlax-ename->vla-object (ssname sel-T (setq x (1- x)))) val-txt (vla-get-TextString txt) h-txt (vla-get-Height txt) rot-txt (vla-get-Rotation txt) coord-txt (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint txt))) coord-pt (mapcar '+ coord-txt coord-pt/txt) blc-i (vla-insertblock Space (vlax-3d-point (trans coord-pt 1 0)) NomBlc 1 1 1 0)) (vla-rotate blc-i (vlax-3d-point (trans coord-txt 1 0)) rot-txt) (vla-put-TextString (car (vlax-invoke blc-i 'GetAttributes)) val-txt) (vla-delete txt) (princ (strcat "\n Reste " (rtos x) " Blocs à créér.")) ) (if pt-nod (progn (repeat (setq n (sslength pt-nod)) (setq lst-pt (append (list (vlax-ename->vla-object (ssname pt-nod (setq n (1- n))))) lst-pt))) (foreach n lst-pt (vla-delete n)) ) ) ; Elève sur les Z (setq sel (ssget "_X" (list (cons 2 NomBlc)))) (repeat (setq n (sslength sel)) (setq lst-blc (append (list (vlax-ename->vla-object (ssname sel (setq n (1- n))))) lst-blc))) (foreach n lst-blc (setq val (atof (vla-get-TextString (car (vlax-invoke n 'GetAttributes)))) coord-Bl (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint n)))) (vla-put-InsertionPoint n (vlax-3d-point (list (car coord-Bl)(cadr coord-Bl) val))) ) (princ) ) ;;; Création de Bloc Topo ; (defun Creatbloc (Nom-B p ss / BLK LST N NBT) (repeat (setq n (sslength ss)) (setq lst (cons (vlax-ename->vla-object (ssname ss (setq n (1- n)))) lst))) (setq blk (vla-add (vla-get-blocks AcDoc) (vlax-3d-point p) Nom-B)) (foreach n lst (vla-transformby n (UCS2WCSMatrix))) (vlax-Invoke (vla-get-activedocument (vlax-get-acad-object)) 'CopyObjects lst blk) (foreach n lst (vla-delete n)) (vla-insertblock Space (vlax-3d-point (trans p 1 0)) Nom-B 1 1 1 (angle '(0 0 0) (trans (getvar "UCSXDIR") 0 (trans '(0 0 1) 1 0 T)))) (princ) ) ;; Doug C. Broad, Jr. ; ;; can be used with vla-transformby to ; ;; UCS2WCSMatrix transform objects from the UCS to the WCS ; (defun UCS2WCSMatrix () (vlax-tmatrix (append (mapcar '(lambda (vector origin) (append (trans vector 1 0 T) (list origin))) (list '(1 0 0) '(0 1 0) '(0 0 1)) (trans '(0 0 0) 0 1))(list '(0 0 0 1)))) ) ;;; 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) )[Edité le 3/4/2007 par Bred] [Edité le 3/4/2007 par Bred]
-
OK, j'ai bien reçu ton plan. Je ne comprends pas : - ce n'est pas du "MultiTexte" comme tu le disais plus haut, mais du "texte" simple. donc dans mon prog ci-avant tu remplaces "MTEXT" par "TEXT", et ça marche .... mais .... tes textes sont Déjà implanter sur la bonne altitude ! :casstet: J'ai cherché alors des points nodal en imaginant que comme le décris Didier c'est une explosion de bloc point topo, mais je n'en ai trouvé que quelque-uns (des nodal sur le calque "semi2"). Ces points ont une différence d'implantation par rapport au texte de -0.1 sur les x et +0.1 sur le y ... Mais les text n'ont pas TOUS un point nodal proche.... Donc, soit tu prends le risque que je te ponde un lisp qui t'insert un nouveau bloc topo à ce point en reprenant la valeur du text.... ce qui ne sera peut-être pas juste pour tous les points, soit tu suit l'idée de Didier et tu demandes à ce que l'on t'envois le fichier sans les blocs explosés.... Tiens moi au courant.
-
La même chose que précedement, mais celui ci donne le résultat réel des côtes, puis si il y a lieu donne le résultat avec les cotes forcées. - A tester - ; additionne cotes sélectionnés (defun c:adcot2 (/ CALC SEL SOM SOMF VAL VALF X) (setq sel (ssget '((0 . "DIMENSION"))) x 0 som 0 somF 0 calc 0) (repeat (sslength sel) (setq val (cdr (assoc 42 (entget (ssname sel x)))) valF (atof (cdr (assoc 1 (entget (ssname sel x))))) som (+ som val) ) (if (not (equal valF 0.0)) (setq somF (+ somF valF) calc (+ calc val)) ) (setq x (+ 1 x)) ) (alert (strcat "\n Addition des cotes Sélectionnées (réelle) : " (rtos som) " .")) (if (not (equal calc 0))(alert (strcat "\n Addition des cotes Sélectionnées (Marquée) : " (rtos (+ (- som calc) somF)) " ."))) (princ) )
-
Salut, Un petit lisp rapide mais qui ne prends que les valeurs réelle, non forcée, des cotes. (defun c:adcot (/ SEL SOM VAL X) (setq sel (ssget '((0 . "DIMENSION"))) x 0 som 0) (repeat (sslength sel) (setq val (cdr (assoc 42 (entget (ssname sel x)))) som (+ som val) x (+ 1 x) ) ) (alert (strcat "\n Addition des cotes Sélectionnées (réelle) : " (rtos som) " .")) (princ) )
-
Salut (gile), merci. petit oubli de sous routine :
-
Ayet on a reçu nos boites de mise à jour ACAD 2008 !
Bred a répondu à un(e) sujet de Pieroka dans AutoCAD 2008
Pfffff !... Tu vas nous la faire tous les ans celle là ??? :P -
Allez, faut que je la fasse : c'est vrais que c'est un peu tard, pour une petite "mousse" !... .... désolé :P
-
Ok, (gile) .... comme d'habitude .... ;) Je suis encore plus épaté que ça fonctionne pour les vues ortho au scu !... Par contre, après quelque test lorsque la "variable" GILESELSCU et sur 1 (active) : - Quand on est en position SCU "normale", la selection reste bien "autocadienne" (avec couleur...) mais que si l'on fait un "valider" dans le "vide" avant ... et là j'abuse : - Vu que ça fonctionne pour toutes les commandes que l'on veut, n'y aurait t'il pas moyen de paramétrer le réacteur pour que la selection se fasse Avant la commande aussi ? (qu'il reconnaisse le clic gauche dans le vide en fait...)
