Aller au contenu

Crestion ligne et bloc


Messages recommandés

Posté(e)

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

Posté(e)

Le but de la manoeuvre est :

 

- tracer une ligne avec un bloc au deux extremite

 

en VBA cela donne :yltype:

 

Dim PT1 as variant

Dim PT2 as variant

Dim 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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

salut

essaie 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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

Pas appelé depuis une instruction LISP, où la boite de dialogue est automatiquement désactivée.

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é