-
Compteur de contenus
13 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par smellems
-
Dans VBA pour incérer un block c'est avec la commande suivante: ThisDrawing.ModelSpace.InsertBlock(InsertionPoint, Name, XScale, YScaler, ZScale, Rotation) tu n'auras pas la chance de faire une prévisualisation, mais tu peux spécifier exactement le point d'insertion (InsertionPoint). si tu veux pouvoir le placé toi même la technique de Patrick est bonne mais tu devras choisir ton block manuellement. la meilleur façon c'est le InsertBlock... est-ce que ça aide??? :cool:
-
J'ai posé plus ou moins la même question au ADN (Autodesk Developers Network) mais pour l'objet DimOrdinate et je devrais avoir une réponce aujourd'hui.
-
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.
-
Il y a 2 façon d'incérer des xRef dans un dessin: en attachement ou overlay. Attachement: permet d'avoir un xRef dans un xRef dans un xRef. si ensuite tu incères le premier tous les autre seront incluent. Overlay: un xRef incérer en overlay ne sera pas incérer si le dessin dans lequel il est dessiné est à cont tour incéré en xRef. il y a un bon exemple dans l'aide d'autoCAD... Nest and Overlay External References....(version anglaise 2005)
-
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...
-
Vous, vous avez tout compris... j'ai environ 30 classes dans mon projet et à chaque fois je dois me souvenir où j'étais. mais j'ai trouvé comment enlever le msgbox qui dit que la syntaxe est incorect parce que j'aime bien le copier, coller. Dans VB menu Tools(version anglaise), options... dans le tab editor il faut décocher la case Auto Syntax Check... ensuite si il y a erreur, la ligne devient rouge mais il me laisse en paix... ça fait du bien de chialler un peu à des gens qui vont savoir de quoi je parle... merci.:mad2:
-
bon, je ne suis pas certain de comprendre comment tu exécutes ton macro, VBARUN??? Sub Create(Name As String, XScaleFactor As Long, YScaleFactor As Long, ZScaleFactor As Long, Rotation As Double, ParamArray InsertionPoint()) __Dim BlockReferenceObj As AcadBlockReference __Set BlockReferenceObj = ThisDrawing.ModelSpace.InsertBlock(InsertionPoint, Name, XScaleFactor, YScaleFactor, ZScaleFactor, Rotation) End Sub pour le dernier paramètre tu dois fournir le x,y,z du InsertionPoint ex: Call Create("Test",1,1,1,2,100,100,0) bien sur pour que ça fonctionne il faut que le bloc Test existe déjà sinon il est imposible de l'insérer.
-
Bien sur que c'est possible... Open "C:\Test.dxf" For Input As 1 ensuite je sort chaque ligne du fichier... Dim StrLigne As String Dim dxfString As String Do While Not EOF(1) ___Line Input #1, StrLigne ___dxfString = dxfString & vbCrLf & StrLigne Loop le contenu de mon fichier se retrouve dans dxfString. il reste juste à chercher ce que tu veux : InStr() et changer les valeurs necessaires... j'espère que ça aide...
-
je sais que c'est un vieux message mais si ça peut aider quelqu'un... pour créer un dictionaire: Dim DictionaryObj As AcadDictionary Set DictionaryObj = ThisDrawing.Dictionaries.Add("ACAD_NouveauDictionnaire") ensuite, moi je sauve des xRecord dans mon dictionnaire... Dim XRecordObj As AcadXRecord Set XRecordObj = TrackingDictionary.addXRecord("NouveauXRecord") XRecordObj.SetXRecordData 0, "allo" et pour le lire: Set XRecordObj = TrackingDictionary.GetObject("NouveauXRecord")
-
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...
-
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 @+
-
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
-
Bonjour, je crée une dimention de type Angular et je veux en faire une copie exacte à partir de VBA. je peux aller chercher mon objet(DimAngular) Dim DimAngular As AcadDimAngular Set DimAngular = ThisDrawing.ModelSpace(0) ' Parce que c'est le seul objet... ensuite je peux lire tous ces propriétées DimAngular.AngleFormat DimAngular.Arrowhead1Block ... et BEAUCOUP d'autres mais pour le créer... AddDimAngular(AngleVertex, FirstEndPoint, SecondEndPoint, TextPoint) Tous ces propriétées n'existe pas. j'ai trouvé que... FirstEndPoint = ExtLine1EndPoint SecondEndPoint = ExtLine2EndPoint j'ai des doutes que TextPoint ne fait rien parce que je peux lui assigner n'importe quoi et le texte sera inséré au TextPosition. est-ce que me trompe??? Mais je ne trouve pas d'équivalent pour AngleVertex. est-ce que quelqu'un a une idée???
