Aller au contenu

mLine - SendCommand


Messages recommandés

Posté(e)

Encore bonjour,

est-ce que vous avez déjà essayé de créer une mLine avec VBA???

 

et bien je peux vous dire que ça ne fonctionne pas très bien... les variables de système qui sont utilisé par AutoCAD lors de la création de mLine (cmlscale, cmljust et cmlstyle) ne sont pas utilisé par VBA lors de la commande AddMLine, il utilise des valeurs par défault.

 

si je fais un SendCommand, ça fonctionne sauf que comme cette commande est asynchrone et elle n'est pas exécuter avant la prochaine ligne de code qui est:

 

Set MLineObj = ThisDrawing.ModelSpace(0)

 

j'ai essayé plusieurs chose pour tenter de le faire attendre

 

ThisDrawing.SendCommand Chr(27) ' ESC

 

et

 

nbItems = -1

Do Until nbItems = 0

nbItems = ThisDrawing.ModelSpace.Count - 1

ThisDrawing.Regen acActiveViewport

Loop

 

et même

 

Open "x.txt" For Output As #1

Print #1, "allo"

Close #1

 

mais bon....

 

si vous avez des idées...?

 

aussi est-ce que c'est possibles de savoir le Scale, Justification et Style d'un mLine qui est déjà créé? Parce que je sais que encore une fois la propriétée n'existe pas.

 

merci

Posté(e)

Bonjour

Bienvenue sur CadXp.

 

il semble que pour dessiner des MLINE

il faille précédemment définir un Style de Multiligne.

c'est ce style qui sera utilisé par le VBA.

 

Maintenant, s'il faut créer le style par VBA,

je n'ai pas la réponse à l'instant présent,

si tes soucis persistent, reviens à la charge.

 

amicalement

Posté(e)

Merci de ta réponce...

 

OK... pour le Style de MultiLigne, est-ce que tu veux dire le CMLSTYLE???

 

je viens de faire le test et oui le style est utilisé par VBA avec la commande AddMLine(VertexList) mais encore le Scale (CMLSCALE) et la justification (CMLJUST) ne semblent pas être utilisé. mes 2 lignes sont collé (Scale = 1) et les points sont toujours au centre (Just = 1).

 

et encore si quel'qu'un sait comment trouver ces valeurs pour une mLine existante ça serrait bien...

 

merci @+

Posté(e)

Bonjour,

 

Je pense que ceci suffira,

avant de dessiner ta MultiLigne,

Initialise les valeurs que tu souhaites,

regarde l'aide pour les différentes options

 

par exemple :

ThisDrawing.SetVariable "cmlscale", 5

ThisDrawing.SetVariable "cmljust", 0

 

pour ta deuxième question, je ne me suis pas penché

sur les propriétés de l'objet à postériori.

à suivre ...

 

amicalement

 

Posté(e)

Comme j'ai dis avant la commande AddMLine n'utilise pas les valeurs dans ces variables, sauf le CMLSTYLE comme tu m'a fais réaliser ce matin...

 

Voici ce que j'ai jusqu'à date:

 

ThisDrawing.SetVariable "cmlscale", mMLineScale

ThisDrawing.SetVariable "cmljust", mJustification

ThisDrawing.SetVariable "cmlstyle", mStyle

 

Dim i As Integer

Dim Command As String

 

Command = Command & Chr(27) & Chr(27) & "mline " & mCoordinates(0) & "," & mCoordinates(1) & "," & mCoordinates(2) & " "

For i = 3 To UBound(mCoordinates)

Command = Command & mCoordinates(i) & "," & mCoordinates(i + 1) & " "

i = i + 2

Next

Command = Command & Chr(27)

 

ThisDrawing.SendCommand Command

 

Dim nbItems As Integer

Dim MLineObj As AcadMLine

nbItems = ThisDrawing.Blocks(mSpaceType).Count - 1

[surligneur]Set MLineObj = ThisDrawing.Blocks(mSpaceType)(nbItems)[/surligneur]

 

 

j'ai plus ou moins abandonné le addMLine pour les raisons que j'ai données

 

la ligne souligné, c'est l'a que l'erreur ce produit... mais si je place un STOP n'importe où avant, il n'y aura pas d'erreur.

 

encore, si je ne peux pas savoir la valeur de ces variables pour une MLine en particulier, je me casse la tête pour rien...

 

 

Posté(e)

excuse moi... j'ai oublié de remplacer Blocks(mSpaceType) par ModelSpace... donc

 

nbItems = ThisDrawing.ModelSpace.Count - 1

Set MLineObj = ThisDrawing.ModelSpace(nbItems)

 

et je suis d'accord que ce n'est pas la bonne façcon de faire mais la command addMLine ne tient pas compte des varriable de système CMLSCALE et CMLJUST. donc SendCommand...

 

Mais pour le but: il faut que je puisse recréer une Multiligne à partir d'une multiligne déjà dans le dessin (ModelSpace)

 

merci de ta patience...

Posté(e)

mais pour que ça fonctionne il faudrait que je puisse savoir la valeur du scale et de la justification de cette MultiLigne en particulier. je crois que dans 2006 le problème a été réglé puisque les propriétés Justification et mLineScale ont été ajouté à l'objet iAcadMLine2. mais malheureusement je dois trouver une solution pour 2005.

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é