Aller au contenu

Création bouton personnalisé.


Gilles1

Messages recommandés

Bonjour à tous.

 

J'ai très souvent besoin de dessiner des croix orientées à 45° centrées dans des cercles de différents diamètres. Ceci pour désigner les alvéoles occupées au sein d'un masque de chambre de réseau.

 

Exemple:

 

http://img217.imageshack.us/img217/796/capture01qe.jpg

 

Je voudrais créer un bouton qui insère, centre, oriente et ajuste une croix dans l'alvéole, ou mieux encore dans plusieurs alvéoles à sélectionner.

 

Qu'est-ce que vous me conseillez ?

Une macro ?

Un lisp ?

 

J'ai essayé via l'enregistreur d'actions, mais la croix est tjrs. placée au même point... :casstet:

Pas concluant, donc.

Ou alors j'ai raté qquechose.

 

Merci de me donner une piste.

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Je pense qu'il faut un Lisp pour pouvoir s'ajuster a TOUS les cas de figure et surtout permettre une selection de N objets (cercles) !

 

D'ailleurs si quelqu'un developpe ce petit programme, je suggere une amelioration :

 

Traiter les cercles et les polylignes en tracant une ligne du point 1 au point 3 et du point 2 au point 4, ainsi on traitera AUSSI les polylignes en forme de carre ou rectangle car on n'utilise pas toujours des cercles

 

Merci d'avance, Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

Un début ?

 

(defun c:croix	(/ sel i obj ent)

 ;; Trace une croix dans le cercle
 (defun trc_cercle  (obj)
   (setq d  (/ (cdr (assoc '40 obj)) (sqrt 2.0))
  ct (cdr (assoc '10 obj)))
   (entmake (list '(0 . "LINE")
	   (cons '10 (mapcar '+ ct (list d d 0)))
	   (cons '11 (mapcar '- ct (list d d 0)))
	   )
     )
   (entmake
     (list '(0 . "LINE")
    (cons '10 (mapcar '+ ct (list d (* -1 d) 0)))
    (cons '11 (mapcar '- ct (list d (* -1 d) 0)))
    )
     )
   )

 ;; Trace une croix dans un rectangle
 (defun trc_rect  (obj)
   (setq obj (vl-remove-if-not
	'(lambda (x) (= (car x) 10))
	obj))
   (entmake (list '(0 . "LINE")
	   (nth 0 obj)
	   (cons '11 (cdr (nth 2 obj)))
	   )
     )
   (entmake (list '(0 . "LINE")
	   (nth 1 obj)
	   (cons '11 (cdr (nth 3 obj)))
	   )
     )
   )

 ;; Fonction principale
 (setq	i   -1
sel (ssget '((-4 . "		     (0 . "CIRCLE")
	     (0 . "LWPOLYLINE")
	     (-4 . "OR>")
	     )
	   )
)
 
 (if sel
   (while (setq i   (1+ i)
	 obj (ssname sel i))
     (setq obj	(entget obj)
    ent	(cdr (assoc '0 obj)))
     (cond
((= ent "CIRCLE") (trc_cercle obj))
((= ent "LWPOLYLINE") (trc_rect obj))
)
     )
   )
 (princ)
 )

 

Sujet à déplacer dans le forum "Débuter en lisp" ?

www.le-metal.net, sur la métallerie
Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Merci beaucoup, ton Lisp marche parfaitement sur MAP 3D 2006 et donc on peut supposer qu'il fonctionnera tout aussi bien sur les versions 2007-2001 ! A verifier quand meme ?

 

Encore merci pour tes efforts, Bon WE, Le Decapode

 

Autodesk Expert Elite Team

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é