CADsite forum

AutoCAD => Autolisp => Topic gestart door: AadAad19601960 op di 08 11 2022, 19:12:04

Titel: lisp en dcl
Bericht door: AadAad19601960 op di 08 11 2022, 19:12:04
Wie o wie kan deze lisp en dcl bestanden werkend maken.
Er zitten een paar fouten in maar ik ben nog een newbie en kan ze niet ontdekken.
Had eerst alles over getypt maar was bang dat ik toch een paar type fouten had gemaakt ,dus alles gekopieerd helaas zonder resultaat , nog steeds niet werkend.
Ik heb een site van internet geplukt (jefferypsanders.com) maar helaas werkt het merendeel van de  voorbeelden niet.

SAMPLE7 : dialog {
         label = "Sample Dialog Box Routine - Part 7";
          : column {
            : row {
              : boxed_column {
                : radio_column  {
                  key = "radios";
                  : radio_button {
                    label = "Draw Circle";
                    key = "drawcir";
                    value = "1";
                  }
                  : radio_button {
                    label = "Draw Polygon";
                    key = "drawpol";
                    value = "0";
                  }
                }
                : popup_list {
                  key = "numsides";
                  label = "Number of Sides";
                  width = 25;
                  fixed_width_font = true;
                }
                : toggle {
                  key = "saveset";
                   label = "Save settings";
                }
              }
              : row  {
                : list_box {
                  label ="Select Layer";
                  key = "layerList";
                  height = 5;
                  width = 15;
                  multiple_select = false;
                  fixed_width_font = true;
                  value = "";
                }
              }
            }
            : row {
              : button {
                key = "accept";
                label = " Okay ";
                is_default = true;
              }
              : button {
                key = "cancel";
                label = " Cancel ";
                is_default = false;
                is_cancel = true;
              }
            } 
          }

}




(defun C:SAMPLE7()

   (defun saveVars()
  (setq radios(get_tile "radios"))

  ;;;--- Get the number of sides selected from the list
  (setq sStr(get_tile "numsides"))
  (if(= sStr "")
    (setq numSides nil)
    (setq numSides(nth (atoi sStr) numSides))
  )

  ;;;--- See if the user wants to save the settings
  (setq saveSet(atoi(get_tile "saveset")))

  ;;;--- Get the selected item from the layer list
  (setq sStr(get_tile "layerlist"))

  ;;;--- If the index of the selected item is not "" then something was selected
  (if(/= sStr "")
    (progn

      ;;;--- Something is selected, so convert from string to integer
      (setq sIndex(atoi sStr))

      ;;;--- And get the selected item from the list
      (setq layerName(nth sIndex layerList))
    )

    ;;;--- Else, nothing is selected
    (progn

      ;;;--- Set the index number to -1
      (setq sIndex -1)

      ;;;--- And set the name of the selected item to nil
      (setq layerName nil)
    )
  )
)

(defun toggleRadio(a)
   ;if circle is selected
   (if(= a 1)
      (mode_tile "numsides" 1) ;disable
      ;else
      (mode_tile "numsides" 0) ;enable
    )
)


  ;;;--- Load the dcl file from disk into memory
  (if(not(setq dcl_id (load_dialog "SAMPLE7.dcl")))
    (progn
      (alert "The DCL file could not be loaded!")
      (exit)
    )
   
    ;;;--- Else, the DCL file was loaded
    (progn

      ;;;--- Load the definition inside the DCL file
      (if (not (new_dialog "SAMPLE7" dcl_id))
        (progn
        (alert "The SAMPLE7 definition could not be loaded!")
          (exit)
        )

        ;;;--- Else, the definition was loaded
        (progn

          (setq layerList(list "0" "DIM" "HIDDEN" "STR" "TX" "WELD"))
          (setq numSides(list "4" "6" "8" "12" "16"))

          ;;;--- Add the layer names to the dialog box
          (start_list "layerlist" 3)
          (mapcar 'add_list layerList)
          (end_list)

          ;;;--- Add the number of sides to the dialog box
          (start_list "numsides" 3)
          (mapcar 'add_list numSides)
          (end_list)

  (if(/= (getvar "USERS1") "")
            (progn
              (setq radios (getvar "users1"))
              (setq numStr (getvar "users2"))
              (setq saveSet(getvar "users3"))
              (setq layerIndex(getvar "users4"))
              (set_tile "radios" radios)
              (set_tile "numsides" numStr)
              (set_tile "saveset" saveSet)
              (set_tile "layerlist" layerIndex)
            )
          )
  ;;;--- Only disable the numSides popup_list if a circle is being drawn
          (if(= radios "drawcir")
            (mode_tile "numsides" 1)
          )

 

          ;;;--- If an action event occurs, do this function
  (action_tile "drawcir" "(toggleRadio 1)")
          (action_tile "drawpol" "(toggleRadio 2)")
          (action_tile "cancel" "(done_dialog 1)")
          (action_tile "accept" "(saveVars)(done_dialog 2)")

          ;;;--- Display the dialog box
          (start_dialog)

          ;;;--- Unload the dialog box
          (unload_dialog dcl_id)

          ;;;--- If the cancel button was pressed - display message
          (if (= ddiag 1)
            (princ "\n \n ...SAMPLE7 Cancelled. \n ")
          )

          ;;;--- If the "Okay" button was pressed
          (if (= ddiag 2)
            (progn

     
      ;;;--- Save the old layer and reset to new layer
              (setq oldLay(getvar "clayer"))
              (setvar "clayer" layerName)

              ;;;--- See what needs to be drawn
              (if(= radios "drawcir")
                (progn
                  (setq pt(getpoint "\n Center point: "))
                  (command "circle" pt pause)
                )

                ;;;--- Else draw a polygon
                (progn
                  (setq pt(getpoint "\n Center Point: "))
                  (command "polygon" numSides pt "C" pause)
                )
              )

              ;;;--- See if we need to save the settings
              (if(= saveSet 1)
                (progn

                  ;;;--- Add code here to save the settings as defaults
                  (setvar "USERS1" radios)
                  (setvar "USERS2" numStr)
                  (setvar "USERS3" (itoa saveSet))
                  (setvar "USERS4" sSTR)

                )
              )
            )
          )

        )
      )
    )
  )

  ;;;--- Suppress the last echo for a clean exit
  (princ)
)
Titel: Re: lisp en dcl
Bericht door: gery op wo 09 11 2022, 12:29:51
Staan beide bestanden in 1 van de zoekpaden van AutoCAD?
Titel: Re: lisp en dcl
Bericht door: gery op wo 09 11 2022, 12:33:32
Kan je kort omschrijven wat deze routine zou moeten doen?
Titel: Re: lisp en dcl
Bericht door: bart op wo 09 11 2022, 16:36:35
https://www.jefferypsanders.com/autolisp_DCL_Part7.html

Er staat ergens dat je sample <enter> moet ingeven om te starten dat moet m.i.  sample7 zijn
staat de lisp en de dcl in een door autocad vertrouwde map?
Wat krijg je precies voor melding als het niet werkt?

je kan de bestanden linksboven op de pagina in de link gewoon downloaden overtypen of copypast is niet nodig

welke editor gebruik je voor het bewerken van de bestanden het moet gewoon platte tekst zijn

Titel: Re: lisp en dcl
Bericht door: AadAad19601960 op vr 11 11 2022, 19:23:39
Dit zou moeten verschijnen als het zou werken (zie bijlagen) en daar kan dan uit gekozen worden
De beide bestanden staan in een vertrouwde map.
Titel: Re: lisp en dcl
Bericht door: bart op za 12 11 2022, 14:20:27
en die map staat ook in het zoekpad onder options? en de lisp is geladen?

ik heb de pagina gelezen.
de vraag is wat jij wel op je scherm ziet.
Titel: Re: lisp en dcl
Bericht door: AadAad19601960 op za 12 11 2022, 19:46:44
Alleen het linker gedeelte van het dialoog venster is te zien wanneer ik het programma opstart.
Titel: Re: lisp en dcl
Bericht door: roy_043 op zo 13 11 2022, 10:28:51
Er zijn een aantal problemen:

In de bijlagen zijn de 2 eerstgenoemde problemen opgelost. Ook worden de USERS* waarden geïnitialiseerd, dit is veel gemakkelijker (zowel voor de programmeur als de gebruiker).
Titel: Re: lisp en dcl
Bericht door: EddyBeerke op zo 13 11 2022, 15:29:53
Heb je Jeffery P. Sanders ook gevraagd of in ieder geval gemeld dat zijn voorbeeld niet werkt?
Heb ik ooit wel gedaan en kreeg netjes een reactie terug dat hij het zou gaan aanpassen.
Titel: Re: lisp en dcl
Bericht door: AadAad19601960 op zo 13 11 2022, 16:19:20
Dank voor jullie hulp.
Ik vind het alleen jammer dat er mensen dingen op het internet zetten die niet werken.
Zeker als je wil gaan leren programmeren is dit niet echt motiverend.
Ik heb al verschillende pdf bestanden en pagina's  van het internet afgehaald waar het meeste niet van werkten.
Titel: Re: lisp en dcl
Bericht door: roy_043 op di 15 11 2022, 09:41:36
Probeer:
https://www.afralisp.net/
https://www.autolisp-exchange.com/
Titel: Re: lisp en dcl
Bericht door: gery op di 15 11 2022, 12:18:07
Citaat van: AadAad19601960 op zo 13 11 2022, 16:19:20
Ik vind het alleen jammer dat er mensen dingen op het internet zetten die niet werken.
Zeker als je wil gaan leren programmeren is dit niet echt motiverend.
Ik heb al verschillende pdf bestanden en pagina's  van het internet afgehaald waar het meeste niet van werkten.
Meestal werkt dat allemaal wel maar is er op je eigen computer vanalles fout.
Titel: Re: lisp en dcl
Bericht door: bart op di 15 11 2022, 18:04:32
Je kreeg wel iets op je scherm en er verschijn geen foutmelding.

op code valt altijd wel iest aan te merken en meestal wordt dat alleen maar meer als de code ouder begint te worden
Titel: Re: lisp en dcl
Bericht door: AadAad19601960 op di 15 11 2022, 21:07:12
https://www.afralisp.net/
https://www.autolisp-exchange.com/

Heb ik ook al allebei doorgespit zitten ook de menige fouten in.

Heb je Jeffery P. Sanders ook gevraagd of in ieder geval gemeld dat zijn voorbeeld niet werkt?
Heb ik ooit wel gedaan en kreeg netjes een reactie terug dat hij het zou gaan aanpassen.

Heeft hij nog niet  aangepast!


Meestal werkt dat allemaal wel maar is er op je eigen computer vanalles fout.

Lijkt me sterk ,als ik alles kopieer  en plak zou het foutloos moeten zijn als het er goed opgezet is .
Titel: Re: lisp en dcl
Bericht door: gery op wo 16 11 2022, 09:52:06
Citaat van: AadAad19601960 op di 15 11 2022, 21:07:12
Meestal werkt dat allemaal wel maar is er op je eigen computer vanalles fout.

Lijkt me sterk ,als ik alles kopieer  en plak zou het foutloos moeten zijn als het er goed opgezet is .
AutoCAD is uitgebreid in te stellen en aan te passen, foute instellingen en/of aanpassingen op je eigen computer kunnen er voor zorgen dat bepaalde codes niet correct werken. Ik weet uit ervaring dat velen AutoCAD op hun computer om zeep kunnen helpen, waarbij veelal een volledige herinstallatie noodzakelijk is om het terug in orde te krijgen.
Trouwens, wees blij dat er code te vinden is op het Internet, dat die niet perfect is en/of niet aansluit bij jouw noden kan je de schrijver ervan niet kwalijk nemen, bij hem/haar zal het wel werken dus zit het probleem hoogstwaarschijnlijk bij jouw computer.
Titel: Re: lisp en dcl
Bericht door: roy_043 op wo 16 11 2022, 17:20:16
De originele code in deze topic bevatte fouten waardoor deze nooit kon werken. Ik begrijp de terechte frustratie van AadAad19601960.