Pour aller plus loin en LISP derniers sujetshttps://cadxp.com/forum/86-pour-aller-plus-loin-en-lisp/Pour aller plus loin en LISP derniers sujetsfrEmpêcher l'affichage de l'historique de l'invite de commandehttps://cadxp.com/topic/62346-emp%C3%AAcher-laffichage-de-lhistorique-de-linvite-de-commande/ Bonjour à tous, 

J'espère tout le monde va bien.

J'ai créé un lisp qui retourne la liste des imprimantes système par le biais de la commande _-plot, qui permet d'afficher les imprimantes système dans l'historique de l'invite de commande (un bon gros F2 quoi) que j'enregistre pour extraire la liste.

Bref. 

Le problème que le F2 n'est pas très silencieux, et je n'arrive pas à l'empêcher. 

Auriez-vous une solution autre que de ne passer par une commande ? 🙂

Merci beaucoup !

Matt.

]]>
62346Wed, 11 Jun 2025 13:39:32 +0000
Contour d'objets non sécantshttps://cadxp.com/topic/49811-contour-dobjets-non-s%C3%A9cants/ Coucou,

Pour commencer, je ne recherche aucunement des programmes tout fait, tout propre chat ne m'intéresse pas :3
Mon but est simplement de trouver une logique permettant de répondre à un problème afin que je puisse par la suite transposer en programme.

Donc pour faire relativement simple, il existe bon nombre de programmes (LeeMac, TheSwamp, etc) permettant de générer un contour sur un jeu de sélection d'objets linéaires sécants (des images valent mieux que des mots donc voici une démonstration du programme de LeeMac). Les conditions à respecter pour que ce programme fonctionne c'est :
 - Les objets sont compatibles avec la commande "_BOUNDARY" (ou "CONTOUR")
 - Les objets se croisent donc sont coplanaires et possèdent des points d'intersections entre-eux

J'avais déjà discuté de ce programme avec @didier mais je n'ai jamais vraiment eu le temps de me pencher plus en avant sur le sujet (le soucis, c'est que l'idée est toujours dans ma tête, d'où mon problème ^^).
Le but étant d'avoir un principe similaire à une exception près parmi les conditions ci-dessus : les objets ne possèdent pas de points d'intersections entre-eux...
Pour le contexte, je travaille dans un BE d'implantation de centrales photovoltaïques et donc on travaille constamment avec des modules et des structures qui sont espacés les uns des autres (les écarts ne sont pas fixes donc on ne peut pas fixer une valeur pour les recherches), cependant ces éléments sont très souvent regroupés via des zonages divers et variés (emprise PV, répartitions des puissances, types de modules, architecture élec', etc). Donc structurellement parlant, ces éléments sont distincts les uns des autres (pas de superposition ou autre) mais ils sont tous liés selon une propriété précise générant des zonages plus ou moins complexes. Le soucis, c'est que les itérations au sein d'un même projet sont nombreuses, donc ces zonages sont souvent modifiés et cela prend donc du temps.

