Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  vlax-curve-getDistAtPoint

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
Autor Thema:   vlax-curve-getDistAtPoint (1097 mal gelesen)
GottesGeschenk
Mitglied
Bauingenieur


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

Beiträge: 229
Registriert: 23.02.2007

winxp pro sp3 / intel p4 3GHz / 2,5GB RAM / CAD 2011

erstellt am: 24. Feb. 2012 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

hallo zusammen.

Dieser ausdruck funktioniert einwandfrei
(vlax-curve-getDistAtPoint
        (handent handle)
        (vlax-curve-getClosestPointTo (handent handle) punkt))
aber nur solange ich im wks mit kleinen koordinaten arbeite.
wenn nicht, dann kann es passieren, dass kein distance gefunden wird.
in meinem fall ist es tatsächlich so, dass mal was gefunden wird mal nicht.

ich bräuchte mal eure hilfe, wie man es lösen kann.
die idee mit dem verschieben zum ursprung habe ich schon selbst gehabt, die möchte ich aber ungern benutzen.

vieleicht ein anderer vorschlag?

danke euch vielmals

gruß
theo

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

neurosis
Mitglied
dipl.ing.


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

Beiträge: 220
Registriert: 22.08.2006

erstellt am: 24. Feb. 2012 12:02    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 GottesGeschenk 10 Unities + Antwort hilfreich

alle koordinaten der polylinie und des punkts in ein lokales koordinatensystem transformieren (siehe dazu auch hier).

dann fuer jedes segment das lot vom punkt auf das segment faellen (lotpunkt berechnen) und die distanz zwischen punkt und lotpunkt ermitteln. der geringste abstand ist dein ergebnis.

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

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

GottesGeschenk
Mitglied
Bauingenieur


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

Beiträge: 229
Registriert: 23.02.2007

winxp pro sp3 / intel p4 3GHz / 2,5GB RAM / CAD 2011

erstellt am: 24. Feb. 2012 12: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

hallo Marco

danke für deine antwort. der verlinkte beitrag ist von mir.
ich benötige nicht den lotpunkt, sondern seinen abstand zum startpunkt der polylinie (vlax-curve-getDistAtPoint)

gruß
theo

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

neurosis
Mitglied
dipl.ing.


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

Beiträge: 220
Registriert: 22.08.2006

erstellt am: 24. Feb. 2012 12:23    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 GottesGeschenk 10 Unities + Antwort hilfreich

ups, sorry, ich hab nur vlax-curve-getClosestPointTo gelesen.

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13435
Registriert: 30.11.2003

.

erstellt am: 24. Feb. 2012 12:28    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 GottesGeschenk 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von GottesGeschenk:
die idee mit dem verschieben zum ursprung habe ich schon selbst gehabt, die möchte ich aber ungern benutzen.

warum nicht ?

oder warum nicht mit ner Kopie der Originalkurve und des Originalpunktes ?

anders wird du die Rechenungenauigkeiten nicht wegbekommen .. oder ACAD rechnet mit größeren Datentypen und mehr Bits ....


------------------
      - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

GottesGeschenk
Mitglied
Bauingenieur


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

Beiträge: 229
Registriert: 23.02.2007

winxp pro sp3 / intel p4 3GHz / 2,5GB RAM / CAD 2011

erstellt am: 24. Feb. 2012 12:28    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

macht nichts.

ich habe es jetzt so gelöst, dass ich die polylinie zum ursprung kopiere.
wenn jemand aber eine elegantere lösung hätte würde ich mich freuen wenn er sie mir sagt.

vielen dank.

gruß
theo

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

cadffm
Moderator
良い精神




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

Beiträge: 19657
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 24. Feb. 2012 12: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 GottesGeschenk 10 Unities + Antwort hilfreich

Eleganter ist umrechnen statts kopieren&löschen oder verschieben&zurückschieben und das wurde bereits mehrmals geschrieben.

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13435
Registriert: 30.11.2003

.

erstellt am: 24. Feb. 2012 12:49    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 GottesGeschenk 10 Unities + Antwort hilfreich

umrechnen geht bei Koordinaten .. bei Curvenobjekten wie Splines, PLS mit Bögen , angeglichenen 2DPLs usw. wo mann trotzdem gerne die vlax-curve Funktionen nutzen will , wäre das wohl etwas aufwendig


wie ist es damit: ?

;(DISTATPOINT (car(entsel "\nObjekt:"))(getpoint "\nPunkt:"))
(defun DISTATPOINT ( OBJ PKT / P1 COPY PP D)
  (if(and(setq OBJ(cond
                    ((=(type OBJ)'ENAME)(vlax-ename->vla-object OBJ))
                    ((=(type OBJ)'VLA-OBJECT) OBJ)
                  )
         )
         (setq P1(vlax-curve-getStartpoint OBJ))        
         (not(vl-catch-all-error-p
               (setq COPY(vl-catch-all-apply
                           'vla-copy (list OBJ)
                         )
               )
             )
         )
     )
    (progn
      (and(not(vl-catch-all-error-p
               (vl-catch-all-apply
                'vla-move (list COPY (vlax-3d-point P1)(vlax-3d-point '(0 0 0)))          
               )
              )
          )
          (setq PP(vlax-curve-getClosestPointTo COPY (mapcar '- PKT P1)))
          (setq D(vlax-curve-getDistAtPoint COPY PP))         
      )
      (not(vl-catch-all-error-p
               (vl-catch-all-apply
                'vla-delete (list COPY)
               )
              )
      )
      D
    )
  ) 
)

------------------
       - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

neurosis
Mitglied
dipl.ing.


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

Beiträge: 220
Registriert: 22.08.2006

erstellt am: 24. Feb. 2012 12:53    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 GottesGeschenk 10 Unities + Antwort hilfreich

ok, ablauf (fuer lwpolyline)
1. alle stuetzpunkte der polylinie mit bulge auslesen -> in liste packen
2. in lokales ks transformieren (nur die punkte)
3. suche des startsegments (beginnend beim ersten segment):
  - bogen oder linie
  - wenn bogen: ist der abstand "punkt - mittelpunkt bogen" gleich radius des bogens, dann hab ich startsegment
  - wenn linie: liegt punkt auf linie (distanz von punkt zum lotpunkt gleich 0), dann hab ich startsegment
4. suche des endsegments (ist das gleiche wie 3.)
  - wenn gleiches segment: abstand berechnen - fertig (bogen und linie unterscheiden)
  - wenn aktuelles segment nicht endsegment ist, laenge (unterschieden nach bogen und linie) berechnen und aufaddieren
  - wenn endsegment endlich gefunden: abstand berechnen - fertig (bogen und linie unterscheiden)

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

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