Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  RayIntersection-Methode

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Leistungsstarke Strömungssimulation in der Cloud
Autor Thema:  RayIntersection-Methode (1945 mal gelesen)
Denver
Mitglied
Student

Sehen Sie sich das Profil von Denver an!   Senden Sie eine Private Message an Denver  Schreiben Sie einen Gästebucheintrag für Denver

Beiträge: 8
Registriert: 11.11.2009

erstellt am: 23. Mrz. 2010 18:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

zuerst wollte ich mich für die hilfreichen Antworten bei den letzten Male bedanken.

Ich hab wirklich versucht, mir selber die RayIntersection-Methode zu erklären, bevor ich mich wieder an euch wende. Aber ich versteh sie nicht ganz und hoffe, ihr könnt mir wieder helfen.

Ziel: Schnittpunkt(e) zw. einem Körper und einem Strahl mit Hilfe eines Makros bestimmen
Arbeitsmittel: Solidworks 2009 SP 3 und Visual Basic
Methode:
result = swModel.RayIntersections((vBody), (vSelPt), (vSelVector), options, nHitRad, nOffset)

vBody ist ein beliebig ausgewählte Körper
vSelPt ist ein Array von Eingabedaten(vSelPt = Array(x1, y1, z1))
vSelVector auch ( = Array(x2, y2, z2))
options wähle ich unter den Folgenden aus:
swRayPtsOptsNORMALS
swRayPtsOptsTOPOLS
swRayPtsOptsENTRY_EXIT
swRayPtsOptsUNBLOCK
Const nHitRad As Double = 0.001
Const nOffset As Double = 0.001

Zur Situation: Ich erstelle einen Körper, der wie ein flacher Zylinder (bzw. eine Münze) aussieht(, ist ja eigentlich auch egal).
Dann starte ich mein Makro, wo ich die Eingabedaten übergebe(also Punkt und Vektor), in der auch die oben genannte Funktion ausgeführt wird.
Über "vIntPt = swModel.GetRayIntersectionsPoints" und "Debug.Print vIntPt(..." lasse ich mir die Informationen ausgeben, und erstelle die Punkte, die "berechnet" wurden.

Nun das Problem:
Ich wähle meine Werte so, dass der Strahl eigentlich diagonal durch die "Münze" verläuft. Das heisst, eigentlich müssten die Punkte an den flachen Seiten sein. Aber die berechneten Punkte sind an den Kanten.
Und dabei habe ich alle Optionen ausprobiert.

Könnt ihr mir erklären, wo mein Fehler liegt? Oder habt ihr ein Beispiel, woran ich die Methode verstehen kann?

Vielen Dank,
Denver

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 24. Mrz. 2010 08:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Denver 10 Unities + Antwort hilfreich

Hallo Denver,

hört sich eigentlich für mich so aus dem Trockenen ganz gut an, wie du es gemacht hast; und auch mal eine sehr ausführliche und informative Aufgabenbeschreibung, das gibt schon mal 10 Punkte 

Ich hab selbst damit noch nie gearbeitet und auch kein Beispiel zur Hand, vielleicht können wir das Spielchen anders herum machen und du hängst mal dein Beispiel mit Makro an , damit wir auch was zum probieren haben, vielleicht fällt uns etwas auf, woran es liegen könnte.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de
Stefans SolidWorks Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

jens_oliver
Mitglied
Softwareentwickler


Sehen Sie sich das Profil von jens_oliver an!   Senden Sie eine Private Message an jens_oliver  Schreiben Sie einen Gästebucheintrag für jens_oliver

Beiträge: 114
Registriert: 28.06.2005

erstellt am: 24. Mrz. 2010 10:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Denver 10 Unities + Antwort hilfreich

hi,

ich würde zuerst mal nachschauen was der strahl den getroffen hat
(intersectionType). also, ob er wirklich eine fläche getroffen hat.
dann mal überprüfen ob der gezeichnete punkt auch die richtigen werte hat, nicht das durch eine fangfunktion der punkt verschoben wurde (SketchManager::AddToDB).

gruß oliver

------------------
Software nach Maß für Ihr CAD-System
www.ib-knepper.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GDawg
Ehrenmitglied V.I.P. h.c.
Teamleiter FEM Simulation



Sehen Sie sich das Profil von GDawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

SolidWorks_2o2o SP3.o
Win10_x64, Quadro_P2ooo.
VisualStudio_2o19_Pro.
FEM: Forge_NxT_HPC, ANSYS_WB.
3D-Printer: Ultimaker_2, Tinker_Gnome.

erstellt am: 24. Mrz. 2010 10:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Denver 10 Unities + Antwort hilfreich

Vielleicht kann Dir das da etwas weiterhelfen:
http://groups.google.am/group/SolidWorks-API/browse_thread/thread/304952fe886bf154

Da hatte jemand auch ein Problem mit RayIntersection.
Eine Lösung war, dass vBody ein Array sein muss, nicht einfach nur ein Körper.
Ein weiterer Vorschlag: den Radius auf 1 setzen.

------------------
 
http://www.worldcommunitygrid.org

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Denver
Mitglied
Student

Sehen Sie sich das Profil von Denver an!   Senden Sie eine Private Message an Denver  Schreiben Sie einen Gästebucheintrag für Denver

Beiträge: 8
Registriert: 11.11.2009

erstellt am: 24. Mrz. 2010 12:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,
dann "beantworte" ich mal die Antworten in umgekehrter Reihenfolge:

@GDawg: Die Funktion, die dort benutzt wurde, ist auch IRayIntersection. Dort werden auch zwei weitere Eingabedaten verlangt wie Anzahl der Bodies und (ich glaube) die Anzahl der Strahlen. Diese Funktion benutze ich aber nicht. Ist ja auch unnötig bei einem Body.
Radius auf 1 hab ich auch schon mal ausprobiert, kein Unterschied.

@Jens: Ich komme schon an die Information vom intersection-Type ran, aber ich verstehe nicht, was die Zahl für eine Bedeutung hat. Wo kann ich denn nachschauen, mit welcher Zahl was in Verbindung steht? Beispielsweise : 17, 20 oder 33.
Was den Sketchmanager betrifft, so habe ich keine ausdrücklichen Sondereinstellungen gemacht. Oder musst man es ausdrücklich vorher setzen?
Achso, nee, der Punkt hat die "richtigen" Werte. Zumindest die Werte, die bei GetRayIntersectionsPoints entstehen. Es sind also keine Beziehungen zwischen Punkt und Körper verknüpft.

@Stefan: Ich werd mal heute abend mein Makro hochladen, sobald ich wieder an meinem Solidworksrechner sitze. Dann haben wir alle was zum Spielen.

So nebenbei gefragt, wie lernt ihr eigentlich die API/Makroprogrammierung? Durch trial and error? Zumindest werden ja in Solidworks nicht alle Methoden genau erklärt. Und in der Bibliothek der Uni gibt es keine API-Bücher zu Solidworks. Ich möchte mir jetzt auch kein falsches Buch unnötig (online) kaufen, nur weil dort API drauf steht.

Viele Grüsse,
Denver

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Denver
Mitglied
Student

Sehen Sie sich das Profil von Denver an!   Senden Sie eine Private Message an Denver  Schreiben Sie einen Gästebucheintrag für Denver

Beiträge: 8
Registriert: 11.11.2009

erstellt am: 24. Mrz. 2010 18:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


RayPoints.zip

 
Hallo,

hier ist mein Makro. Vorbedingungen sind ein Körper und eine ausgewählte Fläche darauf, damit mein Makro erkennt, welchen Body er auswählen soll.
In dem Makro sind bereits Werte vorinitialisiert, mit einem Punkt bei (3,3,3) und dem Vektor in Richtung Ursprung.
Aber ich schätze die Fragen kommen erst, wenn ihr es ausprobiert habt.

Viele Grüsse,
Denver

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

GDawg
Ehrenmitglied V.I.P. h.c.
Teamleiter FEM Simulation



Sehen Sie sich das Profil von GDawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

SolidWorks_2o2o SP3.o
Win10_x64, Quadro_P2ooo.
VisualStudio_2o19_Pro.
FEM: Forge_NxT_HPC, ANSYS_WB.
3D-Printer: Ultimaker_2, Tinker_Gnome.

erstellt am: 25. Mrz. 2010 07:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Denver 10 Unities + Antwort hilfreich

Eine Frage habe ich bereits:
Soll das Makro im Teil oder in der Baugruppe ausgeführt werden können?

------------------
 
http://www.worldcommunitygrid.org

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

jens_oliver
Mitglied
Softwareentwickler


Sehen Sie sich das Profil von jens_oliver an!   Senden Sie eine Private Message an jens_oliver  Schreiben Sie einen Gästebucheintrag für jens_oliver

Beiträge: 114
Registriert: 28.06.2005

erstellt am: 25. Mrz. 2010 09:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Denver 10 Unities + Antwort hilfreich

moin moin,

bei mir funktioniert das makro.
es fehlt also noch dein Bauteil, um den fehler zu reproduzieren.

ich würde aber immer SketchManager::AddToDB auf true setzten!!

SketchManager::AddToDB
One of the benefits of adding sketch entities directly to the database is that you can avoid grid and entity snapping. For example, if you create a sketch line whose endpoint is near another entity or near a grid point, the new line endpoint snaps to the other item or grid point. Setting SketchManager::AddToDB to TRUE avoids this behavior during sketch entity creation.

gruß

------------------
Software nach Maß für Ihr CAD-System
www.ib-knepper.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Denver
Mitglied
Student

Sehen Sie sich das Profil von Denver an!   Senden Sie eine Private Message an Denver  Schreiben Sie einen Gästebucheintrag für Denver

Beiträge: 8
Registriert: 11.11.2009

erstellt am: 25. Mrz. 2010 14:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

also, ich starte Solidworks, erstelle ein neues Teil, Skizze, Kreis, wähle eine beliebige Ebene aus, setze auf den Ursprung, Radius auf 20, Features, Linear austragen, Dicke auf 20 und dann hab ich einen Zylinder.
Dann klicke ich auf eine Fläche auf dem Körper und starte mein Makro.

Was kommt bei euch raus?
Gruss,
Denver

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

jens_oliver
Mitglied
Softwareentwickler


Sehen Sie sich das Profil von jens_oliver an!   Senden Sie eine Private Message an jens_oliver  Schreiben Sie einen Gästebucheintrag für jens_oliver

Beiträge: 114
Registriert: 28.06.2005

erstellt am: 26. Mrz. 2010 10:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Denver 10 Unities + Antwort hilfreich

bei mir trifft er nichts.
result = swModel.RayIntersections(..) ist bei mir immer 0.

problem dürfte dein definition der punkte und vektoren sein.
vSelPt ist ein Array(Punkte) von Array's(Koordinaten)

'  vSelPt = Array(x1, y1, z1)
'  vSelVector = Array(x2, y2, z2)
geht nicht!!!!

    Dim EntPoint(2)            As Double
    Dim EntVect(2)              As Double
    EntPoint(0) = x1
    EntPoint(1) = y1
    EntPoint(2) = z1   
    vSelPt = EntPoint

    EntVect(0) = x2
    EntVect(1) = y2 
    EntVect(2) = z2
    vSelVector = EntVect

probiere es mal damit.

gruß

------------------
Software nach Maß für Ihr CAD-System
www.ib-knepper.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Denver
Mitglied
Student

Sehen Sie sich das Profil von Denver an!   Senden Sie eine Private Message an Denver  Schreiben Sie einen Gästebucheintrag für Denver

Beiträge: 8
Registriert: 11.11.2009

erstellt am: 26. Mrz. 2010 11:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank Jens.

Klappt wirklich gut.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz