-
Compteur de contenus
2 523 -
Inscription
-
Dernière visite
-
Jours gagnés
23
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Fraid
-
Bonjour, Essaye de changé les (setq num (1+ num)) par (setq num (+ num 10)) dans cette partie (progn (setq num autolabel:start) (repeat (setq idx (sslength sel)) (setq obj (vlax-ename->vla-object (ssname sel (setq idx (1- idx))))) (if (wcmatch (vla-get-objectname obj) "AcDbBlockReference,AcDbMInsertBlock") (if (setq att (autolabel:getattribute obj)) (progn (vla-put-textstring att (strcat autolabel:prefix (autolabel:padzeros (itoa num) autolabel:length) autolabel:suffix ) ) (setq num (1+ num)) (autolabel:addowner obj) ) ) (if (and (= acblockcontent (vla-get-contenttype obj)) (wcmatch (setq blk (strcase (vla-get-contentblockname obj))) autolabel:blockname) (setq oid (autolabel:getattributetagid blk)) ) (progn (autolabel:setblockattributevalue obj oid (strcat autolabel:prefix (autolabel:padzeros (itoa num) autolabel:length) autolabel:suffix ) ) (setq num (1+ num)) (autolabel:addowner obj) ) ) ) ) ) ) et au debut de commencer avec autolabel:start 0 je ne te garantis rien
-
Yop Afficher une fenêtre sans bouton ok, qui s’éteint à la fermeture d'une appli. externe ce n'est pas si facile en fait. en DCL, si il n'y a pas de bouton, il est déclaré invalide. avec le popup d'un objet WScript pas moyen non plus j'ai regardé dans le dos_lib, non plus. j'envisage donc, soit de changer de point de vue et de lancer les scripts à travers une boite de dialogue banal qui disparaîtrait qu'une fois le process clos. ou en affichant une petite page html et la clore une fois le process clos (la, c'est une petite exploration...) c'est parti vers l'inconnu et au delà....
-
Tout à fait. la variable objs est une liste d'objet vla. mapcar applique la fonction vla-delete à chaque élément de la liste sinon, commence par des programmes plus simple. la création de bloc, même en autolisp, n'est pas facile. et une suite de command n'est pas vraiment un programme mais plus un script ou une macro. une piste pour sélectionner tout les objet d'un calque dans l'espace objet. ici le calque "0" (setq sel (ssget "_x" (list (cons 8 "0")(cons 410 "MODEL")))) déjà essaye de comprendre ceci bon courage
-
À la base, je souhaitais éliminer une fenêtre c'est pas pour en mettre une autre... je te propose plutôt un message qui apparait simplement dans l'invite de commande d'Autocad. (defun sf-imp-run (file / obj lprocs scrproc) (setq lprocs (p35-appli));liste des process en cours (princ "\nScript en cours d'exécution...") (if (findfile file) (if (vl-catch-all-error-p (vl-catch-all-apply 'vlax-invoke-method (list (setq obj (vlax-get-or-create-object "WScript.Shell")) "Run" file 0 :vlax-true ) ) ) (princ "\nFichier invalide") (progn (vlax-release-object obj) (foreach proc (p35-appli) (if (not (member proc lprocs))(setq scrproc proc));détermine le process en comparant ceux du debut et pendant ) (while (member scrproc (p35-appli));tant que le process est actif on attend (command "_.delay" 200) ) (princ "\nExécution du script terminée.") ) ) (princ "\nFichier introuvable") ) (princ) ) (defun p35-appli(/ apps lst meth1 meth2 WMI) (setq WMI (vlax-create-object "WbemScripting.SWbemLocator") meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil) meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process") ) (vlax-for item meth2 (setq lst (cons (vlax-get item 'CommandLine) lst)) ) (foreach item (list WMI meth1 meth2) (vlax-release-object item) ) (vl-remove nil lst) ) cela n'a d’intérêt que si effectivement cela prend du temps. sinon on en perd....
-
Yop J'ai modifié le code plus haut, les objets sont cette fois effacés. du tout, C'est une version lisp qui permet d’accéder aux objets activex. Si tu est débutant en Autolisp, il ne faut pas commencer par la. Tout d'abord de l'Autolisp "pur" je te conseil la page de gile Mon lien et l'aide du développer puis du courage et de la persévérance.
-
Bonjour luna, je ne me suis pas attardé sur le point d'insertion, c'est à lui de nous dire ou il le veut. et il faudrait faire aussi un contrôle du scu avant. peut etre qu'un simple getpoint suffit. je ne me suis pas occupé non plus des calques éventuellement gelés ou verrouillés. et si il faut supprimer les objets à la fin je privilégie le vla dans ce type de routines qui peut être appelé à manipuler beaucoup d'objets. Sinon, je vais souvent chez Lee, cela doit se voir dans mon code.
-
bonjour, je t'ai fait cela (defun c:lay2blk ( / acdc pt lay lvlay clay blk objs) (setq acdc (vla-get-activedocument (vlax-get-acad-object)) pt (vlax-3d-point '(0 0 0)) lvlay (vla-get-layers acdc) clay (vla-get-activelayer acdc) ) (vlax-for vlay lvlay (if (null(wcmatch (setq lay (vla-get-name vlay)) "0,*|*")) (progn (vla-put-activelayer acdc (vla-item lvlay lay)) (setq blk (vla-add (vla-get-blocks acdc) pt lay) objs nil) (vlax-for obj (vla-get-modelspace acdc) (if (= lay (vla-get-layer obj)) (setq objs (cons obj objs)) ) ) (vla-copyobjects acdc (vlax-safearray-fill (vlax-make-safearray vlax-vbObject (cons 0 (1- (length objs)))) objs) blk ) (mapcar 'vla-delete objs) (vla-insertblock (vla-get-modelspace acdc) pt lay 1 1 1 0) ) ) ) (vla-put-activelayer acdc (vla-item lvlay (vla-get-name clay))) (princ) ) le point d'insertion des blocs est 0,0,0 les objets d'origines sont effacés
-
le problème est quel travail. l’idéal est que le .bat retourne un fichier texte, la, c'est facile à détecter. car détecté sa fermeture, est plus compliqué mais faisable en établissant la liste des process en cours avec WMI par exemple. c'est une exploration que Patrick35 nous à partagé. mais je ne retrouve pas le post. C'est vrais, quand je lance un .bat en dehors d'Autocad, cela ne me gène pas du tout. Par contre quand tu l'appel dans une boucle lisp, la, c'est vraiment désagréable.
-
Bonjour, Si vous exécutez des scripts en .bat depuis un lisp, une vilaine fenêtre noire apparais aussi vite qu'elle disparais. Et bien, c'est finis. Je l'ai eu. (defun runscr (file / obj ret) (setq ret "Exécution terminée") (if (findfile file) ;si le fichier est bien présent (if (vl-catch-all-error-p ;si plantation (vl-catch-all-apply 'vlax-invoke-method (list (setq obj (vlax-get-or-create-object "WScript.Shell")) "Run" file 0 ;c'est ici que la console la ferme :vlax-true ) ) ) (setq ret "Fichier invalide") (vlax-release-object obj) ) (setq ret "Fichier introuvable") ) ret ) L'argument file est le chemin complet du .bat ex: "c:/MonDossier/MonFichier.bat" Répond un string quasiment implantable. s'utilise à la place de la fonction (startapp file) ou (command "_.shell" file) en fait j'utilise cette fonction depuis longtemps, mais pas pour des .bat. l'idée m'est venu d'un coup je partage, car cela a été une bonne prise de tête pour certain.
-
Bonjour, Effectivement, en Lisp ce n'est pas facile si on ne veut pas ouvrir les dessins, ObjetDBX et VLA oblige. Donc pour détacher les images des dessins contenus dans un dossier (vl-load-com) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:dtimg (/ axdoc lf dir) (if (setq dir (getdir) lf (vl-directory-files dir "*.dwg" 1)) (foreach f lf (vlax-for obj (vla-get-modelspace (setq axdoc (getaxdbdoc (strcat dir f)))) (if (= (vla-get-objectname obj) "AcDbRasterImage") (vla-delete (vla-item (vla-item (vla-get-dictionaries axdoc ) "ACAD_IMAGE_DICT") (vla-get-name obj) ) ) ) ) (vla-saveas axdoc (strcat dir f)) (vlax-release-object axdoc) ) ) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun getdir( / shell rep) (setq shell (vlax-create-object "Shell.Application") rep (vlax-invoke shell 'browseforfolder 0 "Sélectionnez le dossier" 512 "") ) (vlax-release-object shell) (strcat (vlax-get-property (vlax-get-property rep 'self) 'path) "\\") ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun getaxdbdoc (filename / axdbdoc release) (setq axdbdoc (vlax-create-object (if (< (setq release (atoi (getvar "ACADVER"))) 16) "ObjectDBX.AxDbDocument" (strcat "ObjectDBX.AxDbDocument." (itoa release)) ) ) ) (if (vl-catch-all-apply 'vla-open (list axdbdoc filename)) (not (vlax-release-object axdbdoc)) axdbdoc ) ) Étrangement, la méthode vla-detach ne concerne pas les images et je n'ai pas réussi à utiliser vla-remove pourtant prévue pour effacer les entrées dans un dictionnaire. Cela détache les images dans l'espace objet. ATTENTION, pas de retour en arrière possible.
-
Bonjour, Peut etre des champs dans les attributs?
-
[RÉSOLU] VLA : Echelle des hachures avec la méthode AddHatch
Fraid a répondu à un(e) sujet de Fraid dans Pour aller plus loin en LISP
Oups, désolé du dérangement j'avais mal fouillé les propriétés c'est vla-put-PatternScale -
[RÉSOLU] VLA : Echelle des hachures avec la méthode AddHatch
Fraid a posté un sujet dans Pour aller plus loin en LISP
Bonjour, J'utilise la méthode AddHatch pour hachurer des objets. (defun hachit ( motif sel ech / hach n vsel) (setq n -1) (repeat (sslength sel) (setq vsel (vlax-ename->vla-object (ssname sel (setq n (1+ n)))) hach (vla-addhatch (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) acHatchPatternTypePredefined motif :vlax-false acHatchObject ) ) (if (> (vla-get-length vsel) 4.0) (progn (vlax-invoke hach 'AppendOuterLoop (list vsel)) (vla-evaluate hach) ) ) ) ) qui fonctionne parfaitement, mais si je veux que mon motif de hachure ai une échelle de 5 je ne trouve pas de solution. Même en changeant la variable HPSCALE avant, cela ne sert à rien La méthode SetPattern non plus .... J'ai du rater une méthode. -
Rotation texte d'un type de ligne impossible
Fraid a répondu à un(e) sujet de rober dans AutoCAD 2020-2024
Bonjour, Je pense qu'il y a confusion pour l'orientation. La direction et le SCU. La direction : Format/Contrôle des Unités/Direction Ou pour le nord en haut : Est 0g. Si vous changez cette valeur, le SCU n'est pas modifié.(le sens du x et y) C'est ce changement que je trouve absurde. Il est évident que le SCU, par définition est appelé à être différent du SCG et doit être adapté au besoin dans chaque fenêtre de présentation. -
Rotation texte d'un type de ligne impossible
Fraid a répondu à un(e) sujet de rober dans AutoCAD 2020-2024
C'est quelque chose qui me parait absurde. Pas toi? -
Bonjour, A tu essayé avec vla-ArrayRectangular?
-
He bonjour, Si tu est encore hors de France, je pense que cela va être difficile à cause des filtres IP. Sinon ce n'est pas compréhensible.
-
Le monde de l'entreprise ne sera-t-il plus jamais comme avant ?
Fraid a répondu à un(e) sujet de Patrick Emin dans Pause café
He bonjour, J'ai déjà pris la crise de 2008 qui m'a fait passer de chef d'entreprise à auto-entrepreneur. Maintenant je ne vois pas en quoi je vais me transformer???????? Il y a déjà des entreprises de TP qui se passe de plans, ou un pauvre truc fait sur google earth... Je sait bien que je suis hors sujet, mais comment prendre du recul sur C'est l'oppose d'une entreprise. Vous vous voyez dire à votre banquier que vous ne voulez pas gagnez d'argent en plus.... C'est une période de contradiction qui va certainement mal se terminer, difficile d’être optimiste, heureusement que je les aime, car je regrette presque d'avoir fait 3 enfants... -
Bonjour, Sur youtube
-
Bonjour, Un logiciel équivalant à Illustrator. Mais gratuit et bien plus légé compatible avec Windows, Mac Os et Linux inkscape
-
une autre piste à explorer OpenClassRooms
-
[RESOLU] Est -il possible de refaire une boucle avec tblnext?
Fraid a répondu à un(e) sujet de LElemurien dans Débuter en LISP
+1 avec Didier Il faut tester, tester et retester -
Bonjour, La réponse est dans ta question, Wordpress... Si il faut un intermédiaire entre toi et ton site; c'est mort. Il faut contrôler la moindre ligne html et ne pas utiliser de logiciel pour ton site.
-
Bonjour, Tu peux y arriver comme cela (defun ChangAttrib (etiquette newtext) (if (ssget "_X" (list (cons 0 "INSERT"))) (vlax-for blk (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))) (foreach att (vlax-invoke blk 'GetAttributes) (if (= (vla-get-tagstring att) etiquette) (vla-put-textstring att newtext ) ) ) ) ) (princ) ) j'ai enlevé le progn qui servais à rien
-
VLA : Atteindre l'emplacement Géographique
Fraid a répondu à un(e) sujet de Fraid dans Pour aller plus loin en LISP
Je me suis planté d'aide... Je suis sur une 2015 et ouvert une aide 2019... L'objet GeoPositionMarker est absent de l'arbre.
