• 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.

MACRO par bord solide

  • Auteur du sujet Auteur du sujet cacciatorino
  • Date de début Date de début
L'accouchement était difficile, mais il allait à la bonne fin (prendre le monologue).

c'est la bonne chaîne de code :
appel shell("explorer.exe /select,"" & fullpathname & "", vbnormalfocus)

Je joins la macro mise à jour comme l'exige davimont.
Ça marche !
Je vous remercie.
 
Bonjour à tous... il y a une macro pour remplir le cartilage, sans utiliser de champs personnalisés. . . .
Je voudrais un écran qui s'active avec un bouton.
où il dit,... échelle... designer. responsable......etc etc.
Je vous remercie.
Au revoir.

Avez-vous répondu à votre question ? Je serais intéressé par une telle macro.
 
Au revoir.

Avez-vous répondu à votre question ? Je serais intéressé par une telle macro.
existe des entreprises qui vendent des programmes pour la gestion des documents et la durée de vie du produit
plm (gestion du cycle de vie des produits) ou pdm (gestion des données sur les produits).
Puisque vous approchez des macros, mais c'est juste que vous avez travaillé dans une nouvelle entreprise pour que vous n'ayez pas le temps, je vous supplie d'essayer de l'écrire (peut-être que c'est la première fois que je le vois si directement).

puis commence par la table à l'intérieur de la propriété solidedge\information\management
un peu est personnalisable, clic droit sur les en-têtes de colonnes.
C'est souvent suffisant.

informé, peut-être par votre revendeur de bord solide, sur le pdm natif préinstallé dans les dernières versions de solidedge st.
essayer de comprendre ce qu'il fait et comment. Une licence est requise, je ne sais pas si quelqu'un dans le forum l'utilise.
 
existe des entreprises qui vendent des programmes pour la gestion des documents et la durée de vie du produit
plm (gestion du cycle de vie des produits) ou pdm (gestion des données sur les produits).
Puisque vous approchez des macros, mais c'est juste que vous avez travaillé dans une nouvelle entreprise pour que vous n'ayez pas le temps, je vous supplie d'essayer de l'écrire (peut-être que c'est la première fois que je le vois si directement).

puis commence par la table à l'intérieur de la propriété solidedge\information\management
un peu est personnalisable, clic droit sur les en-têtes de colonnes.
C'est souvent suffisant.

informé, peut-être par votre revendeur de bord solide, sur le pdm natif préinstallé dans les dernières versions de solidedge st.
essayer de comprendre ce qu'il fait et comment. Une licence est requise, je ne sais pas si quelqu'un dans le forum l'utilise.
Bonjour.

nous avons déjà analysé un plm, mais il n'est pas parmi les priorités de l'entreprise. :
J'ai fait des personnalisations dans les propriétés comme vous le suggérez ci-dessus, et pour l'instant cela va bien, sauf dans la cartouche nous n'avons qu'une révision qui continue à écraser en faisant d'autres, tandis que nous aimerions avoir 3 comme historique.
 
Bonjour à tous... J'écris parce que j'ai besoin d'aide. Dans ce cas, je devrais savoir comment extrapoler la valeur de la longueur totale de coupe d'une pièce en tôle avec une macro.
La valeur que j'essaie de comprendre, c'est que présente dans la « conception des coûts » à la voix coupée. J'ai essayé de le trouver avec un espion, mais évidemment j'ai tort.
Si quelqu'un était si gentil de me passer le code vbs (juste un msgbox qui écrit la valeur) Je serais éternellement reconnaissant. J'ai confiance en une âme pieuse. Au revoir.
 
puis j'ai réussi à supprimer tous les conflits en ramenant tous les croquis en bleu et maintenant le fichier s'ouvre et se ferme au vol. le problème est que maintenant je ne peux pas ajouter de nouveaux ou changer les éléments de cadre déjà créés ; je ne peux que les supprimer... C'est comme si le modèle était gelé dans cette configuration. si par exemple je change un croquis ne met pas à jour le cadre relatif à ce croquis. si je crée un nouveau croquis et vérifie un élément de cadre, sur le menu "down" pour apparaître ce nouveau cadre, mais il n'est pas alors affiché, il reste comme affichant le seul croquis nu...
Bonjour à tous... J'écris parce que j'ai besoin d'aide. Dans ce cas, je devrais savoir comment extrapoler la valeur de la longueur totale de coupe d'une pièce en tôle avec une macro.
La valeur que j'essaie de comprendre, c'est que présente dans la « conception des coûts » à la voix coupée. J'ai essayé de le trouver avec un espion, mais évidemment j'ai tort.
Si quelqu'un était si gentil de me passer le code vbs (juste un msgbox qui écrit la valeur) Je serais éternellement reconnaissant. J'ai confiance en une âme pieuse. Au revoir.
Bonjour.

prémisse:
La valeur que vous recherchez n'est pas directement disponible dans les propriétés du fichier, mais vous devez la calculer.

Pour ce faire, vous devez analyser tous les bords de toutes les faces du modèle développé.
Jetez les faces perpendiculaires au développement (épaisseur), jetez les bords intérieurs (celles du début et de l'extrémité), jetez les faces doubles (chaque volet a 2 faces égales en raison de l'épaisseur). Une fois que vous trouvez tous les bords dont vous avez besoin pour calculer la longueur, pour une ligne ou une arche, il est assez facile, pour une courbe complexe un peu plus compliquée.

Avant-propos.

un bon point de départ couvrant tous les points mentionnés ci-dessus est l'exemple "gandt" que vous trouvez dans c:\programs\siemens\solid edge xxxx\custom\gandt

si vous avez connaissance de la base visuelle, vous devriez être en mesure d'obtenir ce que vous recherchez avec peu d'effort.
Sinon attendez lundi que je vous couvre ma fonction (je ne l'ai pas avec moi pour le moment).

Bonjour.
 
Bonjour à tous... J'écris parce que j'ai besoin d'aide. Dans ce cas, je devrais savoir comment extrapoler la valeur de la longueur totale de coupe d'une pièce en tôle avec une macro.
La valeur que j'essaie de comprendre, c'est que présente dans la « conception des coûts » à la voix coupée.
pour une estimation précise du temps de coupe, vous devriez utiliser le logiciel cnc laser.
Mon fournisseur me dit que parfois il faut plus de temps pour faire du perçage que pour faire une silhouette. De toute évidence, il vaut la peine de grandes épaisseurs et avec de nombreux trous ou fouilles.
 
Bonjour.

un bon point de départ couvrant tous les points mentionnés ci-dessus est l'exemple "gandt" que vous trouvez dans c:\programs\siemens\solid edge xxxx\custom\gandt

si vous avez connaissance de la base visuelle, vous devriez être en mesure d'obtenir ce que vous recherchez avec peu d'effort.
Sinon attendez lundi que je vous couvre ma fonction (je ne l'ai pas avec moi pour le moment).

Bonjour.
Pendant ce temps, merci pour la droite, je vais essayer de regarder l'exemple, mais je vous demande toujours d'attacher votre fonction si possible.
pour une estimation précise du temps de coupe, vous devriez utiliser le logiciel cnc laser.
Mon fournisseur me dit que parfois il faut plus de temps pour faire du perçage que pour faire une silhouette. De toute évidence, il vaut la peine de grandes épaisseurs et avec de nombreux trous ou fouilles.
en efetti est vrai, en fait la valeur dont j'ai besoin pour l'interface puis avec les tables de coupe de la cnc (vitesse et temps de rupture). le temps de cassure n'affecte que de façon significative si vous avez de grandes grilles ou épaisseurs (plus de 8 mm). Dans mon cas, ayant des épaisseurs fines, je vais le gérer en ajoutant un quota fixe en faisant une moyenne des coulées, tandis que dans le cas de grille la pièce sera chargée à une combinaison qui a un paramètre de coût différent qui prend en compte ces traitements.
 
Je vais mettre mon sous calcul sur vous. Tu dois nettoyer tout ce dont tu n'as pas besoin.
(J'ai déjà supprimé les rapports et le nombre de calculs de plis sinon il était trop long et ne m'a pas envoyé)

J'ajoute que pour calculer le nombre de points de naufrage, vous devez compter le nombre de "loop"
Code:
public sub avviocalcolocosto(tipo_lamiera comme chaîne, bshowresult comme booléen)

dim objfaces comme objet
dim objface comme objet
dim objtopfaces() en tant qu'objet
dim dblminrange(1 à 2) comme double
dim dblmaxrange(1 à 2) comme double
dim dblnormal(1 à 3) double: dim dblnormalref(1 à 3) double
dim itopfacecount comme entier
dim ioutlineedgecount comme entier
dim ifoldedgecount comme entier
dim objoutlineedges() en tant qu'objet
dim objfoldedges() comme objet
dim objedges comme objet
dim lgfacecount aussi longtemps
dim objsharedfaces(1 à 2) en tant qu'objet
dim isharedfaceindex en entier
dim i comme entier
dim j comme entier
dim k comme entier
dim ifilepointer comme entier
dim dblstartpoint(1 à 3) double
dim dblendpoint (1 à 3) comme double
dim dblcenter(1 à 3) double
dim dblradius double
dim dblstartangle double
dim dblsweepangle double
dim dblmajoraxis (1 à 3) comme double
dim duplicata sous forme de booléen
dim dblorigin (1 à 2) double
Dim nombre de coups aussi longtemps
dim points de course() en double
dim cardeparams() double
dim länge double
dim accessoires comme objet
Dim bite double
dim vars comme objet
dim rayon double
dim schnitt(15) double
dim dx double
dim dy comme double

suite de l'erreur
set objapp = getobject(, "solidedge.application")
en cas d'erreur alors
msgbox "sold edge deve essere aperto."
fin
fin si
en cas d'erreur aller à 0

si objapp.activeenvironment <> "feuillet métallique" alors
Msgbox "nessuna parte in lamiera aperta".
fin
fin si

set objfoldeddoc = objapp.activedocument

's'assurer que le document contient un modèle solide
si objfoldeddoc.models.count = 0 alors
msgbox "il fichier aperto non contiene un modello solido."
fin
fin si

définir objprops = objfoldeddoc.properties

nomefilexls = (gauche(objfoldeddoc.fullname, len(objfoldeddoc.fullname) - 4) + "_costo.xls")

_vecteur de la norme = 3
valeur_norme = 1

set objmodel = objflatdoc.reference.body.shells(1)

"Mettons tous les visages planaires dans le modèle.
'set objfaces = objmodel.body.faces(facetype:=igqueryplane)
set objfaces = objmodel.faces '(facetype:=igface)

' attribuez la mémoire pour stocker tous les visages supérieurs.
redim objtopfaces(1 to objfaces.count / 2) comme objet

' trouver et sauver toutes les faces dont la normale est dans l'axe positif z.
itopfacecount = 0
pour chaque objface en objfaces
' obtenir la gamme paramétrique du visage.
appel objface.getparamrange(minparam:=dblminrange, maxparam:=dblmaxrange)

' obtenir la normale au point de param min.
Appelez l'objface. getnormal(numparams:=1, params:=dblminrange, normales:=dblnormal)

' vérifier si elle est pointée dans la direction positive z.
si cstr(dblnormal(norm_vector)) = cstr(norm_value) alors
Sauvez ce visage parce que c'est un des visages supérieurs.
itopfacecount = itopfacecount + 1
set objtopfaces(itopfacecount) = objface
fin si
suivant

' de réserver de l'espace pour les bords
'redim objoutlineedges(1 à objmodel.body.edges(igqueryall).count / 3) comme objet
redim objoutlineedges(1 à objmodel.body.edges(igqueryall).count / 2) comme objet
si tipo_lamiera = "virola" alors
redim objfoldedges(2) comme objet
Autre
redim objfoldedges(1 to itopfacecount * 2) en tant qu'objet
fin si

dim ofoldedges comme collection
set ofoldedges = nouvelle collection

' initialiser les compteurs.
ioutlineedgecount = 0
ifoldedgecount = 0

' passer par les faces supérieures et recueillir tous les bords uniques. si des bords quelconques
' sont partagés par les faces supérieures, puis ils sont sauvés séparément comme bords de plis.

n_profili = 1

pour i = 1 à l'itopfacecount

' trovo i loop della faccia e li somo -1
n_profili = n_profili + objtopfaces(i).loops.count - 1

' obtenir tous les bords de la face actuelle.
set objedges = objtopfaces(i).edges

' vérifier chaque bord pour voir s'il est partagé avec un autre visage.
pour j = 1 à objedges. Nombre
' obtenir l'autre visage qui partage ce bord.
call objedges(j).getfaces(numfaces:=lgfacecount, faces:=objsharedfaces)

Prends l'autre visage.
si objsharedfaces(1) est objtopfaces(i) alors
isharedfaceindex = 2
Autre
isharedfaceindex = 1
fin si

' obtenir la gamme paramétrique du visage.
appel objsharedfaces(isharedfaceindex).getparamrange(minparam:=dblminrange, maxparam:=dblmaxrange)

' obtenir la normale au point de param min.
call objsharedfaces(isharedfaceindex).getnormal(numparams:=1, params:=dblminrange, normals:=dblnormal)

' si la normale pointe dans la direction positive z, le bord est partagé avec une autre face supérieure.
si abs(dblnormal(norm_vector)) > norm_value - 0,1 et dblnormal(norm_vector) < norm_value + 0,1 alors

' vérifier si ce bord est déjà pris en compte.
duplicata = faux
pour k = 1 à ifoldedgecount
si objedges(j) est objfoldedges(k) alors
duplication = true
sortie pour
fin si
suivant

si elle n'est pas dupliquée alors
'si itopfacecount * 2 < ifoldedgecount alors
ifoldedgecount = ifoldedgecount + 1
set objfoldedges(ifoldedgecount) = objedges(j)
oldedges.add (objedges(j))
'finir si
fin si

Autre
' le bord est à l'extérieur.
ioutlineedgecount = ioutlineedgecount + 1

set objoutlineedges(ioutlineedgecount) = objedges(j)

fin si
suivant
suivant

gesamtlänge = 0

pour i = 1 à ioutlineedgecount

länge = 0

sélectionner cas objoutlineedges(i).géométrie. type
cas igline
call objoutlineedges(i).getendpoints(startpoint:=dblstartpoint, endpoint:=dblendpoint)

'Länge der linie
Länge = ((dblendpoint(1) - dblstartpoint(1)) ^ 2 + (dblendpoint(2) - dblstartpoint(2)) ^ 2) ^ 0,5

cas igcircle
' déterminer si le bord est en fait un cercle ou un arc.
si objoutlineedges(i)est fermé alors
appel objoutlineedges(i).geométrie.getcircledata(point central:=dblcenter, axevecteur:=dblnormal, rayon:=dblradius)

länge = dblradius * 2 * pi

Autre
appel getarcdata(objoutlineedges(i), true, dblcenter, dblnormal, dblstartpoint, dblndpoint, _
dblstartangle, dblsweepangle, dblmajoraxis, dblradius)

' modifier l'angle de départ pour qu'il soit basé sur la direction de l'axe principal. puisque nous sommes seulement
' s'agissant de l'arc en espace 2d sur la place x-y, l'angle de départ devrait être relatif
' à la place de l'axe x.
dblorigine(1) = 0
dblorigine(2) = 0
dblstartangle = dblstartangle + roulement(dblorigine, dblmajoraxis)

länge = dblradius * dblsweepangle

fin si

cas igellipse, igbsplinecurve

• ellipses et courbes bspline.
call objoutlineedges(i).getstrokedata(tolérance:=0.001, nombre de temps:=compte de temps, points:=points de temps, paramètres:=params de temps)

pour j = 2 au nombre de courses
dx = points de course(j - 1) * 3) - points de course(j - 2) * 3)
dy = points de course(((j - 1) * 3) + 1) - points de course((j - 2) * 3) + 1)
länge = länge + (dx ^ 2 + dy ^ 2) ^ 0,5
suivant

fin de sélectionner

gesamtlänge = gesamtlänge + länge

suivant

pour i = 1 à ifoldedgecount
sélectionner le cas objfoldedges(i). géométrie. type
cas igline
call objfoldedges(i).getendpoints(startpoint:=dblstartpoint, endpoint:=dblendpoint)

cas igcircle
' déterminer si le bord est en fait un cercle ou un arc.
si objfoldedges(i)est fermé alors
appel objfoldedges(i).geométrie.getcircledata(point central:=dblcenter, axevecteur:=dblnormal, rayon:=dblradius)

Autre
appel getarcdata(objfoldedges(i), true, dblcenter, dblnormal, dblstartpoint, dblndpoint, _
dblstartangle, dblsweepangle, dblmajoraxis, dblradius)

' modifier l'angle de départ pour qu'il soit basé sur la direction de l'axe principal. puisque nous sommes seulement
' s'agissant de l'arc en espace 2d sur la place x-y, l'angle de départ devrait être relatif
' à la place de l'axe x.
dblorigine(1) = 0
dblorigine(2) = 0
dblstartangle = dblstartangle + roulement(dblorigine, dblmajoraxis)

fin si
cas igellipse, igbsplinecurve

• ellipses et courbes bspline.
call objfoldedges(i).getstrokedata(tolérance:=0.001, nombre de temps:=compte de temps, points:=points de temps, paramètres:=params de temps)

fin de sélectionner
suivant

suite de l'erreur
valeur = format(gesamtlänge, "0.000") & "m"
en cas d'erreur alors
accessoires.ajouter "perimetro", format(gesamtlänge, "0.000") & "m"
fin si

fin sous
 
Je vais mettre mon sous calcul sur vous. Tu dois nettoyer tout ce dont tu n'as pas besoin.
(J'ai déjà supprimé les rapports et le nombre de calculs de plis sinon il était trop long et ne m'a pas envoyé)

J'ajoute que pour calculer le nombre de points de naufrage, vous devez compter le nombre de "loop"
Désolé d'être en retard dans la réponse, mais hier, c'était une bonne journée. Pendant ce temps, je vous remercie, je me suis immédiatement mis au travail pour faire un script (je ne sais pas comment utiliser vb, mais je sais assez de langage) espérant réussir.

P.S.
à cause de la curiosité Gandt me renvoie une erreur car la version compilée a le mauvais chemin. De toute façon, j'ai quelque chose dans la liste Vb.

Merci encore pour la disponibilité.
 
Je vais vous mettre dans mon sous calcul
mise à jour et solution:
après une série de tentatives, je ne pouvais pas ramener votre macro à vbs ("dim.. comme..." au script n'aime pas et parfois est indispensable)
Cependant J'ai résolu en insérant un croquis dans l'échantillon développé sur lequel j'ai inclus tous les profils de coupe. puis une fois que la zone de ce croquis "magiquement" dans les variables apparaît le périmètre. à ce moment-là, j'ai récupéré la valeur facilement et une fois compté les éviers j'ai arrivé à une solution plus que acceptable avec un script assez simple.
 
La Commission a adopté une proposition de règlement (CE) du Parlement européen et du Conseil modifiant le règlement (CE) n° 2660/2001 relatif à l'harmonisation des législations des États membres relatives aux véhicules à moteur et des véhicules à moteur et des véhicules à moteur à moteur et à moteur à allumage commandé.https://github.com/solidedgecommunityitalyLe recrutement des employés est ouvert.
 
prémisse:
La valeur que vous recherchez n'est pas directement disponible dans les propriétés du fichier, mais vous devez la calculer.
Bonjour encore à tous,
n'est pas exactement comment faire pour que la valeur soit prête parce que, comme le dit à juste titre be_on_edge, la valeur n'est pas écrite dans une propriété de fichier, mais avec ce code j'ai réussi à extrapoler sur un fichier csv les valeurs présentes dans la table de plan de coût.
Code:
 private sub designcost(sender as object, e as eventargs) gère le bouton1.cliquez
objapp = getobject(, "solidedge.application")
Objdoc = document actif
dim filecsv = "c:\test_costo\pippo.csv"
appel objdoc.exportdesigncoustocsv(objdoc.fullname, filecsv, false)

fin sous
Il suffit de lire ce fichier et le périmètre de coupe est facilement récupérable. Mais pour ceux-ci, il suffit de compter les boucles du modèle.
Peut-être que quelqu'un peut être utile.
 
Au revoir à tous,
J'aurais besoin d'une macro excelle qui monte des pièces ou des feuilles dans un ensemble.
Quelqu'un a quelque chose comme ça ?
Je vous remercie !
 
Au revoir à tous,
J'aurais besoin d'une macro excelle qui monte des pièces ou des feuilles dans un ensemble.
Quelqu'un a quelque chose comme ça ?
Je vous remercie !
Tu es un peu générique. . . .
l'insertion peut être définie avec le chemin du fichier et les coordonnées (x,y,z,rotazionex,rotazione,y,rotazionez) et donne ensuite un lien de mise sur le terrain.
Si tu trouves une macro qui lie tes pièces tout seul, dis-le-moi.

voici la base, insert (ajout), position (mouvement), roue (rotation). vous faites un cube de rubik:-dlien sdk
 
J'espérais que tu étais encore là ! :
Je suis générique parce que j'ai besoin d'un ensemble générique. Je vais vous expliquer...
J'ai beaucoup d'assiettes latérales. Je dois les mettre dans un ensemble, même de manière désordonnée, pour ensuite créer une table pour exporter avec toutes les informations des différentes parties.
Merci pour le lien, maintenant je vais jeter un oeil dessus!
 

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