Aller au contenu

Titifonky

Membres
  • Compteur de contenus

    125
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Titifonky

  1. Bonjour, Je poste ce message pour donner un solution dans le cas ou le panneau Navigateur a disparu et qu'on a déjà tout essayé pour le faire réapparaitre (Onglet Afficher -> Interface Utilisateur -> Cocher Navigateur), changer la résolution de l'écran, s'être tapé la tête contre un mur, injurié l'ordinateur, etc. Je pense que mon problème est venu du fait que je travail sur deux écrans. Donc, il faut aller rechercher dans la base de registre la clé suivante : [HKEY_CURRENT_USER\Software\Autodesk\Inventor\RegistryVersion15.0\DockingAreasRibbon\BrowserBar] et modifier les deux valeurs de cette façon: "Left"=dword:00000000 "Right"=dword:00000000 Le panneau réapparait au point 0,0 de l'écran principal. Cela fonctionne avec Inventor 2011 sur Windows Vista. Bonne journée [Edité le 27/10/2010 par Titifonky]
  2. Bonjour, N'ayant pas autocad sur mon poste actuellement, je ne peux pas essayer ce que j'avance mais je pense que la fonction apply peut t'aider. Cette fonction permet de passer une liste d'argument à une fonction. ex: (apply 'min '(-5 3 2 6)) est équivalent à (min -5 3 2 6) avec une liste lstpt de type ((x1 y1 z1) (x2 y2 z2) ... (xn yn zn)) on pourrait faire ceci (mapcar '(lambda (x) (/ x (float (length lstpt)))) (apply 'mapcar (list '+ lstpt))) (apply 'mapcar '(+ lstpt)) permet de récupérer la liste des sommes respectives de chaque coordonnée (mapcar '(lambda (x) (/ x (float (length lstpt)))) (apply 'mapcar '(+ lstpt))) divise chaque somme par le nombre de points présent dans la liste lstpt Tout cela est à vérifier [Edité le 26/10/2010 par Titifonky]
  3. Bonjour, Est ce que la molette est configurée comme "bouton du milieu" dans le gestionnaire de la souris ?
  4. Bonjour, Tu peux utiliser la fonction STRTOK présente sur cette page http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=13174#pid130401 pour transformer ta chaine de caractère en liste ;;; STRTOK (Vladimir Nesterovsky) Retourne une liste de chaines ;;; ex : (strtok "abc,def" ",") -> ("abc" "def") (defun strtok (strng chs / len c l s cnt chsl) (setq chsl (strtol chs)) (setq len (strlen strng) s "" cnt (1+ len) ) (while (> (setq cnt (1- cnt)) 0) (setq c (substr strng cnt 1)) (if (member c chsl) (if (strp s) (setq l (cons s l) s "" ) ) (setq s (strcat c s)) ) ) (if (strp s) (cons s l) l ) ) Etienne
  5. Bonjour, En ligne de commande : _-layer _n noms des nouveaux calques
  6. Bonjour, En fouillant un peu dans la FAQ de Reini Urban http://autocad.xarch.at/news/faq/autolisp.html, je suis tombé sur sa librairie standard http://autocad.xarch.at/stdlib/_index.html. Un super outil, je n'en avais encore jamais entendu parlé sur CADxp alors je poste ce message pour ceux que ça pourrait intéresser. J'imagine que les "anciens" la connaisse, mais pour ceux qui débutent c'est une mine d'or. Rien de plus à dire, j'ai le nez dedans depuis ce matin.
  7. Titifonky

    variable INETLOCATION

    Avec AutoCAD 2010 j'ai : http://www.autodesk.com
  8. Bonjour Fraid, Pour utiliser _XATTACH en ligne de commande, tu dois mettre la variable FILEDIA à 0. Cette variable permet d'utiliser presque toutes les commandes utilisant des boîtes de dialogues à partir de la ligne de commande. je crois qu'il n'y a que la commande QSELECT qui ne peut pas être utilisée en ligne de commande. Pour la recherche dans un dossier, j'ai récupéré ces routines lisp qui permettent de faire des recherches dans des dossier (je crois que ça viens de (gile)) ;;; GET-SUBDIRS - retourne tous les sous-dossier d'un dossier ;;; path = chemin d'accès complet du dossier (defun get-subdirs (path) (apply (quote append) (cons (list path) (mapcar '(lambda (x) (get-subdirs (strcat path x "\\"))) (cddr (vl-directory-files path nil -1)) ) ) ) ) ;;; GET-DIR - retourne le chemin du dossier recherché ;;; pth = dossier de départ pour la recherche ;;; che = dossier à rechercher (defun get-dir (pth che / func file) (defun func (path cherche / dir) (setq dir (cddr (vl-directory-files path nil -1))) (mapcar '(lambda (x) (if (vl-string-search (strcase cherche) (strcase x)) (setq file (cons (strcat path x "\\") file) dir 'nil ) (func (strcat path x "\\") cherche) ) ) dir ) file ) (if (and pth che) (func pth che) ) ) ;;; GET-FILES-SUBDIRS - retourne une liste des fichiers contenu dans le dossier et sous-dossier ;;; RootPath = chemin du dossier ;;; ext = extension des fichiers à lister (defun get-files-subdirs (RootPath ext) (foreach path (get-subdirs RootPath) (setq ListFilesFullPath (append ListFilesFullPath (mapcar '(lambda (fileName) (strcat path fileName)) (vl-directory-files path ext 1) ) ) ) ) ) Bonne journée
  9. Titifonky

    sélection par polygone

    Encore trop tard
  10. Titifonky

    sélection par polygone

    Tu écrit : (and [surligneur](setq n -1) ;c'est en trop[/surligneur] (setq pt1 (getpoint "\nSélectionnez le premier point: ")) (setq rot (getangle pt1 "\n \n \nSélectionnez le deuxième point: ")); (setq pnt1 (getpoint "\nSélection des blocs : Sélectionnez le premier coin : ") lp pnt1 pntlst (list pnt1)) (while (setq pnt2 (getpoint lp "\nSélectionner le point suivant ou taper ENTRER pour valider: ")) (grdraw lp pnt2 8 1) (setq pntlst (cons pnt2 pntlst) lp pnt2)) [surligneur](redraw);cette fonction renvoie toujours 'nil donc ta condition n'est pas validée[/surligneur] ) J'ai dis une bêtise pour la fonction "getangle", on a besoin d'un angle en radians Le code nettoyé : (defun C:RB30 (/ rot n ss ent elst pt1) (if (and (setq pt1 (getpoint "\nSélectionnez le premier point: ") rot (getangle pt1 "\nSélectionnez le deuxième point: ") pnt1 (getpoint "\nSélection des blocs : Sélectionnez le premier coin : ") lp pnt1 pntlst (list pnt1)) (while (setq pnt2 (getpoint lp "\nSélectionner le point suivant ou taper ENTRER pour valider: ")) (grdraw lp pnt2 8 1) (setq pntlst (cons pnt2 pntlst) lp pnt2))) (if (setq ss (ssget "_WP" pntlst '((0 . "INSERT")))) (progn (setq n -1) (while (setq ent (ssname ss (setq n (1+ n)))) (setq elst (entget ent)) (entmod (subst (cons 50 rot) (assoc 50 elst) elst)))))))
  11. Titifonky

    sélection par polygone

    Comme écrit dans l'aide Autocad, la fonction "getangle" renvoie un angle en radian. Il faut donc le transformer en degré ( x 180 / PI)
  12. Titifonky

    sélection par polygone

    mince, trop tard :)
  13. Titifonky

    sélection par polygone

    Bonjour, Ca fonctionne bien chez moi si j'initialise ma variable avant le "while". Je ne pense pas que l'utilisation du "and" dans le bloc soit la meilleur solution. La fonction "progn" permet de regrouper des fonctions dans un même bloc et de retourner la valeur de la dernière expression évaluée. (if (setq ss (ssget "CP" pntlst '((0 . "INSERT") (2 . "ED10")))) ([surligneur]progn (setq n -1) [/surligneur] (while (setq ent (ssname ss (setq n (1+ n)))) (setq elst (entget ent)) (entmod (subst (cons 50 rot) (assoc 50 elst) elst)))))
  14. Titifonky

    Cotation à l\'envers

    Un problème de SCU sûrement ?
  15. Bonjour, Désolé de m'immiscer dans la conversation mais j'utilise ce logiciel pour manipuler les fichiers http://www.antp.be/software/renamer/fr Tu fais un glisser-déposer dans la fenêtre et tu clique sur "opération" pour sélectionner les modification à appliquer sur tous les fichiers.
  16. Bonjour à tous, Comme c'est écrit dans le titre, j'ai eu envie de classer et gérer mes routines collectées au fil du temps sur les forums. Pure folie me dite vous que de mettre de l'ordre dans un ordinateur, mais bon, là j'en peux plus. Actuellement, j'ai un dossier contenant de multiples fichiers avec un nom devant m'évoquer le contenu de ce fichier. A moins de les utiliser tous les jours, on oublie vite ce qu'il y a dedans et le titre du fichier n'aide pas forcément. J'ai donc utilisé mon ami Google et j'y ai trouvé de formidables outils tel que CVS ou Subversion mais ils me paraissent être un peu trop "complexe" pour l'utilisation que je veux en faire. J'ai trouvé ça : http:// http://www.vbfrance.com/codes/LOGICIEL-GESTION-BOUTS-CODE_7761.aspx pour le code VB, une bonne idée. Y a t-il un équivalent pour le lisp ou tout autre langage. J'imagine aussi que quelqu'un a déjà réfléchi à ce problème ? Donc, question : Quelles sont les solutions pour gérer, classer, annoter des routines ? Etienne [Edité le 21/6/2010 par Titifonky]
  17. Bonjour, Et ça ? Il faut sélectionner les cellules à modifier. Sub Modifier_lien() Dim Doc As Workbook Dim Cell As Range Dim OldStr As String Dim NewStr As String Dim OldHp As String Dim NewHp As String 'Chemin à modifier OldStr = "\\Serveur\Datas\Commercial\2008\" NewStr = "\\Serveur\Datas\Bureau d'étude\10-Archives\2008\" Application.Calculation = xlManual Set Doc = Application.ActiveWorkbook For Each Cell In Selection 'Verifie si la cellule contient des liens hypertexte If Cell.Hyperlinks.Count > 0 Then 'Recupère l'adresse du lien sous forme de chaine OldHp = Cell.Hyperlinks(1).Address 'Remplace l'ancienne chaine par la nouvelle NewHp = Replace(OldHp, OldStr, NewStr) 'Supprime tous les liens hypertexte de la cellule Cell.Hyperlinks.Delete 'Affecte le nouveau lien hypertexte Doc.ActiveSheet.Hyperlinks.Add Anchor:=Cell, Address:=NewHp End If Next Cell Application.Calculation = xlAutomatic End Sub Etienne
  18. Bonsoir, Un début ? (defun c:croix (/ sel i obj ent) ;; Trace une croix dans le cercle (defun trc_cercle (obj) (setq d (/ (cdr (assoc '40 obj)) (sqrt 2.0)) ct (cdr (assoc '10 obj))) (entmake (list '(0 . "LINE") (cons '10 (mapcar '+ ct (list d d 0))) (cons '11 (mapcar '- ct (list d d 0))) ) ) (entmake (list '(0 . "LINE") (cons '10 (mapcar '+ ct (list d (* -1 d) 0))) (cons '11 (mapcar '- ct (list d (* -1 d) 0))) ) ) ) ;; Trace une croix dans un rectangle (defun trc_rect (obj) (setq obj (vl-remove-if-not '(lambda (x) (= (car x) 10)) obj)) (entmake (list '(0 . "LINE") (nth 0 obj) (cons '11 (cdr (nth 2 obj))) ) ) (entmake (list '(0 . "LINE") (nth 1 obj) (cons '11 (cdr (nth 3 obj))) ) ) ) ;; Fonction principale (setq i -1 sel (ssget '((-4 . " (0 . "CIRCLE") (0 . "LWPOLYLINE") (-4 . "OR>") ) ) ) (if sel (while (setq i (1+ i) obj (ssname sel i)) (setq obj (entget obj) ent (cdr (assoc '0 obj))) (cond ((= ent "CIRCLE") (trc_cercle obj)) ((= ent "LWPOLYLINE") (trc_rect obj)) ) ) ) (princ) ) Sujet à déplacer dans le forum "Débuter en lisp" ?
  19. Bonjour, 1 testeur de plus
  20. Bonjour, Après avoir un peu étudié ton fichier, je n'ai pas bien compris ta demande. Tu souhaite incrémenter un compteur à chaque utilisation de la commande ? Ca bug sur la fonction vla-addMtext, il y a trop de paramètres. Le while ne sert à rien, à part obtenir une valeur de 10 à chaque appel de la fonction. (vla-addMtext Space (vlax-3d-point (trans ins_txt 1 0)) 0.0 (defun c:compteur () setq compteur 1) (while (<= compteur 10) (setq compteur (1+ compteur)) ) (strcat "{\\fComic Sans Ms|b0|i0|c0|p34;" "\\PCourbe = " (strcat "\nCompteur = " (itoa compteur)) "\\PAngle = " (angtos (/ seg_len rad) (getvar "AUNITS") 4) "\\PRay = " (rtos rad 2 3) "\\PTg = " (rtos (distance pt_start pt_vtx) 2 3) "\\PLc = " (rtos seg_len 2 3) "\\PFL = " (rtos (- (distance pt_cen pt_vtx) (abs rad)) 2 3) "\\PCorde = " (rtos (distance pt_start pt_end) 2 3) "}" ) ) Avec ce code, la variable globale COMPTEUR est incrémentée de 1 à chaque appel de la fonction (vl-load-com) (setq COMPTEUR 0) (defun grdraw-id_arc (/) (grdraw (trans pt_start 0 1) (trans pt_vtx 0 1) 1) (grdraw (trans pt_vtx 0 1) (trans pt_end 0 1) 1) (grdraw (trans pt_start 0 1) (trans pt_cen 0 1) 3) (grdraw (trans pt_cen 0 1) (trans pt_end 0 1) 3) ) (defun add_mt_arc (/ ins_txt h_t) (initget 9) (setq ins_txt (getpoint (trans pt_cen 0 1) "\nPoint d'insertion des informations de l'arc?: ")) (initget 6) (setq h_t (getdist ins_txt (strcat "\nTaille du texte <" (rtos (getvar "textsize")) ">: "))) (if (null h_t) (setq h_t (getvar "textsize")) (setvar "textsize" h_t)) (setq COMPTEUR (1+ COMPTEUR)) (vla-addMtext Space (vlax-3d-point (trans ins_txt 1 0)) 0.0 (strcat "{\\fComic Sans Ms|b0|i0|c0|p34;" "\\PCourbe = " (strcat "\nCompteur = " (itoa COMPTEUR)) "\\PAngle = " (angtos (/ seg_len rad) (getvar "AUNITS") 4) "\\PRay = " (rtos rad 2 3) "\\PTg = " (rtos (distance pt_start pt_vtx) 2 3) "\\PLc = " (rtos seg_len 2 3) "\\PFL = " (rtos (- (distance pt_cen pt_vtx) (abs rad)) 2 3) "\\PCorde = " (rtos (distance pt_start pt_end) 2 3) "}" ) ) (entmod (append (vl-remove-if (function (lambda (x) (or (member (car x) '(90 63 421 45)) (< 419 (car x) 440) ) ) ) (entget (entlast)) ) (list '(90 . 1) '(63 . 41) '(421 . 16770196) '(45 . 1.5) ) ) ) (entupd (entlast)) ) (defun c:ARTDB (/ js n AcDoc Space ename obj pr nb typ_obj oldim oldlay pt_start pt_end pt_cen rad alpha pt_vtx dist_start dist_end seg_len seg_bulge) (princ "\nSélectionner des Arcs/PolyArcs .") (setq js (ssget '((-4 . " (-4 . " (0 . "POLYLINE") (-4 . " (-4 . "&") (70 . 126) (-4 . "NOT>") (-4 . "AND>") (0 . "LWPOLYLINE,ARC") (-4 . "OR>")) ) n -1 ) (cond (js (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) nb 0 ) (cond ((null (tblsearch "LAYER" "Info ARTDB des Arcs")) (vlax-put (vla-add (vla-get-layers AcDoc) "Info ARTDB des Arcs") 'Color "1") ) ) (setq oldim (getvar "dimzin") oldlay (getvar "clayer") ) (setvar "angbase" 0) (setvar "angdir" 0) (setvar "dimzin" 0) (setvar "clayer" "Info ARTDB des Arcs") (repeat (sslength js) (setq ename (ssname js (setq n (1+ n))) obj (vlax-ename->vla-object ename) pr -1 nb 0 ) (setq typ_obj (vla-get-ObjectName obj)) (if (eq typ_obj "AcDbArc") (progn (setq pt_start (vlax-get obj 'StartPoint) pt_end (vlax-get obj 'EndPoint) pt_cen (vlax-get obj 'Center) rad (vlax-get obj 'Radius) alpha (* (vlax-get obj 'TotalAngle) 0.5) seg_len (vlax-get obj 'ArcLength) pt_vtx (polar pt_cen (+ (vlax-get obj 'StartAngle) alpha) (+ rad (* rad (1- (/ 1 (cos alpha)))))) nb (1+ nb) ) (grdraw-id_arc) (add_mt_arc) ) (repeat (fix (vlax-curve-getEndParam obj)) (setq dist_start (vlax-curve-GetDistAtParam obj (setq pr (1+ pr))) dist_end (vlax-curve-GetDistAtParam obj (1+ pr)) pt_start (vlax-curve-GetPointAtParam obj pr) pt_end (vlax-curve-GetPointAtParam obj (1+ pr)) seg_len (- dist_end dist_start) seg_bulge (vla-GetBulge obj pr) ) (if (not (zerop seg_bulge)) (progn (setq rad (/ seg_len (* 4.0 (atan seg_bulge))) alpha (+ (angle pt_start pt_end) (- (* pi 0.5) (* 2.0 (atan seg_bulge)))) pt_cen (polar pt_start alpha rad) pt_vtx (polar pt_start (- alpha (* pi 0.5)) (* rad (/ (sin (* 2.0 (atan seg_bulge))) (cos (* 2.0 (atan seg_bulge)))))) nb (1+ nb) ) (grdraw-id_arc) (add_mt_arc) ) ) ) ) ) (setvar "dimzin" oldim) (setvar "clayer" oldlay) ) ) (princ) )
  21. Bonjour, Je ne suis pas un crack en VBA mais je peux dire qu'une fonction renvoie forcément une valeur. Si le type de la valeur renvoyée par la fonction n'est pas déclarée, c'est un Variant. [Edité le 19/2/2010 par Titifonky]
  22. Super cette nouvelle version, Je n'ai plus aucun plantage sur mon pc portable. Encore merci Giles
  23. Bonjour Gile, Je viens d'essayer la nouvelle version. Plus de plantage quand j'utilise 'CTR sur des polylignes fermées mais toujours sur les polylignes ouverte. Quand je lance une commande et que j'appelle 'CTR pour récupérer le CDG. Si j'appuie sur ECHAP pour quitter la commande, ça plante. Pour mon cas, je pense que cela est dû à la puissance de mon PC portable, c'est un vieil ordinateur. Je n'ai pas ce problème sur mon poste de bureau. Et encore merci pour cette application. [Edité le 3/2/2010 par Titifonky]
  24. Je travaille actuellement sur un PC portable. Je viens d'essayer sur la même version d'AutoCAD mais sur mon PC de bureau et je n'ai plus de problème. Mon PC portable est pourtant à jour. Je ne vois pas trop d'où cela viens.
  25. La DLL est bien enregistrée en local. Je l'ai mise dans le dossier d'Autocad 2008. le message : ERREUR FATALE : Unhandled Access Violation Reading 0x73757461 Exception at 73757461h As tu besoin du rapport d'erreur d'AutoCAD ?
×
×
  • 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é