_

Autolisp - SuperFlatten

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".

Autolisp - SuperFlatten

Postprzez luksky » lip 22, 2011 20:45

Witam, dawno nic nie pisałem gdyż zakupiłem lekturę aby nie zadawać z byt wiele głupich pytań, ale znowu się zaciąłem.
Chciałem wykorzystać lispa którego kiedyś poleciliście mi na forum SuperFlatten do naprawienia sobie rysunków bo bardzo dużo mam własnie rozsianych w przestrzeni. Chciałem to zrobić w ten sposób.
Kod: Zaznacz cały
(defun c:sff (/  DWG lICZBAPOW POR )
(setq DWG(vl-directory-files(setq SCIEZKA (strcat(DRUK_Dirdialog "Wskaż folder z plikami dwg..." nil 0)   "\\"
          )
        )
"*.dwg"))

(Setvar "SDI" 1)
(Setvar "FILEDIA" 0)
(setq lICZBAPOW (length DWG))
(setq POR 0)
(while (< POR lICZBAPOW)
(setq plik (strcat SCIEZKA (strcase(nth POR DWG))))
(command "_.OPEN" plik file)
(c:SuperFlatten)
(princ (nth pOR dwg))
(command "_wClose" )
(setq POR (1+ POR))
)
(Setvar "FILEDIA" 1)
)

