• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

API e Assemblaggio

Sbabba

Guest
Hallo, alle.

für die Dissertation arbeite ich an einer automatischen Montage einer Serie von Standardkomponenten in verschiedenen Konfigurationen.
Ich schrieb ein c#-Programm, das die Auswahl dieser Komponenten ermöglicht und zwei Cads, solide Arbeiten und solide Kante befiehlt, für die Montage der Modelle solcher Komponenten gemäß der gewählten Konfiguration.

in Bezug auf solide Werke hatte ich kein Problem. Ich habe zwei Stockwerke zwischen ihnen orthogonal und eine Achse am Ende jedes Stückes eingefügt, so dass sie durch zwei Befehle der Vergleichbarkeit und einer Koaxialität miteinander gekoppelt werden können; dieser Gegenvorgang ist iterata für jedes Paar von Komponenten, bis die endgültige Montage erstellt wird, da die Pläne und Achsen immer den gleichen Namen haben und sw wählt Pläne und Achsen mit einer Syntax des Typs "name_piano@nome_parte@nome_asse_

für die Präzision die verwendeten Steuerungen sind:

selectbyid2() zur Auswahl von Plänen und Achsen, mit denen die Kupplung durchgeführt werden soll;
addmate3() zur Zugabe von planarer und axialer Kupplung.

Jetzt versuche ich dasselbe mit festem Rand zu tun, aber ich habe Schwierigkeiten.

Zuerst fand ich die Axialrelation3d() und planarrelation3d() Befehle, um die Paarungen durchzuführen, aber ich habe viel Zweifel darüber, wie es tun kann. der sdk von st4 sagt (qui) dass es möglich ist, die Befehlsplanarrelation3d() zu verwenden, um parallel zwei Flächen zweier unterschiedlicher Teile zu bilden: anstelle von zwei Flächen wäre es möglich, zwei von mir geschaffene, sehr genau benannte Stockwerke zu verwenden, um denselben iterativen Befehl für die verschiedenen Komponenten anzuwenden?

Was die Koaxialität betrifft, so scheint es mir, dass es nicht möglich ist, weil der Achsrelation3d()-Befehl zwei Achsen von zwei zylindrischen Teilen macht, aber in meinem Fall habe ich nicht nur zylindrische Teile; darüber hinaus, wenn es nicht erlaubt, im Gegensatz zu sw, Achsen zum Vergnügen einzusetzen. Ich konnte das Problem mit einer dritten Etage und einer dritten Verschwörung leicht lösen, aber ich wollte mir das sicher stellen.

Leider online gibt es sehr wenig Informationen über die Verwendung von massiven Rand Bienen mit Montage, und die sdk von wenn ist extrem knapp, wenn im Vergleich zu der von sw, dann brancolo ein wenig im Dunkeln.

Ich danke allen, die mir sogar die kleinste Hilfe geben können!! und am Ende
 
Hallo, alle.

für die Dissertation arbeite ich an einer automatischen Montage einer Serie von Standardkomponenten in verschiedenen Konfigurationen.
Ich schrieb ein c#-Programm, das die Auswahl dieser Komponenten ermöglicht und zwei Cads, solide Arbeiten und solide Kante befiehlt, für die Montage der Modelle solcher Komponenten gemäß der gewählten Konfiguration.

in Bezug auf solide Werke hatte ich kein Problem. Ich habe zwei Stockwerke zwischen ihnen orthogonal und eine Achse am Ende jedes Stückes eingefügt, so dass sie durch zwei Befehle der Vergleichbarkeit und einer Koaxialität miteinander gekoppelt werden können; dieser Gegenvorgang ist iterata für jedes Paar von Komponenten, bis die endgültige Montage erstellt wird, da die Pläne und Achsen immer den gleichen Namen haben und sw wählt Pläne und Achsen mit einer Syntax des Typs "name_piano@nome_parte@nome_asse_

für die Präzision die verwendeten Steuerungen sind:

selectbyid2() zur Auswahl von Plänen und Achsen, mit denen die Kupplung durchgeführt werden soll;
addmate3() zur Zugabe von planarer und axialer Kupplung.

Jetzt versuche ich dasselbe mit festem Rand zu tun, aber ich habe Schwierigkeiten.

