• Ce forum est la traduction générée par la machine de www.cad3d.it/forum1 - la communauté italienne du design. Plusieurs termes ne sont pas traduits correctement.

Comment effectuer une règle logique sur plusieurs fichiers?

  • Auteur du sujet Auteur du sujet windreef
  • Date de début Date de début

windreef

Guest
Bonjour, je devrais exécuter une règle logique sur de nombreux fichiers de table (inv2023), je ne peux pas entrer un déclencheur d'événement dans les fichiers pour deux raisons, la première que je devrais supprimer plus tard parce que le client ne veut pas (résolvable en faisant une copie des fichiers avant d'ajouter le déclencheur), selon la raison : en fait, au moment où j'ouvre le fichier et insère le déclencheur, je peux lancer la règle en toute sécurité et je finis.
Je me demandais s'il y avait un mode batch ou une opération planifiée. J'ai trouvé une application dans le magasin d'outils de la règle biologique, mais ça marche jusqu'à l'inv 2022.
grâce à tous
 
vous pouvez faire une règle externe et activer le déclencheur d'événement sur les cartes idw, sans engager directement la conception du client
1731666331497.pngpuis il s'agit d'ouvrir la table, en attendant que la règle fasse ce qu'elle a à faire et ensuite enregistrer, il dépend du nombre de tables, comme/où elles sont placées/nommées etc. etc.
 
vous pouvez faire une règle externe et activer le déclencheur d'événement sur les cartes idw, sans engager directement la conception du client
Voir la pièce jointe 72657puis il s'agit d'ouvrir la table, en attendant que la règle fasse ce qu'elle a à faire et ensuite enregistrer, il dépend du nombre de tables, comme/où elles sont placées/nommées etc. etc.
Merci, je ne savais pas que même les déclencheurs de l'événement pouvaient être réglés comme externes.

Merci beaucoup.
 
Bonjour à tous, j'ai un problème similaire que j'avais déjà affiché mais qui n'avait pas reçu de réponses.
De nombreux clients m'envoient leurs fichiers au format étape. Je les ouvre et je sauve, donc je reçois iam et ipt mais ils ne contiennent pas les informations dont je dois faire un devis maximum.
J'ai créé deux règles logiques que je lance en séquence : L'un calcule la longueur de l'ipt que j'ai ouvert et l'autre me demande des informations que je dois remplir le numéro de pièce.
les deux règles fonctionnent parfaitement si j'ouvre le simple ipt ou double clic (ce qui est la même chose).
est-il possible de créer une commande qui lance de l'iam dans lequel il me demande de sélectionner un ipt et à ce moment-là il lance les deux règles en séquence sur ce seul fichier sans avoir à les ouvrir tous un par un ?
merci à ceux qui auront la patience de répondre
 
est-il possible de créer une commande qui lance de l'iam dans lequel il me demande de sélectionner un ipt et à ce moment-là il lance les deux règles en séquence sur ce seul fichier sans avoir à les ouvrir tous un par un ?
Prova:
Code:
dim rulename1 en tant que chaîne = "myexternalrule1" 'nome rule1
dim rulename2 en tant que chaîne = "myexternalrule2" 'nome rule1
dim asm comme document d'assemblage = cedoc.document

' invite l'utilisateur à sélectionner une seule partie
Dim invapp comme inventeur. application = cette application
dim selectedobject as object = invapp.commandmanager.pick(selectionfilterenum.kassemblyoccurrencefilter, "sélectionner une partie")

si l'objet sélectionné n'est pas rien et le type de l'objet sélectionné est l'occurrence du composant alors
dim selectedpart as componentoccurrence = ctype(selectedobject, componentoccurrence)
dim doc comme document = selectedpart.definition.document

' exécuter la première règle logique
ilogicvb.automation.runexternalrule(doc, nom de la règle1)

' exécuter la deuxième règle logique
ilogicvb.automation.runexternalrule(doc, nom de la règle2)

messagebox.show("les deux règles exécutées avec succès sur la partie sélectionnée.", "succès", messageboxboutons.ok, messageboxicon.information)
Autre
messagebox.show("pas de partie valide sélectionnée.", "error", messageboxboutons.ok, messageboxicon.error)
fin si
 
Prova:
Code:
dim rulename1 en tant que chaîne = "myexternalrule1" 'nome rule1
dim rulename2 en tant que chaîne = "myexternalrule2" 'nome rule1
dim asm comme document d'assemblage = cedoc.document

' invite l'utilisateur à sélectionner une seule partie
Dim invapp comme inventeur. application = cette application
dim selectedobject as object = invapp.commandmanager.pick(selectionfilterenum.kassemblyoccurrencefilter, "sélectionner une partie")

