Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Apparent Intersection von 3dPolylinien

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 Autodesk Produkte
Autor Thema:  Apparent Intersection von 3dPolylinien (1252 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 18. Aug. 2017 08:55    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


3DpolylineSample.dwg

 
Ich bin auf der Suche nach einer Möglichkeit die Schnittpunkte an 3dPolylinien durch Polylinien mit Elevation 0 zu ermitteln.
D.h. etwa so wie man manuell vorgeht, wenn in der Modelansicht eine Linie in der Ebene X/Y (Z=0) mit einer 3dPolylinie schneidet.
Dabei wählt man den Objektfang "Apparent Intersect" die 3dPolylinie und anschliessend die 0-Polylinie. Der neu ermittelte Schnittpunkt liegt mit Z auf der 3dPolylinie in X/Y entspricht er visuell zwischen beiden Objekten in der XY-Ebene.

Mein Versuch bei Schnitt von 3dPoly mit 2dPoly auf einer Ebene funktioniert so:

Code:

Point3dCollection points;
Polyline3d other;
Polyline2d baseCurveSampleLine;
other.IntersectWith(baseCurveSampleLine, Intersect.ExtendBoth, points, IntPtr.Zero, IntPtr.Zero);

Ein Ansatz wäre vielleicht von Kean

Finde ich jedoch kompliziert, da ich für jede 2dPoly dann ein "PlaneSurface" erzeugen müsste.

[Diese Nachricht wurde von cadplayer am 09. Okt. 2017 editiert.]

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 18. Aug. 2017 09:12    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
... Finde ich jedoch kompliziert, da ich für jede 2dPoly dann ein "PlaneSurface" erzeugen müsste.

Wenn du im Raum liegende Elemente hast, dann ist die Lage der augenscheinlichen Schnittpunkte immer davon abhängig, von wo aus man auf diese Elemente blickt. Folglich ist die Festlegung der Betrachtungsebene unumgänglich.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 18. Aug. 2017 09:29    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


_Autocad_Intersect.dll.txt


3Dpolyline_PlanSurf.dwg

 
Testprojekt!

Das Objekt PlanSurf ist etwas umständlich zu handhaben. Beim Versuch es herkömmlich zu zeichnen: musste ich es erst in der X/Y ebene zeichnen und anschliessend um die X-achse drehen um 90 grad, um es räumlich darzustellen.
Starte AcSpeedy_Intersect\_AcSpeedy_Intersect\bin\Debug\_Autocad_Intersect.dll
mit Befehl CPI
Das funktioniert soweit, gibt es vielleicht eine andere Möglichkeit?

[Diese Nachricht wurde von cadplayer am 09. Okt. 2017 editiert.]

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 18. Aug. 2017 09:35    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 cadplayer 10 Unities + Antwort hilfreich

du musst ja kein PlanSurface nehmen.
Du kannst dir die Ebene mit einem Plane selber definieren und dann eine Transformation (Matrix3d erstellen, die die Objekte auf diese Ebene projektiert und dann von diesen transformierten Objekten die Schnittpunkte berechnen.
3D- ist richtig Aufwand.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 18. Aug. 2017 10:52    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

Danke Holger für deinen Ansatz, da weiss ich auf jeden Fall, das es eine Möglichkeit gibt - jetzt muss ich das halt nur mal durchprobieren.

[Diese Nachricht wurde von cadplayer am 09. Okt. 2017 editiert.]

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 19. Aug. 2017 11:20    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


3DpolylineSample.dwg

 
Hallo nochmal!

Ein kleines Experiment ist geglückt. Ich habe im Testprojekt einen Befehl PPI geschaffen, der einen Schnittpunkt aus 3dPolylinie und LwPolylinie mittels Plane-Objekt ermittelt.
Es funktioniert folgendermassen: man wählt die LwPolylinie (weise Linie), die in der Beispielzeichnung nur aus Anfangs- und Endpunkt besteht und anschliessend die 3dPolylinie (gelbe Linie). Gibt es eine Verschneidungspunkt, dann wird ein Punkt erzeugt und es gibt die Rückgabe "Point is on curve."

Ein Frage zum Plane-Objekt, kann man eine Ebene auch aus einer LwPolyline mit mehreren Vertex-punkten erzeugen?

[Diese Nachricht wurde von cadplayer am 09. Okt. 2017 editiert.]

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 19. Aug. 2017 11: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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
... Ein Frage zum Plane-Objekt, kann man eine Ebene auch aus einer LwPolyline mit mehreren Vertex-punkten erzeugen?

Ich verstehe deine Frage nicht. Ein Plane(Ebene) wird doch definiert aus einem Basispunkt und der Richtung der X- und Y-Achse (angegeben durch Punkte oder Vektoren). Du kannst doch diese Definitionsdaten bestimmen wir du willst - du entscheidest doch, wie das Plane bezogen auf die LwPolylinie definiert wird.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 19. Aug. 2017 12:42    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 Holger! Danke für deine schnelle rückmeldung
zum thema Plane = Ebene habe ich nicht viel gefunden
ausser wie du es sagst, eine Ebene konstruiert
In meiner Zeichnung habe ich eine Basis polylinie
mit zwei punkten, die ich für die vertikale ebene benötige.
Was ist wenn ich ein Polylinie mit mehreren vertex
punkten habe, müsste ich dann für jedes polylinien
segment eine Ebene definieren bzw. was ist wenn
die polylinie bogensegmente beinhaltet. dann funktioniert das
konzept mit schnittpunkt aus 3dpolylinie mit lwPolylinie
nicht mehr?

[Diese Nachricht wurde von cadplayer am 09. Okt. 2017 editiert.]

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 19. Aug. 2017 13:22    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 cadplayer 10 Unities + Antwort hilfreich

nur dass ich es richtig verstehe, du hast Lw-Polylines und du hast 3d-Polylines. Du möchtest nun wissen, ob sich die 3d-Polylines in der aktuellen mit der LwPolyline schneiden - richtig?

Grundsätzlich kannst du Schnittpunkte ja nur berechnen, wenn die Elemente nicht koplanar im Raum liegen. Deshalb muss dein Ziel sein, die Elemente alle ein eine Ebene zu bekommen, damit ein realer Schnittpunkt existiert.
Die Verschiebung macht man mit einer Transformation.

Die LwPolyline liefert dir die Ebene, auf die die gerade betrachtete 3dPolyline projiziert werden muss. Die Projektion erfolgt in die Richtung(Vektor) der Z-Achse der aktuellen Ansicht.
Mit diesen beiden Infos bildest du eine Transformationsmatrix.

Da 3dPolylines bekanntlich keine Bögen enthalten, kannst du jeden Vertex der 3dPolyline mithilfe der Transformationsmatrix nun in die Ebene der LwPolyline projizieren. (Bildest du aus den neu berechneten Punkten eine neue Polyline, sollte die in der aktuellen Ansicht deckungsgleich mit der 3dPolyline sein, aber in der Ebene der LwPolyline liegen.)
Nun liegen beide Entities in einer Ebene und du kannst den Schnittpunkt berechnen, der dann in der Ebene der LwPolyline liegt.
Um den Schnittpunkt auf die 3dPolyline zu bekommen, muss dieser nun in die entgegengesetzte Richtung(Vektor) der Z-Achse der aktuellen Ansicht transformiert werden. Dafür nimmst du die umgekehrte Transformationsmatrix.

Ich hoffe, ich habe mich verständlich ausgedrückt.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 19. Aug. 2017 13:32    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

Super Vorschlag, danke da hast du mir auf die sprünge
geholfen, schönes WE!

[Diese Nachricht wurde von cadplayer am 09. Okt. 2017 editiert.]

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 20. Aug. 2017 12:03    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
kannst du jeden Vertex der 3dPolyline mithilfe der Transformationsmatrix nun in die Ebene der LwPolyline projizieren
Ich würde die <Curve>.GetProjectedCurve Funktion vorziehen, ist schneller als jeden einzelnen Punkt manuell zu transformieren.
Zusätzlich kann man jetzt die eingebaute Funkion ".IntersectWith" nutzen, da nun beide in einer Ebene liegen.

------------------


www.cars4fun.at

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 20. Aug. 2017 12:12    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

genau das habe ich im Testprojekt schon umgesetzt
Danke!

[Diese Nachricht wurde von cadplayer am 09. Okt. 2017 editiert.]

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)2023 CAD.de | Impressum | Datenschutz