_

[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 kojacek » sty 01, 2012 12:33

Zaczynamy noworocznie? Wrzucam do dyskusji ogólną funkcję zwracajacą listę par kropkowych (nazwa . wartość) aktualnych symboli LISP-a. Jako uniwersalna, posiada argument, który pozwala podać łańcuch tekstowy bedacy początkiem nazwy poszukiwanych symboli (zmiennych-funkcji-stałych). Jeśli argument to NIL, zwraca listę "naszych" zmiennych globalnych (*cd-...)
np.
Kod: Zaznacz cały
(cd:LSP_GetSymbols nil)

daje:
Kod: Zaznacz cały
(("*CD-ACADINFO*" "AutoCAD" 18.0 64 "PL") ("*CD-ACTIVEDOCUMENT*" . #<VLA-OBJECT
IAcadDocument 0000000024a4fe20>) ("*CD-BLOCKS*" . #<VLA-OBJECT IAcadBlocks
0000000025c068c8>))

a np.:
Kod: Zaznacz cały
(cd:LSP_GetSymbols "acad")
zwraca:
Kod: Zaznacz cały
(("ACAD-POP-DBMOD" . #<SUBR @00000000290a8930 <EXRXSUBR>>) ("ACAD-PUSH-DBMOD" .
#<SUBR @00000000290a8930 <EXRXSUBR>>) ("ACADSECURITYPARAMS_ADD_TIMESTAMP" . 32)
("ACADSECURITYPARAMS_ALGID_RC4" . 26625) ("ACADSECURITYPARAMS_ENCRYPT_DATA" .
1) ("ACADSECURITYPARAMS_ENCRYPT_PROPS" . 2) ("ACADSECURITYPARAMS_SIGN_DATA" .
16) ("ACAD_COLORDLG" . #<SUBR @00000000290a8930 <EXRXSUBR>>) ("ACAD_HELPDLG" .
#<SUBR @0000000029e572c8 ACAD_HELPDLG>) ("ACAD_STRLSORT" . #<SUBR
@00000000290a8930 <EXRXSUBR>>) ("ACAD_TRUECOLORCLI" . #<SUBR @00000000290a8930
<EXRXSUBR>>) ("ACAD_TRUECOLORDLG" . #<SUBR @00000000290a8930 <EXRXSUBR>>))

Funkcja wyglada tak:
Kod: Zaznacz cały
;;; ==================================================================== ;;;
; zwraca liste symboli LISP-a / gets an actual LISPs symbols list          ;
;;; ==================================================================== ;;;
(defun cd:LSP_GetSymbols (Str / l)
  (if
    (setq l
      (vl-remove-if
        '(lambda (%)
           (if
             (not Str)
             (/= (strcase (substr % 1 4)) "*CD-")
             (/= (strcase (substr % 1 (strlen Str)))(strcase Str))
           )
         )
         (atoms-family 1)
      )
    )
    (mapcar
      '(lambda (%)(cons % (vl-symbol-value (read %))))
      (vl-sort l '<)
    )
    nil
  )
)


Do dyskusji też (są różne szkoły), czy pewne wywołania quote-ujemy, dajemy function, czy też pozostawiamy apostrof?

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

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

Postprzez kruuger » sty 01, 2012 13:19

nigdy do konca nie widzialem roznicy miedzy dwoma sposobami.
czy ma to znaczenie dopiero przy kompilacji kodu, ze niby szybciej moze dzialac ?

Tells the Visual LISPTM compiler to link and optimize an argument as if it were
a built-in function

(function symbol | lambda-expr)

The function function is identical to the quote function, except it tells the
Visual LISP compiler to link and optimize the argument as if it were a built-in
function or defun.


Compiled lambda expressions that are quoted by function will contain debugging
information when loaded into the Visual LISP IDE.

k.

EDIT: zapomnialem calkiem o benchmarku. ale chyba faktycznie FUNCTION jest szybsze, oczywiscie skompilowane.
wyszlo ze kompilacja jest lepsza 1.12 raza. czyli zawsze cos.
Avatar użytkownika
kruuger
 
Posty: 4857
Dołączył(a): paź 27, 2005 20:14
Lokalizacja: Kraków

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

Postprzez kojacek » sty 01, 2012 16:11

kruuger napisał(a):nigdy do konca nie widzialem roznicy miedzy dwoma sposobami.
czy ma to znaczenie dopiero przy kompilacji kodu, ze niby szybciej moze dzialac ?

Tells the Visual LISPTM compiler to link and optimize an argument as if it were
a built-in function

(function symbol | lambda-expr)

The function function is identical to the quote function, except it tells the
Visual LISP compiler to link and optimize the argument as if it were a built-in
function or defun.


Compiled lambda expressions that are quoted by function will contain debugging
information when loaded into the Visual LISP IDE.

k.

EDIT: zapomnialem calkiem o benchmarku. ale chyba faktycznie FUNCTION jest szybsze, oczywiscie skompilowane.
wyszlo ze kompilacja jest lepsza 1.12 raza. czyli zawsze cos.


Możemy uwówic sie na function. Ja zwykle "jadę" apostrofem (bo szybciej). Function była kiedyś (przez długi czas) funkcją nieudokumentowaną - o czym nie wszyscy wiedzą. Zatem nasza funkcja z function wyglada teraz tak:
Kod: Zaznacz cały
;;; ==================================================================== ;;;
; zwraca liste symboli LISP-a / gets an actual LISPs symbols list          ;
;;; ==================================================================== ;;;
(defun cd:LSP_GetSymbols (Str / l)
  (if
    (setq l
      (vl-remove-if
        (function
          (lambda (%)
            (if
              (not Str)
              (/= (strcase (substr % 1 4)) "*CD-")
              (/= (strcase (substr % 1 (strlen Str)))(strcase Str))
            )
          )
        )
        (atoms-family 1)
      )
    )
    (mapcar
      (function
        (lambda (%)(cons % (vl-symbol-value (read %))))
      )
      (vl-sort l '<)
    )
    nil
  )
)

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

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

Postprzez kojacek » sty 01, 2012 18:55

Oczywiście jednym z zastosowań może być sprawdzenie ilości funkcji w CADPL-Pack. Wywołanie:
Kod: Zaznacz cały
(mapcar 'car (cd:LSP_GetSymbols "cd:"))

zwraca listę:
Kod: Zaznacz cały
(
"CD:ACX_ADOC"
"CD:ACX_ASPACE"
"CD:ACX_BLOCKS"
"CD:ACX_MODEL"
"CD:ACX_PAPER"
"CD:LSP_GETSYMBOLS"
"CD:SYS_ACADINFO"
)


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

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

Postprzez badziewiak » sty 01, 2012 20:03

Tak z wlasnego doswiadczenia radze wam: Do przetwarzania tektow siegnijcie po regular expressions. To jest naprawde niebanalne narzedzie. Ja uzywam tego w moich algorytmach do wyszukiwania tekstow (wyszukiwanie tekstow w rysunkach o podanym folderze, pajak do tekstow, operacje przeszukiwania treści wpisow rejestru) oraz zmiany koloru w MText (podmiana \Cxxx na \Cyyy). Na poczatku wydaje sie to toporne, ale jak sie troche wejdzie w temat, to naprawde, bez tego trzeba pisac skomplikowane petle, przy ktorych mozna sie latwo pomylic. A jak chcecie sie tym bawic, to macie garsc linkow:
http://www.regular-expressions.info/wordboundaries.html
http://www.egrafik.pl/kurs-regex-wyrazenia-regularne/
http://www.antylameriada.net/wphppreg/
http://regexlib.com/CheatSheet.aspx

Sluze tez swoim mniejszym lub wiekszym doswiadczeniem.
badziewiak

WARTO WIEDZIEĆ: https://www.dropbox.com/s/qarh4io79f6okzy/IslamPowerX.pps?dl=1
Avatar użytkownika
badziewiak
 
Posty: 2298
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D

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

Postprzez badziewiak » sty 01, 2012 21:03

badziewiak napisał(a):Tak z wlasnego doswiadczenia radze wam: Do przetwarzania tektow siegnijcie po regular expressions. To jest naprawde niebanalne narzedzie. Ja uzywam tego w moich algorytmach do wyszukiwania tekstow (wyszukiwanie tekstow w rysunkach o podanym folderze, pajak do tekstow, operacje przeszukiwania treści wpisow rejestru) oraz zmiany koloru w MText (podmiana \Cxxx na \Cyyy). Na poczatku wydaje sie to toporne, ale jak sie troche wejdzie w temat, to naprawde, bez tego trzeba pisac skomplikowane petle, przy ktorych mozna sie latwo pomylic. A jak chcecie sie tym bawic, to macie garsc linkow:
http://www.regular-expressions.info/wordboundaries.html
http://www.egrafik.pl/kurs-regex-wyrazenia-regularne/
http://www.antylameriada.net/wphppreg/
http://regexlib.com/CheatSheet.aspx

Sluze tez swoim mniejszym lub wiekszym doswiadczeniem.

Przykladowe uzycie w moim pajaku: Szukam wyrazen zawierajacych GPD/, wiec wpisuje:
GPD1/
i wyplulo:
Kod: Zaznacz cały
Wzorzec   Ilość   Dopasowano do:   Ilość   
GPD1/   30   GPD1/3/17   1   
      GPD1/3/18   1   
      GPD1/3A/21   1   
      GPD1/3A/22   1   
      GPD1/3A/23   1   
      GPD1/3A/24   1   
      GPD1/4A/1   1   
      GPD1/4A/10   1   
      GPD1/4A/11   1   
      GPD1/4A/12   1   
      GPD1/4A/13   1   
      GPD1/4A/14   1   
      GPD1/4A/15   1   
      GPD1/4A/16   1   
      GPD1/4A/17   1   
      GPD1/4A/18   1   
      GPD1/4A/19   1   
      GPD1/4A/2   1   
      GPD1/4A/20   1   
      GPD1/4A/21   1   
      GPD1/4A/22   1   
      GPD1/4A/23   1   
      GPD1/4A/24   1   
      GPD1/4A/3   1   
      GPD1/4A/4   1   
      GPD1/4A/5   1   
      GPD1/4A/6   1   
      GPD1/4A/7   1   
      GPD1/4A/8   1   
      GPD1/4A/9   1   

czyli nic szczegolnego. Jesli jednak chce znalezc GPD1/nrA, to wpisze:
GPD1/\dA, czyli znajdz GPD1/cyfraA. Wyplulo:
Kod: Zaznacz cały
Wzorzec   Ilość   Dopasowano do:   Ilość   
GPD1/3A   4   GPD1/3A/21   1   
      GPD1/3A/22   1   
      GPD1/3A/23   1   
      GPD1/3A/24   1   
            
GPD1/4A   24   GPD1/4A/1   1   
      GPD1/4A/10   1   
      GPD1/4A/11   1   
      GPD1/4A/12   1   
      GPD1/4A/13   1   
      GPD1/4A/14   1   
      GPD1/4A/15   1   
      GPD1/4A/16   1   
      GPD1/4A/17   1   
      GPD1/4A/18   1   
      GPD1/4A/19   1   
      GPD1/4A/2   1   
      GPD1/4A/20   1   
      GPD1/4A/21   1   
      GPD1/4A/22   1   
      GPD1/4A/23   1   
      GPD1/4A/24   1   
      GPD1/4A/3   1   
      GPD1/4A/4   1   
      GPD1/4A/5   1   
      GPD1/4A/6   1   
      GPD1/4A/7   1   
      GPD1/4A/8   1   
      GPD1/4A/9   1               

Gdybym chcial odfiltrowac GPDnr/nrA/nr(5-10), to wpisze:
GPD\d/\dA/([5-9]|10)
i wyplulo:
Kod: Zaznacz cały
Wzorzec   Ilość   Dopasowano do:   Ilość   
GPD1/4A/10   1   GPD1/4A/10   1   
GPD1/4A/5   1   GPD1/4A/5   1   
GPD1/4A/6   1   GPD1/4A/6   1   
GPD1/4A/7   1   GPD1/4A/7   1   
GPD1/4A/8   1   GPD1/4A/8   1   
GPD1/4A/9   1   GPD1/4A/9   1   
GPD2/1A/10   1   GPD2/1A/10   1   
GPD2/1A/5   1   GPD2/1A/5   1   
GPD2/1A/6   1   GPD2/1A/6   1   
GPD2/1A/7   1   GPD2/1A/7   1   
GPD2/1A/8   1   GPD2/1A/8   1   
GPD2/1A/9   1   GPD2/1A/9   1   

Wystarczy znac parenascie kodow sterujacych i troche wiecej ich kombinacji, a mozna zdzialac naprawde sporo.
badziewiak

WARTO WIEDZIEĆ: https://www.dropbox.com/s/qarh4io79f6okzy/IslamPowerX.pps?dl=1
Avatar użytkownika
badziewiak
 
Posty: 2298
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D

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

Postprzez kojacek » sty 01, 2012 21:45

badziewiak napisał(a):Sluze tez swoim mniejszym lub wiekszym doswiadczeniem.

Trochę za wcześnie teraz o tym mówić, bowiem jeszcze nie kombinowaliśmy na razie z funkcjami operujacymi na łańcuchach. Niemniej pewnie do tego dojdzie, zatem pewnie skorzystać będziemy chcieli z każdej podpowiedzi :)
badziewiak napisał(a): Przykladowe uzycie w moim pajaku: Szukam wyrazen zawierajacych GPD/, wiec wpisuje:
GPD1/
i wyplulo:
Kod: Zaznacz cały
Wzorzec   Ilość   Dopasowano do:   Ilość   
GPD1/   30   GPD1/3/17   1   
      GPD1/3/18   1   
      GPD1/3A/21   1   
      GPD1/3A/22   1   
      GPD1/3A/23   1   
      GPD1/3A/24   1   
      GPD1/4A/1   1   
      GPD1/4A/10   1   
      GPD1/4A/11   1   
      GPD1/4A/12   1   
      GPD1/4A/13   1   
      GPD1/4A/14   1   
      GPD1/4A/15   1   
      GPD1/4A/16   1   
      GPD1/4A/17   1   
      GPD1/4A/18   1   
      GPD1/4A/19   1   
      GPD1/4A/2   1   
      GPD1/4A/20   1   
      GPD1/4A/21   1   
      GPD1/4A/22   1   
      GPD1/4A/23   1   
      GPD1/4A/24   1   
      GPD1/4A/3   1   
      GPD1/4A/4   1   
      GPD1/4A/5   1   
      GPD1/4A/6   1   
      GPD1/4A/7   1   
      GPD1/4A/8   1   
      GPD1/4A/9   1   

czyli nic szczegolnego. Jesli jednak chce znalezc GPD1/nrA, to wpisze:
GPD1/\dA, czyli znajdz GPD1/cyfraA. Wyplulo:
Kod: Zaznacz cały
Wzorzec   Ilość   Dopasowano do:   Ilość   
GPD1/3A   4   GPD1/3A/21   1   
      GPD1/3A/22   1   
      GPD1/3A/23   1   
      GPD1/3A/24   1   
            
GPD1/4A   24   GPD1/4A/1   1   
      GPD1/4A/10   1   
      GPD1/4A/11   1   
      GPD1/4A/12   1   
      GPD1/4A/13   1   
      GPD1/4A/14   1   
      GPD1/4A/15   1   
      GPD1/4A/16   1   
      GPD1/4A/17   1   
      GPD1/4A/18   1   
      GPD1/4A/19   1   
      GPD1/4A/2   1   
      GPD1/4A/20   1   
      GPD1/4A/21   1   
      GPD1/4A/22   1   
      GPD1/4A/23   1   
      GPD1/4A/24   1   
      GPD1/4A/3   1   
      GPD1/4A/4   1   
      GPD1/4A/5   1   
      GPD1/4A/6   1   
      GPD1/4A/7   1   
      GPD1/4A/8   1   
      GPD1/4A/9   1               

Gdybym chcial odfiltrowac GPDnr/nrA/nr(5-10), to wpisze:
GPD\d/\dA/([5-9]|10)
i wyplulo:
Kod: Zaznacz cały
Wzorzec   Ilość   Dopasowano do:   Ilość   
GPD1/4A/10   1   GPD1/4A/10   1   
GPD1/4A/5   1   GPD1/4A/5   1   
GPD1/4A/6   1   GPD1/4A/6   1   
GPD1/4A/7   1   GPD1/4A/7   1   
GPD1/4A/8   1   GPD1/4A/8   1   
GPD1/4A/9   1   GPD1/4A/9   1   
GPD2/1A/10   1   GPD2/1A/10   1   
GPD2/1A/5   1   GPD2/1A/5   1   
GPD2/1A/6   1   GPD2/1A/6   1   
GPD2/1A/7   1   GPD2/1A/7   1   
GPD2/1A/8   1   GPD2/1A/8   1   
GPD2/1A/9   1   GPD2/1A/9   1   

Wystarczy znac parenascie kodow sterujacych i troche wiecej ich kombinacji, a mozna zdzialac naprawde sporo.

Obecnie w LISP-ie parę kombinacji vl-string... + wcmatch+ (ewentualnie) acet-string-... daje dość duże możliwości manipulacji (wyszukiwania/zamiany) na stringach ( ;) ), niemniej (chyba) nie odpowiada w pełni regex, być może trzeba będzie się temu przyjrzeć dokładniej.

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

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

Postprzez kojacek » sty 01, 2012 23:12

Tak się zastanawiam nad tym LISP-owym wcmatch i... Zrobiłem do "badan" taka liste
Kod: Zaznacz cały
(setq lst
  '("bla" "sra" "GPD1/3/17" "GPD1/3/18" "GPD1/3A/21" "GPD1/3A/22" "abc" "gvb123/90"
    "GPD1/3A/23" "ABC1/45/23" "GPD1/3A/24" "ABC1/45/24" "GPD1/4A/1" "GPD1/4A/10"
    "GPD1/4A/11" "GPD1/4A/12" "ABC1/45/29" "GPD1/4A/13" "GPD1/4A/14" "GPD1/1A/10"
    "GPD1/4A/15" "GPD1/4A/16" "GPD1/4A/17" "GPD1/4A/18" "AsV1/45/23" "YYZ1/45/23"
    "GPD1/4A/19" "GPD1/4A/2" "GPD1/4A/20" "GPD1/4A/21" "ABs/435/45ty" "ABs/435/e778"
    "GPD1/4A/22" "GPD1/4A/23" "GPD1/4A/24" "ABs/435/eyuoi" "GPD1/4A/3" "band/405/gzy"
    "GPD1/4A/4" "GPD1/4A/5" "GPD1/4A/6" "GPD1/4A/7" "Aulla/435/eyuoi" "ABs/43e/345"
    "GPD1/4A/8" "GPD1/4A/9" "GPD1/4A/10"
  )
)
i teraz
badziewiak napisał(a):Przykladowe uzycie w moim pajaku: Szukam wyrazen zawierajacych GPD/, wiec wpisuje: GPD1/

Lispem moze byc tak:
Kod: Zaznacz cały
(vl-remove-if-not '(lambda (%)(wcmatch % "GPD1/*")) lst)

zwraca:
Kod: Zaznacz cały
("GPD1/3/17" "GPD1/3/18" "GPD1/3A/21" "GPD1/3A/22" "GPD1/3A/23" "GPD1/3A/24"
"GPD1/4A/1" "GPD1/4A/10" "GPD1/4A/11" "GPD1/4A/12" "GPD1/4A/13" "GPD1/4A/14"
"GPD1/1A/10" "GPD1/4A/15" "GPD1/4A/16" "GPD1/4A/17" "GPD1/4A/18" "GPD1/4A/19"
"GPD1/4A/2" "GPD1/4A/20" "GPD1/4A/21" "GPD1/4A/22" "GPD1/4A/23" "GPD1/4A/24"
"GPD1/4A/3" "GPD1/4A/4" "GPD1/4A/5" "GPD1/4A/6" "GPD1/4A/7" "GPD1/4A/8"
"GPD1/4A/9" "GPD1/4A/10")

badziewiak napisał(a): czyli nic szczegolnego. Jesli jednak chce znalezc GPD1/nrA, to wpisze: GPD1/\dA, czyli znajdz GPD1/cyfraA.

LISP:
Kod: Zaznacz cały
(vl-remove-if-not '(lambda (%)(wcmatch % "GPD1/#A*")) lst)
zwróci:
Kod: Zaznacz cały
("GPD1/3A/21" "GPD1/3A/22" "GPD1/3A/23" "GPD1/3A/24" "GPD1/4A/1" "GPD1/4A/10"
"GPD1/4A/11" "GPD1/4A/12" "GPD1/4A/13" "GPD1/4A/14" "GPD1/1A/10" "GPD1/4A/15"
"GPD1/4A/16" "GPD1/4A/17" "GPD1/4A/18" "GPD1/4A/19" "GPD1/4A/2" "GPD1/4A/20"
"GPD1/4A/21" "GPD1/4A/22" "GPD1/4A/23" "GPD1/4A/24" "GPD1/4A/3" "GPD1/4A/4"
"GPD1/4A/5" "GPD1/4A/6" "GPD1/4A/7" "GPD1/4A/8" "GPD1/4A/9" "GPD1/4A/10")

badziewiak napisał(a): Gdybym chcial odfiltrowac GPDnr/nrA/nr(5-10), to wpisze: GPD\d/\dA/([5-9]|10)

a LISP:
Kod: Zaznacz cały
(vl-remove-if-not '(lambda (%)(wcmatch % "GPD#/#A/[5-9],GPD#/#A/[1][0]")) lst)

da w efekcie:
Kod: Zaznacz cały
("GPD1/4A/10" "GPD1/1A/10" "GPD1/4A/5" "GPD1/4A/6" "GPD1/4A/7" "GPD1/4A/8"
"GPD1/4A/9" "GPD1/4A/10")

... czyli da się... ;)

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

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

Postprzez kruuger » sty 01, 2012 23:26

regex uzywa sie chyba glownie zeby przecedzic to:
Kod: Zaznacz cały
"\\A1;{\\T1.1;\\C1;a\\C256; \\H1.2x;\\C2;b\\H0.83333x;\\C256; \\C3;c} {\\H0.7x;\\C4;\\S1#2;}"

i miec:
Kod: Zaznacz cały
"a b c 1/2"

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

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

Postprzez badziewiak » sty 02, 2012 00:08

Wszystko fajnie, tylko ja akurat uzywam regex w dosyc szerokim zakresie, np. do szukania wpisow rejestru najnowszego cada. Pewnie da sie zrobic to naokolo, nawet za pomoca jakiejs karkolomnej petli, ale w regex jest wszystko w jednym miejscu. Pisze jedna formulke, ktora wprowadzam do okna (opcjonalnie) i to zalatwia mi wszystko, nie musze modyfikowac kodu makra. Moge dowolnie formulowac kryteria wyszukiwania. Nie musze ograniczac sie do wyrazen wieloznacznych w acadzie, bo mam zamiast tego szersze mozliwosci. Oczywiscie ta opcja jest tylko dla tych, ktorzy znaja regex, ale dzieki temu nie musze kombinowac w kodzie, tylko zmieniam formulke jak mi pasi i to naprawde sie sprawdza.
badziewiak

WARTO WIEDZIEĆ: https://www.dropbox.com/s/qarh4io79f6okzy/IslamPowerX.pps?dl=1
Avatar użytkownika
badziewiak
 
Posty: 2298
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D

Poprzednia stronaNastępna strona

Powrót do AutoCAD

Kto przegląda forum

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