_

[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 » gru 28, 2011 13:11

ZK napisał(a):Chciałbym poddać pod rozważenie taką funkcję, która uwzględnia platformę CAD (AutoCAD, ZwCAD, GstarCAD ...) i przechowa tą informację w zmiennej globalnej *pCAD*.
Może się to przydać (a nawet na pewno się przyda) w wielu funkcjach, zwłaszcza takich, które będą opierały się o ActiveX.
W przypadku AutoCAD, zapewne wersja nie będzie miała znaczenia, ale iCAD jest zmienny jak wiaterek jesienny i każda wersja niesie ze sobą chmurę niespodzianek :)

Kod: Zaznacz cały
; ============================================================ ;
; Wykrycie platformy CAD  (zmienna globalna: *pCAD*)           ;
; ------------------------------------------------------------ ;
; Detection of CAD platforms  (zmienna globalna: *pCAD*)       ;
; ============================================================ ;
(defun CAD:SYS_PlatformCAD (/ pCAD)
   (cond
      (
         (equal (getvar "PRODUCT") "AutoCAD")
         ; info:
         ; (getvar "ACADVER") --> "17.2s (LMS Tech)" lub "18.2s (LMS Tech)"
         (setq *pCAD* (strcat "autocad_" (vl-string-trim " (LMS Tech)" (getvar "ACADVER"))))
         ; wynik:
         ; *pCAD* --> "autocad_18.2s"
      )
      (
         (equal (getvar "PRODUCT") "ZWCAD")
         ; info:
         ; (substr (getvar "VERNUM") 1 10) --> "2011.10.30" lub "2011.06.30"
         (setq *pCAD* (strcat "zwcad_" (substr (getvar "VERNUM") 1 10)))
         ; wynik:
         ; *pCAD* --> "zwcad_2011.10.30"
      )
      (
         (equal (getvar "PRODUCT") "ICAD")
         ; info:
         ; (nth 11 (vl-productinfo)) --> "GstarCAD 2011"
         ; (nth 15 (vl-productinfo)) --> " 110818"
         (setq *pCAD* (strcat "gstarcad_" (vl-string-trim " " (nth 15 (vl-productinfo)))))
         ; wynik:
         ; *pCAD* --> "gstarcad_110818"
      )
   )
)

Tylko proszę nie buczeć - to tylko propozycja 8)

pozdrawiam,
ZK


Ja "pobuczę"... ;) bowiem
1) cond źle wywoływany (winien kończyć się dowolną operacją (zwykle nil) w przypadku niespełnienia żadnego z warunków. W przeciwnym wypadku grozi "wyjebka".
2) nie lubić equal-owania stringów (takie moje "zboczenie")
3) Z punktu widzenia AutoCAD-a, ważniejszymi informacjami są (wersja programu, czy jest 32 czy 64 bit i ewentualnie wersja narodowa)
I teraz proponuję sprawdzić takie wywołanie:
Kod: Zaznacz cały
(list
  (getvar "PRODUCT")
  (atof (getvar "ACADVER"))
  (if (wcmatch (strcase (getenv "PROCESSOR_ARCHITECTURE")) "*64*") 64 32)
  (if
    (setq % (vl-string-search "(" (setq %1 (ver))))
    (strcase (substr %1 (+ 2 %) 2))
    "??"
  )
)

I tak dla polskiego AutoCAD-a 2k10 pod 64-bitową Winą zwróci:
Kod: Zaznacz cały
("AutoCAD" 18.0 64 "PL")

Taka lista może się przydać...
Popatrz czy w podobny sposób mozesz coś wyciagnąć z chińczyków...

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

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

Postprzez ZK » gru 28, 2011 13:25

:)
ZwCAD zwrócił:
wersja 2011 - ("ZWCAD" 16.0000 32 "??")
wersja 2012 - ("ZWCAD" 16.0000 32 "??")

GstarCAD zwrócił:
wersja 2012 - ("ICAD" 18.0000 32 "??")

Obawiam się, że dla tych platform, to będzie za mało, bo tak jak AutoCAD powstaje raz w roku, tak chińczyki się mnożą szybciej i potrafią pojawić się nawet 4 wersje... każda niby tak samo się nazywa np. ZwCAD2011, ale kompilacje mają inny numer i co najgorsze, różnice są w wywoływaniach niektórych funkcji (a to se dodadzą parametr, a to pozamieniają kolejność, a to nie wiadomo dlaczego nagle coś co działało, nie działa).

pozdrawiam,
ZK
**************************************
********* http://madebynati.com *********
**************************************
Avatar użytkownika
ZK
 
Posty: 1082
Dołączył(a): mar 11, 2009 12:08
Lokalizacja: Poznań

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

Postprzez ZK » gru 28, 2011 13:28

Informacje do wyciągnięcia z GstarCAD:

Command: (vl-productinfo)
("UserName" "Imię Nazwisko" "User Company Name" "Firma" "Host Name" "Nazwa" "IP Address" "xxx.xxx.xxx.xx" "Install Directory" "C:\\Program Files\\GstarCAD2011 Professional" "Product Name" "GstarCAD 2011" "Product Version" "11.0 (Professional POL)" "Product Build Number" " 110630" "License Type" "NetWork USB dongle" "Product Number" "0000-0000-0000-0000-0000-0000" "Serial Number" "0000-0000-0000-0000-0000-0000-0000-0000" "Activation Code" "0000-0000-0000-0000" "Expiration Date" "expired")

ZwCAD ma podobnie jak AutoCAD.

Samo polecenie (ver) zwraca:
ZW i GW - "LISP Release 1.0"
**************************************
********* http://madebynati.com *********
**************************************
Avatar użytkownika
ZK
 
Posty: 1082
Dołączył(a): mar 11, 2009 12:08
Lokalizacja: Poznań

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

Postprzez kruuger » gru 28, 2011 14:04

kojacek napisał(a):Masz. Jestem za ostatnią wersją :)

tez mi sie podoba. jak w morde sie prosi to gdzies wrzucic na jakis FTP/DROPBOX gdzie mozna by to latwo zmienic.
co jakis czas plik wedruje na forum.

Kod: Zaznacz cały
; [ACX] ================================================================== ;
; cd:ACX_ADoc          - aktywny dokument                                  ;
; cd:ACX_Model         - obszar modelu                                     ;
; cd:ACX_Paper         - obszar papieru                                    ;
; cd:ACX_Blocks        - kolekcja Blocks                                   ;
; cd:ACX_ASpace        - aktywny obszar                                    ;
; ------------------------------------------------------------------------ ;
; cd:ACX_ADoc          - active document                                   ;
; cd:ACX_Model         - model space                                       ;
; cd:ACX_Paper         - paper space                                       ;
; cd:ACX_Blocks        - blocks collection                                 ;
; cd:ACX_ASpace        - active space                                      ;
; ======================================================================== ;

?

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 ZK » gru 28, 2011 14:31

A nie lepiej tak? Wersja kompaktowa :)

Kod: Zaznacz cały
; [ACX] ================================================================== ;
; cd:ACX_ADoc          - aktywny dokument / active document                ;
; cd:ACX_Model         - obszar modelu    / model space                    ;
; cd:ACX_Paper         - obszar papieru   / paper space                    ;
; cd:ACX_Blocks        - kolekcja Blocks  / blocks collection              ;
; cd:ACX_ASpace        - aktywny obszar   / active space                   ;
; ======================================================================== ;
**************************************
********* http://madebynati.com *********
**************************************
Avatar użytkownika
ZK
 
Posty: 1082
Dołączył(a): mar 11, 2009 12:08
Lokalizacja: Poznań

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

Postprzez kojacek » gru 28, 2011 14:35

ZK napisał(a):A nie lepiej tak? Wersja kompaktowa :)

Kod: Zaznacz cały
; [ACX] ================================================================== ;
; cd:ACX_ADoc          - aktywny dokument / active document                ;
; cd:ACX_Model         - obszar modelu    / model space                    ;
; cd:ACX_Paper         - obszar papieru   / paper space                    ;
; cd:ACX_Blocks        - kolekcja Blocks  / blocks collection              ;
; cd:ACX_ASpace        - aktywny obszar   / active space                   ;
; ======================================================================== ;


no - tak wydaje się dobrze. :)
kojacek
Avatar użytkownika
kojacek
 
Posty: 5500
Dołączył(a): paź 03, 2005 20:17

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

Postprzez kruuger » gru 28, 2011 14:39

ZK napisał(a):A nie lepiej tak? Wersja kompaktowa :)

Kod: Zaznacz cały
; [ACX] ================================================================== ;
; cd:ACX_ADoc          - aktywny dokument / active document                ;
; cd:ACX_Model         - obszar modelu    / model space                    ;
; cd:ACX_Paper         - obszar papieru   / paper space                    ;
; cd:ACX_Blocks        - kolekcja Blocks  / blocks collection              ;
; cd:ACX_ASpace        - aktywny obszar   / active space                   ;
; ======================================================================== ;

