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

API et Assemblée

Sbabba

Guest
Bonjour à tous.

pour la thèse je travaille sur un montage automatique d'une série de composants standard dans différentes configurations.
J'ai écrit un programme c# qui permet la sélection de ces composants et commande deux cads, des travaux solides et un bord solide, pour l'assemblage des modèles de ces composants selon la configuration choisie.

concernant les travaux solides, je n'avais aucun problème. J'ai inséré deux étages entre eux orthogonaux et un axe à la fin de chaque pièce, afin qu'ils puissent être couplés à travers deux commandes de complanarité et une de coaxialité ; cette procédure d'accouplement est iterata pour chaque paire de composants jusqu'à ce que l'assemblage final soit créé, car les plans et axes ont toujours le même nom et sw sélectionne les plans et axes avec une syntaxe du type "name_piano@nome_parte@nome_assembly".

pour la précision les commandes utilisées sont:

selectbyid2() pour la sélection des plans et axes avec lesquels effectuer le couplage;
addmate3() pour l'ajout d'un couplage plan et axial.

Maintenant j'essaie de faire la même chose avec le bord solide, mais j'ai des difficultés.

d'abord j'ai trouvé les commandes axialrelation3d() et planarrelation3d() pour effectuer les accouplements, mais j'ai beaucoup de doutes sur la façon dont il peut faire. le sdk de st4 dit (pour) qu'il est possible d'utiliser la commande planarrelation3d() pour faire parallèle deux faces de deux parties différentes: au lieu de deux faces, serait-il possible d'utiliser deux étages créés par moi, nommé de manière très précise, afin d'appliquer la même commande itérative pour les différentes composantes?

En ce qui concerne la coaxialité, il me semble qu'il n'est pas possible, parce que la commande axialrelation3d() fait deux axes de deux parties cylindriques, mais dans mon cas j'ai non seulement des parties cylindriques; De plus, si elle ne permet pas, contrairement à sw, d'insérer des axes au plaisir. Je pouvais facilement résoudre le problème en utilisant un troisième étage et un troisième complot, mais je voulais m'en assurer.

Malheureusement en ligne il y a très peu d'informations concernant l'utilisation des abeilles à bord solide avec assemblage, et le sdk de si est extrêmement rare si comparé à celui de sw, puis brancolo un peu dans l'obscurité.

Je remercie à l'avance quiconque peut me donner même la plus petite aide!! et sur l'extremit
 
Bonjour à tous.

pour la thèse je travaille sur un montage automatique d'une série de composants standard dans différentes configurations.
J'ai écrit un programme c# qui permet la sélection de ces composants et commande deux cads, des travaux solides et un bord solide, pour l'assemblage des modèles de ces composants selon la configuration choisie.

concernant les travaux solides, je n'avais aucun problème. J'ai inséré deux étages entre eux orthogonaux et un axe à la fin de chaque pièce, afin qu'ils puissent être couplés à travers deux commandes de complanarité et une de coaxialité ; cette procédure d'accouplement est iterata pour chaque paire de composants jusqu'à ce que l'assemblage final soit créé, car les plans et axes ont toujours le même nom et sw sélectionne les plans et axes avec une syntaxe du type "name_piano@nome_parte@nome_assembly".

pour la précision les commandes utilisées sont:

selectbyid2() pour la sélection des plans et axes avec lesquels effectuer le couplage;
addmate3() pour l'ajout d'un couplage plan et axial.

Maintenant j'essaie de faire la même chose avec le bord solide, mais j'ai des difficultés.

d'abord j'ai trouvé les commandes axialrelation3d() et planarrelation3d() pour effectuer les accouplements, mais j'ai beaucoup de doutes sur la façon dont il peut faire. le sdk de st4 dit (pour) qu'il est possible d'utiliser la commande planarrelation3d() pour faire parallèle deux faces de deux parties différentes: au lieu de deux faces, serait-il possible d'utiliser deux étages créés par moi, nommé de manière très précise, afin d'appliquer la même commande itérative pour les différentes composantes?

