Aller au contenu

COMMAND DIVISER SOUS LISP


Invité pleche.damien

Messages recommandés

Invité pleche.damien

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)

) 

Lien vers le commentaire
Partager sur d’autres sites

Invité pleche.damien

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Invité pleche.damien

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

 

 

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Invité pleche.damien

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Invité pleche.damien

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

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é