o ile opis sie troszke nie rozejdzie. ale chyba jest ladnie. moze byc.
Kod: Zaznacz cały
; [ACX] ================================================================== ;
; cd:ACX_ADoc          - aktywny dokument aktywny dokument aktywny /       ;
;                        active document active document active            ;
; cd:ACX_Model         - obszar modelu                                     ;

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 kojacek » gru 28, 2011 14:43

ZK napisał(a): (...) Obawiam się, że dla tych platform, to będzie za mało, bo tak jak AutoCAD powstaje raz w roku, tak chińczyki się mnożą szybciej i potrafią pojawić się nawet 4 wersje... każda niby tak samo się nazywa np. ZwCAD2011, ale kompilacje mają inny numer i co najgorsze, różnice są w wywoływaniach niektórych funkcji (a to se dodadzą parametr, a to pozamieniają kolejność, a to nie wiadomo dlaczego nagle coś co działało, nie działa).


Co zatem z tym zrobimy? Ja jestem zwolennikiem tej (mojej) wersji - lista czteroelementowa:
Kod: Zaznacz cały
(nazwa_programu  + wersja_programu  + platforma32/64bit + lokalizacja) ->>>
("AutoCAD" 18.0 64 "PL")

Dla AutoCAD-ów będzie to działać, w zalezności od kazdej innej wersji po sprawdzeniu pierwszego elementu listy mozna (lokalnie już) podejmować inne działania... - tak?
Watpliwośc mam co do ustawiania tej listy jako zmienną globalną (wykorzystanie jej - raczej rzadkie), moze po prostu tylko wywołać i doatac listę?

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

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

Postprzez kojacek » gru 28, 2011 14:44

kruuger napisał(a):
ZK napisał(a):A nie lepiej tak? Wersja kompaktowa :)

Kod: Zaznacz cały
; [ACX] ================================================================== ;
; cd:ACX_ADoc          - aktywny dokument / active document                ;
; cd:ACX_Model         - obszar modelu    / model space                    ;
; cd:ACX_Paper         - obszar papieru   / paper space                    ;
; cd:ACX_Blocks        - kolekcja Blocks  / blocks collection              ;
; cd:ACX_ASpace        - aktywny obszar   / active space                   ;
; ======================================================================== ;

o ile opis sie troszke nie rozejdzie. ale chyba jest ladnie. moze byc.
Kod: Zaznacz cały
; [ACX] ================================================================== ;
; cd:ACX_ADoc          - aktywny dokument aktywny dokument aktywny /       ;
;                        active document active document active            ;
; cd:ACX_Model         - obszar modelu                                     ;

k.

Tak będzie ok, w przyszłości dla niektórych opis będzie pewnie mniej lakoniczny...
:)
Avatar użytkownika
kojacek
 
Posty: 5500
Dołączył(a): paź 03, 2005 20:17

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

Postprzez kruuger » gru 28, 2011 14:55

kojacek napisał(a):
ZK napisał(a): (...) Obawiam się, że dla tych platform, to będzie za mało, bo tak jak AutoCAD powstaje raz w roku, tak chińczyki się mnożą szybciej i potrafią pojawić się nawet 4 wersje... każda niby tak samo się nazywa np. ZwCAD2011, ale kompilacje mają inny numer i co najgorsze, różnice są w wywoływaniach niektórych funkcji (a to se dodadzą parametr, a to pozamieniają kolejność, a to nie wiadomo dlaczego nagle coś co działało, nie działa).


Co zatem z tym zrobimy? Ja jestem zwolennikiem tej (mojej) wersji - lista czteroelementowa:
Kod: Zaznacz cały
(nazwa_programu  + wersja_programu  + platforma32/64bit + lokalizacja) ->>>
("AutoCAD" 18.0 64 "PL")

Dla AutoCAD-ów będzie to działać, w zalezności od kazdej innej wersji po sprawdzeniu pierwszego elementu listy mozna (lokalnie już) podejmować inne działania... - tak?
Watpliwośc mam co do ustawiania tej listy jako zmienną globalną (wykorzystanie jej - raczej rzadkie), moze po prostu tylko wywołać i doatac listę?
kojacek

oba na tak. jak kiedys cos tam powstanie to wtedy sie jeszcze pomysli. na razie bym zostawil jak jest.
Avatar użytkownika
kruuger
 
Posty: 4857
Dołączył(a): paź 27, 2005 20:14
Lokalizacja: Kraków

Poprzednia stronaNastępna strona

Powrót do AutoCAD

Kto przegląda forum

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