oniwo59 Posté(e) le 26 juin 2006 Posté(e) le 26 juin 2006 Bonjour tous le mondes J’aimerai savoir s’il y est possible de créer une vue en VBA(Une vue définie par une fenêtre) Sans avoir a passé par : ThisDrawing.SendCommand "-vue" & vbCr ThisDrawing.SendCommand "f" & vbCr ThisDrawing.SendCommand NOM_VUE & vbCr ThisDrawing.SendCommand x1 & "," & y1 & vbCr ThisDrawing.SendCommand x2 & "," & y2 & vbCr J’espère que j’ai été claire…. :casstet: Merci pour vos réponses A bientôtOniwo59 [Edité le 26/6/2006 par oniwo59]
rebcao Posté(e) le 26 juin 2006 Posté(e) le 26 juin 2006 Je n'y connais pas grand chose en VBA... Mais j'utilise souvent l'état de la variable CTAB et CVPORT pour créer des vues automatiquement d'après la présentation ACTIVE et le N° de la fenêtre courante... ça fonctionne très bien en DIESEL donc pour le reste !!! ;) 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 @)
oniwo59 Posté(e) le 26 juin 2006 Auteur Posté(e) le 26 juin 2006 Merci Christian, Mais je ne pense pas que cela va me servirOu du moins je ne comprends pas comment Je vais m’expliquer un peu mieuxEnfin essayer Ce n’est pas en espace présentation ou je veux créer une vue mais en espace objet Mais apparemment sa serait l’inverse de toi, moi je veux créer une vue dans l’espace objet pour pouvoir la rappeler dans l’espace papier
tyrese69_ Posté(e) le 26 juin 2006 Posté(e) le 26 juin 2006 Bonsoir, Créer une vue en vba est tout à fait possible ! Dans l'aide au développeur il y a des exemples. Cherche "view vba" Daniel OLIVES
oniwo59 Posté(e) le 27 juin 2006 Auteur Posté(e) le 27 juin 2006 J'ai cherché dans l'aide « Merci tyrese69_ »J’ai trouvé comment créer une vue mais je ne comprends pas comment définir la fenêtreJe vais mettre une partie de mon code vous allez sûrement mieux comprendre mon dilemme [surligneur] Sub Essais()Dim returnPnt As VariantDim points(0 To 9) As Double returnPnt = ThisDrawing.Utility.GetPoint(, "Entré le point d'insertion: ") '*** Définition des coordonnées pointx = returnPnt(0) pointy = returnPnt(1) points(0) = pointx: points(1) = pointy points(2) = pointx + 297: points(3) = pointy points(4) = pointx + 297: points(5) = pointy + 210 points(6) = pointx: points(7) = pointy + 210 points(8) = pointx: points(9) = pointy 'Création de la polyligne Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) End Sub[/surligneur] A partir de la je voudrai créer une vue qui commence par mon point d’insersion « returnPnt »Et qui s’étend de X+297 et Y+210 Ceci c’est ce que j’ai trouvé dans l’aide pour la création d’une vue [surligneur] ' Create a new view Dim viewObj As AcadView Set viewObj = ThisDrawing.Views.Add("TESTVIEW") 'Jusqu’ici j’ai compris c’est la suite que je pige pas ' Set the view characteristics viewObj.center(0) = 374: viewObj.center(1) = 313 viewObj.width = 450 viewObj.height = 354 ' Get the current active viewport Dim viewportObj As AcadViewport Set viewportObj = ThisDrawing.ActiveViewport MsgBox "Change to the saved view.", , "SetView Example" ' Set the view in the viewport viewportObj.SetView viewObj ThisDrawing.ActiveViewport = viewportObj ThisDrawing.Regen True End Sub[/surligneur]En espérant trouver un jour … A bientôtJérô [surligneur] [/surligneur] [Edité le 27/6/2006 par oniwo59]
tyrese69_ Posté(e) le 7 juillet 2006 Posté(e) le 7 juillet 2006 Bonjour, Désolé pour le retard mais c'est le boulot ! Voici un extrait d'une routine de mise en page automatiqueselon les dimensions d'un cadre inséré dans une présentation ! Une vue est créer pour un canonical name User257 (A0),Sans fenêtre, mais c'est pas bien compliqué d'ajouter celle ciet l'échelle de zoom (z= n XP) Espace papier normailé en "mm". Aprés un test des blocs insérés dans l'espace papier , For Each objElem In objPresentation.Block '.PaperSpace ' si l'élément est un bloc With objElem If .EntityType = acBlockReference Then Select Case UCase(.name) . . . Case "6000_CADRE_A0" CoinBasX = -971.7047: CoinBasY = 0 CoinHautX = 217.3: CoinHautY = 889.93 If objPresentation.name <> "Model" _ Then objPresentation.name = "A0_" & objPresentation.name ' " " = "User257" If objPresentation.name <> "Model" _ Then objPresentation.CanonicalMediaName = "User257" objPresentation.SetCustomScale 1, 1 objPresentation.PaperUnits = acMillimeters ' unité papier FlagImp = FlagImp + 1. . . . . ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 03 pt1(0) = CoinBasX: pt1(1) = CoinBasY: pt1(2) = 0 pt2(0) = CoinHautX: pt2(1) = CoinHautY: pt2(2) = 0 ' Transfert point 3D vers point 2D ptz1(0) = pt1(0) ptz2(0) = pt2(0) ptz1(1) = pt1(1) ptz2(1) = pt2(1) ThisDrawing.Application.ZoomWindow pt1, pt2 ' zoom fenêtre ' Cas ou tous les points à zéro, pas de fenêtre ! If ptz1(0) = 0 And ptz2(1) = 0 And ptz1(1) = 0 And ptz2(1) = 0 Then MsgBox "Il n'y a pas de cadre bloc dans cette présentation" Else objPresentation.PlotType = acWindow ' Présentation fenêtre objPresentation.SetWindowToPlot ptz1, ptz2 ThisDrawing.Regen acAllViewports ' pour prise en compte Cette méthode permet quel que soit le traceur utilisé, de l'identifiéet de paramétrer les présentations, juste à l'aide de la taille du cadre inséré ! Daniel OLIVES
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