Mon idée est donc de pouvoir générer un contour à partir d'un jeu de sélection qui soit suffisamment précis pour englober l'ensembles des objets sélectionnés sans englober d'autres objets non concernés... Le programme devrait pouvoir fonctionner avec des objets linéaires (pour commencer disons simplement lignes et polylignes) puis s'étendre avec des blocs (mais si c'est possible de le faire avec des objets linéaires, cela ne posera pas de soucis de faire la même chose avec des blocs puisqu'il suffira de générer un contour précis au sein d'une définition de bloc pour ensuite utiliser ce contour dans la génération du contour en EO).

Pour donner un exemple, je joins un fichier .dwg afin d'illustrer la chose.
Dans ma logique, j'avais pensé à une analyse longue et fastidieuse qui s'apparente à la technique du drap. Le but étant de générer un contour global du jeu de sélection (par exemple (LM:ssboundingbox) qui permet de s'assurer que l'ensemble des objets sont présent dans ce rectangle). On définit un point M tel que M appartient à la polyline ABCD (fermée) et aux droites Dh et Dv, avec ABCD le contour du jeu de sélection, Dh la droite horizontale passant par M et Dv la droite verticale passant par M (selon la position du point M sur ABCD). Les droites Dh et Dv vont générer des points d'intersection avec les objets présents dans la surface ABCD, que l'on nommera M' tels que M' soit la projection horizontale ou verticale du point M sur les objets composants le jeu de sélection initial. On obtient donc une liste de points d'intersection pour chaque point M dont on peut récupérer facilement la borne inférieure et la borne supérieure donc on a pour tout points M, une liste de 2 points correspondant à la borne inférieure et supérieure (ou 1 point si la borne inférieure et supérieure sont confondue).

En affectant un pas pour générer une liste de point M, on obtient tout un ensemble de couples de points correspondant à l'emprise réelle des objets (sous forme de dessin la forme est proche du zonage attendu, mais sous forme de liste, les points ne sont pas ordonnés correctement, à moins de ne choisir uniquement le point d'intersection le plus proche du point M (car (vl-sort M'-list '(lambda (e1 e2) (< (distance M e1) (distance M e2))))) mais auquel cas il faudra parcourir 100% du périmètre de la boundingbox, et non 50%).
Si on affecte un lien entre le point et l'objet issu de cette intersection, il suffira ensuite de récupérer pour chaque projection le sommet réel des objets "coupés" le plus proche de la projection pour limiter le nombre d'objets (et limiter également un contour trop serré) et également éliminer les sommets situés à une distance beaucoup trop importante par rapport à ses voisins (cf. fichier .dwg).

Je me rends compte que j'ai de vrais problèmes de concision dans mes explications moi...Donc pour ceux qui ont compris, j'aimerais savoir comment peut-on aborder un problème comme celui-ci sans avoir besoin de calculer les points d'intersection projetés de 2 milliard de points pour simplement générer un contour précis à un jeu de sélection...Car même si sur le papier, la technique du drap fonctionne, cela demande beaucoup de ressources et de temps, ce qui n'est pas le but non plus ! >n<
Donc je me dis qu'il existe probablement un théorème mathématique ou une logique permettant de gagner du temps sur les calculs, mais pour un sujet comme celui-ci, ma logique propre ne me permet pas de réfléchir autrement qu'en analytique...

Bref, merci pour les âmes charitables qui prendront non seulement le temps de me lire, mais également de me répondre ! (voyez chat comme...un challenge, sauf que je n'ai pas de solution toute faite :3)

Bisous,
Luna

SSBoundingLine.dwg

]]>
49811Wed, 07 Apr 2021 13:08:05 +0000
Convertir polylignes en lignes + arcs 3 points sans passer par la commande Décomposerhttps://cadxp.com/topic/62193-convertir-polylignes-en-lignes-arcs-3-points-sans-passer-par-la-commande-d%C3%A9composer/ Bonjour à tous,

J'espère que vous allez bien.

Pour les besoins d'un export de polyligne à rentrer dans un post processus de CN sans passer par son logiciel, j'aimerais convertir une polyligne sélectionnée en lignes (ça c'est pas bien compliqué) et en arcs (là c'est plus compliqué haha).

Le post pro demande 3 points d'arc : Point de départ / milieu de l'arc / point d'arrivée. J'ai cherché sur le net, et pas trouvé grand chose.

Pour l'instant je me cantonne juste à essayer de reproduire la polyligne en lignes et arcs sans la décomposer.

image.png.08bbdd41731ad003a99f9d9ba673db32.png

L'idéal serait une routine permettant de retourner les coordonnées du milieu de l'arc en fonction du point de départ / point d'arrivée / bulge de l'arc dans la polyligne.

Avez-vous qqh dans ce genre ?

Merci beaucoup.

Matt.

]]>
62193Mon, 31 Mar 2025 14:02:20 +0000
Problème de boucle "repeat"https://cadxp.com/topic/62081-probl%C3%A8me-de-boucle-repeat/ Bonjour,

J'ai un problème avec ma boucle "repeat",  cette boucle me permet de dupliquer des présentions dans lequel j'ai 2 viewports à chaque fois. Ainsi si je lui dis par exemple que j'ai 5 pages, il va me faire 2 copies, 4 pages 1 copie etc, jusqu’à là tout fonctionne. De plus j'ai fais en sorte d'avoir un décalage avec la fonction pan dans chaque viewports, de manière linéaire. c'est à dire dans le viewport 2 j'ai 1 x "valeur decalage"  dans le viewport 3 j'ai 2x"valeur decalage" etc

L'élément problématique ici est le fait qu'avec, 3,4,5,6 pages cela fonctionne très bien mais à partir de 7 pages donc 4 copies les décalages de pan sont complétement déréglés. Et je comprends pas pourquoi c'est à partir de ce moment là alors que tout fonctionne par paire (5 et 6; 7 et 8 ; 9 et 10 etc...)
De plus je tiens à dire que les duplications de layout se passent bien comme je le souhaite.

Voici le lisp :

 

 
(setq nb (atoi nombre_pages))  ;; Convertir en entier si nécessaire
 
  (if (< nb 3)
    (princ "\nMoins de 3, donc pas de copie.")
    (progn
      ;; Calcul du nombre de copies en fonction du nombre saisi
      (if (<= nb 4)
        (setq copies 1)
        (setq copies (+ 2 (fix (/ (- nb 5) 2)))))
      (princ (strcat "\nLa commande sera exécutée " (itoa copies) " fois."))

      ;; échelle
     
      (setq ptpan1 (list 0 0))  ;; Point de départ fixe
      (setq ptpandecal1
            (cond
              ((or (= choix_echelle "1/50"))   (list 0 (* (/ Latab 20) copies)))
          
          
              ((or (= choix_echelle "1/100")) (list 0 (* (/ Latab 10) copies)))
          
          
              ((or (= choix_echelle "1/25")) (list 0 (* (/ Latab 40) copies)))
          
              (T (list 0 0))  ;; Échelle non reconnue : pas de décalage
            )
        (princ (strcat "\nValeur du décalage : " (itoa copies)))
      )

      (setq i 0)
      (repeat copies                          ; LE PROBLEME ARRIVE DANS CETTE BOUCLE
        (progn
          ;; Construit un nom dynamique pour la présentation :
          ;; la première copie s'appellera "n", puis "n1", "n2", etc.
          (setq nameSuffix (if (= i 0)
                               "n"
                               (strcat "n" (itoa i))))
          (princ (strcat "\nCréation de la présentation : " nameSuffix))

          ;; --- Copie et établissement de la présentation actuelle avec un nom unique ---
          (command "-presentation" "c" "" nameSuffix)
          (command "-presentation" "E" nameSuffix)

                                                                                                 
          

          ;; --- Sélection des viewports dans le layout actif ---
          (setq ss (ssget "X" (list (cons 0 "VIEWPORT") (cons 410 (getvar "CTAB")))))
          (if ss
            (progn
              (princ (strcat "\n" (itoa (sslength ss)) " viewport(s) sélectionné(s)."))
              ;; Si plusieurs viewports existent, on sélectionne le premier
              (if (> (sslength ss) 1)
                (progn
                  (setq viewport1 (ssname ss 0))
                  (princ "\nPremier viewport sélectionné.")
                )
              )
            )
            (princ "\nAucun viewport trouvé.")
          )

          ;; Passage en espace objet
          (command "_MSPACE")


      ; Deverrouillage VIEWPORT
         (command "_mview" "V" "I" "TOUT" "")

      
          ;; --- Déplacement de la vue (PAN) ---
          (command "-pan" ptpan1 ptpandecal1)

          ;; --- Sélection et modification du viewport actif ---
          (setq ss (ssget "X" (list (cons 0 "VIEWPORT")
                                    (cons 410 (getvar "CTAB")))))
          (if ss
            (progn
              (setq num (sslength ss))
              (princ (strcat "\nNombre de viewports trouvés : " (itoa num)))
              (if (>= num 3)
                (progn
                  ;; Sélection directe du troisième viewport (index = 3)
                  (setq vp-index 3)
                  (command-s "_MSPACE")
                  (setvar "CVPORT" vp-index)
                  (princ (strcat "\nViewport " (itoa vp-index) " activé."))
                )
                (princ "\nIl n'y a pas assez de viewports.")
              )
            )
            (princ "\nAucun viewport trouvé.")
          )

          ;; --- Réexécution du déplacement (PAN) ---
          (command "-pan" ptpan1 ptpandecal1)
          
          (princ "\n--- Exécution de la copie terminée ---")
      
     ; Deverrouillage VIEWPORT
         (command "_mview" "V" "A" "TOUT" "")

          (setq i (1+ i))
        )
      )
    )
  )

 


 

]]>
62081Mon, 10 Feb 2025 15:39:47 +0000
Formateur LISP pour formation LISP à DISTANCE sur 4 jourshttps://cadxp.com/topic/62089-formateur-lisp-pour-formation-lisp-%C3%A0-distance-sur-4-jours/ Bonjour à Toutes et à Tous,

Je voulais porter à votre connaissance une pratique peu loyal d'un OF d'AIX qui m'arrive cette fin de semaine.

Avant de développer l'histoire, je voulais déjà connaitre les Formateurs qui proposent des formations sur le langage LISP !

Il est vrai que l'on se croise, depuis de très longues années, sur les Forums mais on ne sait pas toujours quel est le statut et le "CV" de chacun ?!  😉

Et par hasard, si l'un d'entre vous a peu être été contacté il y a quelques jours pour assurer une Formation LISP à DISTANCE sur 4 jours un mix BASE-PERF ?  J'ai une histoire à partager !!!  ☹️ ☹️ ☹️

Je vous remercie.
Christian

]]>
62089Sat, 15 Feb 2025 06:32:11 +0000
Convertir des coordonnées d'un point de l'espace object à des coordonnées de l'espace papierhttps://cadxp.com/topic/62076-convertir-des-coordonn%C3%A9es-dun-point-de-lespace-object-%C3%A0-des-coordonn%C3%A9es-de-lespace-papier/ Bonjour, je me demande si c'était possible de convertir des coordonnées d'un point de l'espace objet à des coordonnées de l'espace papier. J'ai cru comprendre qu'il fallait utiliser l'outil "trans".


(defun c:convert_objet_papier ()
  (if (= (getvar "TILEMODE") 1)
    (princ "\nVous êtes en espace objet. Passez en espace papier pour utiliser cette commande.")
    (progn
      ;; Sélectionner la fenêtre de présentation
      (setq vp_ent (car (entsel "\nSélectionnez une fenêtre de présentation : ")))
      (if (and vp_ent (eq (cdr (assoc 0 (entget vp_ent))) "VIEWPORT"))
        (progn
          ;; Basculer en espace objet
          (command "_MSPACE")
          
          ;; Sélectionner un point en espace objet
          (setq point_objet (getpoint "\nSélectionnez un point en espace objet : "))
          
          ;; Conversion du point en espace papier en tenant compte du viewport
          (setq point_papier (trans point_objet 0 2 vp_ent))  ; 0 = WCS (World Coordinate System), 2 = DCS (Display Coordinate System)

          ;; Retourner en espace papier
          (command "_PSPACE")

          ;; Affichage des coordonnées
          (princ (strcat "\nCoordonnées en espace objet : "
                         (rtos (car point_objet) 2 2) ", "
                         (rtos (cadr point_objet) 2 2)))
          (princ (strcat "\nCoordonnées en espace papier : "
                         (rtos (car point_papier) 2 2) ", "
                         (rtos (cadr point_papier) 2 2))))
        )
        (princ "\nSélection invalide. Veuillez sélectionner une fenêtre de présentation.")
      )
    )
  )


J'ai donc commencer à faire ceci mais le problème est qu'il me renvoie les coordonnées que l’espace objet, alors que cela n'est pas le cas.

]]>
62076Fri, 07 Feb 2025 08:40:30 +0000
Variables Lignes de repèrehttps://cadxp.com/topic/62061-variables-lignes-de-rep%C3%A8re/ Bonjour,

Pour la commande ligne de repère multiple LIGNEDEREPMULT

Y a t il une variable qui détermine le mode de placement : Commencer par le contenu ou commencer par la pointe de flèche ?

Merci, Patrice

]]>
62061Mon, 03 Feb 2025 09:35:36 +0000
Lister les options (Répertoire et fichier)https://cadxp.com/topic/62027-lister-les-options-r%C3%A9pertoire-et-fichier/ Bonjour,

Est-il possible de lister en Lisp tous les dossiers / fichiers que nous paramétrons dans les options ?

J'ai trouvé le fichier d'export des options. Ficher.arg

Y-aurait-il une autre solution plus rapide en Lisp ?

Merci

Patrice

]]>
62027Mon, 20 Jan 2025 09:54:55 +0000
Sélectionner des éléments dans un calque avec un nom contenant des [crochets]https://cadxp.com/topic/62007-s%C3%A9lectionner-des-%C3%A9l%C3%A9ments-dans-un-calque-avec-un-nom-contenant-des-crochets/ Bonjour,

Je n'arrive pas à sélectionner les éléments qui se trouve dans un calque dont le nom contient des [crochets].

image.png.c0b0e8a6b7767a5ef97bb0c85e0656db.png

(princ (sslength (setq entite_sel (ssget "_x" '((2 . "*POINT*")(8 . "TOPOJIS-2025-[01]"))))))

Merci

Patrice

]]>
62007Tue, 14 Jan 2025 15:43:40 +0000
TCASE en commandhttps://cadxp.com/topic/61994-tcase-en-command/ Bonjour,

 

Je voudrai utiliser la commande "TCASE" en passant par le lisp.

Dans ce cas, je voudrai mettre le dernier élément (texte) en majuscule

(command "-TCASE" "d" "" "U")

Et j'ai l'erreur :

-TCASE Commande inconnue "-TCASE".

Comment utilisez vous cette commande (lisp) avec des paramètres

Merci

Patrice

]]>
61994Wed, 08 Jan 2025 22:58:39 +0000
Programme externe en parallèle synchrone et asynchronehttps://cadxp.com/topic/61988-programme-externe-en-parall%C3%A8le-synchrone-et-asynchrone/ Bonjour,

 

Je suis confronté à un problème un peu particulier.

Dans mon dessin AutoCAD, j'ai environ 35 000 points. Pour chacun d'eux, j'extrais ses coordonnées, puis je lance un EXE externe en passant ces coordonnées en paramètre. Ce programme externe tourne environ 2 à 3 minutes et produit un fichier TXT que je lis et que je mouline pour créer un nouvel objet dans AutoCAD.

Le programme externe est mono threat, alors que je dispose de 20 cœurs dispo (variable d'environnement NUMBER_OF_PROCESSORS dispo pour connaître ce nombre).

Ce que j'aimerais, c'est lancé en parallèle 15 process chacun tournant sur son cœur, mais chacun de manière synchrone pour attendre le résultat avant d'en chaîner un autre.

L'idée c'est que les 15 cœurs soient occupés en permanence. Même à ce rythme, ça va prendre 4 jours, sinon c'est 2 mois 😞 

Actuellement, j'ai fait le programme en Lisp (plus rapide à mettre en place), mais s'il faut passer en C# ça sera possible sans souci. 

J'ai regardé du côté du traitement multithreat, mais ça ne semble pas adapté, puisque ce n'est pas un seul processus à répartir sur plusieurs threat.

SI vous avez une idée, je suis preneur de toutes réflexions.

 

Merci

 

Olivier

]]>
61988Tue, 07 Jan 2025 07:50:32 +0000
Une routine qui ne fonctionne pas dans l'édition de référencehttps://cadxp.com/topic/61972-une-routine-qui-ne-fonctionne-pas-dans-l%C3%A9dition-de-r%C3%A9f%C3%A9rence/ Bonjour,

