_

[LISP] CADPL-Pack-v1.lsp [Dyskusja]

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: [LISP] CADPL-Pack-v1.lsp [Dyskusja]

Postprzez ziele_o2k » mar 19, 2018 15:57

kojacek napisał(a):(...)Kruuger widzę też. Zatem niechże (jako prezes) założy może konto CAD-Packa(...)

Pewnie wystarczy, że na potrzeby testów u siebie założy.
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 728
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [LISP] CADPL-Pack-v1.lsp [Dyskusja]

Postprzez kruuger » mar 19, 2018 15:58

ziele_o2k napisał(a):
kruuger napisał(a):(...)nie wiem czy mozna pozniej zapiac jakis link na forum, do gotowej, ostatniej wersji CadPack na git?
k.

Coś tutaj chyba https://help.github.com/articles/getting-permanent-links-to-files/

to super. powinno to fajnie dzialac, zawsze jest jakas historia, kto co dodal, kiedy inni moga podejrzec, sprawdzic. widac ladnie wszystkie zmiany.

tymczasem maly fakup od autodesk od wersji 2017 - DATA i CDATE nie zwraca juz milisekund - tylko 000 lub 999.
trzeba by nieco podrasowac cd:SYS_GetDateTime w zaleznosci od wersji.
Ponizej 2017 funkcja zostaja, od 2017 trzeba by zrobic sklejke CDATA + milisekundy ze zmiennej MILLISECS.
cos skrobne to wrzuce
k.
Avatar użytkownika
kruuger
 
Posty: 4839
Dołączył(a): paź 27, 2005 20:14
Lokalizacja: Kraków

Re: [LISP] CADPL-Pack-v1.lsp [Dyskusja]

Postprzez ziele_o2k » mar 19, 2018 16:17

kruuger napisał(a):tymczasem maly fakup od autodesk od wersji 2017 - DATA i CDATE nie zwraca juz milisekund - tylko 000 lub 999.
trzeba by nieco podrasowac cd:SYS_GetDateTime w zaleznosci od wersji.
Ponizej 2017 funkcja zostaja, od 2017 trzeba by zrobic sklejke CDATA + milisekundy ze zmiennej MILLISECS.
cos skrobne to wrzuce
k.

cd:SYS_GetDateTime - jeszcze nie używałem, ale mam w głowie coś do czego trzeba użyć będzie. Tylko musimy pamiętać, że cadpack jeszcze na innych "Autocadach" działa ;)
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 728
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [LISP] CADPL-Pack-v1.lsp [Dyskusja]

Postprzez ziele_o2k » mar 20, 2018 16:41

W oczekiwaniu na info od Prezesa dot. githuba:
one-lisp-to-rule-them-all.png
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 728
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [LISP] CADPL-Pack-v1.lsp [Dyskusja]

Postprzez kruuger » mar 20, 2018 23:08

ziele_o2k napisał(a):W oczekiwaniu na info od Prezesa dot. githuba:
one-lisp-to-rule-them-all.png

takie cos na poczatek?
https://github.com/kruuger/CADPL-Pack-v1
k.
Avatar użytkownika
kruuger
 
Posty: 4839
Dołączył(a): paź 27, 2005 20:14
Lokalizacja: Kraków

Re: [LISP] CADPL-Pack-v1.lsp [Dyskusja]

Postprzez ziele_o2k » mar 21, 2018 00:56

kruuger napisał(a):takie cos na poczatek?
https://github.com/kruuger/CADPL-Pack-v1
k.

Dokładnie, zobaczymy co się z tym da zrobić - pod koniec tygodnia coś tam postaram się już namieszać :twisted: .
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 728
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [LISP] CADPL-Pack-v1.lsp [Dyskusja]

Postprzez ziele_o2k » mar 22, 2018 19:23

Do sprawdzenia:
Kod: Zaznacz cały
(defun pz:fnsplitl ( @fn / _str_lst _res _p1 _p2 _1st_elm _str_lst  )
  (setq _str_lst (vl-string->list @fn))
  (if (member 47 _str_lst)
    (setq
      @fn (vl-string-translate "/" "\\" @fn)
      _str_lst (vl-string->list @fn)
    )
  )
  (cond
    ( (or
        (= (last _str_lst) 92)
        (= (car  _str_lst) 46)
        (= @fn "")
      )
      (setq _res nil)
    )
    ( (setq _p1 (vl-string-position 92 @fn nil t))
      (setq _1st_elm (substr @fn 1 (1+ _p1)))
      (if (and (setq _p2 (vl-string-position 46 @fn nil t)) (< _p1 _p2))
        (setq _res
          (list
            _1st_elm
            (substr @fn (+ 2 _p1) (- _p2 _p1 1))
            (substr @fn (1+ _p2))
          )
        )
        (setq _res
          (list
            _1st_elm
            (substr @fn (+ 2 _p1))
            ""
          )
        )
      )
    )
    ( T
      (if (setq _p2 (vl-string-position 46 @fn nil t))
        (setq _res
          (list
            ""
            (substr @fn 1 (- _p2 1))
            (substr @fn (1+ _p2))
          )
        )
        (setq _res
          (list
            ""
            @fn
            ""
          )
        )
      )
    )
  )
  _res
)


