smellems Posté(e) le 26 avril 2005 Posté(e) le 26 avril 2005 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
didier Posté(e) le 27 avril 2005 Posté(e) le 27 avril 2005 BonjourBienvenue sur CadXp. il semble que pour dessiner des MLINEil 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
smellems Posté(e) le 27 avril 2005 Auteur Posté(e) le 27 avril 2005 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 @+
didier Posté(e) le 27 avril 2005 Posté(e) le 27 avril 2005 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
smellems Posté(e) le 27 avril 2005 Auteur Posté(e) le 27 avril 2005 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", mMLineScaleThisDrawing.SetVariable "cmljust", mJustificationThisDrawing.SetVariable "cmlstyle", mStyle Dim i As IntegerDim 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 + 2NextCommand = Command & Chr(27) ThisDrawing.SendCommand Command Dim nbItems As IntegerDim MLineObj As AcadMLinenbItems = 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...
didier Posté(e) le 28 avril 2005 Posté(e) le 28 avril 2005 bonjour désolé, mais ne ne comprends pas ton but.pourquoi fais tu appel aux blocs?et pourquoi fais tu une telle ligne de commande ?c'est de l'anti VBA,quel est donc ton but ?je croyais qu'il fallait dessiner une MLINE,avec des options particulières.désolé. Éternel débutant... Mon site perso : Programmer dans AutoCAD
smellems Posté(e) le 28 avril 2005 Auteur Posté(e) le 28 avril 2005 excuse moi... j'ai oublié de remplacer Blocks(mSpaceType) par ModelSpace... donc nbItems = ThisDrawing.ModelSpace.Count - 1Set 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...
smellems Posté(e) le 28 avril 2005 Auteur Posté(e) le 28 avril 2005 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.
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