Dzięki wielkie, coś z tego ułożymy:]
pozdrawiam
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
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
kruuger napisał(a):k.
(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)
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)
kojacek napisał(a):Przyznam... że nie wiem co ta funkcja robi, i nie wiem dlaczego tak... po co są wywoływania kalkulatora?
kojacek
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'
(cal "DI/1000")
(/ DI 1000)
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'
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
Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników