Aller au contenu

Insérer un powercopy à partir d\'un VBa


Messages recommandés

Posté(e)

Bonjour,

 

J'aimerais insérer une powercopy à partir d'un script codé en Vba.

J'ai essaye le code ci-dessous mais cela ne fonctionne pas. Quelqu'un connaît-il la solution?

 

InstanceFactory.BeginInstanceFactory "NameOf Reference", "C:\NameOfPowercopy.CATPart"

 

 

Merci d'avance,

Posté(e)

Avant tout, quelle licence as-tu?

Il te faut au moins une license KT1 (ou une KWA je ne suis pas trop sûr) pour pouvoir inserer des powercopies à partir d'un vba,

 

Appart ça,

InstanceFactory.BeginInstanceFactory "NameOf Reference", "C:\NameOfPowercopy.CATPart"

est juste le debut, il te faut aussi:

 

 instanceFactory.BeginInstantiate
instanceFactory.PutInputData "nom de la ref", nomdelaVariable
Dim Instance as ShapeInstance
set Instance = instanceFactory.Instantiate
instanceFactory.EndInstantiate
instanceFactory.EndInstanceFactory
oPartDest.Update

 

En fait, ta ligne renseigne juste le fichier à instantier, ensuite il te faut commencer l'instantiation, donner les parametres d'entrée et instantier le pcopy. Après tu fermes l'instantiation, le factory et tu faites un update...

 

luis

Posté(e)

Bonjour,

 

J'ai bien les licences KT1 et KWA. Toutefois le code que tu m'as posté ci-dessous ne semble pas fonctionner. Mon éditeur vba ne reconnait pas la 2em ligne "PutInputData..."

 

As tu déjà utilisé ce script? Peux tu donner un exmple concret?

 

Merci d'avance,

Posté(e)

Et ben, ouais, je l'ai quelque part me je ne la trouve pas pour l'instant, j'ai du changer de station à cause d'un disque dur mort et pour l'instant il me faut tout récuperer des archives... par contre, il faut savoir que:

 

pour cette macro j'avais fait appel à un selectElement2 pour selectionner toutes les géométries requises pour inserer le pcopy et je les avais mis dans des variables

il te faut bien renseigner le nom de la référence sur ton pcopy (exactement le même nom que sur ton pcopy) et le nom de ta variable dans ton code, sinon ça ne marche pas.

tu dois le faire pour chaque référence (CAD si t'as 2 plans et 1 point, il te faudra faire la même manip. pour les 2 plans et pour le point.

 

je vais essayer de trouver ma macro, je sais qu'elle est ici quelque part mais fouiller dans les archives prends du temps.

 

bon boulot

 

luis

Posté(e)

et finalement ça n'as pas pris tellement du temps, voici le code...

 

 Dim factory As InstanceFactory
Set factory = PartDest.GetCustomerFactory("InstanceFactory")

factory.BeginInstanceFactory "Clip", "w:\0734\macros\tests\clip.CATPart"

factory.BeginInstantiate

factory.PutInputData "Plan_base", Plane_base
factory.PutInputData "Plan_milieu", Plane_milieu
factory.PutInputData "Plan_fond", Plane_fond

Dim Instance As ShapeInstance
Set Instance = factory.Instantiate
factory.EndInstantiate

factory.EndInstanceFactory
PartDest.Update

 

comme dit, assure toi que t'as bien selectionné les géométries d'entrée et que les noms sur ton powercopy sont les mêmes que sur ton code...

 

ciao

 

luis

Posté(e)

Ok merci pour ton aide.

Toutefois, je ne souhaiterais pas réaliser toute l'instantiation via la macro. J'aimerais juste lancer la fenêtre puis ensuite choisir moi même les inputs.

 

J'ai également essayé la commande ci dessous pour lancer l'instance mais je n'arrive pas sélectionner automatiquement le fichier désiré.

Si tu essais les 2 lignes ci-dessous, tu verras apparaître une fenêtre browser, te permettant de choisir le fichier à instancier.

 

CATIA.StartCommand "Instanciate From Document"

AppActivate "CATIA V5"

 

Ensuite j'ai essayé ca pour automatiser la sélection d'un fichier mais sans succes:

 

CATIA.StartCommand "Instanciate From Document"

AppActivate "CATIA V5"

Dim partname As String

partname = "c:\temp\PowerCopyReference.CATPart"

Dim cmd As String

cmd = "wscript C:\SendKeys.vbs " & partname

Call Shell(cmd)

---------------------------------------------

Set WshShell = WScript.CreateObject("WScript.Shell")

 

WScript.sleep 200

WshShell.SendKeys WScript.Arguments.Unnamed(0)

WshShell.SendKeys "{TAB 3}"

WshShell.SendKeys "{ENTER}"

 

Si quelqu'un a une idée....

 

Merci

 

A+

Posté(e)

hmmm, là t'est mal barré... CATIA est connu pour une assez faible fiabilité au moment d'utiliser des sendkeys...jusqu'à maintenant je n'avais jamais testé d'instantier un pcopy a partir du startCommand, désolé mais je ne pourrais pas t'aider avec ton probléme...

 

Bonne chance, si t'arrives, fait signe, ça ne doit pas être facile...

 

Posté(e)

Salut,

 

Pourrais tu me dire comment tu fais pour insérer l'élément que tu as selectionner via la commande "selectElemnté" dans la commande permettant de définir le inputs de ta powercopy.

Dans mon cas, je n'arrive pas à utliliser le point que je selectionne dans le PutInputData"StartPointPipe".

 

Merci d'avance pour ton aide,

 

Ci-dessous mon script:

 

 

Sub CATMain()

 

Dim partDocument1 As PartDocument

Set partDocument1 = CATIA.ActiveDocument

 

Dim part1 As Part

Set part1 = partDocument1.Part

 

Dim factory As InstanceFactory

Set factory = part1.GetCustomerFactory("InstanceFactory")

 

factory.BeginInstanceFactory "PowerCopy_Expansion", "Z:\Template.CATPart"

 

factory.BeginInstantiate

 

Set MySelection = partDocument1.Selection

MySelection.Clear

 

Dim InputObject(0)

InputObject(0) = "Point"

 

SelPoint = MySelection.SelectElement2(InputObject, "Select Start Point", False)

 

StartPointPipe = SelPoint.Items1

 

Dim Thickness As Object

Set Thickness = part1.FindObjectByName("Plan.1")

 

Dim Diameter As Object

Set Diameter = part1.FindObjectByName("Plan.2")

 

Dim OrientationShape As Object

Set OrientationShape = part1.FindObjectByName("Plane.3")

 

Dim NeutralFiber As Object

Set NeutralFiber = part1.FindObjectByName("Line.1")

 

factory.PutInputData "Plan1", Plan1

factory.PutInputData "Plan2", Plan2

factory.PutInputData "Plan3", Plan3

factory.PutInputData "Line.1", Line.1

factory.PutInputData "StartPointPipe", StartPointPipe

 

Dim Instance As ShapeInstance

Set Instance = factory.Instantiate

factory.EndInstantiate

 

factory.EndInstanceFactory

part1.Update

 

End Sub

Posté(e)

J'ai trouvé solution à mon problème précédent.

Toutefois est il possible de définir l'orientation de ces inputs grâce à la macro?

Orientation des plans, des lignes....?

 

Merci,

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é