-
Compteur de contenus
4 029 -
Inscription
-
Dernière visite
-
Jours gagnés
21
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par DenisHen
-
[Résolu] Problème d'attribution d'une variable dans un bloc
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut Patrick_35, et merci. C'est curieux, ça ne pose pas de problèmes sur un autre bloc... :huh: Ca fonctionne nikel... Merci pour l'astuce... Et le petit ps... ;) -
[Résolu] Problème d'attribution d'une variable dans un bloc
DenisHen a posté un sujet dans Débuter en LISP
Bonjour à tous, Voilà, je n'ai rien trouvé sur l'erreur dans un petit lisp que je viens d'écrire, voici le code : ;;;************************************************************** ;;; Saisie de la profondeur "Amont" pour l'injecter dans un bloc ;;;************************************************************** (defun c:SDEHM_ProfAmont (/ doc Prof ent_bloc Prof) (princ "\nDéveloppé par Denis H. pour le SDEHM") ;;; Active le début de l'undo (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq Prof (rtos (getreal "\nEntrez la profondeur Amont : ") 2 2)) (setq ent_bloc (entsel "\nSélectionnez le bloc: ")) (setq ent_bloc (car ent_bloc)) (setpropertyvalue ent_bloc "PROF_AMO" Prof) (setpropertyvalue ent_bloc "PROF_AM" Prof) ;;; Fin de l'undo (vla-endundomark doc) (princ) ) ;_ Fin de defun Et voici l'erreur : Si quelqu'un a une astuce, une idée ou autre... Je suis preneur... Denis... -
Re, Merci à tous, j'ai réussi à faire ce que je voulais... Malheureusement, je ne peux pas poster car ça fait partie d'une routine plus grande qui utilise d'autres lisp (comme ListBox de (gile))... Encore merci à tous... Denis... (qui va reprendre un Efferalgan...)
-
Merci à vous pour votre aide... (gile) : merci pour cette précision, une fois de plus très judicieuse... ;) Chti Julien : la valeur de l'attribut pouvant être vide, on ne peut donc pas cliquer dessus... Bon, je m'y colle... Merci encore à vous...
-
Merci Patrick_35, je me soigne et verrai ton lisp demain. Merci didier, effectivement, ma phrase pouvait être interprétée autrement, je n'avais pas fais attention... Je n'ai jamais été malade comme ça ! ! Encore merci à vous...
-
En gros, ce que j'aimerais faire, c'est cliquer n'importe quel entité d'un bloc et attribuer "Béton" à son attribut "MATERIAU"... Si quelqu'un a ça dans sa musette, ou autre, je suis preneur... En plus, j'ai une crève terrible alors je vais continuer chez moi... Merci à tous...
-
Salut didier, et merci de m'aider. Un de mes problèmes, c'est que l'attribut du bloc peut être vide, et donc, je ne peut pas cliquer dessus... Je devrais cliquer sur une autre partie du bloc...
-
Salut Patrick_35, et merci pour ta réponse. Je n'arrive pas à bien saisir cette routine "valatt". Je m'y perd... Mon problème aujourd'hui, c'est que je n'ai pas le temps de chercher, c'est rare, mais ça m'arrive. Je sais que ce n'est pas comme cela qu'on apprend... Je vais avoir des centaines de blocs à remplir et des dizaines de routines à construire... Et pour demain ! ! ! Je dois tripatouiller d'autres routines pour en faire une type... Au plus vite... Mais entendons-nous bien, je ne demande à personne de le faire à ma place... Mais merci tout de même pour ta bienveillance...
-
Bonjour à la communauté. Voilà, je cherche à remplir un attribut de bloc en le sélectionnant... Voici mon Lisp : (defun c:SDEHM_Materiau ( /ent_bloc LstMateriau att Materiau) (princ "\nDéveloppé par Denis H.") (setq ent_bloc (entsel "\nSélectionnez le bloc: ")) (setq ent_bloc (car ent_bloc)) (if (/= (cdr (assoc 0 (entget ent_bloc))) "INSERT") (progn (princ (strcat "\nVous devez sélectionner un bloc.")) (+ "Erreur" 15) ) ;_ Fin de progn ) ;_ Fin de if (princ "\n") (princ ent_bloc) (setq Materiau "01.Béton") (cond ((= (cdr (assoc 2 att)) "MATERIAU") (setq att (subst (cons 1 Materiau) (assoc 1 att) att)) (entmod att) ) ) ;_ Fin de cond ) ;_ Fin de defun Mais le lisp ne fait rien... J'aimerais savoir où je me suis planté...
-
Merci Tramber de me corriger, je me suis planté...
-
Entièrement d'accord... J'ai déjà bossé sur des plans contenant des blocs "anonymes"... Une vrai galère ! ! !
-
+1 avec x_all... La commande ALIGNER est magique, elle permet aussi de conserver l'échelle... Ou pas... Elle procède à un changement de base + une rotation (qui se résume à une translation, si mes souvenirs sont bon) en deux points. Elle permet aussi de changer l'échelle du plan à aligner (qui est une adaptation d'après les mêmes souvenirs). Denis...
-
Ajout de "Remplacement de blocs"
-
Remplacer un bloc par un autre, en les désignant à la souris
DenisHen a répondu à un(e) sujet de brunomu dans Routines LISP
Salut. Je m'étais fais un petit Lisp qui fais la même chose que RBloc (donc, pas de souris) mais sans fenêtre et qui pioche dans une liste de correspondance de blocs. Tu n'as qu'à remplacer AncienBloc* et NouveauBloc* par les tiens. La commande est "RemplBlk" : ;;;********************************** ;;; Remplacement de blocs (DenisH) ;;;********************************** (defun c:RemplBlk () (princ "\nRemplacement des blocs...") (setq Select nil) (princ "\nDébut du remplacement des blocs") (setq LstBlk '(("AncienBloc1" . "NouveauBloc1");;;ICI*************************** ("AncienBloc2" . "NouveauBloc2");;;ICI*************************** ) ) ;_ Fin de setq ;;;Début de la boucle (foreach PosLstBlk LstBlk (setq n 0) ; initialisation de l'indice (if (setq Select (ssget "_A" (list (cons 0 "INSERT") (cons 2 (car PosLstBlk))) ) ;_ Fin de ssget ) ;_ Fin de setq (while (setq ent (ssname Select n)) (setq elst (entget ent) ; liste DXF de l'objet Coord (cdr (assoc 10 elst)) EchX (cdr (assoc 41 elst)) EchY (cdr (assoc 42 elst)) Rot (cdr (assoc 50 elst)) n (1+ n) ) ;_ Fin de setq (setvar "clayer" (cdr (assoc 8 elst))) (command "_erase" ent "") (setq Coord (strcat (rtos (car Coord) 2 3) "," (rtos (cadr Coord) 2 3) ) ;_ Fin de strcat ) (setq Rot (+ Rot (/ pi 2))) (command "-inserer" (cdr PosLstBlk) "_non" Coord EchX EchY (angtos Rot 2 3) ) ) ;_ Fin de while ) ;_ Fin de if ) ;_ Fin de foreach ) ;_ Fin de defun ATTENTION : les attributs ne sont pas pris en compte... Petite précision, AncienBloc* peut contenir des caractères générique. Exemple, si AncienBloc* = "PTT_1*" tous les blocs commençant par PTT_1 seront remplacés par NouveauBloc*. Très pratique quand le DWG n'a pas été fait par un produit AutoDesk et que les mêmes blocs comporte une incrémentation. En espérant d'avoir aidé... Denis... -
Cherche 2 Routines sur les PLines 2D closes et TEXT
DenisHen a répondu à un(e) sujet de lecrabe dans Routines LISP
Salut au Décapode. Je ne sais pas si ça peut t'aider, mais j'ai un Lisp de (gile) modifié par BonusCAD qui crée un jeu de sélection avec tous les objets contenus ou capturés, dans la vue courante, par l'objet sélectionné (cercle, ellipse, polyligne fermée). Ça ne fait pas ce que tu veux, mais je pense que ça peut servir de base... En espérant que ça te serve. Denis... SupCommuneVide_BonusCad.zip -
Salut, philous2 : effectivement, c'était issu d'une ancienne configuration, maintenant, elle n'a plus lieu d'être...
-
Je pense que tu peux t'inspirer de ce type de ligne (à placer dans un .lin) : *RAIL_GAUCHE,_____|||_____|||_____|||_____ A,0.1,["|",Standard,s=0.1,y=-0.12],["|",Standard,s=0.1,y=-0.12],["|",Standard,s=0.1,y=-0.12],1 Cette ligne devra être intégrée dans ton type de multiligne.
-
Salut. Je pense qu'on peut faire des "lignes perpendiculaires" entre deux lignes d'une les multilignes. En créant un style de ligne type "talus" qui sera la ligne de gauche et une ligne simple qui sera la droite. J'ai ça quelque-part... Voici deux types de ligne comprenant des "lignes perpendiculaires" (qui sont en fait le caractère "|" obtenu avec AltGr+6)... : *VGT_TALUS_DROITE,VGT_TALUS A,0.1,["|",Standard,s=0.1,y=-0.12],0.2,["|",Standard,s=0.3,y=-0.36],0.1 *VGT_TALUS_GAUCHE,VGT_TALUS A,0.1,["|",Standard,s=0.1,y=-0.12],0.2,["|",Standard,s=0.3,y=-0.36],0.1
-
[Résolu] Peut-on placer un setq dans un if ?
DenisHen a répondu à un(e) sujet de DenisHen dans Pour aller plus loin en LISP
Salut. Un grand merci à vous tous pour toutes ces explications, claires et limpides... C'est vrai que je ne pense jamais à cond, c'est dommage... Je perd beaucoup de temps à faire des if avec des conditions à perte de vu... Faut que je m'y mette... -
[Résolu] Peut-on placer un setq dans un if ?
DenisHen a posté un sujet dans Pour aller plus loin en LISP
Bonjour à tous. Voilà, je vois souvent les pros du lisp placer des setq dans des if Perso, j'ai "appris" comme-ça : (setq ech (vlax-ldata-get "DenisH" "Ech")) (if ech (princ "\nEchelle connue) (princ "\nEchelle inconnue) ) Mais je vois souvent des trucs comme : (if (setq ech (vlax-ldata-get "DenisH" "Ech")) (princ "\nEchelle connue) (princ "\nEchelle inconnue) ) Y-a-t'il une "norme" ou de l'aide sur la "méthode" car je n'ai rien trouvé comme réelles explications la dessus ? Et l'un va-t'il plus vite que l'autre ? Denis... -
Avec plaisir... Sers-toi...
-
Salut didier. C'était bien du VBA et sous Excel (deuxième ligne du titre)... Mais je viens de trouver un truc, ObliqueAngle veut un angle en radians... Je pense que c'était là que je "piochais"... Merci pour ton intérêt...
-
[Résolu] Création d'emprises et de Lineaires sur textuels avec OD
DenisHen a répondu à un(e) sujet de fabcad dans Pour aller plus loin en LISP
Ca, j'ai compris... Pour le reste, j'ai du mal. Mais si c'est pour "intégrer" des données aux objets (comme les OD) là, j'avoue que ça m'intéresse au plus haut point... Je cherche aussi à gérer des polylignes avec des OD pour un export SHAPEFILE... Et si AutoCAD MAP gère tout seul les OD directement en lien avec un SHAPEFILE... Je suis super curieux car j'ai une grosse lacune sur ce point... Denis... -
Bonjour à tous. Voilà, j'ai fais une suite de routines qui, depuis Excel, créent des calques, filtres de calques, types de ligne et style de texte. Mon souci vient du style de texte avec .ObliqueAngle, je n'arrive pas à savoir ce qu'il veux exactement. Déjà que dans AutoCAD même c'est pas évident. quand je rentre "-20" dans l'angle d'inclinaison, AutoCAD me le corrige en 20, mais si je rentre 20 directement, AutoCAD me le change en 80... :blink: Alors en VBA... Quoi lui donner, il refuse déjà les nombres négatifs, il accepte le 1 mais pas le 2 :blink: Si quelqu'un avait une réponse là-dessus, je suis preneur...
-
Ajout de "Configuration de calques"...