si l'objet sélectionné n'est pas rien et le type de l'objet sélectionné est l'occurrence du composant alors
dim selectedpart as componentoccurrence = ctype(selectedobject, componentoccurrence)
dim doc comme document = selectedpart.definition.document

' exécuter la première règle logique
ilogicvb.automation.runexternalrule(doc, nom de la règle1)

' exécuter la deuxième règle logique
ilogicvb.automation.runexternalrule(doc, nom de la règle2)

messagebox.show("les deux règles exécutées avec succès sur la partie sélectionnée.", "succès", messageboxboutons.ok, messageboxicon.information)
Autre
messagebox.show("pas de partie valide sélectionnée.", "error", messageboxboutons.ok, messageboxicon.error)
fin si
C'est parfait, ça marche bien. Merci beaucoup.
Savez-vous également quelle commande élimine le remplacement de l'apparence à insérer au début de la première règle ? De cette façon, ceux-là la partie sélectionnée et je sais ce que j'ai déjà fait et ce qui n'est pas.
 
C'est parfait, ça marche bien. Merci beaucoup.
Savez-vous également quelle commande élimine le remplacement de l'apparence à insérer au début de la première règle ? De cette façon, ceux-là la partie sélectionnée et je sais ce que j'ai déjà fait et ce qui n'est pas.
Bonjour, puisque vous travaillez beaucoup avec les étapes client, êtes-vous jamais à l'unité de mesure en pouces et l'angle radieux? pour moi pratiquement toujours et dans la conversion il n'y a aucune possibilité de les changer automatiquement, chaque fichier que je dois aller aux paramètres et le modifier manuellement
 
Bonjour, puisque vous travaillez beaucoup avec les étapes client, êtes-vous jamais à l'unité de mesure en pouces et l'angle radieux? pour moi pratiquement toujours et dans la conversion il n'y a aucune possibilité de les changer automatiquement, chaque fichier que je dois aller aux paramètres et le modifier manuellement
Ça arrive toujours. Je ne perds pas de temps : je vais aux paramètres du document et je les modifie.
Quoi qu'il en soit, comme l'a dit un ami programmeur : « si vous pouvez le faire en tant que commande, vous pouvez le faire en tant que code ».
Mais je ne suis pas programmeur et je m'arrange.
 
Ça arrive toujours. Je ne perds pas de temps : je vais aux paramètres du document et je les modifie.
C'est ce que je fais aussi, mais s'il y avait un automatisme, il serait plus rapide quand vous devez le faire sur une centaine de fichiers, il casse les boîtes. Merci et bon travail
 
C'est parfait, ça marche bien. Merci beaucoup.
Savez-vous également quelle commande élimine le remplacement de l'apparence à insérer au début de la première règle ? De cette façon, ceux-là la partie sélectionnée et je sais ce que j'ai déjà fait et ce qui n'est pas.
Peut-être que tu dois voir ta première règle pour comprendre ce que tu veux obtenir. . . .
Je ne suis pas un programmeur, mais je suis sûr que quelqu'un ici peut vous aider.
 
C'est ce que je fais aussi, mais s'il y avait un automatisme, il serait plus rapide quand vous devez le faire sur une centaine de fichiers, il casse les boîtes. Merci et bon travail
preuve questo:
Code:
'-------- début de l'ilogic ------

'obtenir l'entrée de l'utilisateur
ounit = inputradiobox("choisir un type d'unité de mesure", "millimètre", "inch", vrai, "ilogique")

si ounit = true alors
Réglé au millimètre
ouom_1 = unitéstypeenum.kmillimètrelongueurunités
Autre
'set à pouce
ouom_1 = unitéstypeenum.kinchlongueurunités

fin si

'définir le document ouvert
dim opendoc comme document
opendoc = cedoc.document