En ce qui concerne la coaxialité, il me semble qu'il n'est pas possible, parce que la commande axialrelation3d() fait deux axes de deux parties cylindriques, mais dans mon cas j'ai non seulement des parties cylindriques; De plus, si elle ne permet pas, contrairement à sw, d'insérer des axes au plaisir. Je pouvais facilement résoudre le problème en utilisant un troisième étage et un troisième complot, mais je voulais m'en assurer.

Malheureusement en ligne il y a très peu d'informations concernant l'utilisation des abeilles à bord solide avec assemblage, et le sdk de si est extrêmement rare si comparé à celui de sw, puis brancolo un peu dans l'obscurité.

Je remercie à l'avance quiconque peut me donner même la plus petite aide!! et sur l'extremit
les axes en bord solide peuvent être créés, la commande est cachée et de retirer. Je vous recommande d'utiliser les systèmes de coordonnées qui en même temps contiennent à la fois des axes et des plans.

alors vous pouvez entrer la relation qui fait coïncider deux systèmes de coordonnées, et avec une position de relation la partie.

Vous pouvez toujours suivre le chemin que vous prenez, au lieu des visages, vous devrez leur donner des plans.

recherche pour les commandes "addplanar" et "addaxial", la documentation pour la programmation de bord solide est très bien écrite je doute que vous cherchez au mauvais endroit.

Bonjour.
 
le conseil d'utiliser le système de coordonnées me semble très bon. Alternativement, pour l'axe, je proposerais un croquis avec une ligne.
pour sélectionner un élément, la méthode la plus simple (selon mes capacités) est d'utiliser l'index, bien que pour un objet fonctionne aussi le nom:
sélection par nom: famille("nom")
sélection de la première: famille(0)
sélection du dernier: famille(sujets.count()- 1 )

les plans de référence sont toujours les premiers, vous pouvez déterminer si le premier ou dernier croquis contient vos axes.
pour la programmation à bord solide je suggère les liens suivants, si vous ne les connaissez pas déjà:
Sespy: http://solidedgespy.codeplex.com/di http://www.jasonnewell.net/
 
Merci pour les réponses !

Désolé d'être en retard, j'ai passé le dernier examen avant la remise des diplômes et il m'a beaucoup pris ! Maintenant, je peux me concentrer entièrement sur la thèse:)

L'idée du système de coordonnées semble géniale ! J'essaie de l'utiliser, mais j'ai des difficultés.

J'ai pris comme base C'est ça. guide, puis réécrire les commandes pour c#.

Maintenant, j'ai ouvert deux fichiers de montage que je dois faire correspondre aux systèmes de coordonnées, ils sont "seassy1" et "seassy2", et j'ai acquis le système de coordonnées avec ces commandes:
Code:
easy1cos = easy1.coordonnésystèmes.item(2);
easy2cos = easy2.systèmes de coordination.item(2);
item(2) parce que le premier est par défaut, le second est ce que j'ai créé.

le guide dit alors d'utiliser la commande « getorientation() » pour obtenir les « détails du système de coordonnées ».
Code:
easy1cos.getorientation(axo, ayo, azo, axr, ayr, azr);
Mais ici, je trouve une erreur. L'étude visuelle souligne que deux paramètres manquent à la commande, qui serait "relativetoparent" et "zfirstrotation" ( http://dl2.plm.automation.siemens.c...dgepart~coordinatorsystem~getorientation.html )
Je ne comprends pas exactement quels sont les paramètres, en ce sens que l'étude visuelle à l'aide de la compilation me dit ceci
err.jpgEt je ne sais pas ce que c'est. En outre, selon la page de commande obtenir l'orientation sur le site siemens, chaque paramètre devrait être facultatif, et pour cela le guide, je pense, vous ne les apportez pas tous, mais il semble qu'ils ne soient pas du tout facultatifs en réalité :d

J'ai essayé de voler et d'aller plus loin, de conclure quelque chose, donc j'ai toujours suivi le guide qui veut à ce stade extraire les plans qui définissent le système de coordonnées. il le fait avec la commande "coordersystem.plane()" qui veut paramétrer la constante indiquant le plan que vous voulez extraire, que j'ai trouvé Ici.