(defun DRUK_Dirdialog (msg dir flag / Shell Fold Path)
  (setq *acad (cond (*acad) ((vlax-get-acad-object)))
        Shell (vla-getInterfaceObject *acad "Shell.Application")
        Fold  (vlax-invoke-method Shell 'BrowseForFolder
                (vla-get-HWND *acad) msg flag dir)
  )
  (vlax-release-object Shell)
  (if Fold
    (progn
      (setq Path
        (vlax-get-property
          (vlax-get-property Fold 'Self) 'Path)
      )
      (vlax-release-object Fold)
      (and
        (= "\\" (substr Path (strlen Path)))
        (setq Path (substr Path 1 (1- (strlen Path))))
      )
    )
  )
  Path
)


I o ile pierwszy rysunek otwiera i robi wszystko fajnie to przy drugim wywala błąd tak jakby nie ładowało funkcji.
"Error: Automation Error 80020009; Error accessing [BLOCKS] property. ErrIndex=0"
Co robię źle.
luksky
 
Posty: 314
Dołączył(a): cze 20, 2010 20:25

Re: Autolisp - SuperFlatten

Postprzez z » lip 22, 2011 21:09

luksky napisał(a):Witam, dawno nic nie pisałem gdyż zakupiłem lekturę aby nie zadawać z byt wiele głupich pytań, ale znowu się zaciąłem.
Chciałem wykorzystać lispa którego kiedyś poleciliście mi na forum SuperFlatten do naprawienia sobie rysunków bo bardzo dużo mam własnie rozsianych w przestrzeni. Chciałem to zrobić w ten sposób.
(...)
I o ile pierwszy rysunek otwiera i robi wszystko fajnie to przy drugim wywala błąd tak jakby nie ładowało funkcji.
"Error: Automation Error 80020009; Error accessing [BLOCKS] property. ErrIndex=0"
Co robię źle.

Nie analizowałem kodu, ale ja bym to zrobił inaczej:
_script lub
ScriptPro lub
Sparrow'a ACAutomat
z
z
 
Posty: 1948
Dołączył(a): cze 16, 2009 22:49

Re: Autolisp - SuperFlatten

Postprzez luksky » lip 22, 2011 22:03

No ok ten ACAutomat całkiem fajna rzecz dzięki za rozwiązanie, jednak dalej nurtuje mnie pytanie gdzie mam babola w tym co sobie skleciłem. Zastanawiałem się czy jest to może spowodowane tym że w złym miejscu wstawiłem "(vl-load-com)", czy może znowu jakaś zmienna o której zapomniałem.
luksky
 
Posty: 314
Dołączył(a): cze 20, 2010 20:25

Re: Autolisp - SuperFlatten

Postprzez z » lip 22, 2011 23:16

luksky napisał(a):No ok ten ACAutomat całkiem fajna rzecz dzięki za rozwiązanie, jednak dalej nurtuje mnie pytanie gdzie mam babola w tym co sobie skleciłem. Zastanawiałem się czy jest to może spowodowane tym że w złym miejscu wstawiłem "(vl-load-com)", czy może znowu jakaś zmienna o której zapomniałem.

To nie zadziała w sposób w jaki sobie wymyśliłeś (w lispie). Jakiś czas temu (z 10 lat) Krzysztof "Mazzi" popełnił narzędzie, które przetwarzało katalog. Idea była taka, że (za Autorem):
";;;Program generuje plik skryptowy , konwertujacy !!! wszystkie !!!
;;;rysunki AutoCADa w folderze otwartego rysunku do aktualnej wersji -
(...)
;;;wprowadzając w wykomentowanym miejscu polecenie w formacie
;;;skryptu można np. wstawić do wszystkich rysunków blok lub dokonać
;;;dowolnej edycji wszystkich rysunków"
Moim zdaniem, narzędzie Tadeusza jest bezkonkurencyjne (i przystępne cenowo).
Przez lata używałem do przetwarzania rysunków (nieraz po kilka tysięcy) rożnych narzędzi: mazzi'ego, ScriptPro, sam dziargałem scr w excelu, generowałem różnymi wymyślnymi narzędziami w dosie (np z udziałem jakiegoś Script.exe od żabojadów), ale od kiedy Tadek napisał ACAutomat szkoda mi czasu na wynalazki.
z
z
 
Posty: 1948
Dołączył(a): cze 16, 2009 22:49

Re: Autolisp - SuperFlatten

Postprzez luksky » lip 23, 2011 08:47

Ok. Dzięki za info. W takim razie więcej nie męczę i bawię się scryptami.
luksky
 
Posty: 314
Dołączył(a): cze 20, 2010 20:25

Re: Autolisp - SuperFlatten

Postprzez z » lip 23, 2011 17:04

luksky napisał(a):Ok. Dzięki za info. W takim razie więcej nie męczę i bawię się scryptami.

Niekoniecznie skryptami. Sparrow'owe narzedzie pracuje też z lispami.
z
z
 
Posty: 1948
Dołączył(a): cze 16, 2009 22:49

Re: Autolisp - SuperFlatten

Postprzez luksky » lip 23, 2011 17:14

Zastanawia mnie tylko dlaczego się nie da tak jak chciałem wyżej. Bo na innych lispach które sobie sam skleciłem to działa, a na superflatten właśnie nie. Co najciekawsze jedne plik wykonuje a na kolejnym wywala błąd ( co jest pewnie jakoś logicznie uzasadnione tylko ja tego nie wiem). Dodam jeszcze ze nie testowałem na Autocadzie gdyż nie mam możliwości (Bricscad) ale skoro jeden działa to dlaczego seria nie ?. Jeśli byłbyś tak uprzejmy jakoś łopatologicznie mi wytłumaczyć.
luksky
 
Posty: 314
Dołączył(a): cze 20, 2010 20:25

Re: Autolisp - SuperFlatten

Postprzez kojacek » lip 23, 2011 17:28

luksky napisał(a):Zastanawia mnie tylko dlaczego się nie da tak jak chciałem wyżej. Bo na innych lispach które sobie sam skleciłem to działa, a na superflatten właśnie nie. (...)


Mnie nie zastanawia. Jeżeli to co pokazałeś gdziekolwiek działa, jest to raczej przypadek, czy zbieg okoliczności niż reguła... ;) W całym tym "kodzie" wiecej jest źle niż dobrze...

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

Re: Autolisp - SuperFlatten

Postprzez luksky » lip 23, 2011 18:18

No to w takim wypadku kłaniając się w pas proszę o jakieś cenne uwagi bądź poprawki. O dziwo działa pod bricscadem zainstalowałem autocad przed chwilą tu faktycznie nie działa. Więc jako że cud się zdarzył proszę o uwagi abym więcej nie musiał liczyć na cud.
luksky
 
Posty: 314
Dołączył(a): cze 20, 2010 20:25

Re: Autolisp - SuperFlatten

Postprzez tomek7726 » sty 05, 2019 02:17

autolisp-superflatten-t77216.html#p7665212

gdzie znajdę lub kupię ACAutomat ?
tomek7726
 
Posty: 1
Dołączył(a): sty 05, 2019 01:50


Powrót do AutoCAD

Kto przegląda forum

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