FastFiber

Lisp doet niet wat ik wil (Opgelost)

Gestart door Atwist, do 29 04 2010, 13:42:26

Vorige topic - Volgende topic

Atwist

Hallo forumleden,

Ik ben bezig een goed werkende lisp te verbouwen naar mijn eigen wensen.
Heb een lisp gepakt met een dcl bestand wat dus goed werkte heb eerst het dcl bestand verbouwd lisp en dcl werkte nog steeds goed , nu wilde ik lisp bestand gaan oppakken  heb dus de key in het dcl en lisp gelijk gemaakt het erkt nog steeds, maar nu wil ik dus de opdracht veranderen en nu doet de lisp niet wat ik wil ik weet dat de fout bij mij ligt maar ik zie het niet.
Ik probeer dus via de lisp en dcl bestand layers aan temaken die ik wil gebruiken met kleur en linetype.

Wie zou eens willen kijken.

Alvast bedankt.

Atwist

defun C:Twist (/ C_E C_L W_K O_M A RICHT LEER PT EN P1 P2 P3 WIN D DH MP AS)

(defun NEUERR (MSG)
 (princ LEER)
 (princ MSG)
 (command "_REGEN")
 (command)
 (command "_LAYER" "_SET" C_L "" "_REGEN")
 (command "_UCS" "_N" W_K)
 (setq *ERROR* ALTERR)
 (setvar "CMDECHO" C_E)
 (exit)
 (princ)
)

(setq ALTERR  *ERROR*
      *ERROR* NEUERR
      DUMMY_1 (entlast)
      C_E     (getvar "CMDECHO")       ; ECHO
      C_L     (getvar "CLAYER")        ; Layer
      W_K     (getvar "UCSORG")        ; BKS
      RICHT   NIL
      LEER    (strcat "\n" (chr 160) "\n" (chr 160) "\n" (chr 160))


)
;;--------------------------- Dialog -----------------------
(defun DIALOG_0 (/ I_1 OK)
 (setq I_1 (load_dialog "Twist.dcl"))
 (if (null (new_dialog "Twist" I_1))
  (alert "\n \nKann Twist.dcl nicht finden")
 )

 (setq RICHT (get_tile "RICHT"))

 (action_tile "RICHT" "(SETQ richt $VALUE)")
 (action_tile "CANCEL" "(DONE_DIALOG 0)")
 (setq OK (start_dialog))
 (unload_dialog I_1)
 (if (= OK 0)
 (progn (R_VAR) (exit))
 )
)
;;-------------------------------------------------------------------
(princ LEER)
(DIALOG_0)
(cond
 ((or (= RICHT "_Hor") (= RICHT "_Ver")) ; Horizontale oder vertikale Hilfslinie
  (setq PT (getpoint "\nBitte eine Punkt angeben: "))
  (command "_Xline" RICHT PT "")
 )
 ((= RICHT "018")
  (command "_layer" RICHT "_make" "018" "_color" "1" "_ltype" "hidden")
 )
;; Rücksetze der Varablen und Layer
(command)
(command "_LAYER" "_SET" C_L "" "_REGEN")
(command "_UCS" "_N" W_K)
(setq *ERROR* ALTERR)
(setvar "CMDECHO" C_E)
(redraw)
(princ)
(princ)
) ;_ End defun
(princ)
(prompt "\nProgramm laden mit Twist")
(princ)



Atwist

AutoCad 2008.

roy_043

Helemaal aan het begin ontbreekt:
(
En boven de regel:  ;; Rücksetze der Varablen und Layer ontbreekt:
)

Atwist

Hallo Roy,

Dank voor je antwoord Heb ) en ( ingevoed en krijg nu ook te zien "Programm laden mit Twist" had ik voorheen niet
Maar de layer wordt noog steeds niet gemaakt.
Zijn al wel weer een stap verder.
Weet jij misschien ook waarom de layer niet wordt gemaakt?

Atwist
Atwist

AutoCad 2008.

roy_043

De lisp die jij aan het verbouwen bent was bedoeld om xlines te tekenen. Maar jij hebt het over "lagen". Wil je een bepaalde laag aanmaken voor de xlines of wil je helemaal geen xlines tekenen? En als dat laatste zo is: waarom dan deze lisp als basis genomen?

Atwist

Heb deze lisp gekozen omdat deze mooi klein is, ik wil eigelijk alleen maar lagen invoegen en later eventueel textstyles.
Ik was in de veronderstelling dat ik deze lisp wel kon ombouwen hiervoor.

Atwist
Atwist

AutoCad 2008.

Lyrix

Als het alleen een kwestie is van een layer invoegen kan dat in 3 regels.



(defun c:makelayer()
   (command "-layer" "m" "layernaam" "C" "3" "" "")
)

Verwerk het commando in een knopje, zodra je het knopje aantikt wordt de layer aangemaakt en staat meteen current.

Atwist

Hallo Lyrix

heb jou oplossing toegepast maar nu laad deze de dcl niet meer, dit is wat ik er van heb gemaakt.

(defun C:Twist()


;;--------------------------- Dialog -----------------------
(defun DIALOG_0 (/ I_1 OK)
  (setq I_1 (load_dialog "Twist.dcl"))
  (if (null (new_dialog "Twist" I_1))
   (alert "\n \nKann Twist.dcl nicht finden")
  )
  ((= RICHT "018")
   (command "-layer" "m" "018" "C" "3" "" "")
)))
;_ End defun


Atwist
Atwist

AutoCad 2008.

Lyrix

#7
Wat wil je met de dcl doen dan?
Wil je een standaard layer aanmaken of een variabele layer die je in de dcl intoetst?

Als je een standaard wil maken met een layer heb je helemaal geen dcl menu nodig.
Een lisp, geaktiveerd door een knopje is dan voldoende.

Atwist

Lyrix,

Het is niet 1 layer maar een hele lijst en die wil ik graag via een dcl scherm aanklikken, in de vorige post is het een voorbeeld van 1 layer.
Als ik 1 layer aan de gang heb dan kan ik de rest er zo onder plakken.

Atwist
Atwist

AutoCad 2008.

Lyrix

Kan je het script van de DCL ook eens posten?
Dan kan em eens proberen.


Atwist

Bij deze.

Hij is nog niet helemaal klaar maar werkt wel.

Atwist
Atwist

AutoCad 2008.

Lyrix

Wil je de complete oplossing ook delen?  :lol:

Atwist

Ja hoor,

Ik heb CLAY van Jeffery Sanders gevonden http://www.jefferypsanders.com/autolisp_CLAY.html en deze verbouwd naar mijn wens.


Nu zoek ik nog zo iets maar dan voor mijn textstyles

Atwist
Atwist

AutoCad 2008.

cadtools@gmail.com

Ik gebruik deze. http://sites.google.com/site/layercreator/
(orgineel van Timothy Spangler)
Werkt volgens mij ook een beetje volgens deze principes.. werkt fijn.

Atwist

Hallo cadtools@gmail.com,

Heb deze ook bekeken, CLAY is wel erg simpel in gebruik.

Atwist
Atwist

AutoCad 2008.