jacnightingale Opublikowano 11 Maja 2018 Zgłoś Udostępnij Opublikowano 11 Maja 2018 Cześć, zastanawiam się czy jest jakiś szybki sposób na odmierzanie dowolnej odległości na polilinii. Załóżmy, że moja linia składa się z kilku łuków oraz prostych. Całość ma 500 m, a ja w 36,5 m chciałbym coś wstawić. Ma ktoś pomysł jak to najszybciej wykonać? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adam Klaczek Opublikowano 11 Maja 2018 Zgłoś Udostępnij Opublikowano 11 Maja 2018 Dzień dobry, Najprostsze wydaje się _measure (alias ME) i ustawienie długości segmentu na 36.5 Funkcja wstawi punkty co zadaną odległość. Wprawdzie dostaniemy kilka niepotrzebnych punktów, ale wiadomo, że punkt wstawienia "czegoś" będzie pierwszym punktem na polilinii. Zastanowię się jeszcze nad innymi rozwiązaniami. Pozdrawiam. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
dmatusz3 Opublikowano 11 Maja 2018 Zgłoś Udostępnij Opublikowano 11 Maja 2018 Może coś takiego? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Przemek210 Opublikowano 11 Maja 2018 Zgłoś Udostępnij Opublikowano 11 Maja 2018 Można spróbować polecania _measure. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
jacnightingale Opublikowano 11 Maja 2018 Autor Zgłoś Udostępnij Opublikowano 11 Maja 2018 Polecenie _measure oczywiście znam. Problem polega na tym, że jeżeli jest to jakaś długa Polilinia (przykładowo oś drogi, która ma kilkaset metrów) to wstawi mi bardzo dużo niepotrzebnych punktów. Przy powtarzaniu takich czynności często, sami wiecie co stanie się z rysunkiem. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
icholewa Opublikowano 11 Maja 2018 Zgłoś Udostępnij Opublikowano 11 Maja 2018 Witam. Można też wykorzystać bezpośrednio funkcję w aplikacji ZWTraffic - przy wstawianiu znaku wybrać Trasa i okreslić punkt wstawienia znaku. Wymiar w pasku poleceń mierzony po prostej. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adam Klaczek Opublikowano 11 Maja 2018 Zgłoś Udostępnij Opublikowano 11 Maja 2018 Dzień dobry, Sposób "nie_najmądrzejszy", ale prosty i działa: Z lewej na prostej: LEN - opcja Przyrost - wartość (minus)-55 - wstawiony okrąg - LEN - opcja Przyrost - wartość 55 Z prawej na łuku: LEN - opcja Przyrost - wartość (minus)-110 - wstawiony okrąg - LEN - opcja Przyrost - wartość 110 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
jacnightingale Opublikowano 11 Maja 2018 Autor Zgłoś Udostępnij Opublikowano 11 Maja 2018 Godzinę temu, Adam Klaczek napisał: Dzień dobry, Sposób "nie_najmądrzejszy", ale prosty i działa: Nie do końca, bo działa tylko w przypadku, gdy ucinamy coś na samych końcach. W przypadku, gdy mamy kilka łuków i prostych i utniemy coś na środku długiego odcinka to później jak wydłużamy to wydłużamy tlyko konkretną prostą albo łuk. Program nie odtworzy nam pierwotnej trasy. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adam Klaczek Opublikowano 11 Maja 2018 Zgłoś Udostępnij Opublikowano 11 Maja 2018 No tak - ale każde inne polecenie, w tym _measure, również dotyczą konkretnego obiektu. Może w takiej sytuacji połączyć linie? Przez _pedit, czy _join? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
dmatusz3 Opublikowano 11 Maja 2018 Zgłoś Udostępnij Opublikowano 11 Maja 2018 A gdyby zrobić kopie pierwotnej polilinii w tej samej lokalizacji, skrócić, wstawić punkt i usunąć skróconą polilinię? Można także zrobić kopie w inne miejsce i wykorzystać punkt końcowy polilinii, którego położenia nie zmieniamy. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
jacnightingale Opublikowano 11 Maja 2018 Autor Zgłoś Udostępnij Opublikowano 11 Maja 2018 1 minutę temu, dmatusz3 napisał: A gdyby zrobić kopie pierwotnej polilinii w tej samej lokalizacji, skrócić, wstawić punkt i usunąć skróconą polilinię? Można także zrobić kopie w inne miejsce i wykorzystać punkt końcowy polilinii, którego położenia nie zmieniamy. Ta opcja jest najlepsza i w ten sposób do tej pory działałem. Myślałem jednak, że są jakieś wygodniejsze funkcje, ale jak widać niestety ich nie ma. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kojacek Opublikowano 11 Maja 2018 Zgłoś Udostępnij Opublikowano 11 Maja 2018 A takie coś: https://kojacek.wordpress.com/2018/01/17/pomiar-dlugosci-krzywej/ LISP-em? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
jacnightingale Opublikowano 11 Maja 2018 Autor Zgłoś Udostępnij Opublikowano 11 Maja 2018 5 minut temu, kojacek napisał: A takie coś: https://kojacek.wordpress.com/2018/01/17/pomiar-dlugosci-krzywej/ LISP-em? Z tego co rozumiem, LISP mierzy odległość X pomiędzy punktem A i B. W moim przypadku znam lokalizację punktu A i odległość X. Pytanie tylko, jak wyznaczyć na polilinii gdzie jest ten punkt B położony. Mam nadzieję, że nie niamieszałem za bardzo 🙈 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kojacek Opublikowano 11 Maja 2018 Zgłoś Udostępnij Opublikowano 11 Maja 2018 Godzinę temu, jacnightingale napisał: Z tego co rozumiem, LISP mierzy odległość X pomiędzy punktem A i B. W moim przypadku znam lokalizację punktu A i odległość X. Pytanie tylko, jak wyznaczyć na polilinii gdzie jest ten punkt B położony. Mam nadzieję, że nie niamieszałem za bardzo 🙈 No to ja trochę namieszałem. Ale to co chcesz też się da zrobić LISP-em. W wolnej chwili wrzucę w jaki sposób. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kojacek Opublikowano 15 Maja 2018 Zgłoś Udostępnij Opublikowano 15 Maja 2018 Do wyznaczania punktu na krzywej w zadanej odległości od innego punktu na niej się znajdującego przedstawiam funkcję LISP-a: ; ================================================================== ; ; Zwraca punkt (lub nil) znajdujacy sie na krzywej <Curve> w ; ; odleglosci <Dist> od punktu <FromPt> ; ; Dodatnia wartosc <Dist> wyznacza punkt w kierunku zgodnym z ; ; przebiegiem krzywej, ujemna w kierunku przeciwnym ; ; ------------------------------------------------------------------ ; (defun jk:CAL_GetPointAtDist (Curve FromPt Dist / %) (if (setq % (vlax-curve-getDistAtpoint Curve FromPt)) (vlax-curve-getPointAtDist Curve (+ Dist %)) ) ) ; ------------------------------------------------------------------ ; Wymaga ona trzech argumentów: 1) obiektu 3) punktu na nim i 3) odległości. Zwraca punkt lub nil. Poniżej funkcja ilustrująca testowe działanie - po wskazaniu splajnu, punktu na nim (zielone kółko), rysuje 5 (czerwonych okręgów) w odległości 10 20 30 40 i 50 od niego. Kod: (defun C:TEST-A ( / e p) (if (and (setq e (car (entsel "\nKrzywa:"))) (setq p (getpoint "\nOd punktu:")) ) (foreach % '(10 20 30 40 50) (cd:ACX_AddCircle (cd:ACX_ASpace) (jk:CAL_GetPointAtDist e p %) 1 T ) ) ) ) Funkcja testująca wymaga CADPL-Pack'a (https://kojacek.wordpress.com/2015/11/04/cadpl-pack/) a aziałanie wygląda tak: Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
jacnightingale Opublikowano 15 Maja 2018 Autor Zgłoś Udostępnij Opublikowano 15 Maja 2018 3 minuty temu, kojacek napisał: Do wyznaczania punktu na krzywej w zadanej odległości od innego punktu na niej się znajdującego przedstawiam funkcję LISP-a: Kompletnie się na tym nie znam, więc czy mógłbym prosić o gotowego LISP-a do pobrania? Chyba, że wystarczy wrzucić ten tekst do notatnika i zapisać pod odpowiednią nazwą? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.