Zuerst fand ich die Axialrelation3d() und planarrelation3d() Befehle, um die Paarungen durchzuführen, aber ich habe viel Zweifel darüber, wie es tun kann. der sdk von st4 sagt (qui) dass es möglich ist, die Befehlsplanarrelation3d() zu verwenden, um parallel zwei Flächen zweier unterschiedlicher Teile zu bilden: anstelle von zwei Flächen wäre es möglich, zwei von mir geschaffene, sehr genau benannte Stockwerke zu verwenden, um denselben iterativen Befehl für die verschiedenen Komponenten anzuwenden?

Was die Koaxialität betrifft, so scheint es mir, dass es nicht möglich ist, weil der Achsrelation3d()-Befehl zwei Achsen von zwei zylindrischen Teilen macht, aber in meinem Fall habe ich nicht nur zylindrische Teile; darüber hinaus, wenn es nicht erlaubt, im Gegensatz zu sw, Achsen zum Vergnügen einzusetzen. Ich konnte das Problem mit einer dritten Etage und einer dritten Verschwörung leicht lösen, aber ich wollte mir das sicher stellen.

Leider online gibt es sehr wenig Informationen über die Verwendung von massiven Rand Bienen mit Montage, und die sdk von wenn ist extrem knapp, wenn im Vergleich zu der von sw, dann brancolo ein wenig im Dunkeln.

Ich danke allen, die mir sogar die kleinste Hilfe geben können!! und am Ende
Achsen in fester Kante können erstellt werden, der Befehl ist versteckt und herauszuziehen. Ich empfehle Ihnen, die Koordinatensysteme zu verwenden, die gleichzeitig beide Achsen und Pläne enthalten.

dann können Sie die Beziehung eingeben, die zwei Koordinatensysteme zusammenfällt, und mit einer Beziehung Position das Teil.

Sie können immer noch dem Weg folgen, den Sie nehmen, statt der Gesichter müssen Sie ihnen Pläne geben.

Suche nach den Befehlen "addplanar" und "addaxial", die Dokumentation für die solide Kantenprogrammierung ist sehr gut geschrieben Ich bezweifle, dass Sie an der falschen Stelle suchen.

Hi.
 
der Rat der Verwendung des Koordinatensystems scheint mir sehr gut. Alternativ würde ich für die Achse eine Skizze mit einer Linie vorschlagen.
Um einen Artikel auszuwählen, ist die einfachste Methode (nach meinen Fähigkeiten) den Index zu verwenden, obwohl für ein Objekt auch der Name funktioniert:
Auswahl nach Name: Familie("Name")
Auswahl der ersten: Familie(0)
Auswahl der letzten: family(subjects.count()- 1 )

die Referenzpläne, die ich denke, sind immer die ersten, Sie können feststellen, ob die erste oder letzte Skizze Ihre Achsen enthält.
für die Programmierung mit fester Kante schlage ich die folgenden Links vor, wenn Sie sie bereits nicht kennen:
sespy: http://solidedgespy.codeplex.com/Diethylamin http://www.jasonnewell.net/
 
Danke für die Antworten!

Tut mir leid, dass ich zu spät bin, ich hatte die letzte Prüfung vor dem Abschluss und er hat mich viel genommen! Jetzt kann ich mich voll auf die These konzentrieren:)

Die Idee des Koordinatensystems scheint großartig! Ich versuche es zu benutzen, aber ich treffe Schwierigkeiten.

Ich nahm als Basis Das ist, was führen, dann die Befehle für c# neu schreiben.

Jetzt habe ich zwei Montagedateien geöffnet, die ich den Koordinatensystemen anpassen muss, sie sind "seassy1" und "seassy2", und ich habe das Koordinatensystem mit diesen Befehlen erworben:
Code:
seassy1cos = seassy1.coordinatesystems.item(2);
seassy2cos = seassy2.coordinatesystems.item(2);
item(2) weil der erste der Standard ist, der zweite ist, was ich erstellt habe.

