Aller au contenu

COMMAND DIVISER SOUS LISP


Messages recommandés

Invité pleche.damien
Posté(e)

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)

) 

Posté(e)

moi je ferais comme ca

 

(defun c:acier11 ()

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

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

) 


Vous fîtes ce que vous pûtes

et vous m'épatâtes !!!!

Invité pleche.damien
Posté(e)

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

Posté(e)

à 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.

Invité pleche.damien
Posté(e)

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])

 

 

Posté(e)

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??

Invité pleche.damien
Posté(e)

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

Posté(e)

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?

Invité pleche.damien
Posté(e)

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

Invité pleche.damien
Posté(e)

oui c'est bien sa wookichou

Posté(e)

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)
)

Posté(e)

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))
 )
)

 

@+

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

Invité pleche.damien
Posté(e)

MERCI PATRICK Ta routine marche nickel a+

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é