_

kilometracja po ścieżce

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

Re: kilometracja po ścieżce

Postprzez shock-squad » paź 10, 2011 14:05

Dzięki wielkie, coś z tego ułożymy:]
pozdrawiam
shock-squad
 
Posty: 14
Dołączył(a): paź 07, 2011 12:17

Re: kilometracja po ścieżce

Postprzez kojacek » paź 10, 2011 14:07

ZK napisał(a):Ładnie działa, mam jednak pytanie natury VLispowej:
zauważyłem, że nie zamieniasz obiektu <entity name> OB na obiekt Visual Lisp'a i od razu działasz na nim za pomocą funkcji typu np. vlax-Curve-GetDistAtPoint...

Zatem kiedy (nie)jest wymagana konwersja obiektów na VLispowe (vlax-ename->vla-object) ??

ZK


Niektóre funkcje vlax- działają na Ename i na VLa-Object-ach. Inaczej jest z funkcjami vla-. Te nie mogą mieć Ename

kojacek
Avatar użytkownika
kojacek
 
Posty: 5550
Dołączył(a): paź 03, 2005 20:17

Re: kilometracja po ścieżce

Postprzez kruuger » paź 10, 2011 14:10

kojacek napisał(a):
ZK napisał(a):Ładnie działa, mam jednak pytanie natury VLispowej:
zauważyłem, że nie zamieniasz obiektu <entity name> OB na obiekt Visual Lisp'a i od razu działasz na nim za pomocą funkcji typu np. vlax-Curve-GetDistAtPoint...

Zatem kiedy (nie)jest wymagana konwersja obiektów na VLispowe (vlax-ename->vla-object) ??

ZK


Niektóre funkcje vlax- działają na Ename i na VLa-Object-ach. Inaczej jest z funkcjami vla-. Te nie mogą mieć Ename

kojacek

co ciekawe praca z ename jest szybsza od vla.
k.
Avatar użytkownika
kruuger
 
Posty: 4893
Dołączył(a): paź 27, 2005 20:14
Lokalizacja: Kraków

Re: kilometracja po ścieżce

Postprzez sauron-83 » paź 10, 2011 21:40

kruuger napisał(a):k.

Kruugerze, pozwolilem sobie dodac cosik do Twojego kodu (może nie tak zgrabne jak Twoje czy Kojacka ale działa)

Kod: Zaznacz cały
(defun C:KILO (/ OB BP CI C EN DI TP)
  (vl-load-com)

  (setq OB (entsel "\nWskaz polilinie: "))
  (princ "\nZaznacz znaki: ")
  (setq CI
    (ssget
      (list
        (cons 0 "CIRCLE")
        (cons 410 (getvar "CTAB"))
        (cons -4 "<AND")
          (cons -4 "<OR")
            (cons -4 ">=")
            (cons 40 0.210)
          (cons -4 "OR>")
          (cons -4 "<OR")
            (cons -4 "<=")
            (cons 40 0.212)
          (cons -4 "OR>")
        (cons -4 "AND>")
      )
    )
  )
  (setq C 0)
  (repeat (sslength CI)
    (setq EN (ssname CI C))
    (setq DI
      (vlax-Curve-GetDistAtPoint
        (car OB)
        (setq TP
          (vlax-Curve-GetClosestPointTo
            (car OB)
            (cdr (assoc 10 (entget EN)))
          )
        )
      )
    )
  (setq DI (km_hm))
   
    (entmakex
      (list
        (cons 0 "TEXT")
        (cons 10  TP)
        (cons 40 1.4)
        (cons 62 2)
        (cons 1 DI)
      )
    )
 
   
    (setq C (1+ C))
  )
  (princ)
)

;;------------------------------------


(defun km_hm ( / pik0 pik pik_km pik_km pik_hm_spr)
  (setq pik0 0; początkowy kilometraż
        pik      (+ pik0 DI)
   pik_km      (rtos (/ DI 1000) 2 5)
   pik_km      (atoi pik_km)
   pik_hm      (- DI (* 1000 pik_km))
   pik_km      (rtos pik_km 2 0)
   pik_hm_spr pik_hm
   pik_hm      (rtos pik_hm 2 2)
  );setq
 
  (if (< pik_hm_spr 100)
    (setq pik_hm (strcat "0" pik_hm))
  )
  (if (< pik_hm_spr 10)
    (setq pik_hm (strcat "0" pik_hm))
  )
  (setq pik_tekst (strcat "km " pik_km "+" pik_hm))

)
  (princ)


teraz zwraca w formacie X+XXX,XX
Edited: wywalono kalkulator geometryczny

pozdrawiam sauron
Ostatnio edytowany przez sauron-83 paź 11, 2011 10:10, edytowano w sumie 3 razy
pozdrawiam sauron
sauron-83
 
Posty: 304
Dołączył(a): sie 05, 2008 15:25

Re: kilometracja po ścieżce

Postprzez kruuger » paź 11, 2011 00:56

maly update (kliknac na obrazek)
k.
Załączniki
kilo.gif
Kilo.lsp
(1.66 KiB) Pobrane 127 razy
Avatar użytkownika
kruuger
 
Posty: 4893
Dołączył(a): paź 27, 2005 20:14
Lokalizacja: Kraków

