mdsv31 Posté(e) le 4 décembre 2004 Posté(e) le 4 décembre 2004 Je voudrais creer un programme, qui dessine un ligne avec un bloc au debut et a la fin, et cette ligne doit etre divice par n bloc.(avec la fonction point diviser) Je ne veut pas imperativement le programme en entier mais une ligne general qui me permettra de le creer par moi meme. Merci par avance @+ MDSV31 Dessinateur Indépendant
rebcao Posté(e) le 5 décembre 2004 Posté(e) le 5 décembre 2004 a pas tout compris !.... :casstet: un peu plus de précision, ou un dessin pour illustrer le projet. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
mdsv31 Posté(e) le 5 décembre 2004 Auteur Posté(e) le 5 décembre 2004 Le but de la manoeuvre est : - tracer une ligne avec un bloc au deux extremite en VBA cela donne :yltype: Dim PT1 as variantDim PT2 as variantDim L1 as AcadLine PT1= ThisDrawing.Utility.GetPoint( , "1er PT:")PT2= ThisDrawing.Utility.GetPoint( , "2em PT:") ThisDrawing.ModelSpace.InsertBlock( PT1 , "ET-R" , 1 , 1 , 1 , 0 ) Set L1=Thisdrawing.ModelSpace.AddLine( PT1 , PT2 ) ThisDrawing.ModelSpace.InsertBlock( PT2 , "ET-R" , 1 , 1 , 1 , 0 ) Maintenant la ou je bloque c'est que je n'y arrive pas en Lisp mais pas grave L'autre c'est que je voudrais diviser L1 (fonction autocad _DIVIDE) avec le Block ET-R et une fois cela fait je voudrais effacer L1. En esperant avoir ete un peu plus claire @+ MDSV31 Dessinateur Indépendant
rebcao Posté(e) le 5 décembre 2004 Posté(e) le 5 décembre 2004 En VBA je connais pas, en LISP ça va je maitrise.... Mais une question ? Pourquoi réinventer l'eau chaude :casstet: lorsqu'une bidouille peu être remplacée par une MACRO, une simple petite icône ? La voici : Voici la macro à COPIER-COLLER j'ai créé cette MACRO avec une LT, en 3 minutes... ;) Christian [Edité le 5/12/2004 par rebcao] Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
mdsv31 Posté(e) le 5 décembre 2004 Auteur Posté(e) le 5 décembre 2004 Super, c'est ce que je voulais faire, pour le debut . Car le projet complet est que je dois pouvoir dessiner des aciers a l'echelle dans des calques bien definie (les HA6 dans calque HA06, HA8 dans le calque HA08.......) Mais pour commencer c'est super sympa, cela va me faire gagner du temps. Merci REBCAO Sinon REBCAO,Peut tu me dire comment faire la meme chose en lisp s'il te plait.surtout pour la fonction diviser @+ MDSV31 Dessinateur Indépendant
didier Posté(e) le 5 décembre 2004 Posté(e) le 5 décembre 2004 hellocomment est ce que ça va bien ce dimanche ? je t'amène un début de réponse :(setq ent(car(entsel)))(command "_divide" ent "5") ça te va ? amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
mdsv31 Posté(e) le 5 décembre 2004 Auteur Posté(e) le 5 décembre 2004 Je savais bien que quand didier aurai fini de manger il aurai un debut de reponse a me fournir Merci beaucoup Une fois que j'aurai pondu le programme je vous le ferai parvenir pour voir si on peut l'ameliorer. @+ MDSV31 PS: S'il y a encore des personnes qui on des idee, je suis ouvert a tout (ou presque ;) ) Il ne me reste plus qu'a travailler :yltype: Dessinateur Indépendant
mdsv31 Posté(e) le 5 décembre 2004 Auteur Posté(e) le 5 décembre 2004 Voici la premier bouture (defun c:Aciers() (Setq PT1(getpoint "\n1er point: ")) (Command "_insert" "ET-R" PT1 "1" "1" "0") (Setq PT2(getpoint "\n2eme point: ")) (Command "_insert" "ET-R" PT2 "1" "1" "0") (Command "_line" PT1 PT2) (Setq ent(car(entsel))) (Command "_divide" ent "b" "ET-R" "O" ) ) Tout marche bien jusqu'au deux ligne de la fin il me marque Commande: aciers 1er point:2eme point:Choix de l'objet:Point ou option nécessaire.; erreur: Fonction annulée Spécifiez le point suivant ou [annUler]: *Annuler* Il bloque sur la fonction _line Je ne comprend pas:casstet: Merci de votre @+ MDSV31 Dessinateur Indépendant
rebcao Posté(e) le 5 décembre 2004 Posté(e) le 5 décembre 2004 à première vue il te manque un RETURN aaprès ligne. Ta commande n'est pas terminé... (Command "_line" PT1 PT2) il faudrait (Command "_line" PT1 PT2 "") j'ai pas vu la commande effacer : (Command "_erase" ENT "") à la place du ENTSEL tu peux faire un (ENTGET (ENTLAST)). ça t'évite de sélectionner la ligne Christian [Edité le 5/12/2004 par rebcao] Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
mdsv31 Posté(e) le 5 décembre 2004 Auteur Posté(e) le 5 décembre 2004 Super merci REBCAO et DIDIER Ca marche comme sur des roulettes Merc beaucoup @+ mdsv31 Dessinateur Indépendant
rebcao Posté(e) le 5 décembre 2004 Posté(e) le 5 décembre 2004 le ENTGET ne sera pas nécessaire, je crois ! utilise juste (ENTLAST), à vérifier... Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
mdsv31 Posté(e) le 5 décembre 2004 Auteur Posté(e) le 5 décembre 2004 Juste encore un petit probleme (defun c:Aciers() (Setq PT1(getpoint "\n1er point: ")) (Command "_insert" "ET-R" PT1 "1" "1" "0") (Setq PT2(getpoint "\n2eme point: ")) (Command "_insert" "ET-R" PT2 "1" "1" "0") (Command "_line" PT1 PT2 "") (Setq ent(entlast)) (Command "_divide" ent "b" "ET-R" "O" ) (Command "_erase" ent "" ) ) Ca marche sauf qu'il m'annoce un message d'erreur Commande: aciers 1er point:2eme point:Nécessite un entier entre 2 et 32767.; erreur: Fonction annulée Entrez le nombre de segments: 2 Commande: mais il dessine tout correctement mais n'efface pas comprend pas :casstet: @+ MDSV31 Dessinateur Indépendant
didier Posté(e) le 5 décembre 2004 Posté(e) le 5 décembre 2004 salutessaie ceci, et tiens nous au courant (Setq PT1(getpoint "\n1er point: "))(Command "_insert" "ET-R" PT1 "1" "1" "0")(Setq PT2(getpoint "\n2eme point: "))(Command "_insert" "ET-R" PT2 "1" "1" "0")(setq nb (getint "\nCombien t'en veux mdsv31 \\n"))(Command "_line" PT1 PT2 "")(Setq ent(entlast))(Command "_divide" ent "b" "ET-R" "o" nb )(entdel ent) amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
mdsv31 Posté(e) le 5 décembre 2004 Auteur Posté(e) le 5 décembre 2004 Bravo Didier, cela fonction a merveille. juste une question, si tu me le permet, pourquoi cela ne marchais pas avant? @+ MDSV31 et encore merci Dessinateur Indépendant
mdsv31 Posté(e) le 5 décembre 2004 Auteur Posté(e) le 5 décembre 2004 J'oubliai, merci a REBCAO aussi @+ MDSV31 Dessinateur Indépendant
rebcao Posté(e) le 5 décembre 2004 Posté(e) le 5 décembre 2004 coucou me revoilou ! il semblerait que tu ais oublier le NB pour diviser... Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
mdsv31 Posté(e) le 5 décembre 2004 Auteur Posté(e) le 5 décembre 2004 Non c'etait prevus, car je penser le rentrer pendant la commande Mais c'etait pas bien penser de ma part. Didier et toi m'avait donner la reponse et je vous en remerci En esperant vous dépanner un jour. ;) @+ MDSV31 Dessinateur Indépendant
rebcao Posté(e) le 5 décembre 2004 Posté(e) le 5 décembre 2004 je sais qu'à l'intérieur de la fonction commande on peut utiliser le terme PAUSE exemple : ( command "_-insert" "NOMduBLOC" PAUSE 1 1 0) PAUSE permet d'intervenir sans être obliger de créer une variable de saisie... Tiens ! j'ai remarqué ta commande _insert ! tu as quelle version AutoCAD ? Parce qu'en principe ce serait plutôt _-insert sinon tu passes par la case de dialogue INSERER... Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
Invité Patrick Posté(e) le 5 décembre 2004 Posté(e) le 5 décembre 2004 Pas appelé depuis une instruction LISP, où la boite de dialogue est automatiquement désactivée.
mdsv31 Posté(e) le 5 décembre 2004 Auteur Posté(e) le 5 décembre 2004 J'ai une version autocad 2005 et je vais tester tout sa sur une map5 @+ MDSV31 Dessinateur Indépendant
didier Posté(e) le 5 décembre 2004 Posté(e) le 5 décembre 2004 hello,c'est du Lisp pour autoCad,donc puisqu'on ne fait appel qu'à des fonctions AutoCad,celà fonctionnera sur MAP,l'inverse n'est pas forcément vrai,en effet AutoCap Map a certaines commandes qui lui sont propres. ciao ;) Éternel débutant... Mon site perso : Programmer dans AutoCAD
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant