CADxp: COMMAND DIVISER SOUS LISP - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

COMMAND DIVISER SOUS LISP

#1 Guest_pleche.damien_*

  • Groupe : Invités

Posté 16 mai 2011 - 14:14

Bonjour, je cherche à faire fonctionner la commande "diviser" sous autocad avec une insertion de bloc (cercle) qui suit un segment. Malheuresement une érreur c'est introduit dans mon programme lisp. Je pense que c'est sur la dernière ligne de lisp. Pouvez vous m'aider..?
Faut t'il également créer le bloc dans un fichier autocad DWG qui est appelé sur le chemin de parcour d'option..?



(defun c:acier11 ()

  (setq ptac3 (getpoint "/n donner le premier point"))

  (setq ptac4 (getpoint "/n donner le deuxieme point"))

  (setq d1 (distance ptac3 ptac4))

  (setq nbr11 (getint "/n donner nombre acier"))

  (command "diviser" d1 "B" "cercle" "O" nbr11)


) 

0

#2 L'utilisateur est hors-ligne   capde06 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 573
  • Inscrit(e) : 22-juin 05

Posté 16 mai 2011 - 14:34

d1 est une distance
le premier argument de la commande "diviser" doit designer un objet

0

#3 L'utilisateur est hors-ligne   capde06 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 573
  • Inscrit(e) : 22-juin 05

Posté 16 mai 2011 - 14:43

moi je ferais comme ca


(defun c:acier11 ()


    (setq nbr11 (getint "/n donner nombre acier"))


  (command "diviser" (pause) "B" "cercle" "O" nbr11)


) 



 

0

#4 Guest_pleche.damien_*

  • Groupe : Invités

Posté 16 mai 2011 - 14:46

OUI mais même si je mais pour l'objet: "diviser" ptac3 ptac4 ; pour désigner le segment, se dernier est bien diviser mais le bloc cercle ne s'insère pas correctement!!! comment faire je débute en lisp
0

#5 L'utilisateur est hors-ligne   wookichu 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 127
  • Inscrit(e) : 11-juillet 07

Posté 16 mai 2011 - 14:56

à peu pret la même rponse que capde06

une petite piste de réflexion:

la commande diviser que tu appelle demande que tu lui donne un objet (ligne ou polyligne) alors que tu lui donne une distance (d1)...

vite fait :


(defun c:acier11 ()

  (princ  "choix de l'objet a diviser")

  (setq ss (ssget))

  (setq nbr11 (getint "/n donner nombre acier"))

  (command "diviser" ss "B" "cercle" "O" nbr11)

) 

  


ps : le ssget te permet de faire ta sélection d'objet

de plus pense que ce que tu nome cercle doit être un bloc déjà défini dans ton dessin.
0

#6 Guest_pleche.damien_*

  • Groupe : Invités

Posté 16 mai 2011 - 15:08

MERCI pour cette piste malheuresement pour effectuer un programme rapide je ne pense pas sélectioner dans autocad le segment, je veux qu'il se sélectionne automatiquement, j'ai donc regarder l'aide autocad que pense tu de sela??? MERCI A TOUSSE


(ssget [sel-method] [ptac3 [ptac4]]
[pt-list] [filter-list])


0

#7 L'utilisateur est hors-ligne   wookichu 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 127
  • Inscrit(e) : 11-juillet 07

Posté 16 mai 2011 - 15:12

Citation

je veux qu'il se sélectionne automatiquement


ben là il faudrait qu'on ai un peu plus de renseignements sur l'objet à diviser...
-est-il dans un calque spécial
-a-t-il une longueur spécifique
-un type de ligne spécifique
-une couleur spécifique
-que sait-je encore??
0

#8 Guest_pleche.damien_*

  • Groupe : Invités

Posté 16 mai 2011 - 15:18

wookichu ton programme fonctionne bien mintenant pour l'adapter à mes souhait je ne créer pas de calque spécifique je suis seulement dans le calque 0, Ceci dit les point "ptac3" "ptac4" sont des variable qui définisse les deux extrémités du segment et donc représente une distance de segment qui varie selon le point de clic. La distance n'est doonc pas constante. VOILA je pense que c'est info sont suffisante, si tu as une piste pour m'aider? MERCI
0

#9 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2075
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 16 mai 2011 - 15:26

Bonjour,

Si tu veux quelque chose de rapide, à quoi ça sert de demander à l'utilisateur de cliquer 2 points (2 clics en étant obligé de faire attention aux accrochages), plutôt que de lui demander simplement de cliquer sur 1 objet comme te le suggèrent capde06 et wookichu ???
0

#10 L'utilisateur est hors-ligne   wookichu 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 127
  • Inscrit(e) : 11-juillet 07

Posté 16 mai 2011 - 15:31

Si je comprend bien:

au départ tu n'as pas d'objet existant pour appliquer ta division et tu veux juste cliquer deux points pour créer une ligne qui sera divisée avec tes bloc?
0

#11 Guest_pleche.damien_*

  • Groupe : Invités

Posté 16 mai 2011 - 15:34

OUI BRYCE Tu a raison seulement les lignes lisp que j'ai écrite pour la command "diviser" fait partie d'un programme plus conséquent qui déssine mais fondation automatiquement, j'ai donc simplifier la lecture de mon programme dans se sens, car en effet dans mon programme d'ensemble je ne serai pas en trin de cliquer car les points ptac3 et ptac4 se positionerons automatiquement. J'espere être claire, salutations
0

#12 Guest_pleche.damien_*

  • Groupe : Invités

Posté 16 mai 2011 - 15:36

oui c'est bien sa wookichou
0

#13 L'utilisateur est hors-ligne   wookichu 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 127
  • Inscrit(e) : 11-juillet 07

Posté 16 mai 2011 - 16:06

je pense que ceci devrait faire l'affaire...


(defun c:acier11 ()


  (setq ptac3 (getpoint "/n donner le premier point"))

  (setq ptac4 (getpoint "/n donner le deuxieme point"))

  (setq ptac3 (cons 10 ptac3))

  (setq ptac4 (cons 11 ptac4))

  (setq lin (list '(0 . "line") '(8 . "0") ptac3 ptac4))

  (entmake lin)

  (setq d1 (entlast))

  (setq nbr11 (getint "/n donner nombre acier"))

  (command "diviser" d1 "B" "cercle" "O" nbr11)

  (entdel d1)

)

 

0

#14 L'utilisateur est hors-ligne   Patrick_35 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 5419
  • Inscrit(e) : 06-janvier 03

Posté 16 mai 2011 - 16:08

Salut

Et avec polar ?

(defun c:acier11 ()

  (setq ptac3 (getpoint "/n donner le premier point"))

  (setq ptac4 (getpoint ptac3 "/n donner le deuxieme point"))

  (setq nbr11 (getint "/n donner nombre acier"))

  (setq d1 (/ (distance ptac3 ptac4) (1+ nbr11)))

  (setq dist d1)

  (setq ang (angle ptac3 ptac4))

  (repeat nbr11

    (command "_.insert" "cercle" "_none" (polar ptac3 ang dist) "1" "1" (* (/ ang pi) 180.0))

    (setq dist (+ dist d1))

  )

)


@+
Image IPB 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
0

#15 Guest_pleche.damien_*

  • Groupe : Invités

Posté 16 mai 2011 - 16:36

MERCI PATRICK Ta routine marche nickel a+
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)