Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  vlax-curve-getdistatpoint -> Fehler

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:  vlax-curve-getdistatpoint -> Fehler (1881 mal gelesen)
joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 19. Jan. 2006 10: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


test.zip

 
Bei folgendem Code wird seltsamerweise nil anstatt einer Station zurückgegeben, wenn ich in der angehängenten Zeichnung die Polylinie auswähle, und dann den markierten Stützpunkt als Punkt auswähle (Objektfang Endpunkt). Ich habe es mit den anderen Stützpunkten der Polylinie probiert, da ist es dann kein Problem, es wird die Station zurückgegeben.

Kann mir einer sagen, was bei dieser Polylinie so besonderes ist, das es nicht funktioniert, oder ob es eine andere Ursache hat???

Code:

(defun c:test  (/)
  (vlax-curve-getdistatpoint
    (vlax-ename->vla-object
      (car (entsel "\nBitte Polylinie wählen:")))
    (getpoint "\nBitte Punkt wählen:")))

------------------
viele Grüße

Jörn

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: 13508
Registriert: 30.11.2003

.

erstellt am: 19. Jan. 2006 10:54    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 joern bosse 10 Unities + Antwort hilfreich

Hatte schon ähnliches.. deshalb erstelle ich mir immer erst ne Koordinatenliste .. vla-get-coords .. -> wandel die in eine entsprechende Punktliste um und ermittle dann über
(vlax-curve-getdistAtParam OBJ (setq INDEX(1+ INDEX))) .. die dazugehörige Länge.

------------------
- 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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 19. Jan. 2006 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

