-
Compteur de contenus
6 374 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Patrick_35
-
Décalage de polyligne - 2 valeurs différentes
Patrick_35 a répondu à un(e) sujet de La Lozère dans Débuter en LISP
Salut Si j'ai bien compris, voici un exemple (setq ent (vlax-ename->vla-object (car (entsel)))) ; Sélection de la poly (vlax-invoke ent 'offset 30.0) ; Décalage d'un coté (vlax-invoke ent 'offset -30.0) ; Puis de l'autre @+ -
contrôle du chargement dll de modeler
Patrick_35 a répondu à un(e) sujet de Tramber dans Visual LISP
Salut Tu cherches à savoir si la dll est chargée. Il suffit donc de tester une fonction de la dll pour avoir la réponse. La fonction désirée est présente ? --> Oui, la dll est chargée. @+ -
contrôle du chargement dll de modeler
Patrick_35 a répondu à un(e) sujet de Tramber dans Visual LISP
Salut Tu peux tester si la fonction existe. Non --> à charger Un exemple qui me permet de savoir si la dll de (gile) est présente. (and (not (eval 'gc-vpthaw)) (setq dcl (findfile "VpLayerLisp.dll")) (if (< 18 (atoi (getvar 'acadver))) (vl-cmdf "_netload" "vplayerlisp_19.dll") (vl-cmdf "_netload" "vplayerlisp.dll") ) ) Et un autre qui me permet de savoir si je peux utiliser la progressbar des express tools (if (eval 'acet-ui-progress-done) (setq express T) ) @+ -
Sélection bloc par valeur d'attribut
Patrick_35 a répondu à un(e) sujet de Begood dans LISP et Visual LISP
Salut Pour la valeur de l'attribut, tu remplaces (setq str (strcase (getstring t "\nEntrez la ou les valeurs de l'attribut (Séparez les valeurs par une virgule) : "))) par (setq str (strcase "30")) Et pour sélectionner le bon bloc, tu remplaces (list '(0 . "INSERT") '(66 . 1) par (list '(0 . "INSERT") '(66 . 1) '(2 . "Bulle") @+ -
Gestion de caractères dans une chaine
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut Tu peux faire aussi, par exemple (vl-list->string (vl-remove (ascii "_") (vl-string->list "123_456_789"))) @+ -
Salut Sauf que tu devras le faire fenêtre par fenêtre. Comme l'indique x_all, tu as GEF, qui en 1 seule manip te fera le boulot. @+
-
quoté ou pas quoté ? comment le savoir ?
Patrick_35 a répondu à un(e) sujet de GEGEMATIC dans LISP et Visual LISP
Salut Et de cette manière ? (defun pw_egal_list (lst) (apply 'and (mapcar '(lambda(x)(equal (car lst) x)) (cdr lst))) ) @+ -
[RESOLU] Faire en sorte que les calques ajoutés n'apparaissent pas dans les anciennes présentations.
Patrick_35 a répondu à un(e) sujet de zza427 dans AutoCAD 2016
Salut Si, c'est tout à fait possible de faire un lisp avec les réacteurs, mais son utilité reste à démontrer, car avec un outil comme GEF, la manip est très rapide. @+ -
quoté ou pas quoté ? comment le savoir ?
Patrick_35 a répondu à un(e) sujet de GEGEMATIC dans LISP et Visual LISP
Salut Tu ne te sers pas de la bonne fonction pour comparer deux listes Par exemple (= '(1 2) '(1 2)) Retourne nil alors que (equal '(1 2) '(1 2)) Retourne T Donc, pour ton test, il faut faire (setq maliste '((1 2)(1 2))) (apply 'equal maliste) Pour ce qui est de la fonction quote, tu as cet excelent tuto de (gile) @+ -
[RESOLU] Faire en sorte que les calques ajoutés n'apparaissent pas dans les anciennes présentations.
Patrick_35 a répondu à un(e) sujet de zza427 dans AutoCAD 2016
Salut Tu as aussi GEF pour gérer les calques de toutes les fenêtres de présentations @+ -
"Des Spécialistes AutoCAD à votre écoute" le lundi 15 mai 2017
Patrick_35 a posté un sujet dans AutoCAD 2018
Préparez vous à une journée très spéciale le lundi 15 mai 2017 ! http://nsa38.casimages.com/img/2017/05/07/170507053747128892.jpg Pour la première fois en français, nos Expert Elite francophones répondront à toutes vos questions sur AutoCAD de 9:00 à 16:00 heure française, sur le forum AutoCAD. Vous avez des questions que vous avez toujours voulu poser? Venez passer quelques minutes, une heure ou deux, ou toute la journée (de 9:00 à 16:00) sur notre communauté! Comment ça marche? C'est facile, c'est gratuit, c'est "Des Spécialistes à votre écoute" Venez sur le forum AutoCAD, posez vos questions et attendez vous à des réponses rapides de la part de nos Expert Elite. Naturellement, c'est le principe de notre communauté, tout le monde peut répondre aux questions. PS: en savoir plus sur le programme Expert Elite http://nsa37.casimages.com/img/2017/05/07/17050705391294798.jpg -
Problème de vitesse de frappe clavier
Patrick_35 a répondu à un(e) sujet de pleels dans AutoCAD 2017
Une nouvelle génération d'Autocadien. Quand tu auras des petits enfants, ils vont être biberonnés à l'Autocad. :(rires forts): Autodesk pourra bien te donner une souscription à vie. @+ -
[Résolu] Incompréhension entre un LSP et un DCL
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
C'est là où c'est interessant de faire un Benchmark (defun ben_foreach() (foreach ele (list (cons "FlPtLong" Long) (cons "FlPtLarg" Larg) (cons "PlPtEpais" Epais)) (vlax-ldata-put "DenisH" (car ele) (cdr ele)) ) ) (defun ben_mapcar() (mapcar '(lambda(LstPut LstVal)(vlax-ldata-put "DenisH" LstPut LstVal)) '("FlPtLong" "FlPtLarg" "FlPtEpais") (list Long Larg Epais)) ) (benchmark (list '(ben_foreach) '(ben_mapcar))) Résultat Comme quoi ;) @+ -
[Résolu] Incompréhension entre un LSP et un DCL
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Pour trouver des exemples, dès que tu as une/des liste(s) à traiter par une boucle. Pour ton exemple, on peut très bien utiliser un foreach à la place d'un mapcar car le résultat du mapcar importe peu. Par exemple (foreach ele (list (cons "FlPtLong" Long) (cons "FlPtLarg" Larg) (cons "PlPtEpais" Epais)) (vlax-ldata-put "DenisH" (car ele) (cdr ele)) ) @+ -
[Résolu] Incompréhension entre un LSP et un DCL
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Tu peux faire (mapcar '(lambda(LstPut LstVal)(vlax-ldata-put "DenisH" LstPut LstVal)) '("FlPtLong" "FlPtLarg" "FlPtEpais") (list Long Larg Epais)) Ce qui revient à faire ce que tu as montré. @+ -
[Résolu] Incompréhension entre un LSP et un DCL
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
(gile) à très bien expliqué la fonction mapcar. Une fois que tu auras intégré que c'est un boucle qui traite les listes qui lui sont fournie et retourne les arguments (sous forme de liste) en fonction de la fonction indiqué (prédéfinie ou perso), tu auras fait un grand pas :D Le mieux, est de faire des tests, de regarder les résultats afin de bien comprendre la fonction. Je vois que tu commences à jouer avec les fonctions des boites de dialogues. N'oublie pas que c'est du texte et que l'on peut condenser/optimiser ses fonctions comme le montre (gile) avec la fonction action_tile. On peut même se servir de listes pour gérer ses affichages/actions. Chaque chose en son temps ;) @+ -
Salut Cela ne change que les calques, pas les couleurs forcées (idem pour les blocs). @+
-
Salut Tu peux utiliser un script qui lance un lisp @+
-
[Résolu] Incompréhension entre un LSP et un DCL
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonjour à vous tous Juste une précision. Les listes n'ont pas obligatoirement le même nombre d'arguments. Dans ce cas, ce qui est retourné comme résultat correspond à la liste la plus petite. Par exemple (mapcar 'strcat '("a" "b" "c" "d") '("a" "b")) Retourne ("aa" "bb") @+ -
Sévère ralentissement d'une boucle.
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Comme quoi, il ne faut pas rester sur ses acquis. Merci (gile) @+ -
[Résolu] Temps d'exécution d'une routine
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut Le plus important n'est pas de savoir quel est le temps pour ma routine, mais quelle est la fonction la plus rapide. Pour cela, tu as un outil reconnu dans la communauté du lisp --> Benchmark Un exemple test pour juste incrémenter 1 à un chiffre (benchmark (list '(1+ 1) '(+ 1 1))) Resultat @+ -
Documentation à l'attention des développeurs
Patrick_35 a répondu à un(e) sujet de (gile) dans AutoCAD 2018
Salut Merci (gile) @+ -
Sévère ralentissement d'une boucle.
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut Peut-être en utilisant le vlisp Essaye ceci (non testé) (princ "\nRemplissage des données géographiques des blocs.") (setq doc (vla-get-activedocument (vlax-get-acad-object))) (and (ssget "_X" '((0 . "INSERT")))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (ade_projsetsrc (ade_projgetwscode)) (ade_projsetdest "LL-RGF93") (setq pntLLRGF93 (ade_projptforward Coord)) ;;Ecriture des coordonnées dans un fichier CSV (write-line (strcat (vla-get-name ent) "," (rtos (car pntLLRGF93) 2 15) "," (rtos (cadr pntLLRGF93) 2 15)) FileCSV) (foreach att (vlax-invoke ent 'getattributes) (cond ((= (vla-get-tagstring att) "X") (vla-put-textstring att (rtos (car pntLLRGF93) 2 15)) ) ;_ Fin de cond ((= (vla-get-tagstring att) "Y") (vla-put-textstring att (rtos (cadr pntLLRGF93) 2 15)) ) ((= (vla-get-tagstring att) "Z-TN") (vla-put-textstring att (rtos (caddr Coord) 2 3)) ) ((= (vla-get-tagstring att) "NOMENTRGEO") (vla-put-textstring att "CERENE") ) ((= (vla-get-tagstring att) "DATERELEVE") (vla-put-textstring att (menucmd "M=$(edtime,$(getvar,date),DD/MO/YYYY)")) ) ((= (vla-get-tagstring att) "NOMPRESTACERTIGEO") (vla-put-textstring att NomOp) ) ((= (vla-get-tagstring att) "MARQUEAPP") (vla-put-textstring att NomMateriel) ) ((= (vla-get-tagstring att) "NUMSERIEAPP") (vla-put-textstring att NumMateriel) ) ((= (vla-get-tagstring att) "NUMSERIE") (vla-put-textstring att NumMateriel) ) ((= (vla-get-tagstring att) "INCERTXY") (vla-put-textstring att "5cm") ) ((= (vla-get-tagstring att) "INCERTZ") (vla-put-textstring att "5cm") ) ) ) ) (vla-delete sel) ) ) @+ -
Remplacement de blocs qui décale parfois
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Regarde la fonction trans Oui, et subst. Exemple non testé (setq ent (entget (car (entsel)))) (setq ent (subst (cons 2 "MON_BLOC") (assoc 2 ent) ent) (entmod ent) @+ -
Remplacement de blocs qui décale parfois
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut Regarde si tes blocs ont bien le même point d'insertion. Sinon, pour simplifier ton lisp, pour remplacer un bloc par un autre tout en conservant les caractéristiques du premier (mêmes les attributs), tu changes juste le code dxf 2 (le nom) du premier par le remplaçant. @+
