pingoo666
Membres-
Compteur de contenus
50 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par pingoo666
-
Bonjour, je cherche à faire un lisp pour faire des légendes sur certains blocs, pour faire simple qui affiche les propriétés dynamiques dans un MTEXT avec des champs. Il me faut donc batir un string de ce genre : %<\AcObjProp Object(%<\_ObjId 8796087799584>%).Parameter(1).UserVariable \f "%lu6">% Et je sèche un truc : Le Parameter(1) Je pensais que c'était simplement l'index du paramètre qui est retourné par GetDynamicBlockProperties... Mais en fait non. Sur le dessin de test ci joint on a deux propriétés dynamiques user1 et user3, sachant que j'ai crée et supprimé user2 poour l'exemple. User1 a comme index 1 User3 a comme index 3 Et si on fait un GetDynamicBlockProperties la liste n'a que deux items... Bref je sèche. existe il un moyen d'avoir cet index à partir du nom de la propriété personnalisée ? Merci d'avance
-
Bon, vous êtes tous des grands malades. j'avais commencé à m'enbarqué dans des whiles sans fin... Merci beaucoup !
-
Bonjour, Je cherche à faire une fonction qui prend comme valeur un string et qui retourne la liste de tous les combinaisons ou le espaces seraient remplacés (ou pas) par des sauts de ligne Je sais c'est pas clair... Un exemple : "bonjour a tous" retournera : "bonjour a tous" "bonjour/na tous" "bonjour a/ntous" "bonjour/na/ntous" le /n représentant le saut de ligne. J'espérait pouvoir le faire de manière récursive mais je sèche... Des iddées ? Merci d'avance !
-
Bonjour, Je ne sais pas si cette discussion a sa place ici mais je me lance. Il y a un assez gros projet en lisp que j'aimerais réaliser depuis quelques temps, c'est un programme qui récupére des tuiles géoréférencées sur le net (google, openstreetmaps...), qui les reprojette si besoin et qui les met tout gentiment en xref. J'ai une bonne vision des outils exterieurs à utiliser (gdal pour ne pas le nommer...) mais je pense manquer un peu de connaissance en lisp. Disons que je suis un bon bricoleur mais la c'est un peu plus. Des personnes seraient elles intéressées pour faire ce projet avec moi, sachant que le but est de le mettre à disposition pour tous ! Merci d'avance !
-
Bonjour aux lispeurs, J'aurais besoin de télécharger un fichier sur un serveur internet. j'ai trouvé cette fonction sur un autre forum : (defun L12_GetFileFromURL (url path / utilObj tempPath newPath) ;; © RenderMan 2011, CADTutor.net ;; Example: (download "http(s)://username:password@server/source.ext" (getvar 'dwgprefix)) (vl-load-com) (setq utilObj (vla-get-utility (vla-get-activedocument (vlax-get-acad-object)))) (if (= :vlax-true (vla-isurl utilObj url)) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-GetRemoteFile (list utilObj url 'tempPath :vlax-true))) (prompt "\n <!> Error Downloading File From URL <!> ") (progn (if (findfile (setq newPath (strcat path (vl-filename-base url) (vl-filename-extension url)))) (vl-file-rename newPath (setq voidPath (strcat (vl-filename-directory newPath) "\\void_" (vl-filename-base newPath) "_" (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD-HH-MM-SS)") (vl-filename-extension newPath))))) (vl-file-copy tempPath newPath) (vl-file-delete tempPath))) (prompt "\n <!> Invalid URL <!> ")) (vl-catch-all-apply 'vlax-release-object (list utilObj)) (princ) ) Elle fonctionne bien sauf dans un cas : le fichier que je dois récupérer n'a pas d'extension et la ca foire, le fichier généré est vide. Une fonction crée par patrick_35 me ressort une erreur dans tous les cas : (defun download (url dir / byte fic file fso http ok tbl taille) (setq http (vlax-create-object "MSXML2.XMLHTTP") fso (vlax-create-object "Scripting.FileSystemObject") file (strcat dir (vl-filename-base url) "2" (vl-filename-extension url) ) ) (vlax-invoke-method http 'open "get" url :vlax-false) (if (vl-catch-all-error-p (vl-catch-all-apply 'vlax-invoke (list http 'send)) ) (princ (strcat "\nLe lien " url " n'est pas valide.")) (if (eq (vlax-get http 'status) 200) (if (vl-catch-all-error-p (setq taille (vl-catch-all-apply 'vlax-invoke (list http 'getResponseHeader "Content-Length") ) ) ) (princ "\nErreur de lecture sur la taille du fichier.") (if (< (atoi taille) (vlax-get (vlax-invoke fso 'getdrive (substr (vlax-invoke fso 'getabsolutepathname file) 1 1) ) 'freespace ) ) (progn (princ "\nTéléchargement en cours...") (princ) (while (not (eq (vlax-get http 'readystate) 4)) (vla-eval (vlax-get-acad-object) "DoEvents") ) (setq tbl (vlax-safearray->list (vlax-variant-value (vlax-get-property http 'responsebody)) ) ) (if (vl-catch-all-error-p (setq fic (vl-catch-all-apply 'vlax-invoke (list fso 'createtextfile file) ) ) ) (princ (strcat "\nImpossible de créer le fichier " file)) (progn (foreach byte tbl (vlax-invoke fic 'write (vl-list->string (list byte))) ) (vlax-invoke fic 'close) (setq ok T) ) ) ) ) ) (princ (strcat "\n" (vlax-get http 'statustext) "...Erreur " (itoa (vlax-get http 'status)) "." ) ) ) ) (vlax-release-object http) (vlax-release-object fso) ok ) C'est l'erreur "code caractère de la liste incorrect: 4233" Une idée ? Merci d'avance !
-
Lisp et double clic
pingoo666 a répondu à un(e) sujet de pingoo666 dans Pour aller plus loin en LISP
je connais les réacteurs et dans ce cas précis je ne pense pas que ce soit la bonne solution. Pour donner le contexte j'ai crée des blocs aves des propriétés peronnalisées et en cas de double clic autocad ouvre une fenetre de dialogue user friendly. Et en cas de réacteur soit je dois les recontruire à l'ouverture du dessin sois en cas de persistant ca va mettre un bordel monstre en cas de transmission extérieure du dessin. c'est un truc genre (polibec) que je cherchais qui reste cantonné aux utilisateurs de ma société. -
Bonjour, j'aimerai rendre certains de mes lisp plus user friendly et pour se faire il faudrait qu'il puissent s'éxécuter avec un double clic (sur un bloc ou une polyligne). Mais j'ai du mal à comprendre comment faire. Quelqu'un pourrait il me fournir un exemple avec un pitilisp qui récupère le ename de l'objet double cliqué... Merci d'avance !
-
Merci pour la fonction mais je procède déja comme ça. En l'insérant il perd le caractère annotatif. le seul moyen que j'ai trouvé c'est de mettre le bloc dans un autre bloc et d'insérer le second bloc...
-
En fait le bloc que j'insère est un fichier extérieur qui lui a la propriété annotative. Globalement j'ai créé un fichier toto.dwg et je l'ai rendu annotatif et tout. Si je l'insère par les palettes d'outil ou le design center il est annotatif. par contre si je me sers de vla-insertblock là ca coince il perd son annotativité. Comprends pas.
-
Bonjour, J'ai un soucis avec les blocs annotatifs. J'ai crée une fonction pour légender automatiquement des objets (pour les curieux ca met une étiquette tampon/radier sur un regard) et j'ai un soucis : quand je demande à la fonction d'insérer le bloc de légende si il n'est pas dans le dessin, le bloc inséré perd son statut annotatif et donc tout son intéret pour moi (orientation automatique et tout) Existe il un moyen en lisp de changer les propriétés du bloc une fois inséré : le rendre annotatif le rendre orientable selon la vue le rendre inexplosable Merci d'avance !
-
Propriétes de calques des xrefs
pingoo666 a répondu à un(e) sujet de pingoo666 dans Pour aller plus loin en LISP
Merci a tous les deux. Je verrai ca demain mais ces deux fonction ont l'air prometteuses ! J'ai reussi a faire ce que je voualis mais on passe par un visretain et autant d'états de calques que de fenetres ce qui n'est pas très élégant, les solutions proposées ici sont moins "gadget" -
Propriétes de calques des xrefs
pingoo666 a répondu à un(e) sujet de pingoo666 dans Pour aller plus loin en LISP
Bonjour, merci pour ta réponse. Le seul soucis c'est que mes paramètres de visibilité sont gérés dans les fenetres et la ca pète tout... -
Bonjour, J'ai un soucis que je n'arrive pas a résoudre. Je travaille avec des xrefs et assez souvent la couleur ou le type de ligne de d'un calque de l'xref change. Par exemple on imagine que les bordures qui étaient en bleu passent en rouge dans l'xref, et je vousrait que ce soit la même chose dans le fichier de présentation. jusqu'a présent pour modifier ces propriétés dans mon dessins, c'est soit on détache on rattache, soit VISRETAIN, ce qui est un peu lourd, surtout que j'ai souvent des états de visibilité assez alambiqués. J'aimerais donc écrire un lisp permettant de récupérer les données de calque de l'xref et de les utiliser dans mon dessin et c'est sur la partie "récupération des données de l'xref" que je bloque. une idée ? Merci d'avance !
-
Bonjour, Je suis en train de creuser le vaste sujet de l'annotativité sous autocad, et j'ai un soucis avec les lignes de repères multiples. Globalement je dois souvent gérer des dessins avec plusieurs orientations et j'aimerais que le texte de la cote soit toujours horizontal. Toutefois, si j'arrive à laisser horizontal un texte ou un bloc je sèche pour les lignes de repères, en effet le texte reste comme inséré dans l'espace papier. Est ce que je rate un truc ? merci d'avance pour vos réponses et/ou pistes !
-
Bonjour, je suis à la recherche d'une pitite routine permettant de manipuler les fichiers excels. J'ai essayé de trouver mon bonheur en en cherchant dans IXL mais bon le code est trop pointu pour moi (Patrick_35 tu n'es pas humain...). Je ne comprend même pas les étapes :( Personne n'aurait un truc simple qui prend comme argument le chemin du fichier, la feuille, la cellule et qui retourne la valeur ? De même quelque chose qui permet d'écrire dans ce même tableau ? Merci d'avance !
-
Bonjour à tou(te)s J'ai un pitit soucis sur un de mes lisps : globalement quand je crée un calque il doit me demander un string pour que je modifie le nom du calque. Je me suis servi du réacteur :vlr-objectAppended pour qu'il "écoute" la création d'objet et ensuite je filtre pour savoir si c'est un calque qui répond a mes besoins (en gros XXX dans le nom). Le problème c'est qu'il me pose la question du string deux fois... Cela ne viens pas d'un réacteur doublement définit car je les détruit tous avant de charger la fonction. Je vous met le code en dessous si vous avez une idée... (defun test2 (reactor_object obj /) (princ "ded") (setq en_obj (cadr obj) eg_layer (entget en_obj) st_type (cdr (assoc 0 eg_layer)) ) (if (= st_type "LAYER") (progn (setq st_nom (cdr (assoc 2 eg_layer))) (addlay en_obj st_nom) ) ) (princ) ) (defun addlay (en_obj st_nom / eg_layer st_echelle st_layer) (setq eg_layer (entget en_obj) st_echelle (getstring "\nChoix de l'échelle :") st_layer (vl-string-subst st_echelle "XXX" st_nom) ) (setq eg_layer (subst (cons 2 st_layer) (assoc 2 eg_layer) eg_layer) ) (princ) ) Merci d'avance pour vos idées !
-
Bonjour, Je sui à la recherche d'une méthode ou d'un script permettant de réaliser un suivez moi le long de plusieurs chemins.. En gros j'ai des lignes dans un calque et je voudrait leur appliquer à toute la commande suivez moi (avec la meme face...) comment procéder ? Merci d'avance !
-
[résolu] Réacteur + bloc dynamique... Le retour
pingoo666 a répondu à un(e) sujet de pingoo666 dans Pour aller plus loin en LISP
Non ils ne sont pas persistants, j'y ai déjà pensé. En fait j'ai l'impression que quand on essaye de "tuer" un réacteur dans la fonction qu'il appelle ça ne marche pas. (vlr-remove-all) semble fonctionner, car si après je fais (vlr-reactors) ca me renvoie nil. Par contre le réacteur fonctionne toujours... Et si je fais (vlr-remove-all) en dehors du callback là c'est bon le réacteur est bien désactivé. A croire qu'il reste en mémoire mais qu'il n'est plus dans la base... -
[résolu] Réacteur + bloc dynamique... Le retour
pingoo666 a répondu à un(e) sujet de pingoo666 dans Pour aller plus loin en LISP
(gile) je me suis servi de ta méthode. j'aime beaucoup l'usage que tu fait de (and) c'est très élégant. -
[résolu] Réacteur + bloc dynamique... Le retour
pingoo666 a répondu à un(e) sujet de pingoo666 dans Pour aller plus loin en LISP
Pas après un (vlr-remove-all), mais peut-être la variable qui n'a pas été remise à zéro Un bout de code pour lister les réacteurs (defun c:lstrea(/ eve rea) (foreach rea (vlr-reactors) (foreach eve (cdr rea) (princ "\nFamille du réacteur ") (princ (car rea)) (princ "\nEvènement : ") (princ (vlr-reactions eve)) ) ) (princ) ) @+ Je suis d'accord que normalement le vlr-remove-all "tue" tous les réacteurs mais la ca ne marche pas. j'ai aucun réacteur actif d'après la commande (vlr-reactors) mais ça marche quand même... -
[résolu] Réacteur + bloc dynamique... Le retour
pingoo666 a posté un sujet dans Pour aller plus loin en LISP
Ayant réglé mon problème avec les blocs dynamiques dans le précédent sujet, je suis confronté à un nouveau problème. J'ai un bloc dynamique avec deux paramètres : un étirement polaire et un état de visibilité. En fait j'aimerai que l'état de visibilité dépende de la valeur de l'étirement (de l'angle pour être précis). Donc j'ai crée un réacteur sur l'évènement : (:vlr-objectClosed . bloc_update) La fonction bloc_update est donc déclenchée quand je relâche la poignée d'étirement. jusque la ça marche Le problème c'est que j'aimerai que dans la fonction bloc_update un état de visibilité du bloc soit modifié. J'essaye de coder le truc : PAF ! erreur fatale pour cause de boucle infinie. (indépendamment du réacteur la routine d'état de visibilité marche) J'ai essayer de désactiver le réacteur avec (vlr-remove-all) Mais non seulement ça plante encore mais en plus le réacteur est toujours actif... Qu'ai je oublié ? Merci d'avance ! [Edité le 5/11/2008 par pingoo666] -
[résolu] Copier un string vers le presse papier
pingoo666 a répondu à un(e) sujet de pingoo666 dans Pour aller plus loin en LISP
Merci beaucoup pour vos réponses. j'ai choisi la réponse américaine... Je trouve le code un peu bidouillage, c'est etrange qu'il n'y ai pas une méthode plus directe. Mais ça marche (et bien en plus) est c'est l'essentiel. -
[résolu] Copier un string vers le presse papier
pingoo666 a posté un sujet dans Pour aller plus loin en LISP
Bonjour, Je recherche un moyen de copier un string (dans le cas qui m'intéresse c'est les coordonnées d'un point mais ca peut etre n'importe quoi) dans le presse papier pour pouvoir l'intégrer dans un autre logiciel) Existe il un moyen ? Merci d'avance ! [Edité le 4/11/2008 par pingoo666] -
[résolu] Réacteur + bloc dynamique
pingoo666 a répondu à un(e) sujet de pingoo666 dans Pour aller plus loin en LISP
En fait j'ai trouvé.... Il suffit d'utiliser : :vlr-objectClosed :D -
Bonjour, Je suis en train d'essayer de faire fonctionner ensemble les réacteurs et les blocs dynamiques, mais j'ai un petit soucis. Lorsque je modifie mon bloc (typiquement un étirement polaire) il me donne les valeurs correspondant à l'état précédent. Typiquement imaginons un bloc avec les valeurs 5 et 14 pour l'angle et la distance Je me sers de la poignée dynamique afin de fixer les valeur à 8 et 17 et là le réacteur est déclenché à l'aide de (vlr-object-reactor (list entp) nil '((:vlr-modified . getprop)) Et ça me retourne les valeurs 5 et 14... Je me sers de la fonction getprop dans d'autres routines ou elle fonctionne parfaitement donc elle n'est pas en cause je pense. Par contre quand je déplace tout le bloc ou quand je change son orientation ca marche... Des idées ? Merci d'avance ! [Edité le 4/11/2008 par pingoo666]
