Aller au contenu

Vue définie par une fenêtre en VBA


Messages recommandés

Posté(e)

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ôt

Oniwo59

 

 

[Edité le 26/6/2006 par oniwo59]

Posté(e)

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

Posté(e)

Merci Christian,

 

Mais je ne pense pas que cela va me servir

Ou du moins je ne comprends pas comment

 

Je vais m’expliquer un peu mieux

Enfin 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

 

Posté(e)

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être

Je vais mettre une partie de mon code vous allez sûrement mieux comprendre mon dilemme

 

[surligneur] Sub Essais()

Dim returnPnt As Variant

Dim 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ôt

Jérô

[surligneur] [/surligneur]

 

[Edité le 27/6/2006 par oniwo59]

  • 2 semaines après...
Posté(e)

Bonjour,

 

Désolé pour le retard mais c'est le boulot !

 

Voici un extrait d'une routine de mise en page automatique

selon 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 ci

et 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

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é