CADsite forum

AutoCAD => Autolisp => Topic gestart door: Atwist op do 19 05 2011, 17:23:37

Titel: krijg lisp niet gestart (Opgelost)
Bericht door: Atwist op do 19 05 2011, 17:23:37
Hallo forumleden,

Ik probeer een lisp te start via een andere lisp met dcl, maar ik krijg het niet werkend.
Zal wel iets stoms over het hoofd zien.

   (action_tile "tabel" "(do_act $key)")
((= op "tabel")
      (command "_load" "_table.lsp" "tab")

en de dcl
: button {
key = "tabel";
label = "Tabel menu";

Volgens mij zou het zo moeten werken.
Titel: Re:krijg lisp niet gestart
Bericht door: roy_043 op do 19 05 2011, 18:28:39
Je laat weinig code zien. Maar misschien bedoel je dit:
  (action_tile "tabel" "(setq op $key)")
  (if (= op "tabel")
    (progn
      (load "table.lsp")
      (command "tab")
    )
  )
Titel: Re:krijg lisp niet gestart
Bericht door: Atwist op do 19 05 2011, 20:01:59
Hallo Roy,

Dit werkt hellaas ook niet.

Hier de hele code
(defun c:tsm ()
  (defun do_act (key_pr)
    (setq op key_pr)
    (if (= key_pr "cancel")
      (setq loop 0)
    )
    (setq dlg_pt (done_dialog loop))
  )
  (setq id   (load_dialog "start")
loop 1
  )
  (if (< id 0)
    (exit)
  )
  (if (not dlg_pt)
    (setq dlg_pt (list -1 -1))
  )
  (while (/= loop 0)
    (if (not (new_dialog "start" id "" dlg_pt))
      (exit)
    )

      (action_tile "tabel" "(do_act $key)")
      (action_tile "cancel" "(do_act $key)")

   
    (start_dialog)
  (cond
      (if (= op "tabel")
      (load "table.lsp")
      (command "tab")
    )
  ))
  )
(princ "\n Start menu\n")
(prin1) ; end start.LSP



De lisp start wel de table.lisp, maar gaat niet verder.

"Command: tab Unknown command "TAB".  Press F1 for help."
Titel: Re:krijg lisp niet gestart
Bericht door: roy_043 op do 19 05 2011, 20:36:40
Atwist je moet jouw kennis over (cond) en (if) nog eens goed opfrissen...
Misschien zo dan:

(defun c:tsm ( / id op)
 (defun do_act (key_pr)
   (setq op key_pr)
   (setq dlg_pt (done_dialog))
 )
 (setq id (load_dialog "start"))
 (if (< id 0)
   (exit)
 )
 (if (not dlg_pt)
   (setq dlg_pt (list -1 -1))
 )
 (if (not (new_dialog "start" id "" dlg_pt))
   (exit)
 )
 (action_tile "tabel" "(do_act $key)")
 (action_tile "cancel" "(do_act $key)")
 (start_dialog)
 (unload_dialog id)
 (if (= op "tabel")
   (progn
     (load "table.lsp")
     (command "tab")
   )
 )
)
(princ "\n Start menu\n")
(prin1)


Als dit niet werkt post dan a.u.b. alle bestanden.

EDIT (n.a.v edit van Atwist):
Als table.lsp geen commando tab bevat waarom schrijf jij dan (command "tab")?
Titel: Re:krijg lisp niet gestart
Bericht door: EddyBeerke op do 19 05 2011, 20:50:16
Als er bij de lisp die geladen het volgende staan "(defun tab ..." dan kun je de lisp starten met "(tab)".
Staat er "(defun c:tab ..." dan "(c:tab)"
Titel: Re:krijg lisp niet gestart
Bericht door: Atwist op do 19 05 2011, 20:58:37
Roy,

Er staat duidelijk
(defun C:tab(/ layerList)

  ;;;--- Turn off the command echo
  (setvar "cmdecho" 0)

  ;;;--- Preset an exit string
  (setq alertStr "\n Table is gemaakt")

  ;;;--- Get the table names
  (setq layerList(getLayerInfo))
Titel: Re:krijg lisp niet gestart
Bericht door: Atwist op do 19 05 2011, 21:01:45
Eddy dank voor het mee denken.

Als ik "tab" in "c:tab" wijzigt
Command: c:tab Unknown command "C:TAB".  Press F1 for help.

dus werkt ook niet :?

Titel: Re:krijg lisp niet gestart
Bericht door: roy_043 op do 19 05 2011, 21:44:56
Eddy heeft gelijk. Blijkbaar kun je lisp-commando's niet starten met (command "MijnCommando").
Het moet dus zijn:
(defun c:tsm ( / id op)
  (defun do_act (key_pr)
    (setq op key_pr)
    (setq dlg_pt (done_dialog))
  )
  (setq id (load_dialog "start"))
  (if (< id 0)
    (exit)
  )
  (if (not dlg_pt)
    (setq dlg_pt (list -1 -1))
  )
  (if (not (new_dialog "start" id "" dlg_pt))
    (exit)
  )
  (action_tile "tabel" "(do_act $key)")
  (action_tile "cancel" "(do_act $key)")
  (start_dialog)
  (unload_dialog id)
  (if (= op "tabel")
    (progn
      (load "table.lsp")
      (c:tab)
    )
  )
)
(princ "\n Start menu\n")
(prin1)
Titel: Re:krijg lisp niet gestart
Bericht door: Atwist op do 19 05 2011, 21:54:01
Roy,

Dit werk goed :vreegoe: :vreegoe:

Mijn dank is groot
Titel: Re:krijg lisp niet gestart
Bericht door: Atwist op do 19 05 2011, 22:54:49
Heb nu alleen het probleem dat ik geen 2e opdracht kan toevoegen
;;;  (if (= op "tabel")
(progn
(load "table.lsp")
(c:tab)
 
(if (= op "steal")
(progn
(load "steal.lsp")
(c:Steal)


Dan krijg ik deze melding
; error: quit / exit abort
Titel: Re:krijg lisp niet gestart
Bericht door: EddyBeerke op do 19 05 2011, 23:33:36
Wat zijn jullie toch een steeltje diehards om zo buiten werktijd nog druk bezig te zijn :pintje:
Titel: Re:krijg lisp niet gestart
Bericht door: Atwist op vr 20 05 2011, 08:31:45
 :D Eddy

Eigen bedrijf dus nooit rust.
Titel: Re:krijg lisp niet gestart
Bericht door: EddyBeerke op vr 20 05 2011, 08:48:21
Je kunt een stoppunt (knopje "toggle breakpoint") zetten in Visual LISP for AutoCAD (commando: VLIDE).
Hiermee kun je nadat je je lisp geladen hebt naar acad, het commando gestart hebt, met F8 dor de code heen lopen terwijl deze wordt uitgevoerd. Hiermee kun je ontdekken waar dat het mis gaat.
Lees eens hoofdstuk 4 (engels) over debugging:
http://ubuntuone.com/p/uUb/
Titel: Re:krijg lisp niet gestart
Bericht door: roy_043 op vr 20 05 2011, 09:16:12
Citaat van: roy_043 op do 19 05 2011, 20:36:40
Atwist je moet jouw kennis over (cond) en (if) nog eens goed opfrissen...


(defun c:tsm ( / id op)
 (defun do_act (key_pr)
   (setq op key_pr)
   (setq dlg_pt (done_dialog))
 )
 (setq id (load_dialog "start"))
 (if (< id 0)
   (exit)
 )
 (if (not dlg_pt)
   (setq dlg_pt (list -1 -1))
 )
 (if (not (new_dialog "start" id "" dlg_pt))
   (exit)
 )
  (action_tile "steel" "(do_act $key)") ; steal?
 (action_tile "tabel" "(do_act $key)")
 (action_tile "cancel" "(do_act $key)")
 (start_dialog)
 (unload_dialog id)
 (cond
   ((= op "tabel")
     (load "table.lsp")
     (c:tab)
   )
   ((= op "steel")      ; steal?
     (load "steel.lsp") ; steal.lsp?
     (c:steel)          ; c:steal?
   )
 )
)
(princ "\n Start menu\n")
(prin1)


EDIT: (action_tile "steel" "(do_act $key)") ; steal? toegevoegd.
Titel: Re:krijg lisp niet gestart
Bericht door: Atwist op vr 20 05 2011, 12:17:01
@Eddy
Ik heb net Vlide ontdekt (nou ja ik kende het wel maar had er nooit meegewerkt) dus ik probeer dit mij nu eigen te maken.

@Roy
Ik zag nu wat ik fout had.
Ik koppelde de opdrachten aan elkaar vast ipv per opdracht af te sluiten door haakjes.

Mijn dank is wederom groot