Aller au contenu

Modification du Lisp SSL pour sélectionner un calque par nom et par par sélection.


AntoineF

Messages recommandés

Coucou,

Alors j'ai pleins de questions ! :3

 1.] Tu as posté dans le forum "AutoCAD LT 2014", or les versions LT ne supportent pas le LISP. Je suppose donc que tu n'as pas posté ton message au bon endroit, autrement la réponse serait : pas de LISP pour les LT donc pas besoin de faire de modifications.

 2.] Lorsque tu dis "en nommant un calque dans la barre de commande", qu'entends-tu par là exactement ? Cela signifie-t-il que au cours de la commande SSL au lieu de devoir cliquer sur une entité pour récupérer le nom du calque, tu désires entrer manuellement le nom du calque en ligne de commande ?
Si oui, alors doit-on prendre en compte la casse ? Faut-il prévoir les recherches relatives (cf. Wildcard Characters) également ? As-tu bien conscience que les fautes de frappes ne pourront pas être tolérées par le programme modifié ?

 3.] Est-ce un remplacement de fonctionnalité du programme que tu souhaites (impossibilité de cliquer sur une entité mais renseignement du nom du calque en ligne de commande), ou bien un ajout de fonctionnalité (clic sur une entité ou renseignement du calque en ligne de commande) ?

 4.] Désires-tu que l'on te donne des pistes de recherches (ex: tu essayes d'apprendre le LISP et donc tu désires faire la modification toi-même mais tu ne sais pas comment t'y prendre) ou bien tu désires un programme modifié de A à Z (on modifie le programme et on poste le programme modifié dans son intégralité (ici seulement SSL, tu te chargeras de remplacer dans ton fichier la partie correspondante)) ?

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Je suis effectivement au mauvaise endroit, et pour répondre à ton 2.], je souhaiterais avoir deux lisp "diffèrent", un ou je sélectionne et un ou je nomme.

J'aimerais apprendre le LISP, mais je n'ai vraiment aucune base donc dans l'immédiat je cherche le programme directement modifié, mais je veux bien une explication de ça réalisation.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @AntoineF

"J'aimerais apprendre le LISP, mais je ..."

Si tu viens souvent sur ce forum, tu dois connaître nos conseils maintes fois répétés.

Bien se cadrer dans l'apprentissage, choisir des tâches simples au départ...
Regarde ma signature, j'ai fait mon possible pour mettre le pied à l'étrier aux débutants.

Amicalement

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Didier, 

Je suis nouveau sur le site, donc je n'ai pas encore regardé beaucoup de sujet hors les quelques recherches pour mes petites problèmes.

J'ai un premier problème, c'est que je ne dispose que de mon temps de travail pour utiliser Autocad... Je ne peux pas l'exploiter en dehors, car je n'ai pas le logiciel chez moi. Mais étant au bureau pendant ma pause déjeuner, je vais pouvoir essayer de suivre tes exercice de Lisp.

Merci de ton aide.

Lien vers le commentaire
Partager sur d’autres sites

@AntoineF,

Oki, dans ce cas en me basant sur le programme SSL initial :

;; Sélection par calque
(defun c:ssl (/ ss ent)
  (and
    (or
      (and
        (setq ss (cadr (ssgetfirst)))
        (= 1 (sslength ss))
        (setq ent (ssname ss 0))
      )
      (and
        (sssetfirst nil nil)
        (setq ent (car (entsel)))
      )
    )
    (sssetfirst nil (ssget "_X" (list (assoc 8 (entget ent)))))
  )
  (princ)
)

On peut créer une seconde commande SSL2 (si tu veux changer le nom, tu peux) comme ceci :

;; Sélection par calque
(defun c:ssl2 (/ str)
  (sssetfirst)  ; Désélectionne les objets actuellement sélectionnés (pas de pré-sélection !)
  (and
    (setq str (getstring T "\nNom du calque: ")) ; Requête utilisateur pour une chaîne de caractères (espaces autorisés)
    (tblsearch "LAYER" str) ; Vérifie l'existence du calque dans la table "LAYER"
    (sssetfirst nil (ssget "_X" (list (cons 8 str)))) ; Sélectionne tous les objets appartenant au calque spécifié
  )
  (princ)
)

Comme ici on entre le nom en ligne de commande, la pré-sélection n'est pas autorisée (donc on utilise (sssetfirst) pour vider le jeu de sélection actif). Il faut également vérifier l'existence du calque via

(tblsearch "LAYER" str)

La casse n'est pas respectée, autrement dit écrire "calque1", "CALQUE1" ou "Calque1", ... ne changera pas le fonctionnement du programme. Évidemment écrire le nom d'un calque à la main peut s'avérer vite long (car il ne faut pas faire de faute de frappe, et écrire le nom en entier) mais il s'agit de ta demande initiale 🙂

Pour l'utiliser, il suffit de rajouter le code "modifié" à la suite du SSL initial ^^

Bisous,
Luna

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é