Kod: Zaznacz cały
(progn
  (print "fnsplitl")
  (print (fnsplitl "C:\\Test\\Test.dwg"))
  (print (fnsplitl "C:\\Test\\"))
  (print (fnsplitl "C:\\Test"))
  (print (fnsplitl "C:\\"))
  (print (fnsplitl "Test"))
  (print (fnsplitl "Test.dwg"))
  (print (fnsplitl ".dwg"))
  (print (fnsplitl "C:/Test/Test.dwg"))
  (print (fnsplitl "C:/Test/"))
  (print (fnsplitl "C:/Test"))
  (print "pz:fnsplitl")
  (print (pz:fnsplitl "C:\\Test\\Test.dwg"))
  (print (pz:fnsplitl "C:\\Test\\"))
  (print (pz:fnsplitl "C:\\Test"))
  (print (pz:fnsplitl "C:\\"))
  (print (pz:fnsplitl "Test"))
  (print (pz:fnsplitl "Test.dwg"))
  (print (pz:fnsplitl ".dwg"))
  (print (pz:fnsplitl "C:/Test/Test.dwg"))
  (print (pz:fnsplitl "C:/Test/"))
  (print (pz:fnsplitl "C:/Test"))
  (print "fnsplitl time")
  (setq time (getvar "MilliSecs"))
  (repeat 50000
    (fnsplitl "C:\\Test\\Test.dwg")
    (fnsplitl "C:/Test/Test.dwg")
  )
  (print (* (- (getvar "MilliSecs") time)1E-3) )
  (print "pz:fnsplitl time")
  (setq time (getvar "MilliSecs"))
  (repeat 50000
    (pz:fnsplitl "C:\\Test\\Test.dwg")
    (pz:fnsplitl "C:/Test/Test.dwg")
  )
  (print (* (- (getvar "MilliSecs") time)1E-3) )
  (princ)
)

u mnie wychodzi
  1. fnsplitl ~2.06s
  2. pz:fnsplitl ~0.83s
I uwaga jeśli ścieżka jest w formie C:/xxx/xx.dwg to cadowe fnsplitl jest zdecydowanie szybsze, ale jeśli ścieżka jest w formie C:\\xxx\\xx.dwg to moje śmiga lepiej.
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 728
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [LISP] CADPL-Pack-v1.lsp [Dyskusja]

Postprzez kruuger » mar 23, 2018 00:29

mi wychodzi ze ten cadowski fnsplitl to jakis gniot :shock:
Załączniki
test.png
Avatar użytkownika
kruuger
 
Posty: 4839
Dołączył(a): paź 27, 2005 20:14
Lokalizacja: Kraków

Re: [LISP] CADPL-Pack-v1.lsp [Dyskusja]

Postprzez ziele_o2k » mar 23, 2018 23:25

kruuger napisał(a):mi wychodzi ze ten cadowski fnsplitl to jakis gniot :shock:

Teraz to można benchmarkować :D
Kod: Zaznacz cały
Polecenie: (benchmark '( (fnsplitl "C:\\Test\\Test.dwg") (pz:fnsplitl "C:\\Test\\Test.dwg") ))
Elapsed milliseconds / relative speed for 32768 iteration(s):

    (PZ:FNSPLITL "C:\\Test\\Test.dwg").....1031 / 1.85 <fastest>
    (FNSPLITL "C:\\Test\\Test.dwg")........1906 / 1 <slowest>

Polecenie: (benchmark '( (fnsplitl "C:/Test/Test.dwg") (pz:fnsplitl "C:/Test/Test.dwg") ))
Elapsed milliseconds / relative speed for 32768 iteration(s):

    (PZ:FNSPLITL "C:/Test/Test.dwg").....1031 / 1.86 <fastest>
    (FNSPLITL "C:/Test/Test.dwg")........1922 / 1 <slowest>
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 728
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [LISP] CADPL-Pack-v1.lsp [Dyskusja]

Postprzez ziele_o2k » kwi 09, 2018 10:31

Zostawiam tutaj bo nie usiadłem cały czas do githuba :)
Kod: Zaznacz cały
; =========================================================================================== ;
; Lista wystapien elementu na liscie / List of occurrences item in the list                   ;
;  Item [INT]  - element / element                                                            ;
;  Lst  [LIST] - lista wejsciowa / input list                                                 ;
; ------------------------------------------------------------------------------------------- ;
; (cd:LST_ItemPosition 1 (list 0 "a" 1 "b" 3 1))                                              ;
; =========================================================================================== ;
(defun cd:LST_ItemPosition11 (Item Lst / n p res)
  (setq n -1)
  (while
    (setq p (vl-position Item Lst))
    (setq res (cons (setq n (+ 1 n p)) res))
    (setq Lst (cdr (member Item Lst)))
  )
  (reverse res)
)

Działa szybciej niż to co jest teraz.
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 728
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Poprzednia stronaNastępna strona

Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot]