Strona 1 z 2

LISP opisywanie linii, raz działa raz nie.

PostNapisane: mar 22, 2020 19:09
przez Tyomex
Witam
czy jest ktoś mi w stanie powiedzieć dlaczego załączony LISP, który ma opisywać długości linii raz działa a raz nie?
Albo poprawić, jeśli to łatwo zmienić.
Wyrzuca błąd: "Error: zły typ argumentu: numberp: nil"
W załączeniu rzeczony lisp oraz plik, w którym część linii opisuje się bez problemu, a reszta ni hu hu.
Pozdrawiam

Re: LISP opisywanie linii, raz działa raz nie.

PostNapisane: mar 25, 2020 22:31
przez andkal
Jak się je rozciągnie to jednak opisuje. Jak się je skopiuje do nowego pliku to też opisuje. Ewentualnie można spróbować innym lispem. Na pewno jest sporo podobnych w necie

Re: LISP opisywanie linii, raz działa raz nie.

PostNapisane: mar 28, 2020 18:35
przez Tyomex
No jak się przesunie lub skopiuje to opisuje, choć też nie zawsze. Problem w tym, że jak chcę żeby opisywały w tym miejscu w którym są. A poza tym jakby był dobrze napisany program to powinno zawsze opisywać.
Inne lispy niby są ale nie do końca takie jak trzeba.
Ostatecznie skorzystam z LISP-a "AD-Automatic Dimension Autocad" przy stylu wymiarowania bez strzałek i na moje potrzeby może być.
Pozdro

Re: LISP opisywanie linii, raz działa raz nie.

PostNapisane: mar 31, 2020 13:40
przez kruuger
Tyomex napisał(a):Witam
czy jest ktoś mi w stanie powiedzieć dlaczego załączony LISP, który ma opisywać długości linii raz działa a raz nie?
Albo poprawić, jeśli to łatwo zmienić.
Wyrzuca błąd: "Error: zły typ argumentu: numberp: nil"
W załączeniu rzeczony lisp oraz plik, w którym część linii opisuje się bez problemu, a reszta ni hu hu.
Pozdrawiam

pracujesz na współrzędnych "milionowych". jak przesuniesz bliżej 0 to wszystko działa.
widac funckje vlax-curve maja problem z takimi wartosciami.
k.

Re: LISP opisywanie linii, raz działa raz nie.

PostNapisane: mar 31, 2020 15:03
przez CADok
kruuger napisał(a):
Tyomex napisał(a):Witam
czy jest ktoś mi w stanie powiedzieć dlaczego załączony LISP, który ma opisywać długości linii raz działa a raz nie?
Albo poprawić, jeśli to łatwo zmienić.
Wyrzuca błąd: "Error: zły typ argumentu: numberp: nil"
W załączeniu rzeczony lisp oraz plik, w którym część linii opisuje się bez problemu, a reszta ni hu hu.
Pozdrawiam

pracujesz na współrzędnych "milionowych". jak przesuniesz bliżej 0 to wszystko działa.
widac funckje vlax-curve maja problem z takimi wartosciami.
k.


Co zrobić jeśli projekt na którym pracujesz jest we współrzędnych milionowych?
Przykład to projektowanie na mapie geodezyjnej. Współrzędne geodezyjne są "milionowe".
vlax-curve to funkcja z biblioteki wbudowanej w AutoLSIP która jak twierdzisz nie działa w każdym przypadku.
To zadam inne pytanie dlaczego Autodesk jej niepoprawi, zunifikuje, debuguje?
Jakieś merytoryczne wnioski?

Re: LISP opisywanie linii, raz działa raz nie.

PostNapisane: mar 31, 2020 16:52
przez kruuger
Tyomex napisał(a):Witam
czy jest ktoś mi w stanie powiedzieć dlaczego załączony LISP, który ma opisywać długości linii raz działa a raz nie?
Albo poprawić, jeśli to łatwo zmienić.
Wyrzuca błąd: "Error: zły typ argumentu: numberp: nil"
W załączeniu rzeczony lisp oraz plik, w którym część linii opisuje się bez problemu, a reszta ni hu hu.
Pozdrawiam

jesli nie zalezy ci na tekscie obroconym do linii to w zalaczniku dzialajaca wersje bez obrotu.
k.

