Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Verändertes Verhalten von vlax-curve-getClosestPointToProjection in ACAD 25

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:  Verändertes Verhalten von vlax-curve-getClosestPointToProjection in ACAD 25 (148 / mal gelesen)
Archäologie Bubi
Mitglied
Archäologische Funddokumentation


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

Beiträge: 67
Registriert: 09.03.2021

AutoCAD Map 3D 2024 / Raster Design
AutoCAD Map 3D 2025
Faro AS-Built / TachyCAD
Agisoft Metashape Professional 2.0

erstellt am: 30. Jan. 2025 17:13    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


L-Boeschung.lsp


README.txt

 
Hallo Forum

Ich habe vor einigen Jahren für einen Kollegen in einer anderen Dienstelle ein LISP-Tool zur Erstellung von Böschungslinien geschrieben.
Dieses nutzt zur Berechnung der Böschungslinien die vlax-curve-Funktionen.

Die Dienststelle meines Kollegen hat nun von AutoCAD Map3D 2023 auf AutoCAD Map3D 2025 geupdated.
Seit dem Update funktioniert das Tool nun stellenweise nicht mehr, bzw. bricht der Code aufgrund einer nil-Ausgabe anstatt einer Koordinate ab.

Daraufhin haben sie selbst eine Fehleranalyse des Codes durchgeführt und kommen zu folgendem Schluss: (siehe auch Anhang "README")
- vlax-curve-getClosestPointToProjection gibt in gewissen Situationen nil aus anstatt einer Koordinate.
- gewisse vlax-curve-Funktionen geben stellenweise ungenaue Werte aus

Da sie das Problem, auch nach einem selbst erstellten Forumspost (https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/vlax-curve-getclosestpointtoprojection-behaves-differently-in/td-p/13133157), nicht lösen konnten, kamen sie auf mich als Ersteller zurück.

Im Gegensatz zu den Forumsmitgliedern beim letzten Post, konnte ich das Problem ebenfalls Rekreieren (nur in ACAD 25 & nur bei 3d-Polylinien mit Erhebungen) und komme zum gleichen Schluss.
Allerdings ist auch mir nicht klar, wieso vlax-curve-getClosestPointToProjection nil ausgeben sollte.
Dies ist in der Doku zwar durchaus vermerkt, aber im Vergleich zu den früheren Versionen hat sich an den Punkten ja nichts geändert.
Und ob der nächstgelegene Punkt einen Millimeter oder zehn Kilometer entfern ist, sollte ja auch keine rolle spielen.

Ich stelle mal noch mein gesamtes Tool in den Anhang, falls wer Testen kann.
Für die DWG mit den Polylinien verweise ich erstmal auf die Anhänge des verlinkten Forums, da ich nicht weiss, welche Daten ich von der Dienstelle meines Kollegen veröffentlichen darf.
Die in der README erwähnten Test-Daten und GitHub-Ordner stehen mir leider nicht zur Verfügung.

Meine wichtigsten Fragen:

- Wer von euch kann das Problem ebenfalls Rekreieren?

- Wieso/wann gibt vlax-curve-getClosestPointToProjection überhaupt nil aus?

- Gibt es eine Idee wie ich das Problem immerhin umschiffen könnte?


Besten Dank im Voraus für alle Hinweise, Tipps & Lösungen

------------------
Bubi spiele, Bubi glücklich!

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

VMichl
Mitglied



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

Beiträge: 226
Registriert: 04.01.2001

AutoCAD, LT, Inventor, Revit, Map, LISP...
Firma: ARKANCE (CAD Studio)

erstellt am: 30. Jan. 2025 18:13    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 Archäologie Bubi 10 Unities + Antwort hilfreich

Bei mir liefern beide Versionen das gleiche Ergebnis - aber Ihre DWG könnte große Koordinaten verwenden, die an der Grenze der numerischen Stabilität von AutoCAD liegen - versuchen Sie, Ihre Geometrie näher an 0,0,0 zu verschieben.

V.Michl, www.arkance.world - www.cadforum.cz

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: 22388
Registriert: 03.06.2002

Alles

erstellt am: 30. Jan. 2025 18: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 Nur für Archäologie Bubi 10 Unities + Antwort hilfreich


LowLine2.dwg

 
vorab

Hier der Link von oben, richtig formatiert: vlax-curve-getclosestpointtoprojection behaves differently in 2025 than in 2023

Code:
https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/vlax-curve-getclosestpointtoprojection-behaves-differently-in/td-p/13133157

Vermutlich gibt es mehr Beteiligung wenn man nichts selbst zusammentragen müßte. DWGs, codeschnipsel / Anleitung.
Im Link gibt es halbfertige Test-codes und zwei DWG, die 2. DWG sollte man nehmen und den PUNKT benutzen.

@Archäologie Bubi
Tolles Ding, gefällt mir sehr. Leider habe ich selbst keine Anwendung dafür  

Ich starte das hier anhängende Lisp, nachdem ich nachsehen mußte das es keinen Befehl gibt und die
Funktion drei Argumente haben mag (L-Boeschung DefaultLayerNew DefaultLayerBoe DefaultSpace),
danach wurde irgendwann klar das zwei Polylinien nicht schlecht wären,
irgendwann hat es dann "funktioniert" JUHUU


Frage: Kann ich das Programm auch irgendwie mit der LowLine.dwg nutzen?
Ich habe von dem Thema (Böschung) NULL Ahnung, aber fertige DWG Beispiel / Eingabe-Werte, das würde ich schaffen  


Kurzes Feedback von mir, ohne Gewähr:
Ich denke das Problem würde man auch problemlos in 2023 erhalten können,
auch wenn es nicht bei derselben Punkt/Poly Kombination vorkommt.

zu LowLine.dwg (mit Punktobjekt)
und damit andere nicht auch noch basteln müssen:

Code:
(progn
(defun formatCoord (coord) (mapcar '(lambda (x) (rtos x 2 15)) coord))
(setq nextp1 (getpoint) lowline (car(entsel)))
(princ (formatCoord NextP1))
(princ (vlax-curve-getClosestPointToProjection (vlax-ename->vla-object LowLine) (list 2612148.804423312 1262415.189228603 292.1349187072591) (list 0 0 1)))
(princ (vlax-curve-getClosestPointToProjection (vlax-ename->vla-object LowLine) NextP1 (list 0 0 1)))
(princ)
)

Beispiel: RechnerX, ACAD-so-alt-willste-nicht-wissen, selbes Ergebnis wie 2025

Mit anderer Polyline bekomme ich in 2025, bei der fixen Koordinatenliste (das zweiter princ) ein NIL,
dafür funktioniert dann die der dritte Ausdruck.


Rundungsproblem sind eine Pest, nicht nur bei den eigenen Funktionen,
auch bei den nativen Befehlen und auch Lispfunktionen.

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

Archäologie Bubi
Mitglied
Archäologische Funddokumentation


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

Beiträge: 67
Registriert: 09.03.2021

AutoCAD Map 3D 2024 / Raster Design
AutoCAD Map 3D 2025
Faro AS-Built / TachyCAD
Agisoft Metashape Professional 2.0

erstellt am: 31. Jan. 2025 13: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


Boeschungstest_Neutral.dwg


TestBoeschung_Command.lsp

 
Ich habe von meinem Kollegen inzwischen eine "Neutrale"-Datei bekommen die ich hier teilen darf (siehe Anhang "BoeschungsTest_Neutral.dwg").
In der neu angehängten Variante des Tool ist nun auch ein Command zum direkten Aufruf definiert: (siehe Anhnag "TestBoeschung_Command.lsp")
Code:
(defun c:TestBoeschung ( / )(L-Boeschung "0" "0" nil))

In der DWG-Datei befinden sich zwei Linienpaare (3dp) mit jeweils einer TopLine (blau) und einer LowLine (grün).
Nach Ausführen des Befehls muss erst die Obere- und dann die Untere Linie ausgewählt werden (geht auch anders herum, die Berechnung ist dann einfach auf dem Kopf).

Bei beiden Linienpaaren bricht das Tool bei mir ab einem gewissen Punkt ab, da beim Aufruf der vlax-curve-getClosestPointToProjection Funktion nil zurückgegeben wird.

Dieser Fehler tritt bei mir nur in ACAD 25 auf, in 23 & 24 nicht. All unsere ACADs sind mit Map 3D installiert.

Wichtig für Leute die es Testen wollen!:
Der im Tool verwendete DCL-Dialog wird on the Fly als Temporäre .dcl-Datei im entsprechenden Temp-Ordner erstellt (siehe (getvar 'TEMPPREFIX)).
Bei einem Absturz kann die Datei voraussichtlich nicht korrekt gelöscht werden.
Ich hatte damals leider keinen entsprechenden Errorhandelr integriert...
Am Schluss muss also manuell aufgeräumt werden.

@VMichel
>> aber Ihre DWG könnte große Koordinaten verwenden, die an der Grenze der numerischen Stabilität von AutoCAD liegen - versuchen Sie, Ihre Geometrie näher an 0,0,0 zu verschieben
Wir arbeiten mit Koordinaten im siebenstelligen Bereich.
Wenn wir die Linien näher an (0 0 0) schieben, scheint das Problem zu verschwinden.
Allerdings sind unsere GeoDaten an das Koordinatensystem unseres Landes gebunden und können/dürfen nicht verschoben werden.
Unsere älteren Versionen hatten mit den gleichen Koordinaten keine Probleme.

@cadffm
>> Tolles Ding, gefällt mir sehr.
Danke, aber bei der Fehler-/Absturz-Absicherung muss ich wohl nochmals nachbessern.

>> irgendwann hat es dann "funktioniert" JUHUU
Sorry für die Bastelei, bei mir im System sind die Befehle schon vordefiniert, das habe ich gestern verschlafen...

>> aber fertige DWG Beispiel / Eingabe-Werte, das würde ich schaffen
Mit den neuen Anhängen sollten alle Eingaben gegeben sein.

>> Ich denke das Problem würde man auch problemlos in 2023 erhalten können, auch wenn es nicht bei derselben Punkt/Poly Kombination vorkommt.
Mehrere Dienststellen der Archäologie in verschiedenen Kantonen nutzen mein Tool in unterschiedlichen ACAD Versionen und es ist das erste mal das ich von diesem Problem höre oder es selbst erlebe.

>> Rundungsproblem sind eine Pest
Absolut, allerdings sollte vlax-curve-getClosestPointToProjection noch kein Rundungsproblem haben, bzw. dennoch eine Koordinate ausspucken.
Das vlax-curve-getDistAtPoint Rundungsprobleme hat ist verständlicher und wäre mit einem zuverlässigem, extra ClosetPoint abzufangen.

------------------
Bubi spiele, Bubi glücklich!

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: 22388
Registriert: 03.06.2002

Alles

erstellt am: 31. Jan. 2025 15: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 Nur für Archäologie Bubi 10 Unities + Antwort hilfreich

Mir fällt erst jetzt auf:  Du sprichst immer über "ACAD" (und da gibt es Unterschiede die verschwiegen werden sollten  )
Wie läuft es denn eigentlich mit MAP3D 2025 ? Das klappt doch, oder nicht?
Kann mich leider aktuell damit nicht beschäftigen, aber ich habe da noch was. Bis demnächst, per PN?

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

Archäologie Bubi
Mitglied
Archäologische Funddokumentation


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

Beiträge: 67
Registriert: 09.03.2021

AutoCAD Map 3D 2024 / Raster Design
AutoCAD Map 3D 2025
Faro AS-Built / TachyCAD
Agisoft Metashape Professional 2.0

erstellt am: 31. Jan. 2025 16:21    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

>> Du sprichst immer über "ACAD" (und da gibt es Unterschiede die verschwiegen werden sollten)
Ich spreche eher aus Faulheit von ACAD (vier Digits sind halt einfach weniger als sieben  ).


>> Wie läuft es denn eigentlich mit MAP3D 2025 ? Das klappt doch, oder nicht?
Da sowohl die Dienststelle meines Kollegen, wie auch meine, immer mit 'AutoCAD Map 3D arbeiten, kam der Fehler ja auch dort zum Vorschein.
Ich habe zur Sicherheit jetzt auch noch 'AutoCAD 2025 (ohne Addons) installiert und mit den selben Daten getestet:
Gleicher Fehler.

Die Test habe ich BTW. mit unseren 'AutoCAD-Einstellungen und mit den Standard-Einstellungen durchgeführt.
Bei beidem komme ich auf die gleichen Ergebnisse. Ich schliesse irgendwelche (veränderten) Nutzereinstellungen daher aus.


>> Bis demnächst, per PN?
Ich bin über alle angegebenen Kanäle erreichbar und Dankbar für die Bemühungen. 

------------------
Bubi spiele, Bubi glücklich!

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