Aller au contenu

Lisps de gile


(gile)

Messages recommandés

Ajouté GelObj.

 

Cette routine permet de geler certains calques uniquement dans l'onglet Objet. Ces calques sont dégelés quand on passe dans les onglets Présentations où ils peuvent être normalement gelé ou dégelés dans certaines fenêtres et regelés quand on revient dans l'onglet Objet.

 

Les listes de calques permettant au réacteur de fonctionner sont enrigistrées avec le dessin.

Pour retrouver l'état des calques à l'enregistrement lors de la réouverture du dessin, le LISP doit être chargé automatiquement à chaque ouverture d'un nouveau dessin (valise de la fenêtre appload, ou charge depuis un fichier acaddoc.lsp ou MNL).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Salut Gile !

 

J'ai fait une petite modif sur ton lisp SSMATCH, et vu que la trouve assez pratique, je t'en fais part... Je ne sais pas si tu l'as déjà fait, et si ça se trouve, tu vas rire !!

 

Il s'agit de filtrer la sélection après avoir sélectionne l'objet source...

J'ai ajouté un bouton ">> Filtrer sur sélection >> " dans ta boite de dialogue

ssmatch_box: dialog {
label = "Propriétés" ;
spacer ;
 [b]   [i] : button {label = " >> Filtrer sur sélection >> " ; key = "selection" ;}[/i][/b]
 	: boxed_row {
   		: column {
     			: toggle {label = "Type d'entité" ; key = "ent" ; value = "1" ; fixed_width = true ; allow_accept = true ; }
     			spacer ; 
     			: toggle {label = "Couleur" ; key = "col" ; value = "1" ; fixed_width = true ; allow_accept = true ; }
     			spacer ; 
     			: toggle {label = "Calque" ; key = "lay" ; value = "1" ; fixed_width = true ; allow_accept = true ; }
     			spacer ; 
     			: toggle {label = "Type de ligne" ; key = "typ" ; value = "1" ; fixed_width = true ; allow_accept = true ; }
     			spacer ; 
     			: toggle {label = "Epaisseur de ligne" ; key = "wid" ; value = "1" ; fixed_width = true ; allow_accept = true ; }
     			spacer ; 
   		}
  		: column {
    			: text {key = "e_ent" ; width = 15 ; }
  	   		spacer ; 
   	 		: row {
   	   			: image {key = "e_col" ; height = 1 ; width = 1 ; }
      				: text {key = "t_col" ; width = 10 ; }
     			}
     			spacer ; 
    			: text {key = "e_lay" ; width = 15 ; }
     			spacer ; 
    			: text {key = "e_typ" ; width = 15 ; }
     			spacer ; 
    			: text {key = "e_wid" ; width = 15 ; }
     			spacer ; 
   		}
 	}
 	ok_cancel ;
spacer ;
}

 

Et intégré les conséquences de ce bouton dans ton lisp :

;; SSM -Gilles Chanteau- 19/04/07
;; Sélectionne tous les objets ayant les mêmes propriétés que celles de l'objet sélectionné
;; et qui sont cochées dans la boite de dialogue.

