[résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
5 participants
Page 1 sur 1
[résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Bonjour,
Je débute en Catvba je cherche à faire une macro qui génère la vue de face et les projetées (droite, gauche, dessus, dessous). Le code ci dessous s'exécute correctement pour les vues de droite et de gauche mais pour les vues de dessus et dessous elles se superposent à la vue de face. Elles sont d'abord bien positionnées mais ensuite quand on sélectionne la vue de face et qu'on la bouge sur le drawing les vues de dessous et dessus se superposent et ne sont donc plus bien positionnées. Ce qui me parait encore plus bizarre, c'est que le problème se produit uniquement sur les vues de dessus/dessous(je peux les bouger horizontalement mais pas verticalement) et pas sur les vues de droite/gauche(qui elles sont quand même verrouillées horizontalement). Le code est exactement le même pour les 4 vues projetées (voir ci dessous) :
'Macro permettant de créer les vues d'un plan et d'y ajouter les références automatiques sur les vues générées'
Dim Draw1 As DrawingDocument
Set Draw1 = CATIA.Documents.Item("TestDraw.CATDrawing")
'Recuperer le calque actif
Dim WorkSheet As DrawingSheet
Set WorkSheet = Draw1.DrawingRoot.ActiveSheet
'Ouverture de la part à mettre au plan
Dim PartDoc As PartDocument
Set PartDoc = CATIA.Documents.Item("Test.CATPart")
'Création vue de face generatrice
Dim FaceViewGen As DrawingView
Set FaceViewGen = WorkSheet.Views.Add("Front View")
FaceViewGen.GenerativeBehavior.Document = PartDoc
FaceViewGen.GenerativeBehavior.DefineFrontView 0, 1, 0, 0, 0, 1
FaceViewGen.Activate
'Mise à jour du plan
Draw1.DrawingRoot.Update
'Création vue de droite generatrice
Dim RightViewGen As DrawingView
Set RightViewGen = WorkSheet.Views.Add("Right View")
RightViewGen.GenerativeBehavior.Document = PartDoc
RightViewGen.GenerativeBehavior.DefineProjectionView FaceViewGen.GenerativeBehavior, catRightView
RightViewGen.ReferenceView = FaceViewGen
RightViewGen.AlignedWithReferenceView
Draw1.DrawingRoot.Update
'Création vue de gauche generatrice
Dim LeftViewGen As DrawingView
Set LeftViewGen = WorkSheet.Views.Add("Left View")
LeftViewGen.GenerativeBehavior.Document = PartDoc
LeftViewGen.GenerativeBehavior.DefineProjectionView FaceViewGen.GenerativeBehavior, catLeftView
LeftViewGen.ReferenceView = FaceViewGen
LeftViewGen.AlignedWithReferenceView
'Mise à jour du plan
Draw1.DrawingRoot.Update
'Création vue du dessus
Dim TopViewGen As DrawingView
Set TopViewGen = WorkSheet.Views.Add("Top View")
TopViewGen.GenerativeBehavior.Document = PartDoc
TopViewGen.GenerativeBehavior.DefineProjectionView FaceViewGen.GenerativeBehavior, catTopView
TopViewGen.ReferenceView = FaceViewGen
TopViewGen.AlignedWithReferenceView
Draw1.DrawingRoot.Update
'Création vue du dessous
Dim BottomViewGen As DrawingView
Set BottomViewGen = WorkSheet.Views.Add("Bottom View")
BottomViewGen.GenerativeBehavior.Document = PartDoc
BottomViewGen.GenerativeBehavior.DefineProjectionView FaceViewGen.GenerativeBehavior, catBottomView
BottomViewGen.ReferenceView = FaceViewGen
BottomViewGen.AlignedWithReferenceView
Draw1.DrawingRoot.Update
RightViewGen.xAxisData = 150
LeftViewGen.xAxisData = -150
TopViewGen.yAxisData = 150
BottomViewGen.yAxisData = -150
Draw1.DrawingRoot.Update
FaceViewGen.xAxisData = 594.5
FaceViewGen.yAxisData = 420.5
End Sub
Si vous avez une idée ça m'intéresse. Merci pour votre aide.
Je débute en Catvba je cherche à faire une macro qui génère la vue de face et les projetées (droite, gauche, dessus, dessous). Le code ci dessous s'exécute correctement pour les vues de droite et de gauche mais pour les vues de dessus et dessous elles se superposent à la vue de face. Elles sont d'abord bien positionnées mais ensuite quand on sélectionne la vue de face et qu'on la bouge sur le drawing les vues de dessous et dessus se superposent et ne sont donc plus bien positionnées. Ce qui me parait encore plus bizarre, c'est que le problème se produit uniquement sur les vues de dessus/dessous(je peux les bouger horizontalement mais pas verticalement) et pas sur les vues de droite/gauche(qui elles sont quand même verrouillées horizontalement). Le code est exactement le même pour les 4 vues projetées (voir ci dessous) :
'Macro permettant de créer les vues d'un plan et d'y ajouter les références automatiques sur les vues générées'
Dim Draw1 As DrawingDocument
Set Draw1 = CATIA.Documents.Item("TestDraw.CATDrawing")
'Recuperer le calque actif
Dim WorkSheet As DrawingSheet
Set WorkSheet = Draw1.DrawingRoot.ActiveSheet
'Ouverture de la part à mettre au plan
Dim PartDoc As PartDocument
Set PartDoc = CATIA.Documents.Item("Test.CATPart")
'Création vue de face generatrice
Dim FaceViewGen As DrawingView
Set FaceViewGen = WorkSheet.Views.Add("Front View")
FaceViewGen.GenerativeBehavior.Document = PartDoc
FaceViewGen.GenerativeBehavior.DefineFrontView 0, 1, 0, 0, 0, 1
FaceViewGen.Activate
'Mise à jour du plan
Draw1.DrawingRoot.Update
'Création vue de droite generatrice
Dim RightViewGen As DrawingView
Set RightViewGen = WorkSheet.Views.Add("Right View")
RightViewGen.GenerativeBehavior.Document = PartDoc
RightViewGen.GenerativeBehavior.DefineProjectionView FaceViewGen.GenerativeBehavior, catRightView
RightViewGen.ReferenceView = FaceViewGen
RightViewGen.AlignedWithReferenceView
Draw1.DrawingRoot.Update
'Création vue de gauche generatrice
Dim LeftViewGen As DrawingView
Set LeftViewGen = WorkSheet.Views.Add("Left View")
LeftViewGen.GenerativeBehavior.Document = PartDoc
LeftViewGen.GenerativeBehavior.DefineProjectionView FaceViewGen.GenerativeBehavior, catLeftView
LeftViewGen.ReferenceView = FaceViewGen
LeftViewGen.AlignedWithReferenceView
'Mise à jour du plan
Draw1.DrawingRoot.Update
'Création vue du dessus
Dim TopViewGen As DrawingView
Set TopViewGen = WorkSheet.Views.Add("Top View")
TopViewGen.GenerativeBehavior.Document = PartDoc
TopViewGen.GenerativeBehavior.DefineProjectionView FaceViewGen.GenerativeBehavior, catTopView
TopViewGen.ReferenceView = FaceViewGen
TopViewGen.AlignedWithReferenceView
Draw1.DrawingRoot.Update
'Création vue du dessous
Dim BottomViewGen As DrawingView
Set BottomViewGen = WorkSheet.Views.Add("Bottom View")
BottomViewGen.GenerativeBehavior.Document = PartDoc
BottomViewGen.GenerativeBehavior.DefineProjectionView FaceViewGen.GenerativeBehavior, catBottomView
BottomViewGen.ReferenceView = FaceViewGen
BottomViewGen.AlignedWithReferenceView
Draw1.DrawingRoot.Update
RightViewGen.xAxisData = 150
LeftViewGen.xAxisData = -150
TopViewGen.yAxisData = 150
BottomViewGen.yAxisData = -150
Draw1.DrawingRoot.Update
FaceViewGen.xAxisData = 594.5
FaceViewGen.yAxisData = 420.5
End Sub
Si vous avez une idée ça m'intéresse. Merci pour votre aide.
Dernière édition par Tonio091 le Lun 11 Juil 2016 - 13:48, édité 1 fois
Tonio091- actif
- Messages : 30
Date d'inscription : 25/02/2011
Age : 42
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Salut,
Je n'ai jamais fait de mise en plan de cette façon donc je ne fais que des propositions!
Je vois que tu as le code écrit comme ça:
Dans ce cas, ça explique pourquoi tu ne peux déplacer tes vues dessus et dessous que sur l'axe X, vu que Y =(-)150
Cependant, selon ce raisonnement, les vues droite et gauche devraient bouger verticalement.
Peut-être que tu devrais creuser dans ce sens!
Je n'ai jamais fait de mise en plan de cette façon donc je ne fais que des propositions!
Je vois que tu as le code écrit comme ça:
- Code:
RightViewGen.xAxisData = 150
LeftViewGen.xAxisData = -150
TopViewGen.yAxisData = 150
BottomViewGen.yAxisData = -150
Dans ce cas, ça explique pourquoi tu ne peux déplacer tes vues dessus et dessous que sur l'axe X, vu que Y =(-)150
Cependant, selon ce raisonnement, les vues droite et gauche devraient bouger verticalement.
Peut-être que tu devrais creuser dans ce sens!
Nico_atomique- actif
- Messages : 38
Date d'inscription : 19/04/2016
Localisation : Marseille/Aix-en-Provence
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Salut Tonio,
Il faut repositionner tes vues (en x ou y) avant de définir les références :
(exemple pour la vue de dessus)
Ne me demande pas pourquoi, mais ça semble fonctionner.
Il faut repositionner tes vues (en x ou y) avant de définir les références :
(exemple pour la vue de dessus)
- Code:
'Création vue du dessus
Dim TopViewGen As DrawingView
Set TopViewGen = WorkSheet.Views.Add("Top View")
TopViewGen.GenerativeBehavior.Document = PartDoc
TopViewGen.GenerativeBehavior.DefineProjectionView FaceViewGen.GenerativeBehavior, catTopView
TopViewGen.yAxisData = 150 '<---------------
TopViewGen.ReferenceView = FaceViewGen
TopViewGen.AlignedWithReferenceView
Ne me demande pas pourquoi, mais ça semble fonctionner.
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Merci à vous pour vos réponses Nico_atomique et lumpazepfel. Effectivement, en repositionnant l'axe x ou y de la vue avant de déclarer la vue de référence ça fonctionne.
Tonio091- actif
- Messages : 30
Date d'inscription : 25/02/2011
Age : 42
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Pas de soucis!
N'oublie pas de passer le sujet en résolu du coup!
N'oublie pas de passer le sujet en résolu du coup!
Nico_atomique- actif
- Messages : 38
Date d'inscription : 19/04/2016
Localisation : Marseille/Aix-en-Provence
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
bonjour,
Cette fonction fait le travail que tu demande?
Sinon quel est la diférence?
Raphael
Cette fonction fait le travail que tu demande?
Sinon quel est la diférence?
Raphael
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Bonjour,
Raphael cette fonction te crée simplement une nouvelle vue vide mais c'est tout, ce que je cherchais à faire c'est à partir d'un drawing et d'une part ouverte dans CATIA c'est générer les vues de bases (face, droite, gauche, dessus, dessous) en un click par l'utilisateur. Aussi je rencontre un aussi un problème sur la syntaxe sans doute quand il s'agit uniquement d'un product ci dessous le code :
'Ouverture de la part à mettre au plan
Dim ProductDoc As ProductDocument
Set ProductDoc = CATIA.Documents.Item("TestReferences.CATProduct")
'Création vue de face generatrice
Dim FaceViewGen As DrawingView
Set FaceViewGen = WorkSheet.Views.Add("Front View")
FaceViewGen.GenerativeBehavior.Document = ProductDoc ----> ça plante ici avec l'erreur suivante "Run-Time error 430 Class does not support Automation or does not support expected Interface"
FaceViewGen.GenerativeBehavior.DefineFrontView 0, 1, 0, 0, 0, 1
FaceViewGen.Activate
'Mise à jour du plan
Draw1.DrawingRoot.Update
Je pense peut être à une référence non cochée ou alors je n'ai pas la bonne méthode quand il s'agit d'un product.
Si quelqu'un a encore une idée ça m'aiderait beaucoup.
Merci à vous
Tonio
Raphael cette fonction te crée simplement une nouvelle vue vide mais c'est tout, ce que je cherchais à faire c'est à partir d'un drawing et d'une part ouverte dans CATIA c'est générer les vues de bases (face, droite, gauche, dessus, dessous) en un click par l'utilisateur. Aussi je rencontre un aussi un problème sur la syntaxe sans doute quand il s'agit uniquement d'un product ci dessous le code :
'Ouverture de la part à mettre au plan
Dim ProductDoc As ProductDocument
Set ProductDoc = CATIA.Documents.Item("TestReferences.CATProduct")
'Création vue de face generatrice
Dim FaceViewGen As DrawingView
Set FaceViewGen = WorkSheet.Views.Add("Front View")
FaceViewGen.GenerativeBehavior.Document = ProductDoc ----> ça plante ici avec l'erreur suivante "Run-Time error 430 Class does not support Automation or does not support expected Interface"
FaceViewGen.GenerativeBehavior.DefineFrontView 0, 1, 0, 0, 0, 1
FaceViewGen.Activate
'Mise à jour du plan
Draw1.DrawingRoot.Update
Je pense peut être à une référence non cochée ou alors je n'ai pas la bonne méthode quand il s'agit d'un product.
Si quelqu'un a encore une idée ça m'aiderait beaucoup.
Merci à vous
Tonio
Tonio091- actif
- Messages : 30
Date d'inscription : 25/02/2011
Age : 42
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Salut,
Pour ton code, modifie ceci pour un product:
Ceci dit, la fonction proposé par Raphaël réalise les différentes vues.
As tu testé les différentes icones du menu déroulants?
Pour ton code, modifie ceci pour un product:
- Code:
Dim ProductDoc as AnyObject
Set ProductDoc = CATIA.Documents.Item("TestReferences.CATProduct").Product
Ceci dit, la fonction proposé par Raphaël réalise les différentes vues.
As tu testé les différentes icones du menu déroulants?
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Bonjour,
Je comprends ce que veux faire et je continu à dire que la fonction :
Ouvre ceci :
ce qui mets plus de possibilités sur les positionnements....
il y a aussi cette methode :
c est pas mal mais bon j'en suite bien loin aujourd'hui.
Je travaille en bureau d'etude depuis 15ans dont 5 ans catia V4 et 10 de catia v5. Ce type de mise en plan est hyper dépasser.
Je suis plutôt dans des formats moins école avec beaucoup de vue isométrique, détail....
donc te focaliser ds la mise en plan traditionnel via Vb (outre le fait d'apprendre le développement), je pense honnêtement que tu passe du temps pour rien.
Ceci dis ce n 'est que mon point de vue.
A bientot sur d autre sujet,
raphael
Je comprends ce que veux faire et je continu à dire que la fonction :
Ouvre ceci :
ce qui mets plus de possibilités sur les positionnements....
il y a aussi cette methode :
c est pas mal mais bon j'en suite bien loin aujourd'hui.
Je travaille en bureau d'etude depuis 15ans dont 5 ans catia V4 et 10 de catia v5. Ce type de mise en plan est hyper dépasser.
Je suis plutôt dans des formats moins école avec beaucoup de vue isométrique, détail....
donc te focaliser ds la mise en plan traditionnel via Vb (outre le fait d'apprendre le développement), je pense honnêtement que tu passe du temps pour rien.
Ceci dis ce n 'est que mon point de vue.
A bientot sur d autre sujet,
raphael
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Bonjour,
Ah oui tu as raison Raphael autant pour moi désolé j'avais mal lu/vu l'icone. La mise en plan de base pour un plan d'ensemble n'est qu'une première étape, je pense ensuite ajouter les références de chaque pièce de l'ensemble sur le plan voir peut être aussi à intégrer dans le plan une nomenclature de pièces de façon automatique.
Merci encore pour vos réponses pour info ça aussi ça marche à l'endroit où ça plante :
FaceViewGen.GenerativeBehavior.Document = ProductDoc.Product
A bientôt
Tonio
Ah oui tu as raison Raphael autant pour moi désolé j'avais mal lu/vu l'icone. La mise en plan de base pour un plan d'ensemble n'est qu'une première étape, je pense ensuite ajouter les références de chaque pièce de l'ensemble sur le plan voir peut être aussi à intégrer dans le plan une nomenclature de pièces de façon automatique.
Merci encore pour vos réponses pour info ça aussi ça marche à l'endroit où ça plante :
FaceViewGen.GenerativeBehavior.Document = ProductDoc.Product
A bientôt
Tonio
Tonio091- actif
- Messages : 30
Date d'inscription : 25/02/2011
Age : 42
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Bonjour tonio,
Peux tu mettre ton message en résolu (en éditant tu as cette possibilité)
Merci ,
raphael
Peux tu mettre ton message en résolu (en éditant tu as cette possibilité)
Merci ,
raphael
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: [résolu]Créer une vue de face et des vues projetées à partir d'une part ou d'un product
Merci lumpazepfel
Dire que j'ai perdu 2 heures a essayer de comprendre le problème, alors que la solution était dans le forum.
Christian
Dire que j'ai perdu 2 heures a essayer de comprendre le problème, alors que la solution était dans le forum.
- Code:
TopViewGen.yAxisData = 150
Christian
Docserta- actif
- Messages : 47
Date d'inscription : 09/11/2011
Localisation : Rennes
Sujets similaires
» [RESOLU] Lancer une fonction Catia à partir d'une macro
» comment sélectionner une part dans un product
» Catia VBA : Ajout de propriétés (Assemblage\Product\Part)
» Lancement d'une même macro dans une Part ou un Product
» Conception d'une part à partir d'une image
» comment sélectionner une part dans un product
» Catia VBA : Ajout de propriétés (Assemblage\Product\Part)
» Lancement d'une même macro dans une Part ou un Product
» Conception d'une part à partir d'une image
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum