Aller au contenu

Programme LISP copie/colle éléments calques et modifications


greg1922

Messages recommandés

Bonjour à tous !

 

Donc comme je le dis dans la description de mon sujet, je fais une licence en alternance de dessinateur-projeteur et il nous est demandé (pour nous auto-former) de créer un utilitaire qui peut-être utile à notre entreprise... Pour ma part, j'ai choisi de faire un outil codé en lisp, pour, entre autre, en apprendre davantage sur le sujet. Je dois donc vous dire que je suis pour le moment débutant :)

 

En gros, mon objectif est de copier tous les éléments de calques spécifiques dans le presse-papiers, d'en changer les propriétés (les rassembler dans un même calque, changer la couleur, l'épaisseur, ...) puis de coller le tout "modifié" dans un autre plan.

 

Pour tous vous dire, je suis pas sur de la faisabilité de mon lisp ahah (rires forts) ! Mais je pense que c'est réalisable...

 

J'ai trouvé sur un forum un lisp qui se rapproche de celui que je souhaite faire, permettant de copier tous les éléments d'un calque par un simple clic sur un des éléments du calque et de les "basculer" dans un autre calque en cliquant sur un élément du calque souhaité.

 

Mais je n'arrive pas à modifier le choix d'un claque par une liste de claques que je souhaite copier dans le presse papiers...

 

Si vous pouvez m'aider s'il vous plait !

Merci d'avance ! :rolleyes:

___________________________________________________________________________________________________

 

(defun c:Merger	(/ ent layer ent2 layer2 i ss ent)
 (vl-load-com)

 (cond
   ((and (setq ent (car (nentsel "\nSelect Object on Layer to Merge: ")))
 	(setq layer (cdr (assoc 8 (entget ent))))
 	(setq
   	ent2 (car (entsel "\nSelect Object on Layer to Merge to: "))
 	)
 	(setq layer2 (cdr (assoc 8 (entget ent2))))
 	(or (not (eq layer layer2))
     	(alert "Cannot merge layer with itself!")
 	)
	) ;_ and
	(setq i  -1
      ss (ssget "_X" (list (cons 8 layer)))
	) ;_ setq
	(while (setq ent (ssname ss (setq i (1+ i))))
  	(vla-put-layer (vlax-ename->vla-object ent) layer2)
	) ;_ while
	(vlax-for blks (vla-get-Blocks
      	(vla-get-ActiveDocument
		(vlax-get-acad-object)
      	) ;_ vla-get-ActiveDocument
    	) ;_ vla-get-Blocks
  	(vlax-for obj blks
    (if (eq (strcase layer) (strcase (vla-get-layer obj)))
      (vla-put-layer obj layer2)
    ) ;_ if
  	) ;_ vlax-for
	) ;_ vlax-for
   )
 ) ;_ cond
 (princ)
) ;_ defun

___________________________________________________________________________________________________

Modifié par didier
Formatage du code et ajout des balises bbcode
Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Si tu veux apprendre le LISP, partir d'un code existant dont tu penses qu'il fait "presque" ce que tu veux mais que tu n'es pas capable de comprendre/modifier, c'est à coup sûr, partir du mauvais pied.

 

Fixe toi plutôt des objectifs simples (en décomposant ce que tu souhaite faire en plusieurs taches successives par exemple) et essaye de les résoudre un par un en écrivant toi même le code (avec l'aide des membres de CADxp bien sûr).

 

Dans tous les cas, ne pas oublier qu'AutoLISP s'exécute dans le contexte du document, c'est à dire qu'un LISP lancé dans un dessin ne peut pas se poursuivre dans un autre.

 

Ce sachant, il faut peut-être revoir ton algorithme. Quand on débute en LISP, le plus souvent on commence par écrire du code qui reproduit ce qu'on fait directement avec les commandes AutoCAD (un peu comme un script). La commande WBLOC est peut-être une alternative envisageable pour ce que tu veux faire.

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

je confirme également.

De plus le Lisp que tu nous expose, est du Vlisp. Pas le plus simple pour commencer.

 

Commence par les bases. Regarde le tuto de gile (introduction à AutoLisp) disponible via sa signature. Il n'y a pas mieux pour commencer.

 

Et surtout n'hésite pas à poser des questions mais sur TON code !! Tu apprendras bien plus vite et bien mieux.

 

;)

PIRO Charles

Developpeur Revit, RV/RA - Formateur Revit

PIRO CIE

Lien vers le commentaire
Partager sur d’autres sites

Bon, voilà ce que je viens de faire ! avec initialisation et restauration qui sont des commandes de récupération des paramètres initiaux et de restauration. Je l'ai testé et il marche ! B) les paramètres des claques de ma liste changent. Le problème maintenant c'est aux niveaux de mes blocs que ça coince... ils ne changent pas. :( Je peux lire l'entité des blocs, avec une commande que j'ai trouvé dans mon manuel "setq ent (car (entsel))), mais le problème c'est que les blocs de mon dessin n'ont pas tout à fait le même nom d'entité. Ils commencent tous par "7ffff675 ..". Comment faire s'il vous plait ?

 

 

;________________________________ LISP SURCHARGES_________________________________

(defun c:surcharges (/ calque1 calque2 calque3 calque4 liste modif )


;INITIALISATION
(c:initialisation)


;CREATION DU CALQUE STR - SURCHARGE
(if (not (tblsearch "layer" "STR - SURCHARGE")) ;vérification de l'existant d'un calque "STR - SURCHARGE"
(command "-calque" "n" "STR - SURCHARGE" "CO" "11" "STR - SURCHARGE" "tl" "CACHE" "STR - SURCHARGE" "ep" "0.00" "STR - SURCHARGE" "")) ;Création du claque "STR - SURCHARGE" si il n'existe pas


;CREATION D'UNE LISTE DES CALQUES IMPLIQUES
(setq calque1 "STR - ALLEGES")
(setq calque2 "STR - LONGRINE")
(setq calque3 "STR - POTEAUX")
(setq calque4 "STR - VOILE")

(setq liste (strcat calque1 "," calque2 "," calque3 "," calque4));LISTE

;MODIFICATION DES PARAMETRES DES CALQUES DE LA LISTE

(setq modif (list (cons 8 liste))) ;Ajout à la liste de sélection un paramètre (8 = nom des calques)
(ssget "X" modif)
 	(command "_.copytolayer" "p" "" "STR - SURCHARGE" "0,0" "0,0")


;RESTAURATION
(c:restauration)

;FIN DE LA FONCTION
)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

premières remarque sans avoir tout regardé.

Déclare tes variables. Tu a déclaré "modif" mais pas "calque1", "calqueN" etc...

 

Ensuite met ton code avec les balises prévues pour :

 




 

Pour les blocs, il rentrer dedans pour les éditer.

 

;)

PIRO Charles

Developpeur Revit, RV/RA - Formateur Revit

PIRO CIE

Lien vers le commentaire
Partager sur d’autres sites

en faite, ce que je souhaite faire, c'est garder mes blocs et venir dessiner par dessus les contours de celui-ci. Pour ça, il faut que je fasse une sélection des blocs en fonction d'un attribut commun à ces blocs. Ensuite je pourrais paramétrer ma sélection :)

 

Ma question est donc, comment faire une sélection de blocs par valeur d'attribut svp ?

Lien vers le commentaire
Partager sur d’autres sites

merci ! mais c'est trop compliqué pour débuter dans le lisp ahah. En cherchant un peu, j'ai découvert la commande xplode, qui decompose des éléments et les envois dans un calque. Ce qui est parfait pour moi, sauf qu'une fois le lisp lancé, j'obtiens "commande inconnue" alors que sur autocad, en entrant dans la barre de commande " xplode" la commande marche bien ...

 

Je vous glisse une partie de mon code :

 

;CREATION D'UNE SECONDE LISTE DES CALQUES IMPLIQUES (AVEC BLOCS)

(setq calque5 "STR - LINTEAU")
(setq calque6 "STR - POTEAUX") 
(setq calque7 "STR - LONGRINE")

(setq liste2 (strcat calque5 "," calque6 "," calque7));LISTE2

;MODIFICATION DES PARAMETRES DES CALQUES DE LA LISTE2

(setq modif2 (list (cons 8 liste2))) ;Ajout à la liste2 de sélection un paramètre (8 = nom des calques)
(ssget "X" modif2)
 	(command "_copytolayer" "p" "" "STR - SURCHARGE" "0,0" "0,0")
(command "xplode" "p" "" "G" "A" "STR - SURCHARGE")

Lien vers le commentaire
Partager sur d’autres sites

Tu peux appeler XPLODE avec la fonction VisualLISP vla-SendCommand en lui passant comme argument une chaîne de caractère contenant les options de la commande (un peu comme un script) :

(vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "xplode P  A STR - SURCHARGE\n")

 

Mais si l'objectif est bien de faire "une sélection des blocs en fonction d'un attribut commun à ces blocs" je pense que la décomposition n'est certainement pas la voie la plus facile. Quand on décompose un bloc contenant des attributs, les références d'attributs sont converties en définition d'attribut (et perdent donc leur valeur).

 

Ce que tu cherches à faire est plutôt complexe pour "débuter en LISP".

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

ça marche ! merci :) en ajoutant un G entre P et A.

 

(vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "xplode P  G A STR - SURCHARGE\n")

 

C'est vrai que ça se complique un peu là ... Ce que je cherche à faire en faite, c'est à conserver les blocs et venir dessiner par dessus une polyligne fermée avec hachures. et ta ligne de commande fait le boulot, maintenant je n'ai plus qu'à supprimer les definitions d'attributs et à modifier le type deshachures.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

re bojour tout le monde ! Bon j'ai fini mon lisp et j'ai un problème... Tout s'exècute parfaitement mais en 2 parties...

 

Je m'explique, après la ligne en visual lisp, mon code ne s'exécute plus. Par contre, si je fini par le visual lisp et que ensuite je lance le reste via un second programme tout s'exécute. Comment donc puis-je lier les 2 parties pour que mon prgramme marche en 1 fichier et non 2 ? merci

 

;________________________________ LISP SURCHARGES_________________________________

(defun c:surcharges (/ poly calque1 calque2 calque3 calque4 clos calque5 calque6 calque7 liste1 liste2 modif1 modif2 jeusel jeusel1 jeusel2 jeusel3 jeusel4)
 
(vl-load-com) ;sert à charger les fonctions Visual LISP

(vlax-get-acad-object)

;INITIALISATION
(c:initialisation)


;CREATION DU CALQUE STR - SURCHARGE
(if (not (tblsearch "layer" "STR - SURCHARGE")) ;vérification de l'existant d'un calque "STR - SURCHARGE"
(command "-calque" "n" "STR - SURCHARGE" "CO" "11" "STR - SURCHARGE" "tl" "CACHE" "STR - SURCHARGE" "ep" "0.00" "STR - SURCHARGE" "")) ;Création du claque "STR - SURCHARGE" si il n'existe pas

;VERIFICATION DES POLYLIGNES DU DESSIN (CLOSES)

;(setq poly (ssget "X" (list (cons 0 "LWPOLYLINE"))))
;(command "_.pedit" "m" "p" "" "c" "")


;CREATION D'UNE PREMIERE LISTE DES CALQUES IMPLIQUES (SANS BLOCS)

(setq calque1 "STR - VOILE")
(setq calque2 "STR - VOILE HACHURE") 
(setq calque3 "STR - MACONNERIE")
(setq calque4 "STR - MACONNERIE HACHU")

(setq liste1 (strcat calque1 "," calque2 "," calque3 "," calque4));LISTE1

;VERIFICATION DES POLYLIGNES (CLOSES)

(setq clos (list (cons 8 liste1)))
(ssget "X" clos)
(command "_.pedit" "m" "p" "" "o" "j" "0.00" "c" "")

;MODIFICATION DES PARAMETRES DES CALQUES DE LA LISTE1

(setq modif1 (list (cons 8 liste1))) ;Ajout à la liste1 de sélection un paramètre (8 = nom des calques)
(ssget "X" modif1)
 	(command "_copytolayer" "p" "" "STR - SURCHARGE" "0,0" "0,0")

;CREATION D'UNE SECONDE LISTE DES CALQUES IMPLIQUES (AVEC BLOCS)

(setq calque5 "STR - LINTEAU")
(setq calque6 "STR - POTEAUX") 
(setq calque7 "STR - LONGRINE")

(setq liste2 (strcat calque5 "," calque6 "," calque7));LISTE2

;MODIFICATION DES PARAMETRES DES CALQUES DE LA LISTE2

(setq modif2 (list (cons 8 liste2))) ;Ajout à la liste2 de sélection un paramètre (8 = nom des calques)
(ssget "X" modif2)
 	(command "_copytolayer" "p" "" "STR - SURCHARGE" "0,0" "0,0")

(setq jeusel (ssget "X" (list (cons 8 "STR - SURCHARGE"))))
(vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "xplode P  G A STR - SURCHARGE\n");Fonction Visual LISP "xplode" permettant de décomposer des blocs dans un calque précis

; àprès ça le programme ne s'exécute plus

(setq jeusel1 (ssget "X" (list (cons 0 "ATTDEF") (cons 8 "STR - SURCHARGE"))))
(command "_.erase" jeusel1 "")

(setq jeusel2 (ssget "X" (list (cons 0 "HATCH") (cons 8 "STR - SURCHARGE"))))
(command "_.erase" jeusel2 "")
 
(setq jeusel3 (ssget "X" (list (cons 8 "STR - SURCHARGE"))))
(command "_.pedit" "m" "p" "" "o" "j" "0.00" "c" "")

(setq jeusel4 (ssget "X" (list (cons 8 "STR - SURCHARGE"))))
(command "-hachures" "s" "p" "" "CA" "STR - SURCHARGE HACHU" "p" "DOTS" "0.05" "0" "")

(alert " La copie des élèments impactants sur l'étage inférieur s'est correctement effectué, Veuillez à présent aller sur le plan inférieur et coller le contenu copié")

 
;RESTAURATION
(c:restauration)

(princ)

;FIN DE LA FONCTION
)

