Nicklaroot Posté(e) le 14 novembre 2008 Posté(e) le 14 novembre 2008 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,
jarabito Posté(e) le 17 novembre 2008 Posté(e) le 17 novembre 2008 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
Nicklaroot Posté(e) le 18 novembre 2008 Auteur Posté(e) le 18 novembre 2008 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,
jarabito Posté(e) le 19 novembre 2008 Posté(e) le 19 novembre 2008 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
jarabito Posté(e) le 19 novembre 2008 Posté(e) le 19 novembre 2008 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
Nicklaroot Posté(e) le 26 novembre 2008 Auteur Posté(e) le 26 novembre 2008 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 200WshShell.SendKeys WScript.Arguments.Unnamed(0) WshShell.SendKeys "{TAB 3}"WshShell.SendKeys "{ENTER}" Si quelqu'un a une idée.... Merci A+
jarabito Posté(e) le 28 novembre 2008 Posté(e) le 28 novembre 2008 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...
Nicklaroot Posté(e) le 4 décembre 2008 Auteur Posté(e) le 4 décembre 2008 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 PartDocumentSet partDocument1 = CATIA.ActiveDocument Dim part1 As PartSet part1 = partDocument1.Part Dim factory As InstanceFactorySet factory = part1.GetCustomerFactory("InstanceFactory") factory.BeginInstanceFactory "PowerCopy_Expansion", "Z:\Template.CATPart" factory.BeginInstantiate Set MySelection = partDocument1.SelectionMySelection.Clear Dim InputObject(0)InputObject(0) = "Point" SelPoint = MySelection.SelectElement2(InputObject, "Select Start Point", False) StartPointPipe = SelPoint.Items1 Dim Thickness As ObjectSet Thickness = part1.FindObjectByName("Plan.1") Dim Diameter As ObjectSet Diameter = part1.FindObjectByName("Plan.2") Dim OrientationShape As ObjectSet OrientationShape = part1.FindObjectByName("Plane.3") Dim NeutralFiber As ObjectSet NeutralFiber = part1.FindObjectByName("Line.1") factory.PutInputData "Plan1", Plan1factory.PutInputData "Plan2", Plan2factory.PutInputData "Plan3", Plan3factory.PutInputData "Line.1", Line.1factory.PutInputData "StartPointPipe", StartPointPipe Dim Instance As ShapeInstanceSet Instance = factory.Instantiatefactory.EndInstantiate factory.EndInstanceFactorypart1.Update End Sub
Nicklaroot Posté(e) le 4 décembre 2008 Auteur Posté(e) le 4 décembre 2008 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,
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