Hallo CADmium,
naja, vom Prinzip habe ich es auch so gemacht. Dieses Beispiel mit getpoint habe ich nur zur Fehlersuche verwendet.
Meine Koordinatenliste habe ich aber nicht mit vla-get-koords erstellt, sondern über (cdr(assoc 10..., aber das sollte doch eigentlich keinen Unterschied machen, oder?

Das Ergebnis mit der Koordinatenliste ist an dem besagten Punkt dasselbe, als wenn ich getpoint verwende.

------------------
viele Grüße

Jörn

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: 13508
Registriert: 30.11.2003

.

erstellt am: 19. Jan. 2006 11: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 Nur für joern bosse 10 Unities + Antwort hilfreich

Hmm .. mein Code liefert mir für den Punkt die Länge 104.448 ....
die Analyseliste ( Länge ((Koordinate)Bulge(Dicke1 Dicke2)))
sieht so aus:
((0.0 ((255.865 186.489 0.0) 0.0 (0.0 0.0))) (10.5607 ((246.081
182.514 0.0) 0.0 (0.0 0.0))) (21.5607 ((235.889 178.374 0.0) 0.0 (0.0 0.0)))
(26.5607 ((231.257 176.493 0.0) 0.0 (0.0 0.0))) (28.185 ((231.032 174.884 0.0)
0.0 (0.0 0.0))) (36.0422 ((223.739 171.959 0.0) 0.0 (0.0 0.0))) (36.4565
((223.348 171.824 0.0) 0.0 (0.0 0.0))) (39.6875 ((220.807 173.82 0.0) 0.0 (0.0
0.0))) (40.595 ((219.964 173.482 0.0) 0.0 (0.0 0.0))) (42.1768 ((218.498
172.889 0.0) 0.0 (0.0 0.0))) (45.0011 ((218.101 170.093 0.0) 0.0 (0.0 0.0)))
(51.2837 ((211.995 168.611 0.0) 0.0 (0.0 0.0))) (53.1732 ((210.544 169.822 0.0)
0.0 (0.0 0.0))) (68.9992 ((195.206 165.921 0.0) 0.0 (0.0 0.0))) (72.7753
((191.506 165.167 0.0) -0.00447049 (0.0 0.0))) (76.374 ((188.025 164.255 0.0)
0.0 (0.0 0.0))) (93.6706 ((171.254 160.024 0.0) 0.0108321 (0.0 0.0))) (104.448
((160.865 157.161 0.0) 0.0 (0.0 0.0))) (117.183 ((148.664 153.514 0.0) 0.0 (0.0
0.0))) (135.159 ((131.776 147.352 0.0) 0.0 (0.0 0.0))) (151.549 ((116.821
140.646 0.0) 0.0 (0.0 0.0))) (157.63 ((111.318 138.059 0.0) 0.0 (0.0 0.0)))
(165.663 ((104.341 134.077 0.0) 0.0 (0.0 0.0))) (166.668 ((103.497 133.53 0.0)
0.0 (0.0 0.0))) (170.383 ((100.382 131.508 0.0) 0.0 (0.0 0.0))) (176.946
((94.9522 127.821 0.0) 0.0 (0.0 0.0))) (188.703 ((85.3607 121.021 0.0) 0.0 (0.0
0.0))) (199.334 ((76.8956 114.59 0.0) 0.0411984 (0.0 0.0))) (200.487 ((76.039
113.821 0.0) 0.0 (0.0 0.0))) (204.613 ((76.5333 109.725 0.0) 0.0 (0.0
0.0))))(17 12.7344 ((160.865 157.161 0.0) 0.0 (0.0 0.0)) ((148.664 153.514 0.0)
0.0 (0.0 0.0)))

------------------
- 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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 19. Jan. 2006 12: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

Hallo CADmium,
kannst Du mir Deinen Code nochmal zukommen lassen, bei mir klappt das nicht. (Bei den vla-Sachen bin ich mir ziemlich unsicher)
Also, folgenden Code habe ich zum Testen genommen, und dort werden die Stationen 104.448 und 200.487 nicht ausgegeben.

Code:

(defun test1  (/ koord_vla obj n)
  (setq obj (car (entsel "\nBitte Polylinie wählen:")))
  (setq koord
(vlax-safearray->list
  (vlax-variant-value
    (vla-get-coordinates (vlax-ename->vla-object obj)))))
  (setq n 0)
  (repeat (/ (length koord) 3)
    (setq koord_vla (cons (list (nth n koord)
(nth (+ n 1) koord)
(nth (+ n 2) koord))
  koord_vla)
  n     (+ n 3)))
  (setq
    koord_vla (mapcar '(lambda (A)
(list A
      (vlax-curve-getdistatpoint
(vlax-ename->vla-object obj)
A)))
      koord_vla))

  )


------------------
viele Grüße

Jörn

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: 13508
Registriert: 30.11.2003

.

erstellt am: 19. Jan. 2006 13:01    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 joern bosse 10 Unities + Antwort hilfreich

versuch es hiermit:
(defun c:test1  (/ koord koord_vla obj n koord_vla+)
  (setq obj (car (entsel "\nBitte Polylinie wählen:")))
  (setq Obj (vlax-ename->vla-object obj))
  (setq koord
    (vlax-safearray->list
      (vlax-variant-value
        (vla-get-coordinates obj)
      )
    )
  )
  (setq n 0)
  (repeat (/ (length koord) 3)
    (setq koord_vla (cons (list (nth n koord)
                                (nth (+ n 1) koord)
                                (nth (+ n 2) koord)
                          )
                          koord_vla
                    )
        n  (+ n 3)
    )
  )
  (setq n -1)
  (setq koord_vla (reverse koord_vla))
  (repeat (length koord_vla)
    (setq koord_vla+(cons (list
                          (vlax-curve-getdistAtParam OBJ (setq n(1+ n)))
                          (car koord_vla)
                        )
                        koord_vla+
                  )
    )
    (setq koord_vla (cdr koord_vla))
  )     
  (reverse koord_vla+)
)

------------------
- 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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 19. Jan. 2006 13:58    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, das hat echt weitergeholfen, danke.

------------------
viele Grüße

Jörn

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

Peter2
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 21. Jun. 2017 11: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 joern bosse 10 Unities + Antwort hilfreich

ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!


Zitat:
Original erstellt von CADmium:
versuch es hiermit:
(defun c:test1  (/ koord koord_vla obj n koord_vla+)
...
(repeat (/ (length koord) 3)
    (setq koord_vla (cons (list (nth n koord)
                                (nth (+ n 1) koord)
                                (nth (+ n 2) koord)
                          )
                          koord_vla
                    )
        n  (+ n 3)
    )      )
...

Anmerkung zwecks Vollständigkeit: Das klappt nur mit klassischen (Schwergewichts) Polylinien - da stehen die Koordinaten immer als 3er-Pakete an. Bei LW-Poly sind es nur 2-er Pakete - da muss dann der Aufbau von koord_vla angepasst werden.

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

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