Re: kilometracja po ścieżce

Postprzez kojacek » paź 11, 2011 08:54

sauron-83 napisał(a): (...)
Kod: Zaznacz cały
(defun km_hm ( / pik0 pik pik_km pik_km pik_hm_spr)
  (setq pik0 0
        pik      (cal "pik0+DI")
   pik_km      (rtos (cal "DI/1000") 2 5)
   pik_km      (atoi pik_km)
   pik_hm      (cal "DI-pik_km*1000")
   pik_km      (rtos pik_km 2 0)
   pik_hm_spr pik_hm
   pik_hm      (rtos pik_hm 2 2)
  );setq
 
  (if (< pik_hm_spr 100)
    (setq pik_hm (strcat "0" pik_hm))
  )
  (if (< pik_hm_spr 10)
    (setq pik_hm (strcat "0" pik_hm))
  )
  (setq pik_tekst (strcat "km " pik_km "+" pik_hm))

)
  (princ)



Przyznam... że nie wiem co ta funkcja robi, i nie wiem dlaczego tak... po co są wywoływania kalkulatora?

kojacek
Avatar użytkownika
kojacek
 
Posty: 5550
Dołączył(a): paź 03, 2005 20:17

Re: kilometracja po ścieżce

Postprzez sauron-83 » paź 11, 2011 09:20

kojacek napisał(a):Przyznam... że nie wiem co ta funkcja robi, i nie wiem dlaczego tak... po co są wywoływania kalkulatora?

kojacek

Nie dodałem załadowania kalkulatora geometrycznego :/ uaktualnię w moim poście zaraz
funkcja realizuje to że zamiast opisu '70.52' (miejsce wstawienie znaku)
opisuje/ma opisywać to w formacie zgodnym ze sztuką czyli 'km 0+070.52'
pozdrawiam sauron
sauron-83
 
Posty: 304
Dołączył(a): sie 05, 2008 15:25

Re: kilometracja po ścieżce

Postprzez kruuger » paź 11, 2011 09:25

sauron-83 napisał(a):
kojacek napisał(a):Przyznam... że nie wiem co ta funkcja robi, i nie wiem dlaczego tak... po co są wywoływania kalkulatora?

kojacek

Nie dodałem załadowania kalkulatora geometrycznego :/ uaktualnię w moim poście zaraz
funkcja realizuje to że zamiast opisu '70.52' (miejsce wstawienie znaku)
opisuje/ma opisywać to w formacie zgodnym ze sztuką czyli 'km 0+070.52'

po co ci ten kalkulator ?
zamiast:
Kod: Zaznacz cały
(cal "DI/1000")

dajesz
Kod: Zaznacz cały
(/ DI 1000)

k.
Avatar użytkownika
kruuger
 
Posty: 4893
Dołączył(a): paź 27, 2005 20:14
Lokalizacja: Kraków

Re: kilometracja po ścieżce

Postprzez kojacek » paź 11, 2011 09:25

sauron-83 napisał(a):
kojacek napisał(a):Przyznam... że nie wiem co ta funkcja robi, i nie wiem dlaczego tak... po co są wywoływania kalkulatora?

kojacek

Nie dodałem załadowania kalkulatora geometrycznego :/ uaktualnię w moim poście zaraz
funkcja realizuje to że zamiast opisu '70.52' (miejsce wstawienie znaku)
opisuje/ma opisywać to w formacie zgodnym ze sztuką czyli 'km 0+070.52'


1) Nie jestem drogowcem - objaśnij nieco "sztukę"
2) Po co używać kalkulatora dla działań arytmetycznych dostępnych w LISP-ie?

kojacek
Avatar użytkownika
kojacek
 
Posty: 5550
Dołączył(a): paź 03, 2005 20:17

Re: kilometracja po ścieżce

Postprzez sauron-83 » paź 11, 2011 09:45

kojacek napisał(a):
sauron-83 napisał(a):
kojacek napisał(a):Przyznam... że nie wiem co ta funkcja robi, i nie wiem dlaczego tak... po co są wywoływania kalkulatora?

kojacek

Nie dodałem załadowania kalkulatora geometrycznego :/ uaktualnię w moim poście zaraz
funkcja realizuje to że zamiast opisu '70.52' (miejsce wstawienie znaku)
opisuje/ma opisywać to w formacie zgodnym ze sztuką czyli 'km 0+070.52'


1) Nie jestem drogowcem - objaśnij nieco "sztukę"
2) Po co używać kalkulatora dla działań arytmetycznych dostępnych w LISP-ie?

kojacek

Racja
1) zostało w sumie wyjaśnione format powinien być następujący km [liczba kilometrów] + [liczba metrów]
czyli 70.53 -> km 0+070.53
1123.43 -> km 1+123.43
122993.00 -> km 122+993.00
2) w sumie macie z Kruugerem rację:
funkcję wkleiłem ze swojego lispa, którego używam i bez większych przeróbek wstawiłem tutaj
można śmiało zastąpić wg tego co mówicie
kod został poprawiony

pozdrawiam sauron
pozdrawiam sauron
sauron-83
 
Posty: 304
Dołączył(a): sie 05, 2008 15:25

Poprzednia stronaNastępna strona

Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników