| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
| |
| Digitalisierung kostet Arbeitsplätze? WBE beweist das Gegenteil, ein Anwenderbericht
|
Autor
|
Thema: part Teil an Koordinaten setzen (1143 mal gelesen)
|
immelmann Mitglied
Beiträge: 6 Registriert: 30.08.2007
|
erstellt am: 31. Aug. 2007 09:59 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine Kugel als part-Datei bereits erstellt. Nun möchte ich sie an bestimmte x,y,z Koordinaten setzen bzw. ich habe eine Textdatei mit diesen Werten. Aus einem Beispiel konnte ich schon mit Code: Part.CoordinateSystems.Add(XCoord, YCoord, ZCoord, 0, 0, 0)
die Koordinatenanzeige positionieren. Wie bekomme ich nun die Kugeln dorthin? Am Besten mit ihrem Kugelmittelpunkt. Am Ende sollte eine Art "schwebende Perlenkette" zu sehen sein. Wenn ich mir dann daraus 2D-Ansichten generieren lasse, möchte ich Abstände zwischen den Kugeln messen können (ergo zwischen Kreismittelpunkten). Es kann auch ein anderes Element als die Kugel sein; dachte ursprünglich an ein Symbol, aber die gibt es nur in Draft.Danke für anregende Hinweise. Ich verwende SE V12. ------------------ Gruß Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kmw Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 4391 Registriert: 26.02.2002 Wer lesen kann, versteht was er liest, und danach handelt ist anderen gegenüber klar im Vorteil. Intel® Core i9-14900k, 64GB DDR5-RAM, nVidia GeForce RTX 4080, MS Windows 11, Solid Edge 2024 SP5, German. ECTR als PLM. M$ Surface Book, i7-6600@2.81 Ghz, 16Gb, 512 SSD, Win10 creators upd. Fairphone 4 5G mit Android 11 mit SE-Mobile Viewer ;)
|
erstellt am: 31. Aug. 2007 10:07 <-- editieren / zitieren --> Unities abgeben: Nur für immelmann
Mit der Funktion Kurve über Tabelle kannst du aus einer Tabelle eine Kurve im Part erstellen. (wer hätte das gedacht ?). Damit hast du deine 3d Geometriedaten in SE vorliegen. Du kannst dann im Assembly auf die Punkte Kugeln verbauen, zbsp. mit der Punktbeziehung, falls das noch notwändig ist und dann dein Part mit der Kurve ausblenden. Möglicherweise reicht die Kurve aber auch so schon. Ach V12.. hm. Kurve über Tabelle gibts da noch nicht. Upgrade doch auf V19. Weiß gar nicht warum so viele Leute mit total veralteten Versionen arbeiten müssen. [Diese Nachricht wurde von kmw am 31. Aug. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
immelmann Mitglied
Beiträge: 6 Registriert: 30.08.2007
|
erstellt am: 31. Aug. 2007 10:13 <-- editieren / zitieren --> Unities abgeben:
Danke für Dein schnelles Feedback. "Kurve über Tabelle" ist in Part zu finden? Ich vergaß noch zu erwähnen, dass das alles per VB geschehen soll :-) ------------------ Gruß Torsten [Diese Nachricht wurde von immelmann am 31. Aug. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
immelmann Mitglied
Beiträge: 6 Registriert: 30.08.2007
|
erstellt am: 31. Aug. 2007 10:23 <-- editieren / zitieren --> Unities abgeben:
|
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 31. Aug. 2007 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für immelmann
|
immelmann Mitglied
Beiträge: 6 Registriert: 30.08.2007
|
erstellt am: 31. Aug. 2007 15:42 <-- editieren / zitieren --> Unities abgeben:
@modeng danke für den Link, ist genau das, was mir vorschwebt. Allerdings braucht das Programm 30' für 1500 Punkte - zu lange, um meine Punkte > 20000 darzustellen. Dauert das deswegen solange, weil ich in Assambly die kugel.par jedesmal als Referenz lade? Ist es besser, programmgesteuert die Kugel über ein Profil und Rotationsausprägung zu generieren? (das braucht dann nur in Part zu passieren)
------------------ Gruß Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
Beiträge: 204 Registriert: 19.11.2004
|
erstellt am: 31. Aug. 2007 16:05 <-- editieren / zitieren --> Unities abgeben: Nur für immelmann
|
immelmann Mitglied
Beiträge: 6 Registriert: 30.08.2007
|
erstellt am: 31. Aug. 2007 16:28 <-- editieren / zitieren --> Unities abgeben:
@wksyspro das beschleunigt ja richtig gut! Beobachte jedoch, dass das Einlesen resp. Erstellen in Assembly nicht linear erfolgt, sondern "schwungweise", d.h. es tritt dann erstmal eine kurze Pause ein. Aktuell hat er in 5' 5000 Punkte eingelesen und es wird langsamer, d.h. in 2s ca. 10 Pkte. Ich poste mal die Schleife, vielleicht kann man da noch etwas optimieren Code: Set Assy = objSE.ActiveDocument Set UOM = Assy.UnitsOfMeasure anz = UBound(arrKoord) objSE.DelayCompute = True For i = 0 To anz XCoord = UOM.ParseUnit(igUnitDistance, arrKoord(i, 0)) YCoord = UOM.ParseUnit(igUnitDistance, arrKoord(i, 1)) ZCoord = UOM.ParseUnit(igUnitDistance, arrKoord(i, 2)) Call Assy.Occurrences.AddWithTransform(App.Path & "\kugel1.par", _ XCoord, YCoord, ZCoord, 0#, 0#, 0#) Assy.Occurrences.Item(Assy.Occurrences.Count).IncludeInBom = False Assy.Occurrences.Item(Assy.Occurrences.Count).IncludeInPhysicalProperties = False Next i
PS: habe bisher nur in SmartSketch programmiert ------------------ Gruß Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7467 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 31. Aug. 2007 18:52 <-- editieren / zitieren --> Unities abgeben: Nur für immelmann
Zitat: Original erstellt von immelmann: [...]PS: habe bisher nur in SmartSketch programmiert [/B]
Toll, mal jemand der SmartSketch benutzt. Schönes Programm. Schade, dass es nur so ein Nieschenprodukt geblieben ist. Welche Version hast Du denn zurzeit im Einsatz? ------------------ APeters@BSS-Online.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
Beiträge: 204 Registriert: 19.11.2004
|
erstellt am: 31. Aug. 2007 22:42 <-- editieren / zitieren --> Unities abgeben: Nur für immelmann
@immelmann, also ich schätze, dass das UOM.Parse jeweils für die x, y und z Werte recht viel Zeit schluckt. Besser wäre es sicherlich, wenn das Array die Koordinatenwerte in [m] bereits enthalten würde, so dass sie direkt ohne das UOM Objekt verwendbar sind. Sehr schlecht für die Performance ist es auch Objekte jeweils über Objekt.SubObjekt.SubSubObjekt anzusprechen. Besser ist es, ausserhalb der Schleife den Verweis auf das gewünschte Objekt direkt einer eigenen Objektvariablen zuzuweisen und diese Variable innerhalb der Schleife zu verwenden. Die Bestimmung des Index über die Count Eigenschaft ist sicher ein weiteres Bremselement. Ich würde die Zuweisung der beiden Eigenschaften in einer nachfolgenden ForEach-Schleife machen. ------------------ Viele Grüße, Wolfgang Kunert www.wksyspro.de [Diese Nachricht wurde von wksyspro am 31. Aug. 2007 editiert.] [Diese Nachricht wurde von wksyspro am 31. Aug. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
Beiträge: 204 Registriert: 19.11.2004
|
erstellt am: 03. Sep. 2007 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für immelmann
|
immelmann Mitglied
Beiträge: 6 Registriert: 30.08.2007
|
erstellt am: 03. Sep. 2007 13:35 <-- editieren / zitieren --> Unities abgeben:
@Arne Benutze die Version 4 mit SP5 @Wolfgang Danke für Deine Vorschläge. Hier nun das Feedback. Habe nach 1000 Punkten die Schleife abgebrochen und mir die Zeit ausgeben lassen. Obige Veriante: 23,6 s ohne UOM-Objekt: 22,8 s Zuweisung über Objektvariablen: 20,8 s beide .Count hinter For-Schleife: 15,8 s ScreenUpdating bringt in diesem Fall nichts, da ich das aus der VB-IDE starte und SE somit verdeckt ist. Fazit: für 1000 Werte ein Zeitgewinn von knapp 8s und bei linearer Betrachtung benötigen die 20000 Werte jetzt 5 min (vorher nur 5000 Werte in dieser Zeit). Außerdem braucht SE genau so lange zum Schließen der Datei, wie zum Erstellen. ?? Ich werde es nun auf einen anderen Weg versuchen, indem ich über .Profile mir die Kugel zur Laufzeit generiere und nicht über eine Datei heranreferenziere.
------------------ Gruß Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |