Aller au contenu

modif offset


Invité samuelM

Messages recommandés

Invité samuelM

Bonjour

 

J'ai un programme qui est similaire à _offset mais je voudrai apporter quelques modif.

Je voudrai remplacer la fonction "décaler un objet par "tracer une ligne à a+b d'une ligne ou polyligne sélectionné"

 

Voici ma routine si quelqu'un peu m'aider. et enlever la répétition de "getstring".

 

(defun c:Linteau (/	      userecho	   ent_select	ent_pickpt   ent_orig	  off_pt

	 off_angle    last_entity  last_pt	expr	     off_dist	  newoff_pt

	)

 (or (member "geomcal.arx" (arx)) (arxload "geomcal"))

 (setq userecho (getvar "cmdecho"))

 (setvar "cmdecho" 0)

 (setq	ent_select (entsel "\nSélectionner l'objet à décaler: ")

ent_pickpt (cadr ent_select)

ent_orig   (car ent_select)

 ) ;_ setq 

 (redraw ent_orig 3)

 (setq	off_pt	  (getpoint "\nIndiquer la direction : ")

off_angle (angle ent_pickpt off_pt)

 ) ;_ setq 

 (setq	last_entity ent_orig

last_pt	    ent_pickpt

 )

 (while (/= (setq expr (getstring "\nIndiquer la hauteur de la réservation sol fini (a) et la hauteur tableau(b) par addition a+b: ")) "")

   (if	(setq off_dist (addition expr))

     (progn

(setq newoff_pt (polar last_pt off_angle 10))

(command "._offset" off_dist last_entity newoff_pt "")

(setq last_entity

       (entlast)

) ;_ setq

     ) ;_ progn

     (alert "Expression non valide")

   ) ;_ if

 ) ;_ while

 (setvar "cmdecho" userecho)

 (princ)

) ;_ defun

(princ "\nDébuter avec Linteau ") 

(princ)



;; addition

;; retourne le résultat d'une addition (ou nil)

;;

;; Argument

;; expr : une chaîne de caractère exprimant une addition

(defun addition (expr)

 ((lambda (l)

    (if (vl-every 'numberp l)

      (apply '+ l)

    )

  )

   (mapcar 'distof (str2lst expr "+"))

 )

)



;; str2lst

;; Transforme un chaine avec séparateur en liste de chaines

;;

;; Arguments

;; str : la chaine à transformer en liste

;; sep : le séparateur

(defun str2lst (str sep / pos)

 (if (setq pos (vl-string-search sep str))

   (cons (substr str 1 pos)

  (str2lst (substr str (+ (strlen sep) pos 1)) sep)

   )

   (list str)

 )

) 

 

Merci pour votre aide

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é