J'utilise une routine permettant de cumuler les surfaces et l'inscrire dans un texte.

En revanche elle ne fonctionne pas dans l'édition de référence (editref)

quelqu'un pourrait m'aider à l'adapter ?

 

voilà la routine et en pj un dwg pour le test

 (defun c:at (/ js somme ind st_ent type texte valtxt point surf)

   (setq cmdech (getvar "CMDECHO"))
   (setq iconscu (getvar "UCSICON"))
   (setq old_plan (getvar "clayer"))
   (setvar "CMDECHO" 0)
   (setvar "UCSICON" 0)	
  
  (prompt "\nChoisir les textes a additionner")
  (setq js (ssget))

  (setq somme 0.0)
  (setq ind 0)
  (if js
    (repeat (sslength js)
      (setq st_ent (entget (ssname js ind)))
      (setq type (cdr (assoc 0 st_ent)))
      (if (= type "TEXT")
	(progn
	  ; on additionne la valeur du texte
	  (setq texte (cdr (assoc 1 st_ent)))
	  (setq valtxt (atof texte))
	  (setq somme (+ somme valtxt))
	) 
      )
      (setq ind (1+ ind))
    ) 
  ) 
  (setq surf (strcat (rtos somme 2 2) ))
  (setq p3 (getpoint "\n Position pour le resultat de la somme : "))
  	(command "_layer" "l" "Z_Surf" "n" "Z_Surf" "e" "Z_Surf" "ch" "Z_Surf" "ac" "Z_Surf" "co" "" "" "")
  	(command "texte" p3 20 0 surf)
   (setvar "CMDECHO" cmdech )
   (setvar "UCSICON" iconscu )
   (setvar "clayer" old_plan)
)

 

Test.dwg

]]>
61972Wed, 25 Dec 2024 14:53:41 +0000
Supprimer le message 'DWG non autodesk'https://cadxp.com/topic/61967-supprimer-le-message-dwg-non-autodesk/ Bonjour,

Y-a-t-il une variable dans le DWG que je peux réinitialiser pour supprimer le message 'DWG non autodesk' à l'ouverture du fichier ?

Merci et joyeuses fêtes à tous

Patrice

]]>
61967Mon, 23 Dec 2024 07:33:07 +0000
Creer un nouveau fichier DWGhttps://cadxp.com/topic/61916-creer-un-nouveau-fichier-dwg/ Bonjour

	(command "FILEDIA" 0)
	(command "NOUVEAU" "C:/_SADE/_Prototypes/Recolement/Eau Du Ponant/recol-prototype.dwg"))

Si je tape les commandes claviers :

     FILEDIA 0

puis NOUVEAU C:/_SADE/_Prototypes/Recolement/Eau Du Ponant/recol-prototype.dwg

cela fonctionne.

 

Par le Lisp, cela plante ?

Qui a la réponse.

 

Merci, Patrice

]]>
61916Fri, 29 Nov 2024 14:54:48 +0000
Remplissage des étiquetteshttps://cadxp.com/topic/61930-remplissage-des-%C3%A9tiquettes/ Bonjour,

En lisp, je voudrai activer ou désactiver le 'Masque d'arrière plan' d'une étiquette ?

Comment feriez vous ?

Merci

Patrice

]]>
61930Thu, 05 Dec 2024 14:00:46 +0000
Parcourir, ajouter, supprimer des filtres de calqueshttps://cadxp.com/topic/61927-parcourir-ajouter-supprimer-des-filtres-de-calques/ Bonjour,

En Lisp, je voudrai parcourir la liste des filtres de calques

Et supprimer un filtre ou plusieurs filtres : connu ou inconnu

Merci, Patrice

]]>
61927Thu, 05 Dec 2024 08:12:00 +0000
Imprimer les présentations sélectionnéeshttps://cadxp.com/topic/61911-imprimer-les-pr%C3%A9sentations-s%C3%A9lectionn%C3%A9es/ Bonsoir,