Code:
assyxyplane = seasy1cos.plan(sécoordsysxyplane);
le problème est que l'étude visuelle n'est pas encore heureuse, et me dit "propriété indexée solideedgepart.coordonesystem.plane a un argument non-facultatif qui doit être fourni". Je ne comprends pas. le paramètre à fournir n'est qu'un, la constante qui indique le plan, et aussi dans la compilation automatique vs me demande seulement un... que voulez-vous dire par "paramètre non-facultatif" que je ne lui donnerais pas?

Chaque fois que je fais un pas en avant, je reprends deux... C'est absurde parce que je suis sûr que c'est une chose très simple, mais pour le moment cela semble impossible ! !

Je vous remercie d'avance de m'avoir aidé. Merci aussi pour le conseil d'espion de bord solide, vraiment utile!
 
dans le guide de bord solide les paramètres de getorientation les indiquent tous comme "variante" afin que je ne m'inquiète pas trop et insérer deux variables de ce type.

Je viens d'essayer en vb6 et le code suivant fonctionne, malheureusement je ne programme pas en c donc je ne peux pas vous aider si je ne vous conseille pas de demander sur le forum où vous avez trouvé le code dont vous parlez.
Code:
 dim objapp en tant que cadre solide. application
dim objasm comme solidedgeassembly.assemblydocument

Dim piano comme solidedgegéométrie. visage

set objapp = getobject(, "solidedge.application")
définir objasm = objapp.activedocument

jeu de piano = objasm.coordinatorsystems(2).plane(sécoordsysxyplane)
 
Merci pour la réponse rapide, maintenant j'essaie! le fait qu'il est en vb n'est pas un problème, tellement c# est très similaire!

Cependant, j'ai découvert la raison de la première erreur, celle de la getorientation(). veut certains paramètres comme "objet" et ils doivent être définis, donc la syntaxe correcte est "getorientation (out axo, out ayo, out azo, out axr, out ayr, out azr);" avec axo...azr déclaré objet, et pas double comme ce guide (ce qui, par conséquent, je me demande comment cela pourrait fonctionner :d).

Merci encore:)
 
Alors je l'ai fait ! Bref, presque :d

puis après quelques péripéties j'ai écrit ce code, qui peut parfaitement aligner les systèmes de coordonnées de deux pièces, mais seulement ceux-là! Je vais t'expliquer.

Je commence par insérer un nombre variable de composants (minimum 5, max 8) dans un assemblage que je crée actuellement. Ces composants sont tous assemblés en dehors d'un .par. la fonction d'assemblage est unique et est appelée plusieurs fois dans un cycle afin de combiner tous les composants nécessaires. Je connais l'ordre d'insertion des composants de l'assemblage, qui est le même dans lequel ils seront commandés, ainsi à la fonction étape une variable "c" qui indique la position dans l'ordre, de sorte que le code fusionne de temps en temps le composant c-th avec le c-th + 1.
Code:
//mi se connecter à l'assemblage créé pour l'affichage de l'assemblage
merésie = application.document actif;

//Créo l'apparition par rapport aux deux composants
seocc1 = seasy.occurrences.item(c);
seocc2 = seasy.occurrences.item(c+1);

//Je prends le système de coordonnées de moi créé pour chaque composant. seulement pour la première assemblée sera numéro (2)
Si (c) 1)
(')
seocc1cos = seocc1.occurrencedocument.coordonnésystems.item(2);
?
♪
(')
seocc1cos = seocc1.occurrencedocument.coordonnésystems.item(3);
?

seocc2cos = seocc2.occurrencedocument.coordonnésystems.item(2);


//J'achète les détails du système de coordonnées de moi créé
seocc1cos.getorientation(sur a1xo, sur a1yo, sur a1zo, sur a1xr, sur a1yr, sur a1zr);
seocc2cos.getorientation(sur a2xo, sur a2yo, sur a2zo, sur a2xr, sur a2yr, sur a2zr);


//J'achète les plans qui composent le système de coordonnées que j'ai créé
occ1xyplane = seocc1cos.plan[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysXYPlane];
occ1yzplane = seocc1cos.plan[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysYZPlane];
occ1zxplane = seocc1cos.plane[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysZXPlane];

occ2xyplane = seocc2cos.plan[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysXYPlane];
occ2yzplane = seocc2cos.plan[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysYZPlane];
occ2zxplane = seocc2cos.plane[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysZXPlane];


//cancello la relazione ground dei due componenti
les relations3d.item(1).delete();
seocc2.relations3d.item(1).delete();

//acuisisco le relazioni del pezzo
serels3d = mer.relations3d;


//creo un reference fra il pezzo e il piano ed aggiunge la relazio planare
serefocc1 = seasy.createreference(seocc1, occ1xyplane);
serefocc2 = seasy.createreference(seocc2, occ2xyplane);
serels3d.addplanar(serefocc1, serefocc2, false, point de contrainte, point de contrainte);

serefocc1 = seasy.createreference(seocc1, occ1yzplane);
serefocc2 = seasy.createreference(seocc2, occ2yzplane);
serels3d.addplanar(serefocc1, serefocc2, false, point de contrainte, point de contrainte);

serefocc1 = seasy.createreference(seocc1, occ1zxplane);
serefocc2 = seasy.createreference(seocc2, occ2zxplane);
serels3d.addplanar(serefocc1, serefocc2, false, point de contrainte, point de contrainte);
Note: lorsque j'acquiert le système de coordonnées, je mets un si {} parce que tous les composants s'assemblent verticalement l'un au-dessus de l'autre, donc de temps en temps je prends le système de coordonnées de l'un ci-dessous et je le joigns à celui de la pièce ci-dessus. le premier composant, cependant, n'a qu'un seul système de coordonnées créé par moi, parce qu'être toujours le premier n'aura jamais le besoin d'être connecté avec 2 composants, mais seulement avec celui qui s'y tiendra. C'est pour ça que je le fais.


maintenant le code fonctionne parce que les deux premiers composants sont parfaitement assemblés, le problème se pose dans le second cycle. il fait toujours la partie initiale sans problème, mais il donne une erreur quand il atteint le temps de créer la référence et ensuite faire le couplage. en particulier il se passe mal:
Code:
serefocc1 = seasy.createreference(seocc1, occ1xyplane);
Je pensais que c'était peut-être parce que "serefocc1" n'a pas été initialisé à "null", mais aussi de cette façon il fait une erreur. J'ai pensé qu'il devrait être en mesure de garder les anciennes références, donc j'ai essayé de faire la deuxième assemblée avec une variable différente, comme "serefocc3", mais il fait aussi une erreur comme ça.

clairement à la deuxième assemblée "seocc1" est un composant différent d'avant, en particulier c'est la seconde que j'ai assemblé précédemment (ce qui avant était "seocc2"), et occ1xyplane est le plan xy pris de son système de coordonnées.


Je ne comprends pas quel est le problème, et c'est définitivement un bord solide. Évidemment, je manque quelque chose sur la façon dont les événements, la référence et la créatiréférence(), mais je ne comprends pas ce que cela pourrait être.

Quelqu'un a une idée du problème ? J'aurais pratiquement fini ça !

Je vous remercie encore une fois de votre attention, vous êtes très aimable:
 
Quel genre d'erreur sort de toi ?

d'une lecture rapide de votre code le premier composant n'est lié à rien et donc capable de se déplacer.
Ce serait bien de lui laisser la relation terrestre. Ceci est vrai dans toutes les situations, la composante principale doit être liée au terrain.

Bonjour.
 
Merci pour la réponse.

alors j'ai réalisé une erreur, dans le sens que, puisque tout ce code est appelé plusieurs fois en fait est comme si c'était dans un cycle, donc à chaque fois j'ai essayé d'éliminer les relations des deux pièces qui étaient assemblées à cette époque, mais clairement l'un des deux avait déjà été assemblé avant et donc le rapport de terrain avait déjà été supprimé auparavant.

J'ai modifié le code pour supprimer les contraintes à toutes les pièces sauf la première fois que la fonction est appelée.
J'ai également initialisé toutes les variables afin d'éliminer toute information résiduelle possible.

maintenant, après initialisation à nul, le programme assemble toujours la première et la deuxième pièce, puis quand la fonction se répète pour l'assemblage de la seconde avec la troisième elle bloque sur la deuxième "créerréférence", que avec le plan yz. L'erreur est ceci
err.jpgC'est tellement générique que je ne peux pas comprendre où vous vous trompez, donc j'ai dit que je suis sûr que je manque quelque chose dans la méthode de la créationréférence(), le problème est que je ne comprends pas ce que... outre la première créationréférence() avec le plan xy fait.

Maintenant peut-être que j'essaie de faire sauter ce composant et de passer au suivant, peut-être que c'est un problème de modèle.

Merci et bonjour !
 
modifier: J'ai essayé d'assembler les deux pièces en utilisant les deux systèmes de coordonnées et je n'ai aucun problème avec cela, donc les pièces ne pensent pas qu'elles ont des problèmes. de plus en plus incompréhensible :d


c'est le code actuel, comparé à avant je n'ai modifié que l'élimination de la liaison terrestre sur les composants.

Code:
//mi se connecter à l'assemblage créé pour afficher la prothèse
merésie = application.document actif;

//créo l'apparition par rapport aux deux composants. c Valeur initiale 1 et est augmenté à chaque appel de cette fonction
seocc1 = seasy.occurrences.item(c);
seocc2 = seasy.occurrences.item(c+1);

//Je prends le système de coordonnées de moi créé pour chaque composant. seulement pour la première assemblée sera numéro (2)
Si (c) 1)
(')
// annuler la relation de base de tous les composants sauf le premier, qui doit rester fixe
int nutocc = seasy.occurrences.count;
Int a = 2;

pendant la période (un <= nombre de jours)
(')
easys.occurrences.item(a).relations3d.item(1). supprimer();
a++;
?
seocc1cos = seocc1.occurrencedocument.coordonnésystems.item(2);
?
♪
(')
seocc1cos = seocc1.occurrencedocument.coordonnésystems.item(3);
?

seocc2cos = seocc2.occurrencedocument.coordonnésystems.item(2);

//J'achète les détails du système de coordonnées de moi créé
seocc1cos.getorientation(sur a1xo, sur a1yo, sur a1zo, sur a1xr, sur a1yr, sur a1zr);
seocc2cos.getorientation(sur a2xo, sur a2yo, sur a2zo, sur a2xr, sur a2yr, sur a2zr);

//J'achète les plans qui composent le système de coordonnées que j'ai créé
occ1xyplane = seocc1cos.plan[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysXYPlane];
occ1yzplane = seocc1cos.plan[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysYZPlane];
occ1zxplane = seocc1cos.plane[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysZXPlane];

occ2xyplane = seocc2cos.plan[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysXYPlane];
occ2yzplane = seocc2cos.plan[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysYZPlane];
occ2zxplane = seocc2cos.plane[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysZXPlane];


//acuisisco le relazioni del pezzo
serels3d = mer.relations3d;

//creo un reference fra il pezzo e il piano ed aggiunge la relazio planare
serefocc1 = seasy.createreference(seocc1, occ1xyplane);
serefocc2 = seasy.createreference(seocc2, occ2xyplane);
serels3d.addplanar(serefocc1, serefocc2, false, point de contrainte, point de contrainte);

serefocc1 = seasy.createreference(seocc1, occ1yzplane);
serefocc2 = seasy.createreference(seocc2, occ2yzplane);
serels3d.addplanar(serefocc1, serefocc2, false, point de contrainte, point de contrainte);

serefocc1 = seasy.createreference(seocc1, occ1zxplane);
serefocc2 = seasy.createreference(seocc2, occ2zxplane);
serels3d.addplanar(serefocc1, serefocc2, false, point de contrainte, point de contrainte);
 
J'ai également essayé de changer les pièces, toujours clouées sur la création de la référence entre la pièce et son plan yz, indépendamment du système de coordonnées ou de la pièce que je prends.

quand il le fait pour la première des pièces il fonctionne, avec tout autre crash, mais avec le plan xy il ne donne pas de problèmes et les systèmes de coordonnées ont été construits de la même manière. Je ne comprends pas. .
 
en vb6 c'est comme ça que je le ferais, et ça marche.

Bonjour.
Code:
Sous-ensemble privé()

dim objapp en tant que cadre solide. application
dim objasm comme solidedgeassembly.assemblydocument

dim objocc1 comme solidedgeassembly.occurrence
dim objocc2 comme solidedgeassembly.occurrence

dim objocc1cs comme solidedgepart.coordinatorsystem
dim objocc2cs comme solidedgepart.coordonnésystem

dim objocc1xyplane comme solidedgegeométrie. visage
dim objocc1yzplane comme solidedgegeométrie. visage
dim objocc1zxplane comme solidedgegeométrie. visage
dim objocc2xyplane comme solidedgegeométrie. visage
dim objocc2yzplane comme solidedgegeométrie. visage
dim objocc2zxplane comme solidedgegeométrie. visage

dim xyzpoints1(1 à 6) double
dim xyzpoints2(1 à 6) double

dim objocc1ref comme un cadre solide.référence
dim objocc2ref comme solidedgeframework.référence

set objapp = getobject(, "solidedge.application")
définir objasm = objapp.activedocument

pour chaque événement dans objasm.occurrences

si occurrence.index <> objasm.occurrences.count alors

jeu objocc1 = occurrence
set objocc2 = objasm.occurrences.item(objocc1.index + 1)

pour i = objocc2.relations3d.count à 1 étape -1
Les relations 3d(i). supprimer
Suivant

set objocc1cs = objocc1.occurrencedocument.coordinatorsystems(2)
définir objocc2cs = objocc2.occurrencedocument.coordonnésystèmes(3)

call objocc1cs.getorientation(xyzpoints1(1), xyzpoints1(2), xyzpoints1(3), xyzpoints1(4), xyzpoints1(5), xyzpoints1(6))
call objocc2cs.getorientation(xyzpoints2(1), xyzpoints2(2), xyzpoints2(3), xyzpoints2(4), xyzpoints2(5), xyzpoints2(6))

set objocc1xyplane = objocc1cs.plane(sécoordsysxyplane)
ensemble objocc1yzplane = objocc1cs.plane(secoordsysyzplane)
ensemble objocc1zxplane = objocc1cs.plane(secordsyszxplane)

ensemble objocc2xyplane = objocc2cs.plane(sécoordsysxyplane)
jeu objocc2yzplane = objocc2cs.plane(secordsysyzplane)
set objocc2zxplane = objocc2cs.plane(secoordsyszxplane)

définir objocc1ref = objasm.createreference(objocc1, objocc1xyplane)
set objocc2ref = objasm.createreference(objocc2, objocc2xyplane)

appel objasm.relations3d.addplanar(objocc1ref, objocc2ref, false, xyzpoints1, xyzpoints2)

définir objocc1ref = objasm.createreference(objocc1, objocc1yzplane)
définir objocc2ref = objasm.createréférence(objocc2, objocc2yzplane)

appel objasm.relations3d.addplanar(objocc1ref, objocc2ref, false, xyzpoints1, xyzpoints2)

définir objocc1ref = objasm.createreference(objocc1, objocc1zxplane)
set objocc2ref = objasm.createréférence(objocc2, objocc2zxplane)

appel objasm.relations3d.addplanar(objocc1ref, objocc2ref, false, xyzpoints1, xyzpoints2)

fin si

prochaine occurrence

fin sous
 
Au revoir !

Votre code est pratiquement comme le mien, en fait aussi mes œuvres avec la première assemblée.

sur la deuxième assemblée effectue l'addplanar sur le premier couple de planchers (tout ce qu'il est: xy, yz, zx), puis quand je crée une nouvelle référence pour appeler pour la deuxième fois l'addplanar s'écrase toujours sur la création de référence. et crash quel que soit le plancher que vous utilisez ! !

i.e. si je fais d'abord le xy et puis le yz:
Code:
 définir objocc1ref = objasm.createreference(objocc1, objocc1xyplane)
set objocc2ref = objasm.createreference(objocc2, objocc2xyplane)

appel objasm.relations3d.addplanar(objocc1ref, objocc2ref, false, xyzpoints1, xyzpoints2)

définir objocc1ref = objasm.createreference(objocc1, objocc1yzplane)
définir objocc2ref = objasm.createréférence(objocc2, objocc2yzplane)

appel objasm.relations3d.addplanar(objocc1ref, objocc2ref, false, xyzpoints1, xyzpoints2)
"set objocc1ref = objasm.createreference(objocc1, objocc1yzplane)"

Mentre se smudança l'ordine facendo prima l'yz e poi l'xy:
Code:
 définir objocc1ref = objasm.createreference(objocc1, objocc1yzplane)
définir objocc2ref = objasm.createréférence(objocc2, objocc2yzplane)

appel objasm.relations3d.addplanar(objocc1ref, objocc2ref, false, xyzpoints1, xyzpoints2)

définir objocc1ref = objasm.createreference(objocc1, objocc1xyplane)
set objocc2ref = objasm.createreference(objocc2, objocc2xyplane)

appel objasm.relations3d.addplanar(objocc1ref, objocc2ref, false, xyzpoints1, xyzpoints2)
fait le yz mais s'écrase sur le xy, "set objocc1ref = objasm.createreference(objocc1, objocc1xyplane)"

Presque toujours s'écrase sur la deuxième référence, tandis que la première parvient toujours à la créer, quels que soient les plans que j'utilise ! J'ai essayé avec Zx, le même discours.

Je ne comprends pas ce que c'est. Pourquoi jamais ?
 
dans votre code écrire:
Code:
serels3d.addplanar(serefocc1, serefocc2, false, point de contrainte, point de contrainte)
dans la pratique, utilisez le même point (point de contrainte) pour l'orientation et je ne pense pas que cela puisse fonctionner.
les deux points doivent être liés aux deux faces qui lui donnent comme paramètre.

dans mon code en fait utiliser xyzpoints1 et xyzpoints2

vérification
 
Ok maintenant je le répare, mais il ne s'écrase pas sur addplanar mais sur createreference, donc je ne pense pas que ce soit pour ça.
 
Ok maintenant je le répare, mais il ne s'écrase pas sur addplanar mais sur createreference, donc je ne pense pas que ce soit pour ça.
Je crois que nous créons des relations apparemment valides qui créent des problèmes pour les prochaines.
Avez-vous vérifié les rapports créés dans quel état sont-ils ?

Bonjour.
 
Merci, J'ai fait ce que tu m'as dit, mais malheureusement je trouve toujours la même erreur.

Où la vois-je ? par espion je ne trouve pas la voix "référence".

Je suis désolé d'en profiter, mais puis-je essayer de passer les 3 composants que je monte ? Tu vois peut-être l'erreur où je me tape la tête depuis trois jours. .

le problème est lors de la création de la deuxième référence entre le troisième système de coordonnées de la pièce 2 (sc_join_upper) et la pièce 2.

Merci beaucoup, vous êtes très gentil.
 

Pièces jointes

Merci, J'ai fait ce que tu m'as dit, mais malheureusement je trouve toujours la même erreur.

Où la vois-je ? par espion je ne trouve pas la voix "référence".

Je suis désolé d'en profiter, mais puis-je essayer de passer les 3 composants que je monte ? Tu vois peut-être l'erreur où je me tape la tête depuis trois jours. .

le problème est lors de la création de la deuxième référence entre le troisième système de coordonnées de la pièce 2 (sc_join_upper) et la pièce 2.

Merci beaucoup, vous êtes très gentil.
J'ai l'intention de regarder les relations entre les pièces à l'intérieur du cadenas pas dans la programmation.
Cependant, les rapports les trouvent dans l'occurrencedocument.relations3d

demain Je le regarde maintenant je n'ai pas vb

Bonjour.

p.s.: quelle version du bord solide vous utilisez et avec quel mp? C'est peut-être un baiser qui a été résolu et vous avez juste besoin d'une mise à jour.
 
la version est la st5, je ne sais pas pourquoi ma est la version académique, mais je sais que c'est la 105.00.00.102

J'y ai pensé moi-même, je télécharge st6 et après j'ai essayé !
 

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