'regardez tous les fichiers référencés dans le document ouvert
dim docfile comme document
pour chaque docfile dans opendoc.allreferenceddocuments
'regardez seulement les fichiers partiels
si docfile. type de document = kpartdocumentobjet alors
Nom du fichier 'format
dim fnamepos aussi longtemps
fnamepos = instrrev(docfile.fullfilename, "\", -1)
dim docfname comme chaîne
docfname = right(docfile.fullfilename, len(docfile.fullfilename) - fnamepos)
«unités de longueur définies
docfile.unitésde mesure.longueurunités = ouom_1
'reconstruire pour mettre à jour l'affichage
docfile. reconstruction
fin si
suivant
ilogicvb.update whendone = true
 
preuve questo:
Code:
'-------- début de l'ilogic ------

'obtenir l'entrée de l'utilisateur
ounit = inputradiobox("choisir un type d'unité de mesure", "millimètre", "inch", vrai, "ilogique")

si ounit = true alors
Réglé au millimètre
ouom_1 = unitéstypeenum.kmillimètrelongueurunités
Autre
'set à pouce
ouom_1 = unitéstypeenum.kinchlongueurunités

fin si

'définir le document ouvert
dim opendoc comme document
opendoc = cedoc.document

'regardez tous les fichiers référencés dans le document ouvert
dim docfile comme document
pour chaque docfile dans opendoc.allreferenceddocuments
'regardez seulement les fichiers partiels
si docfile. type de document = kpartdocumentobjet alors
Nom du fichier 'format
dim fnamepos aussi longtemps
fnamepos = instrrev(docfile.fullfilename, "\", -1)
dim docfname comme chaîne
docfname = right(docfile.fullfilename, len(docfile.fullfilename) - fnamepos)
«unités de longueur définies
docfile.unitésde mesure.longueurunités = ouom_1
'reconstruire pour mettre à jour l'affichage
docfile. reconstruction
fin si
suivant
ilogicvb.update whendone = true
Peut-être que je l'ai mis comme un déclencheur d'événement à l'ouverture du fichier, merci mille, plus tard j'essaie
 
Peut-être que tu dois voir ta première règle pour comprendre ce que tu veux obtenir. . . .
Je ne suis pas un programmeur, mais je suis sûr que quelqu'un ici peut vous aider.
la première règle est prise d'un site et me donne les 3 dimensions d'un profil. Je prends le plus long et déclare que c'est la "longueur" (je dois calculer combien de mètres de ce profil j'ai besoin dans tout). Puis je vérifie la matière or pour me faire réaliser que ce profil a déjà été calculé.
le problème est que pour voir la couleur d'or, je dois d'abord éliminer le remplacement de l'apparence qui est assigné lorsque vous ouvrez et sauvegardez une étape et qui est assigné aux pièces individuelles.

ces dernières lignes de la règle:

'écrit la mesure maximale dans le modèle iproprierties.
iproperties.value("custom", "longueur") = maxlength.tostring("######")

iproperties.matériel = "or"
 
qui fonctionne de l'assemblée. change l'unité de toutes les pièces en un seul clic.
ah ok, j'ai une seule pièce dans un dossier qui envoie mes clients, je devrais faire un ensemble avec tout dedans, peut-être que ce serait encore plus rapide, pour faire un assemblage prend peu. Je vous remercie.
 
la première règle est prise d'un site et me donne les 3 dimensions d'un profil. Je prends le plus long et déclare que c'est la "longueur" (je dois calculer combien de mètres de ce profil j'ai besoin dans tout). Puis je vérifie la matière or pour me faire réaliser que ce profil a déjà été calculé.
le problème est que pour voir la couleur d'or, je dois d'abord éliminer le remplacement de l'apparence qui est assigné lorsque vous ouvrez et sauvegardez une étape et qui est assigné aux pièces individuelles.

ces dernières lignes de la règle:

'écrit la mesure maximale dans le modèle iproprierties.
iproperties.value("custom", "longueur") = maxlength.tostring("######")

iproperties.matériel = "or"
Je relis le code et je pense que le problème est ici :


cibleappearance = partdoc.assets.item("clair - bleu")
Capture
dim source appearence as as asset = this application.assetlibraries.item("314de259-5443-4621-bfbd-1730c6cc9ae9"). apparenceassets.item("invgen-001-1-2") "clair - bleu"
cible appearance = sourceappearance.copyto(partdoc)


J'ai essayé de le dire comme un commentaire, mais la couleur bleu clair préréglé reste
 
la première règle est prise d'un site et me donne les 3 dimensions d'un profil. Je prends le plus long et déclare que c'est la "longueur" (je dois calculer combien de mètres de ce profil j'ai besoin dans tout). Puis je vérifie la matière or pour me faire réaliser que ce profil a déjà été calculé.
le problème est que pour voir la couleur d'or, je dois d'abord éliminer le remplacement de l'apparence qui est assigné lorsque vous ouvrez et sauvegardez une étape et qui est assigné aux pièces individuelles.

ces dernières lignes de la règle:

'écrit la mesure maximale dans le modèle iproprierties.
iproperties.value("custom", "longueur") = maxlength.tostring("######")

iproperties.matériel = "or"
Je préfère ne pas changer le matériau, mais seulement l'apparence ensemble. . . .
cette règle ajoute un changement de couleur après l'application des 2 règles (elle ne modifie pas la partie):

Code:
dim rulename1 en tant que chaîne = "1" 'nom de la règle 1
dim rulename2 en tant que chaîne = "2" 'nom de la règle 2


dim topasm comme document de montage = cedoc.document