Lien vers le commentaire
Partager sur d’autres sites

Quand je lance le tout j'obtiens :

 

Commande: SURCHARGES
112 objets copiés et placés sur le calque "STR - SURCHARGE".
69 objets copiés et placés sur le calque "STR - SURCHARGE".
Commande inconnue "SURCHARGES".  Appuyez sur F1 pour obtenir de l'aide.
Impossible de hachurer la zone.
Impossible de hachurer la zone.

           [...]

Impossible de hachurer la zone.
Impossible de hachurer la zone.
Commande: xplode
Choix des objets à traiter avec la commande Xplode.
Choix des objets: P Pas de jeu de sélection précédent.

Lien vers le commentaire
Partager sur d’autres sites

Le problème est probablement dû à la présence d'espaces dans le nom de calque*.

Dans l'expression (vla-SendCommand ...) :

(vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "xplode P  G A STR - SURCHARGE\n")

Le second argument est une chaîne de caractère passée en ligne de commande (un peu comme un script) dans lequel les espace sont interprétés comme des validations (Enter) qui, dans ce cas, rappellent la dernière commande soit : SURCHARGES.

 

Tu peux essayer en mettant le nom du claque entre guillemets, mais je ne suis pas certain que ça marche :

(vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "xplode P  G A \"STR - SURCHARGE\"\n")

 

* Éviter les espaces (et tous les accents et autres caractères spéciaux excepté underscore) dans les noms (de calque, de bloc, de style, de fichier, etc) permet d'éviter beaucoup de problèmes dans les scripts, programmes etc.

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

merci gile, du coup j'ai déclaré courant le calque "STR - SURCHARGE" pour pouvoir l'appeler par un simple espace dans la fonction en visual lisp.

 

Mais mon programme marche de la même façon... Je pense que le problème vient finalement de ce qu'il y a après cette ligne de code. Je vais essayer de ré-écrire tout ça :D

Lien vers le commentaire
Partager sur d’autres sites

Finalement j'ai simplifié la ligne en visual lisp en déclarant au préalable le calque que je souhaite courant ce qui donne :

(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "xplode P  G A \r")

 

Le soucis c'est que ça ne marche toujours pas et je ne comprend pas du tout pourquoi ... Mon lisp marche ! mais en 2 parties !

 

Première partie :

 

(defun c:copiesurcharges (/ calque1 calque2 calque3 calque4 liste1 clos calque5 calque6 calque7 liste2 modif2 jeusel e ); Déclaration de toutes les variables
 
(vl-load-com) ;sert à charger les fonctions Visual LISP

;INITIALISATION
(c:initialisation); lancement du programme de réccupération des paramètres d'AutoCaD 


;CREATION DU CALQUE "STR - SURCHARGE" SI NECESSAIRE
(if (not (tblsearch "layer" "STR - SURCHARGE")) ;vérification de l'existant d'un calque "STR - SURCHARGE"
	(command "-calque" "n" "STR - SURCHARGE" "CO" "11" "STR - SURCHARGE" "tl" "CACHE" "STR - SURCHARGE" "ep" "0.00" "STR - SURCHARGE" "")) ;Création du claque "STR - SURCHARGE" si il n'existe pas

;RENDRE LE CALQUE "STR - SURCHARGE" COURANT  
(setvar "clayer" "STR - SURCHARGE")
 
;CREATION D'UNE PREMIERE LISTE DES CALQUES IMPLIQUES (SANS BLOCS)
(setq calque1 "STR - VOILE")
(setq calque2 "STR - VOILE HACHURE") 
(setq calque3 "STR - MACONNERIE")
(setq calque4 "STR - MACONNERIE HACHU")

(setq liste1 (strcat calque1 "," calque2 "," calque3 "," calque4));Déclaration d'une première liste "liste1"

;VERIFICATION DES POLYLIGNES (CLOSES)
(setq clos (list (cons 8 liste1))) ;Création d'une séléction de tous les éléments des calques de la liste1 (8 = nom des calques )
(ssget "X" clos) ;X = clos
	(command "_.pedit" "m" "p" "" "o" "j" "0.00" "c" "") ;Tous les potentielles lignes présentes deviennent des polylignes et sont fermées

;MODIFICATION DES PARAMETRES DES CALQUES DE LA LISTE 1

(setq modif1 (list (cons 8 liste1))) ;Ajout à la liste 1 de sélection un paramètre (8 = nom des calques)
(ssget "X" clos) ;X = clos
	(command "_copytolayer" "p" "" "STR - SURCHARGE" "0,0" "0,0") ;Copie de tous les éléments de la liste 1 dans un calque unique "STR - SURCHARGE"

;CREATION D'UNE SECONDE LISTE DES CALQUES IMPLIQUES (AVEC BLOCS)

(setq calque5 "STR - LINTEAU")
(setq calque6 "STR - POTEAUX") 
(setq calque7 "STR - LONGRINE")

(setq liste2 (strcat calque5 "," calque6 "," calque7));Déclaration d'une seconde liste "liste2"

;MODIFICATION DES PARAMETRES DES CALQUES DE LA LISTE2

(setq modif2 (list (cons 8 liste2))) ;Ajout à la liste2 de sélection un paramètre (8 = nom des calques)
(ssget "X" modif2) ;X = modif2
	(command "_copytolayer" "p" "" "STR - SURCHARGE" "0,0" "0,0") ;Copie de tous les éléments dans un calque unique "STR - SURCHARGE"

(setq jeusel (ssget "X" (list (cons 8 "STR - SURCHARGE"))))
(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "xplode P  G A \r");Fonction Visual LISP, "xplode" = décomposition de blocs vers un calque.

;RESTAURATION
(c:restauration)

(princ)

;FIN DE LA FONCTION
)

 

 

Seconde partie:

 

(defun c:testautocad (/ jeusel1 jeusel2 jeusel3 jeusel4)

(c:initialisation)

(setq jeusel1 (ssget "X" (list (cons 0 "ATTDEF") (cons 8 "STR - SURCHARGE"))))
(command "_.erase" jeusel1 "")
(setq jeusel2 (ssget "X" (list (cons 8 "STR - SURCHARGE") (cons 0 "HATCH"))))
(command "_.erase" jeusel2 "")
(setq jeusel3 (ssget "X" (list (cons 8 "STR - SURCHARGE"))))
(command "_.pedit" "m" "p" "" "o" "j" "0.00" "c" "")
(setq jeusel4 (ssget "X" (list (cons 8 "STR - SURCHARGE"))))
(command "-fhach" "S" "p" "" "CA" "STR - SURCHARGE HACHU" "P" "DOTS" "0.05" "0" "T" "P" "COU" "." "." "")

(c:restauration)
 
(princ)
 
)

 

Mais si je les fusionne en un seul lisp, la commande xplode ne s’exécute pas. D'ailleurs, j'ai l'impression qu'elle s'éxécute en fin de lisp alors qu'elle ne devrait pas... Bizarre

 

Résultat après la fusion des 2 lisp :

 

Commande: COPIESURCHARGES

90 objets copiés et placés sur le calque "STR - SURCHARGE".

64 objets copiés et placés sur le calque "STR - SURCHARGE".
Commande inconnue "COPIESURCHARGES".  Appuyez sur F1 pour obtenir de l'aide.

Impossible de hachurer la zone.
Impossible de hachurer la zone.
            [...]
Impossible de hachurer la zone.
Impossible de hachurer la zone.
Impossible de hachurer la zone. -typeligne
Type de ligne courant:   "DuCalque"
Entrez une option [?/CRéer/CHarger/Actuel]: a
Spécifiez le nom du type de ligne ou [?] <DuCalque>:
Entrez une option [?/CRéer/CHarger/Actuel]:
Commande:
Commande: xplode
Choix des objets à traiter avec la commande Xplode.
Sélectionner des objets: P Pas de jeu de sélection précédent.

Sélectionner des objets:

Commande:
Commande: G Commande inconnue "G".  Appuyez sur F1 pour obtenir de l'aide.

Commande: A ARC
Spécifiez le point de départ de l'arc ou [Centre]:

Pas de ligne ou d'arc pour continuer.
*Incorrect*

 

En tout cas merci pour tout, en parallèle je travaille sur une DCL simple qui donne le choix de copier ou couper la sélection pour voir un peu tout du lisp ;)

Lien vers le commentaire
Partager sur d’autres sites

Bon ,mon lisp marche niquel, mais en 2 parties .. Pas grave, il faudra appuyer sur 2 boutons au lieu d'un ahah.

 

Par contre, j'ai une question concernant les dcl ! J'ai pas mal bosser dessus hier et ce matin, mais dés que je clique sur copier ou couper ou même annuler, Autocad plante et il ne me reste qu'à faire un ctrl+alt+supp pour réouvrir mon dessin. Quel est selon vous l'erreur que j'ai pu commettre ? :rolleyes: merci !

 

;----------------Boite DCL------------------------
(defun c:boitedcl (/ dcl_id)
(if(not(setq dcl_id (load_dialog "selection.dcl"))) ;chargement de la boite DCL
   (progn       (alert "le fichier DCL n'a pu être chargé correctement !") ; message d'erreur si la boite est introuvable
     (exit); ferme la boite DCL si erreur
     )
   
   (progn
     (if (not (new_dialog "select" dcl_id)); commence la lecture du fichier DCL par la définiton "select"
(progn
  (alert "le nom du DCL ne coïncide pas!");Message d'erreur si la définiton inscrite dans le fichier DCL n'est pas "select"
  (exit); ferme la boite DCL si erreur
  )

(progn
; Une fois toutes vérifications faites, on peut affecter les commandes aux boutons
   (action_tile "copier" "(copieselection)") ;lance la fonction copier
   (action_tile "couper" "(couperselection)") ;lance la fonction couper
   (action_tile "cancel" "(done_dialog)")  ;annuler

   (unload_dialog dcl_id) ;décharge la boite de dialogue une fois terminé
         	   
 	)
)
    )
)
(c:restauration); Restaure les paramètres d'autoCaD avant le lancement du programme
 
(princ); évite NIL
 
;FIN DE LA FONCTION  
)


;________________________________________COMMANDE COPIER__________________________________________

(defun copieselection (/ sel1)

(setq sel1 (ssget "X" (list (cons 8 "STR - SURCHARGE HACHU")))) ;Sélection des éléments des calques "STR - SURCHARGE" et "STR - SURCHARGE HACHU"
	(command "_copybase" "0,0" seL1 "") ;copie de la sélection
)
;________________________________________COMMANDE COUPER__________________________________________

(defun couperselection (/ sel2)

(setq sel2 (ssget "X" (list (cons 8 "STR - SURCHARGE HACHU")))) ;Sélection des éléments des calques "STR - SURCHARGE" et "STR - SURCHARGE HACHU"
	(command "_copybase" "0,0" sel2 "") ;copie de la sélection
	(command "_.erase" sel2 "") ;supprime la selection du dessin courant
)
;_________________________________________________________________________________________________

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é