;; Boite de dialogue
(defun ssmatch_box (ent / elst col lst dis dcl_id w h)
   (setq 
       elst (entget ent)
       col (cond ((assoc 420 elst))((assoc 62 elst))('(62 . 256)))
       lst (list (assoc 0 elst) col (assoc 8 elst) (cond ((assoc 6 elst)) ('(6 . "BYLAYER"))) (cond ((assoc 370 elst)) ('(370 . -1))))
       col (cdr col)
       dis (cond ((cdr (assoc 62 elst))) ((cdr (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 elst)))))))
       dcl_id (load_dialog "Bonus/Bonus.dcl")
       loop 2
   )
   (while (> loop 1)
       (if (not (new_dialog "ssmatch_box" dcl_id)) (exit))
       (setq w (dimx_tile "e_col") h (dimy_tile "e_col"))
       (start_image "e_col")
       (fill_image 0 0 w h dis)
       (end_image)
       (set_tile "e_ent" (cdr (assoc 0 elst)))
       (set_tile "t_col"
           (cond
               ((= col 256) "DuCalque")
               ((= col 0) "DuBloc")
               ((< 256 col)
                   (strcat 
                       (itoa (lsh col -16))
                       ","
                       (itoa (lsh (lsh col 16) -24))
                       ","
                       (itoa (lsh (lsh col 24) -24))
                   )
               )
               ((itoa col))
           )
       )
       (set_tile "e_lay" (cdr (assoc 8 elst)))
       (set_tile "e_typ"
           (cond
               ((or (null (cdr (assoc 6 elst))) (= (strcase (cdr (assoc 6 elst))) "BYLAYER")) "DuCalque")
               ((= (strcase (cdr (assoc 6 lst))) "BYBLOCK")"DuBloc")((cdr (assoc 6 lst)))
           )
       )
       (set_tile "e_wid"
           (cond
               ((null (cdr (assoc 370 elst))) "DuCalque")
               ((= -1 (cdr (assoc 370 elst))) "DuCalque")
               ((= -2 (cdr (assoc 370 elst))) "DuBlock")
               ((= -3 (cdr (assoc 370 elst))) "Défaut")
               ((rtos (/ (cdr (assoc 370 elst)) 100.0) 2 2))
           )
       )
     [i] [b](action_tile "selection" "(done_dialog 4)")[/b][/i]
       (action_tile
           "accept"
           "(or (= \"1\" (get_tile \"ent\"))
           (setq lst (remove (assoc 0 lst) lst))
           )
           (or (= \"1\" (get_tile \"col\"))
           (setq lst (remove (assoc 420 lst)
           (remove (assoc 62 lst) lst)))
           )
           (or(= \"1\" (get_tile \"lay\"))
           (setq lst (remove (assoc 8 lst) lst))
           )
           (or(= \"1\" (get_tile \"typ\"))
           (setq lst (remove (assoc 6 lst) lst))
           )
           (or(= \"1\" (get_tile \"wid\"))
           (setq lst (remove (assoc 370 lst) lst))
           )
           (done_dialog 0)"
       )
       (action_tile "cancel" "(setq lst nil)")
 [b]  [i](setq loop (start_dialog))
       (cond ((eq loop 4)
               (setq sel (ssget))
           )
       )[/i][/b]
   )
   (unload_dialog dcl_id)
   lst
)

;; Fonction d'appel
(defun c:ssm (/ ss ent lst)
   (and 
       (or
           (and
               (setq ss (cadr (ssgetfirst)))
               (= 1 (sslength ss))
               (setq ent (ssname ss 0))
           )
           (and
               (sssetfirst nil nil)
               (setq ent (car (entsel "\nSélectionner une entité : ")))
           )
       )
       (setq lst (ssmatch_box ent))
       (princ lst)
       (if sel
         [i][b](progn
               (repeat (setq n (sslength sel))
                   (setq ent (entget (ssname sel (setq n (1- n)))) cn 0)
                   (foreach pt lst
                       (if (member pt ent) (setq cn (1+ cn)))
                   )
                   (if (/= cn (length lst))
                       (setq sel (ssdel (cdr (assoc -1 ent)) sel))
                   )
               )
               (sssetfirst nil sel)
           )[/b][/i]
           (sssetfirst nil (ssget "_X" lst))
       )
   )
   (princ)
)

 

Voilà ! Si ça peut te donner des idées.. ;)

 

A bientot !

Matt.

 

[Edité le 22/11/2007 par Matt666]

"Chacun compte pour un, et nul ne compte pour plus d'un."

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne suis pas sûr de comprendre comment tu te sers de la routine, mais je n'arrive pas à la faire fonctionner.

 

Télécharge la dernière version et essaye la commande ssmm. Elle fonctionne en boucle jusqu'à validation par Entrée.

Pour chaque filtre constitué, elle permet de faire une sélection à l'écran (ou entrée pour "Tout") et ajoute cette sélection aux précédentes.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

C'est toujours le même problème de fichier DCL non trouvé.

 

Le LISP modifié par Matt666 appelle un fichier DCL nommé "Bonus/Bonus.dcl", il faudrait donc enregistrer le DCL sous ce nom, mais ce nom n'est pas valide à cause du slash (/).

 

Si tu veux essayer ce LISP, il faut d'abord changer le nom du fichier dans l'expression qui se trouve au début de ssmatch_box :

 

(setq

...

...

dcl_id (load_dialog "Bonus/Bonus.dcl")

...

)

en (par exemple) :

 

(setq

...

...

dcl_id (load_dialog "Bonus.dcl")

...

)

 

et enregistrer le DCL sous Bonus.dcl

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

En effet, (gile), merci pour ces explications.

 

Je ne suis pas sûr de comprendre comment tu te sers de la routine, mais je n'arrive pas à la faire fonctionner.

 

 

Je dois dire que je suis un peu dans le même cas Matt666, aprés plusieurs manips, je filtre bien, mais je ne sais plus trop comment j'en suis arrivé là,..

 

 

 

Exemple :

 

Commande:

SSMM

Sélectionnez l'objet source:

Choix des objets: 1 trouvé(s)

 

Choix des objets:

 

Sélectionnez les objes (ou Entrée pour "Tout"):

Choix des objets: 1 trouvé(s)

 

Choix des objets:

 

Sélectionnez l'objet source:

Sélectionnez les objes (ou Entrée pour "Tout"):

Choix des objets: *Annuler*

; erreur: Fonction annulée

 

Bonne nuit.

 

Civil 3D 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

Télécharge la dernière version et essaye la commande ssmm (...) elle permet de faire une sélection à l'écran

 

Ah bah mais c'est ça que je fais aussi !!!

 

J'avais pas vu la dernière version...

 

Ma routine fonctionne avec SSM, qui retourne une sélection filtrée sur toutes les entités de la base graphique... Je trouvais ça dommage, et j'ai intégré un bouton pour réduire la sélection des objets à filtrer...

 

Je ne sais pas si tu l'as déjà fait

Mais tu l'as fait avec SSMM...

 

Il pense à tout ce Gile !!

 

 

"Chacun compte pour un, et nul ne compte pour plus d'un."

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Comme pour les lisps de Patrick_35, je voudrais installer tous tes lisps dans un dossier type :

 

Lisp du Web\(gile).CADXP.COM\3dPolyFillet.lsp
Lisp du Web\(gile).CADXP.COM\Ac_ob&Rac_ob.lsp
Lisp du Web\(gile).CADXP.COM\Ac2pg.lsp
Lisp du Web\(gile).CADXP.COM\AddVtx&DelVtx.LSP
Lisp du Web\(gile).CADXP.COM\Anse_de_panier.lsp
...
Lisp du Web\(gile).CADXP.COM\Reverse_pline.LSP
Lisp du Web\(gile).CADXP.COM\Special_selections.lsp
Lisp du Web\(gile).CADXP.COM\SurfDev_bloc.lsp

 

Or j'ai un souci avec un fichier de même nom mais de taille et date différente

Lisp du Web\(gile).CADXP.COM\Div-Mes\Getblock.DCL de 583 octets du 9/04/2007
Lisp du Web\(gile).CADXP.COM\Ins3d\Getblock.dcl de 560 octets du 29/04/2007

 

je voudrais mettre tous les fichiers LSP, PDF,TXT, DCL etc.. dans un seul dossier "Lisp du Web\(gile).CADXP.COM" dossier que j'ajouterais dans le Support AutoCAd mais pour l'instant je suis bloqué à cause de ce "Getblock.dcl"

 

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

AutoCAD, Revit, GstarCAD, Fisa-CAD, Microsoft Office

PlaquetteCommerciale.pdf

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tout d'abord, je dois dire que je suis flatté par tant d'égards.

 

Effectivement, plusieurs LISP utilisent la boite de dialogue getblock, et j'ai voulu la joindre dans chaque ZIP (de plus il semblerait que celle de Div-Mes ne soit pas la dernière version).

 

Tu peux ne conserver que le plus récent (la différence est juste un "initial_focus" que j'ai supprimé).

 

Tu peux aussi supprimer les fichiers getblock.dcl, le fichier getblock.lsp inclus dans Ins3d.zip et la routine getblock dans Div-Mes.lsp et utiliser la nouvelle définition de getblock (sans fichier DCL séparé) qui est dans Dialog.lsp (tout en bas de la page).

 

[Edité le 5/12/2007 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Ca y est j'ai fait un dssier dans lequel tous les fichiers nécessaire au fonctionnement de tes Lisp sont intégré. Je n'ai pas encore testé mais au moins cela va permettre le déploiement sur la vingtaine de poste équipé en DAO en un seul clic.

Dézippage des LISP

Modification des dossier support

Ajout d'un menu dans AutCAD pour tous tes lisps

 

Si tu veux je peux te le donner..... si j'ai ton adresse mail

 

 

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

AutoCAD, Revit, GstarCAD, Fisa-CAD, Microsoft Office

PlaquetteCommerciale.pdf

Lien vers le commentaire
Partager sur d’autres sites

Actuellement, j'ai un fichier EXE (ZIP autoextractible) avec toutes les fonctions dans un seul et même dossier. Rien de bien extraordinaire donc pas encore intéressant de le mettre dans un téléchargement membres ou autre.

 

- J'ai encore à identifier selon la version d'AutoCAD les clés de registre que je dois modifier pour que les paramètres soit bien affecté (dossier de recherche, chargement du MNU/CUI) utilisation en batch de REGEDIT /S

- A rassembler les différents programmes et d'avoir une documentation au format HTML (pour créer un CHM)

 

J'utilise actuellement PowerArchiver 6/2000 le dernier en version gratuiciel qui permet d'exécuter un batch après son auto-extraction.

 

Pour la distribution à tous cela ne sera qu'à la discrétion de (gile) puisque ce sont SES programme et donc de SA propriété.

 

 

 

 

 

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

AutoCAD, Revit, GstarCAD, Fisa-CAD, Microsoft Office

PlaquetteCommerciale.pdf

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Bonjour Gile,

Serait-il possible que sur le lisp "Curve2pipe":

- on puisse garder ou pas les traits de constructions (axes des tuyauteries).

- que les diamètres renseignés une première fois soient remis par défaut lors du rappel de la commande.

De plus sur le lisp "PolySolid", serait-il possible de choisir un diamètre?

 

Merci d'avance

HPZ400 Workstation

Intel Xeon W3550 3.07 GHz

6 Go ram

QUADRO FX 1800

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Pour la première demande, c'est déjà fait, la conservation ou non des objets ayant servi d'axes dépend de la valeur de la variable DELOBJ, (si elle est à 0 les axes sont conservés).

 

Pour les autres, je vais essayer de faire quelque chose...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

- que les diamètres renseignés une première fois soient remis par défaut lors du rappel de la commande.

 

C'est fait, le fichier en téléchargement est à jour, j'ai aussi ajouté un raccourci clavier : c2p

 

PS : pour polysolid, je ne comprends pas bien l'intérêt, curve2pipe est plus polyvalent.

 

[Edité le 20/12/2007 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

PS : pour polysolid, je ne comprends pas bien l'intérêt, curve2pipe est plus polyvalent.

Effectivement, je ne vois plus l'intérêt. ;)

En tout cas merci.

Je vais certainement abusé mais j'ai téléchargé sur le site 2 lisp trés intéressants: tuyau.lsp et tuy.lsp.

Le premier crée de la tuyauterie 2d à partie autocad2000 et le second de la tuyauterie 3d à partir autocad2007.

N'est-il pas possible de rendre le tuy.lsp utilisable pour les versions antérieures à 2007?

HPZ400 Workstation

Intel Xeon W3550 3.07 GHz

6 Go ram

QUADRO FX 1800

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...
  • 1 mois après...
  • 1 mois après...

Incrément.lsp compte désormais 4 commandes :

 

INCTXT : insertions multiples d'un texte contenant une valeur à incrémenter

http://img178.imageshack.us/img178/5088/inxtxthx2.png

 

INCATT : insertions multiples d'un bloc avec un attribut contenant une valeur à incrémenter

http://img223.imageshack.us/img223/6465/incattny4.png

 

INCSUF : incrémentation de la fin des textes sélectionnés en fonction des caractères

http://img366.imageshack.us/img366/8440/incsuflz5.png

 

INCSEL : incrémentation d'une valeur dans les textes sélectionnés

http://img241.imageshack.us/img241/5787/incselvi0.png

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Bonjour (gile),

je viens de découvrir ton Incrément.lsp et je le trouve absolument indispensable! :heartpump:

Merci pour ton super travail! :yltype:

 

Voilà j'ai une demande à te faire : en ce qui concernes les commandes incsuf et incsel serait-il possible qu'on puisse continuer à incrémenter même si on change d'étiquette (sur des blocs ayant des noms et des noms d'étiquette différent, par exemple)?

Si cela n'est pas possible tant pis, merci quand même.

Salut.

" Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "

Lien vers le commentaire
Partager sur d’autres sites

Salut Patrick_35,

merci pour la suggestion, LATT je connais (c'est même à ma demande que tu l'avais développé... Lier 2 attributs - merci encore).

Toutefois dans ce cas bien précis ce n'est pas ce qu'il me faut car je voudrais incrémenter en toute simplicité (sans être obligé de faire d'abord des associations d'attributs...) comme le permets de faire l'outil de (gile), mais sur des blocs différents ou au moins sur des étiquettes différentes du même bloc.

Afin si cela est possible bien sur.

Ciao.

" Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "

Lien vers le commentaire
Partager sur d’autres sites

Re,

Afin si cela est possible bien sur.

C'est possible, mais pas facile à faire car cela suppose au préalable un choix multiple de blocs avec un choix multiple d'étiquettes et la mémorisation de la valeur d'incrémentation.

Comme LATT permet l'incrémentation sur différentes étiquettes de différents blocs, et que la commande copier peut être utilisée à la place de la commande insérer, d'où ma réponse.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é