J'ai besoin d'imprimer uniquement les présentations sélectionnées.

Est-il possible en lisp, de parcourir ou de connaitre les présentations sélectionnées ?

Merci

Patrice

]]>
61911Wed, 27 Nov 2024 21:16:13 +0000
Basculer d'une palette d'outils à une autrehttps://cadxp.com/topic/61889-basculer-dune-palette-doutils-%C3%A0-une-autre/ Bonjour,

Comment basculer d'une palette d'outils à une autre ? en Lisp

image.png.2a491b192ff82d85021bc0176eb4e70e.png  image.png.5e7f61763916bfd6ea0a3da6431b2631.png

Je voudrai passer de Architecture vers Annotation

Merci

Patrice

]]>
61889Thu, 21 Nov 2024 15:41:58 +0000
Refaire tous les blocs dans une couleur et calque choisihttps://cadxp.com/topic/61874-refaire-tous-les-blocs-dans-une-couleur-et-calque-choisi/ Bonjour à tous

Je dois modifier une bonne quantités de blocs dans les lesquels je dois changer le calque et la couleur des éléments du bloc.

Je suis à la recherche d'un Lisp qui permet de changer le calque du bloc vers le calque "2D_Symboles" et d'avoir la possibilité de choisir la couleur.

Merci d'avance pour votre aide

]]>
61874Thu, 14 Nov 2024 17:47:11 +0000
Comment identifier l'imprimante utilisée pour une présentation ?https://cadxp.com/topic/61872-comment-identifier-limprimante-utilis%C3%A9e-pour-une-pr%C3%A9sentation/ Bonjour,

Sur une présentation donnée : déjà paramétrée : Imprimante / Papier / Echelle ...

image.png.022c1dd57c7090f764e31abd9b2fdfea.png

 

Comment connaitre le nom de l'imprimanbte utilisée pour contrôle en LISP ?

Car je voudrai imprimer en PDF vers un dossier de l'affaire et le nom du PDF daté (pas vers mesDocuùents), mais je dois effectuer un contrôle de l'imprimante ?

J'utiliserai la commande -TRACEUR

Merci

 

Patrice

]]>
61872Thu, 14 Nov 2024 08:40:41 +0000
Changement calque CN selon altitudehttps://cadxp.com/topic/61780-changement-calque-cn-selon-altitude/ Bonjour a toutes et tous,

J'ai un petit problème avec le code ci dessous :

La routine permet en choisissant un multiple d'altitude (0.5/1/2/5/10/25/50/100 mètres) de placer dans un (nouveau) calque les courbes de niveau (situées dans un calque originel) répondant au critère.

Cependant, depuis peu, certaine courbe ne se place pas dans le nouveau calque alors que le critère est respecté (les altitudes affichées dans les propriétés sont juste).

Il y a peut être une erreur dans le code, ou une variable a modifier (précision ou arrondi proche par exemple..) ?

Merci,

 

(defun c:MAJCL (
					;/ elev ss i el
	       )
  (vl-load-com)
  (setq Valer (getvar "luprec"))
  (setvar "luprec" 0)
  (initget 1 "0.5 1 2 5 10 25 50 100")
  (setq
    elev (getkword
	   "\nSelect String for filter [0.5/1/2/5/10/25/50/100]: "
	 )
  )
  (setq
    LayerCL (car
	      (entsel
		"\nClick on a layer with contour lines to modify : "
	      )
	    )
  )
  (setq EntLay (entget LayerCL))
  (setq LAY (cdr (assoc 8 EntLay)))
  (setq nomcalc (strcat "_NB-MajorLine_" elev))
  (initget 1 "Blue Green GRey Pink Red White Yellow Other")
  (setq
    ColorCalc
     (getkword
       "\nSelect a color for the layer [Blue/Green/GRey/Pink/Red/White/Yellow/Other]: "
     )
  )
  (cond	((= ColorCalc "Blue")
	 (setq Color 141)
	)
	((= ColorCalc "Green")
	 (setq Color 91)
	)
	((= ColorCalc "GRey")
	 (setq Color 253)
	)
	((= ColorCalc "Pink")
	 (setq Color 211)
	)
	((= ColorCalc "Red")
	 (setq Color 241)
	)
	((= ColorCalc "White")
	 (setq Color 7)
	)
	((= ColorCalc "Yellow")
	 (setq Color 51)
	)
	((= ColorCalc "Other")
	 (setq Color 121)
	)
  )
  (if (not (tblsearch "LAYER" nomcalc))
    (entmake
      (list
	(cons 0 "LAYER")
	(cons 100 "AcDbSymbolTableRecord")
	(cons 100 "AcDbLayerTableRecord")
	(cons 2 nomcalc)
	(cons 70 0)
	(cons 62 Color)
	(cons 370 -3)
	(cons 6 "Continuous")
      )
    )
  )
  (if (setq ss (ssget "_X"
		      (list (cons 0 "LWPOLYLINE") (cons 8 LAY))
	       )
      )
    (repeat (setq i (sslength ss))
      (setq
	el (cdr
	     (assoc 38 (entget (setq e (ssname ss (setq i (1- i))))))
	   )
      )
      (if (equal (distof (rtos (rem el (distof elev)) 2 2)) 0.0 1e-6)
					; at elevation that is a multiple of elev?
	(vla-put-Layer (vlax-ename->vla-object e) nomcalc)
					;(command "_.chprop" e "" "_layer" nomcalc "")
      )					; if
    )					; repeat
  )					; if
  (setvar "luprec" Valer)
  (princ)
)

 

]]>
61780Sat, 12 Oct 2024 17:03:53 +0000
Comment annuler une commande en courshttps://cadxp.com/topic/61768-comment-annuler-une-commande-en-cours/ Bonjour,

J'utilise cela pour afficher des barres d'outils sur mon écran.

	(command "-BAROUTIL" "CALQUES II" "A")	;gestion des calques
	(command "-BAROUTIL" "EDIT REF" "A")	;édition des blocs
	(command "-BAROUTIL" "GROUPER" "A")		;édition des groupes

Pour la barre d'outils "EDIT REF" : erreur, la barre d'outils n existe pas, et cela bloque la commande suivant.

Commande: -BAROUTIL Entrez le nom de la barre d'outils ou [TOUTES]: EDIT REF
La barre d'outils n'a pas été trouvée.
Entrez le nom de la barre d'outils ou [TOUTES] <EDIT REF>: A

 

Comment annulez-vous la commande en cours ?

Merci

Patrice

]]>
61768Thu, 10 Oct 2024 06:48:07 +0000
ListBoxhttps://cadxp.com/topic/61752-listbox/ Bonsoir,

J'arrive à créer une ListBox avec le fichier de Gil.

Est-il possible de sélectionner un élément dans la liste (ancienne valeur par exemple) ?

Merci

Patrice

]]>
61752Wed, 02 Oct 2024 21:38:32 +0000
[Challenge] Extraire les nombres d'une chaîne de caractèreshttps://cadxp.com/topic/61750-challenge-extraire-les-nombres-dune-cha%C3%AEne-de-caract%C3%A8res/ Ça faisait longtemps.

Le but de ce challenge est d'écrire une routine qui prend en argument une chaîne de caractères et renvoie la liste des nombres contenus dans cette chaîne.

Exemple :

(extraireNombres "Longueur = 25.4mm Largeur = 12.7mm Quantité = -42") 

renvoie : (25.4 12.7 -42)

]]>
61750Wed, 02 Oct 2024 16:49:41 +0000
Supprimer un attribut de blochttps://cadxp.com/topic/61727-supprimer-un-attribut-de-bloc/ Bonjour,

Je parcours quelques blocs insérés sur un fichier.

Ces blocs ont des attributs, certains de ces attributs, je voudrai les supprimer (pas les mettre à vide).

Comment faire en Lisp ?

Merci, Patrice

]]>
61727Tue, 24 Sep 2024 12:45:41 +0000