Re: LISP opisywanie linii, raz działa raz nie.

PostNapisane: kwi 04, 2020 12:34
przez Tyomex
kruuger napisał(a):pracujesz na współrzędnych "milionowych". jak przesuniesz bliżej 0 to wszystko działa.
widac funckje vlax-curve maja problem z takimi wartosciami.
k.


A rzeczywiście "robi" trochę lepiej, ale na przykład na współrzędnych minusowych znów do bani.
Generalnie jakoś problematycznie to działa. Np. jak się za bardzo oddali to też błędy. Coś to wszystko miałkie :D

CADok napisał(a):
Co zrobić jeśli projekt na którym pracujesz jest we współrzędnych milionowych?
Przykład to projektowanie na mapie geodezyjnej. Współrzędne geodezyjne są "milionowe".


Ja właśnie pracuję na mapie i ma ona współrzędne "milionowe".
No można sobie skopiować z punktem bazowym to co chcemy opisywać i wkleić bliżej zera. Tam opisać i znów z punktem bazowym wkleić na mapę.
Pytanie co zrobi z tym Autodesk, pewnie nic.
Pozdrawiam

Re: LISP opisywanie linii, raz działa raz nie.

PostNapisane: kwi 04, 2020 16:29
przez CADok
Tyomex napisał(a):Ja właśnie pracuję na mapie i ma ona współrzędne "milionowe".
No można sobie skopiować z punktem bazowym to co chcemy opisywać i wkleić bliżej zera. Tam opisać i znów z punktem bazowym wkleić na mapę.
Pytanie co zrobi z tym Autodesk, pewnie nic.
Pozdrawiam

Co robi z tym Autodesk?
To bardzo niewygodne pytanie dla "społeczności" forum cad.pl.
Za poruszanie tematu ułomności AutoLisp zostałem:
- "przegoniony" z forum
- okrzyknięty szerzycielem fermentu
- dostałem ostrzeżenie od admina
- próbowano mnie zastraszyć
Odpowiadając na pytanie to Autodesk robi bardzo dużo. Nie na piszę tego słowa.
Jak użyłem słowa którym nazywa się prądnicę rowerową oraz nowe środowisko programowania to na forum wszystkim odbiło.

Re: LISP opisywanie linii, raz działa raz nie.

PostNapisane: kwi 04, 2020 21:18
przez badziewiak
Nie wiem, co zrobi z tym Autodesk. Ja zwykle klonuję polilinię programowo i klon przesuwam do zera, na klonie wykonuję operacje typu przykładowo GetClosestPoint, IntersectWith itp. Oczywiście konsekwentnie trzeba przesunąć punkty wejściowe lub inne elementy, z którymi ma się przeciąć (także klonowanie programowe) o taki sam wektor. Wynik działania tych funkcji przesuwam o ten sam wektor, ale skierowany przeciwnie.
Jeśli się tego nie zrobi, to w najlepszym wypadku punkty wynikowe mogą być zafałszowane o kilkanaście/kilkadziesiąt cm.

Re: LISP opisywanie linii, raz działa raz nie.

PostNapisane: kwi 04, 2020 22:26
przez kojacek
Przypatrując się nieco problemowi widzę takie prawidłowości:
- program wywala sie dla obiektów typu LINE (ale)
- działa poprawnie dla LWPOLYLINE o tych samych współrzędnych co LINE
- dla LINE działa poprawnie jeśli funkcję vlax-curve-getfirstderiv zastąpi się obliczeniami geometrycznymi, (albo)
- upraszczając (ale tylko dla LINE) użyje się funkcji getpropertyvalue dla właściwości delta/X & delta/Y

Stąd są dwa rozwiazania:
- albo zawsze zamieniać (tylko do obliczeń) LINE na LWPOLYLINE
- albo rozróżniać LINE od innych krzywych (*LINE) i działać wg powyższych wskazówek

Na marginesie autor programu popełnił pewien błąd. Mianowicie, podstawiając
Kod: Zaznacz cały
 (setq sset (ssget '((0 . "*LINE")))
z pewnością miał na myśli wybór linii i polilinii, niemniej taka forma pozwoli na wybranie na przykład MLINE, albo polilinię będącą siatką 3D. W obu przypadkach spowoduje to błąd programu.

<kliku>:
dimlp.gif