' invite l'utilisateur à sélectionner une seule partie
Dim invapp comme inventeur. application = cette application
dim selectedobject as object = invapp.commandmanager.pick(selectionfilterenum.kassemblyoccurrencefilter, "sélectionner une partie")

si l'objet sélectionné n'est pas rien et le type de l'objet sélectionné est l'occurrence du composant alors
dim selectedpart as componentoccurrence = ctype(selectedobject, componentoccurrence)
dim doc comme document = selectedpart.definition.document

' exécuter la première règle logique
ilogicvb.automation.runexternalrule(doc, nom de la règle1)

' exécuter la deuxième règle logique
ilogicvb.automation.runexternalrule(doc, nom de la règle2)

' changer la couleur de la pièce en r255 g143 b47
dim trans as transaction = thisapplication.transactionmanager.starttransaction(topasm, "set Custom color")
essayer
' créer ou récupérer l'actif d'apparence
dim personnalisation en tant qu'actif
essayer
personnalisation = topasm.assets.item("couleur personnalisée")
captures ex exception
personnalisation = topasm.assets.add(assettypeenum.kassettypeapparence, "generic", "customcolor")
fin de l'essai

' modifier la couleur de l'actif
dim colorassetvalue as colorassetvalue = personnalisation.item("generic_diffuse")
colorassetvalue.value = invapp.transientobjets.createcolor(255, 143, 47)

' appliquer l'apparence à la partie sélectionnée
selectedpart.comingance = personnalisation

messagebox.show("les deux règles exécutées et la couleur de la partie mise à jour avec succès.", "succès", messageboxboutons.ok, messageboxicon.information)
captures ex exception
messagebox.show("configurer la couleur de la partie d'erreur: " & ex.message, "error", messageboxboutons.ok, messageboxicon.error)
enfin
()
fin de l'essai
Autre
messagebox.show("pas de partie valide sélectionnée.", "error", messageboxboutons.ok, messageboxicon.error)
fin si
Cependant, vous pouvez tout lancer en un clic sur tous les fichiers, sans avoir à sélectionner les parties un par un.
 
Je préfère ne pas changer le matériau, mais seulement l'apparence ensemble. . . .
cette règle ajoute un changement de couleur après l'application des 2 règles (elle ne modifie pas la partie):

Code:
dim rulename1 en tant que chaîne = "1" 'nom de la règle 1
dim rulename2 en tant que chaîne = "2" 'nom de la règle 2


dim topasm comme document de montage = cedoc.document

' invite l'utilisateur à sélectionner une seule partie
Dim invapp comme inventeur. application = cette application
dim selectedobject as object = invapp.commandmanager.pick(selectionfilterenum.kassemblyoccurrencefilter, "sélectionner une partie")

si l'objet sélectionné n'est pas rien et le type de l'objet sélectionné est l'occurrence du composant alors
dim selectedpart as componentoccurrence = ctype(selectedobject, componentoccurrence)
dim doc comme document = selectedpart.definition.document

' exécuter la première règle logique
ilogicvb.automation.runexternalrule(doc, nom de la règle1)

' exécuter la deuxième règle logique
ilogicvb.automation.runexternalrule(doc, nom de la règle2)

' changer la couleur de la pièce en r255 g143 b47
dim trans as transaction = thisapplication.transactionmanager.starttransaction(topasm, "set Custom color")
essayer
' créer ou récupérer l'actif d'apparence
dim personnalisation en tant qu'actif
essayer
personnalisation = topasm.assets.item("couleur personnalisée")
captures ex exception
personnalisation = topasm.assets.add(assettypeenum.kassettypeapparence, "generic", "customcolor")
fin de l'essai

' modifier la couleur de l'actif
dim colorassetvalue as colorassetvalue = personnalisation.item("generic_diffuse")
colorassetvalue.value = invapp.transientobjets.createcolor(255, 143, 47)

' appliquer l'apparence à la partie sélectionnée
selectedpart.comingance = personnalisation

messagebox.show("les deux règles exécutées et la couleur de la partie mise à jour avec succès.", "succès", messageboxboutons.ok, messageboxicon.information)
captures ex exception
messagebox.show("configurer la couleur de la partie d'erreur: " & ex.message, "error", messageboxboutons.ok, messageboxicon.error)
enfin
()
fin de l'essai
Autre
messagebox.show("pas de partie valide sélectionnée.", "error", messageboxboutons.ok, messageboxicon.error)
fin si
Cependant, vous pouvez tout lancer en un clic sur tous les fichiers, sans avoir à sélectionner les parties un par un.
Merci beaucoup pour votre disponibilité. rassemble les codes et ça marche.
 

Statistiques du forum

Sujets
58 521
Messages
499 056
Membres
104 110
Dernier membre
ChristianR

Membres en ligne

Aucun membre en ligne actuellement.
Retour
Haut