die Anleitung sagt dann, den Befehl "getorientation()" zu verwenden, um die "Details des Koordinatensystems" zu erhalten.
Code:
seassy1cos.getorientation(axo, ayo, azo, axr, ayr, azr);
Aber hier finde ich einen Fehler. visuelle Studie weist darauf hin, dass zwei Parameter am Befehl fehlen, was "relativ-parent" und "zfirstrotation" sein würde ( http://dl2.plm.automation.siemens.c...edgepart~coordinatesystem~getorientation.html )
Ich verstehe nicht genau, welche Parameter es ist, in dem Sinne, dass visuelle Studie in der Hilfe von Compilation sagt mir dies
err.jpgUnd ich weiß nicht, was "Typ.missing" ist. Außerdem nach der Befehlsseite erhalten Orientierung auf der Siemens-Seite, jeder Parameter sollte optional sein, und für diese die Anleitung, denke ich, Sie bringen sie nicht alle, aber es scheint, dass sie überhaupt nicht optional in der Realität sind:d

Ich versuchte zu fliegen und weiter zu gehen, um etwas zu schließen, so folgte ich noch dem Leitfaden, dass an diesem Punkt die Pläne, die das Koordinatensystem definieren, extrahieren möchte. es tut dies mit dem Befehl "coordinatesystem.plane()", die die Konstante angeben will, die den Plan angibt, den Sie extrahieren möchten, dass ich gefunden habe Hier.

Code:
assyxyplane = seassy1cos.plane(secoordsysxyplane);
das Problem ist, dass visuelle Studie noch nicht glücklich ist, und sagt mir "Indexed property solideedgepart.coordinatesystem.plane hat nicht-optional Argument, die bereitgestellt werden muss". Ich verstehe nicht. der Parameter zu liefern ist nur eins, die Konstante, die den Plan angibt, und auch in der Auto-Compilation vs me fragt nur einen... was meinen Sie mit "nicht-optional Parameter", die ich ihm nicht geben würde?

jedes Mal, wenn ich einen Schritt nach vorne mache, nehme ich zwei zurück... Es ist absurd, weil ich sicher bin, dass es eine sehr einfache Sache ist, aber im Moment scheint es unmöglich!

Ich danke Ihnen im Voraus für jede Hilfe, die Sie mir geben können. Dank auch für die Beratung von soliden Rand Spion, wirklich nützlich!
 
in der soliden Kante führen die Parameter der Getorientation angeben sie alle als "variant", so würde ich mir nicht zu viel Sorgen machen und zwei Variablen dieser Art einfügen.

Ich habe gerade in vb6 und die folgenden Code-Werke versucht, leider programmiere ich nicht in c, so kann ich Ihnen nicht helfen, wenn ich Ihnen nicht rate, im Forum zu fragen, wo Sie den Code gefunden haben, über den Sie sprechen.
Code:
 dim objapp als solidedgeframework.application
dim objasm als solidedgeassembly.assemblydocument

dim Klavier als Solidedgeometrie. Gesicht

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

set piano = objasm.coordinatesystems(2).plane(secoordsysxyplane)
 
Danke für die schnelle Antwort, jetzt versuche ich es! die Tatsache, dass es in vb ist kein Problem, so viel c# ist sehr ähnlich!

Allerdings entdeckte ich den Grund für den ersten Fehler, den auf der getorientation(). Ich möchte einige Parameter wie "Objekt" und sie müssen festgelegt werden, so die richtige Syntax ist "getorientation(out axo, out ayo, out azo, out axr, out ayr, out azr);" mit axo...azr erklärte Objekt, und nicht doppelt, wie dieser Führer tat (was daher ich frage mich, wie es funktionieren könnte:d).

Danke noch mal:)
 
Also habe ich es geschafft! Kurz gesagt, fast:d

dann nach ein wenig Peripecies schrieb ich diesen Code, der die Koordinatensysteme von zwei Stücken perfekt ausrichten kann, aber nur die! Ich werde es erklären.

Ich fange an, eine variable Anzahl von Komponenten (mindestens 5, max 8) in eine Baugruppe einzufügen, die ich im Moment erstelle. Diese Komponenten sind alle Montage außer einem .par. Die Montagefunktion ist einzigartig und wird mehrmals in einem Zyklus aufgerufen, um alle notwendigen Komponenten zu kombinieren. Ich kenne die Reihenfolge der Einfügung der Bauteile der Baugruppe, die gleich ist, in der sie bestellt werden, so daß in den Funktionsschritt eine Variable "c", die die Position in der Reihenfolge angibt, so daß der Code von Zeit zu Zeit die c-te Komponente mit dem c-ten + 1 übergeht.
Code:
//mi verbinden mit der für die Anzeige der Baugruppe erstellten Baugruppe
seassy = anwendung.activedocument;

// die Ocurrenz gegenüber den beiden Komponenten erhöhen
seocc1 = seassy.occurrences.item(c);
seocc2 = seassy.occurrences.item(c+1);

// Ich nehme das für jede Komponente erstellte Koordinatensystem von mir. nur für die erste Montage Nummer (2)
(c ==) 1)
(')
seocc1cos = seocc1.occurrencedocument.coordinatesystems.item(2);
?
♪
(')
seocc1cos = seocc1.occurrencedocument.coordinatesystems.item(3);
?

seocc2cos = seocc2.occurrencedocument.coordinatesystems.item(2);


//Ich kaufe Details des Koordinatensystems von mir erstellt
seocc1cos.getorientation(out a1xo, out a1yo, out a1zo, out a1xr, out a1yr, out a1zr);
seocc2cos.getorientation(out a2xo, out a2yo, out a2zo, out a2xr, out a2yr, out a2zr);


// Ich kaufe die Pläne, die das von mir erstellte Koordinatensystem bilden
occ1xyplane = seocc1cos.plane[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysXYPlane];
occ1yzplane = seocc1cos.plane[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysYZPlane];
occ1zxplane = seocc1cos.plane[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysZXPlane];

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


//cancello la relazione Ground dei due partizipation
seocc1.relations3d.item(1).delete();
seocc2.relations3d.item(1).delete();

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


//creo un reference fra il pezzo e il piano ed aggiunge la relazione planare
serefocc1 = seassy.createreference(seocc1, occ1xyplan);
serefocc2 = seassy.createreference(seocc2, occ2xyplan);
serels3d.addplanar(serefocc1, serefocc2, false, constrainingpoint, constrainingpoint);

serefocc1 = seassy.createreference(seocc1, occ1yzplane);
serefocc2 = seassy.createreference(seocc2, occ2yzplane);
serels3d.addplanar(serefocc1, serefocc2, false, constrainingpoint, constrainingpoint);

serefocc1 = seassy.createreference(seocc1, occ1zxplan);
serefocc2 = seassy.createreference(seocc2, occ2zxplan)
serels3d.addplanar(serefocc1, serefocc2, false, constrainingpoint, constrainingpoint);
Hinweis: Wenn ich das Koordinatensystem erwirbe, lege ich ein, wenn {}, weil alle Komponenten vertikal übereinander zusammenbauen, also von Zeit zu Zeit nehme ich das Koordinatensystem der einen unten und schließe es mit dem Stück oben. die erste Komponente hat jedoch nur ein von mir erstelltes Koordinatensystem, da immer die erste nicht die Notwendigkeit hat, mit 2 Komponenten verbunden zu werden, sondern nur mit einem, der darauf steht. Darum mache ich es.


jetzt funktioniert der Code, weil die ersten beiden Komponenten perfekt zusammengesetzt werden, das Problem entsteht im zweiten Zyklus. es tut immer noch das Anfangsteil ohne Probleme, aber es gibt Fehler, wenn es die Zeit erreicht, um die Referenz zu erstellen und dann die Kupplung zu machen. insbesondere geht es falsch an:
Code:
serefocc1 = seassy.createreference(seocc1, occ1xyplan);
Ich dachte, vielleicht war es, weil "serefocc1" nicht auf "null" initialisiert wurde, sondern auch auf diese Weise macht es einen Fehler. Ich dachte, vielleicht sollte es in der Lage sein, die alten Referenzen zu halten, so habe ich versucht, die zweite Versammlung mit einer anderen Variable zu machen, wie "serefocc3", aber es macht auch einen Fehler so.

klar zur zweiten Baugruppe "seocc1" ist eine andere Komponente von vorn, insbesondere ist es die zweite, die ich zuvor (was zuvor "seocc2") zusammengebaut habe, und okcc1xyplane ist der xy-Plan aus seinem Koordinatensystem.


Ich verstehe nicht, was das Problem ist, und es ist definitiv solide Kante. Ich vermisse offensichtlich etwas darüber, wie die Ereignisse, die Referenz und die Creatireference(), aber ich verstehe nicht, was es sein könnte.

Hat jemand eine Ahnung, was das Problem sein könnte? Ich würde das praktisch beenden!

Ich danke Ihnen nochmals für die Aufmerksamkeit, Sie sind sehr freundlich:
 
Was für ein Fehler kommt aus dir?

aus einem schnellen Lesen Ihres Codes ist die erste Komponente nicht an irgendetwas gebunden und daher in der Lage, sich zu bewegen.
Es wäre gut, ihm die Landbeziehung zu verlassen. Dies gilt in allen Situationen, die Hauptkomponente muss an den Boden gebunden werden.

Hi.
 
Danke für die Antwort.

Dann erkannte ich einen Fehler, in dem Sinne, dass, da all dieser Code mehrmals aufgerufen wird, ist, als ob er in einem Zyklus war, so zu jeder Zeit versuchte ich, die Beziehungen der beiden Stücke zu beseitigen, die zu dieser Zeit zusammenbauten, aber klar einer der beiden war bereits zusammengesetzt, und daher der Bodenbericht bereits zuvor entfernt worden.

Ich änderte den Code, um die Einschränkungen auf alle Stücke zu entfernen, außer das erste Mal, wenn die Funktion aufgerufen wird.
Ich habe auch alle Variablen "null" initialisiert, um mögliche Restinformationen zu eliminieren.

Nun baut das Programm nach der Initialisierung auf Null noch das erste und zweite Stück zusammen, wenn sich die Funktion für die Montage des zweiten mit dem dritten wiederholt, sperrt es auf der zweiten "Kreatereference", die mit dem yz-Plan. Der Fehler ist das
err.jpgEs ist so generisch, dass ich nicht herausfinden kann, wo Sie falsch sind, also sagte ich, dass ich sicher bin, dass ich etwas in der Methode der Schöpfungsreferenz (), das Problem ist, dass ich nicht verstehe, was... außer der ersten Schöpfungsreferenz() mit dem xy-Plan tut.

Vielleicht versuche ich, diese Komponente zu blasen und auf die nächste zu gehen, vielleicht ist es ein Modellproblem.

Danke und hallo!
 
Bearbeitung: Ich versuchte, die beiden Stücke mit den beiden Koordinatensystemen zu handmontieren, und ich habe kein Problem damit, so dass die Stücke nicht denken, dass sie Probleme haben. zunehmend unverständlich :d


Dies ist der aktuelle Code, verglichen mit, bevor ich nur die Beseitigung der Erdbindung auf den Komponenten modifiziert.

Code:
//mi verbinden mit der Montage, die für die Darstellung der Prothese erstellt wurde
seassy = anwendung.activedocument;

//Erhöhen Sie die Ocurrenz gegenüber den beiden Komponenten. c zunächst Wert 1 und wird auf jeden Aufruf dieser Funktion erhöht
seocc1 = seassy.occurrences.item(c);
seocc2 = seassy.occurrences.item(c+1);

// Ich nehme das für jede Komponente erstellte Koordinatensystem von mir. nur für die erste Montage Nummer (2)
(c ==) 1)
(')
// die Bodenbeziehung aller Komponenten außer der ersten, die fixiert bleiben muss
int countocc = seassy.occurrences.count;
int a = 2;

während (a <= Countocc)
(')
seessy.occurrences.item(a).relations3d.item(1). delete();
a++;
?
seocc1cos = seocc1.occurrencedocument.coordinatesystems.item(2);
?
♪
(')
seocc1cos = seocc1.occurrencedocument.coordinatesystems.item(3);
?

seocc2cos = seocc2.occurrencedocument.coordinatesystems.item(2);

//Ich kaufe Details des Koordinatensystems von mir erstellt
seocc1cos.getorientation(out a1xo, out a1yo, out a1zo, out a1xr, out a1yr, out a1zr);
seocc2cos.getorientation(out a2xo, out a2yo, out a2zo, out a2xr, out a2yr, out a2zr);

// Ich kaufe die Pläne, die das von mir erstellte Koordinatensystem bilden
occ1xyplane = seocc1cos.plane[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysXYPlane];
occ1yzplane = seocc1cos.plane[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysYZPlane];
occ1zxplane = seocc1cos.plane[SolidEdgePart.CoordinateSystemFeatureConstants.seCoordSysZXPlane];

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


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

//creo un reference fra il pezzo e il piano ed aggiunge la relazione planare
serefocc1 = seassy.createreference(seocc1, occ1xyplan);
serefocc2 = seassy.createreference(seocc2, occ2xyplan);
serels3d.addplanar(serefocc1, serefocc2, false, constrainingpoint, constrainingpoint);

serefocc1 = seassy.createreference(seocc1, occ1yzplane);
serefocc2 = seassy.createreference(seocc2, occ2yzplane);
serels3d.addplanar(serefocc1, serefocc2, false, constrainingpoint, constrainingpoint);

serefocc1 = seassy.createreference(seocc1, occ1zxplan);
serefocc2 = seassy.createreference(seocc2, occ2zxplan)
serels3d.addplanar(serefocc1, serefocc2, false, constrainingpoint, constrainingpoint);
 
Ich versuchte auch, die Stücke zu ändern, immer auf der Schaffung von Referenz zwischen dem Stück und seinem yz-Plan, unabhängig vom Koordinatensystem oder dem Stück, das ich nehme.

wenn es für die erste der Stücke es funktioniert, mit jedem anderen Crash, aber mit dem xy-Plan gibt es keine Probleme und die Koordinatensysteme wurden in der gleichen Weise gebaut. Ich verstehe nicht. .
 
in vb6 so würde ich es tun, und es funktioniert.

Hi.
Code:
private Sub-Asembla()

dim objapp als solidedgeframework.application
dim objasm als solidedgeassembly.assemblydocument

dim objocc1 als solidedgeassembly.occurrence
dim objocc2 als solidedgeassembly.occurrence

dim objocc1cs als solidedgepart.coordinatesystem
dim objocc2cs als solidedgepart.coordinatesystem

dim objocc1xyplane als Solidedgeometry. Gesicht
dim objocc1yzplane als solidedgeometry. Gesicht
dim objocc1zxplane als solidedgeometry. Gesicht
dim objocc2xyplane als solidedgeometry. Gesicht
dim objocc2yzplane als solidedgeometry. Gesicht
dim objocc2zxplane als Solidedgeometry. Gesicht

dim xyzpoints1(1 bis 6) als Doppel
dim xyzpoints2(1 bis 6) als Doppel

dim objocc1ref als solidedgeframework.reference
dim objocc2ref als solidedgeframework.reference

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

für jedes Ereignis in objasm.occurrences

wenn Vorkommen.index <> objasm.occurrences.count dann

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

für i = objocc2.relations3d.count zu 1 Schritt -1
objocc2.relations3d(i). Löschen
Ich bin der

objocc1cs = objocc1.occurrencedocument.coordinatesystems(2)
objocc2cs = objocc2.occurrencedocument.coordinatesystems(3)

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

set objocc1xyplane = objocc1cs.plane(secoordsysxyplane)
set objocc1yzplane = objocc1cs.plane(secoordsysyzplane)
set objocc1zxplane = objocc1cs.plane(secoordsyszxplane)

set objocc2xyplane = objocc2cs.plane(secoordsysxyplane)
set objocc2yzplane = objocc2cs.plane(secoordsysyzplane)
set objocc2zxplane = objocc2cs.plane(secoordsyszxplane)

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

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

set objocc1ref = objasm.createreference(objocc1, objocc1yzplane)
set objocc2ref = objasm.createreference(objocc2, objocc2yzplane)

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

set objocc1ref = objasm.createreference(objocc1, objocc1zxplane)
set objocc2ref = objasm.createreference(objocc2, objocc2zxplane)

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

Ende

nächstes Ereignis

Endteil
 
Tschüss!

Ihr Code ist praktisch wie mein, in der Tat auch meine Arbeiten mit der ersten Versammlung.

auf der zweiten Baugruppe führt das Addplanar auf den ersten Etagen (je nachdem, ob es ist: xy, yz, zx), dann, wenn ich wieder Referenz erstellen, um zum zweiten Mal zu rufen, stürzt der Addplanar immer auf die Erstellung von Referenz. und Absturz, unabhängig davon, welche Etage Sie verwenden!

d.h. wenn ich zuerst die xy und dann die yz mache:
Code:
 set objocc1ref = objasm.createreference(objocc1, objocc1xyplane)
set objocc2ref = objasm.createreference(objocc2, objocc2xyplane)

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

set objocc1ref = objasm.createreference(objocc1, objocc1yzplane)
set objocc2ref = objasm.createreference(objocc2, objocc2yzplane)

rufen objasm.relations3d.addplanar(objocc1ref, objocc2ref, false, false, xyzpoints1, xyzpoints2)
fa l'xy ma crasha sull'yz, cioè seu "set objocc1ref = objasm.createreference(objocc1, objocc1yzplane)"

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

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

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

rufen objasm.relations3d.addplanar(objocc1ref, objocc2ref, false, false, xyzpoints1, xyzpoints2)
macht die yz aber stürzt auf die xy, "set objocc1ref = objasm.createreference(objocc1, objocc1xyplane)"

praktisch immer stürzt auf die zweite Referenz, während die erste immer schafft, es zu schaffen, unabhängig davon, welche Pläne ich benutze! Ich habe mit zx versucht, dieselbe Rede.

Ich verstehe nicht, wie es ist. Warum überhaupt?
 
in Ihrem Code schreiben:
Code:
serels3d.addplanar(serefocc1, serefocc2, false, constrainingpoint, constrainingpoint)
in der Praxis den gleichen Punkt (constrainingpoint) zur Orientierung verwenden, und ich glaube nicht, dass es funktionieren kann.
die beiden Punkte müssen mit den beiden Gesichtern zusammenhängen, die es als Parameter geben.

in meinem Code in der Tat verwenden xyzpoints1 und xyzpoints2

Überprüfung
 
Okay, jetzt behebe ich es, aber er stürzt nicht auf Addplanar, sondern auf der ErstellungReferenz, also denke ich nicht, dass das ist der Grund.
 
Okay, jetzt behebe ich es, aber er stürzt nicht auf Addplanar, sondern auf der ErstellungReferenz, also denke ich nicht, dass das ist der Grund.
Ich glaube, wir schaffen scheinbar gültige Beziehungen, die Probleme für die nächsten schaffen.
haben Sie die Berichte überprüft, die in welchem Zustand erstellt wurden?

Hi.
 
Danke. Ich tat, wie Sie mir gesagt haben, aber leider finde ich immer denselben Fehler.

Wo sehe ich sie? von spy Ich kann die Stimme "Referenz" nicht finden.

Tut mir leid, dass ich es ausnutze, aber kann ich versuchen, die 3 Komponenten zu übergeben, die ich montieren? Vielleicht sehen Sie den Fehler, wo ich drei Tage lang meinen Kopf gevögelt habe. .

das Problem besteht bei der Erstellung der zweiten Referenz zwischen dem dritten Koordinatensystem des Stücks 2 (sc_join_upper) und dem Stück 2.

Vielen Dank, Sie sind sehr freundlich.
 

Anhänge

Danke. Ich tat, wie Sie mir gesagt haben, aber leider finde ich immer denselben Fehler.

Wo sehe ich sie? von spy Ich kann die Stimme "Referenz" nicht finden.

Tut mir leid, dass ich es ausnutze, aber kann ich versuchen, die 3 Komponenten zu übergeben, die ich montieren? Vielleicht sehen Sie den Fehler, wo ich drei Tage lang meinen Kopf gevögelt habe. .

das Problem besteht bei der Erstellung der zweiten Referenz zwischen dem dritten Koordinatensystem des Stücks 2 (sc_join_upper) und dem Stück 2.

Vielen Dank, Sie sind sehr freundlich.
Ich beabsichtige, die Beziehungen zwischen den Stücken innerhalb des Cads nicht in der Programmierung zu betrachten.
Die Berichte finden sie jedoch in der Vorkommensdokumentation.relations3d

Morgen Ich sehe es jetzt an.

Hi.

p.s.: Welche Version von solid edge Sie verwenden und mit welcher mp? Vielleicht ist es ein Kuss, der dann gelöst wurde und Sie brauchen nur ein Update.
 
die Version ist der st5, ich weiß nicht, warum meine akademische Version ist, aber ich weiß, es ist die 105.00.00.102

Ich habe selbst darüber nachgedacht, ich lade st6 herunter und nachdem ich es versuche!
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben