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)
Helemaal aan het begin ontbreekt:
(
En boven de regel: ;; Rücksetze der Varablen und Layer ontbreekt:
)
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
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?
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
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.
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
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.
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
Kan je het script van de DCL ook eens posten?
Dan kan em eens proberen.
Bij deze.
Hij is nog niet helemaal klaar maar werkt wel.
Atwist
Wil je de complete oplossing ook delen? :lol:
Ja hoor,
Ik heb CLAY van Jeffery Sanders gevonden http://www.jefferypsanders.com/autolisp_CLAY.html (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
Ik gebruik deze. http://sites.google.com/site/layercreator/
(orgineel van Timothy Spangler)
Werkt volgens mij ook een beetje volgens deze principes.. werkt fijn.
Hallo cadtools@gmail.com,
Heb deze ook bekeken, CLAY is wel erg simpel in gebruik.
Atwist
Beste Atwist,
Ben je ondertussen al verder geraakt met het maken van jou Layer_creator?
Ik ben momenteel ook aan het puzzelen om er zelf één aan te maken. Ik heb echt nog niet zo veel ervaring met LISP en zou daarom ook gebruik willen maken van een bestaande LISP-routine en dit aan te passen naar mijn wensen en noden.
De routine van Jeff-sanders is een goed ebgin, alleen wil ik mijn nog uitgebreider hebben.
hoe ik een DCL aanmaak in een Notepad heb ik ongeveer wel onder de knie, althans, ik kan dit niet nakijken want ik weet niet hoe ik dit zichtbaar kan maken in autocad :-) Ik weet neit hoe ik de link moeten maken tussen LSP (wat voorlopig nog lees is bij me) en tussen het DCL bestand.
Hopelijk weet jij (of iemand anders) raad voor me ;-)
Bedankt!
Citaat van: Cad_user86 op vr 15 04 2011, 11:50:11
...
hoe ik een DCL aanmaak in een Notepad heb ik ongeveer wel onder de knie, althans, ik kan dit niet nakijken want ik weet niet hoe ik dit zichtbaar kan maken in autocad :-) Ik weet neit hoe ik de link moeten maken tussen LSP (wat voorlopig nog lees is bij me) en tussen het DCL bestand.
Hopelijk weet jij (of iemand anders) raad voor me ;-)
Het kan inderdaad met Notepad, TextPad of elk andere tekstverwerker die er bestaat, zolang je maar klinkklare txt kan opslaan.
Maar het kan ook anders:
Type het commando: "VLIDE"
En zie daar... een heuse programma builder in acad:
"Visual LISP for AutoCAD"
Hiermee kun je dus hetzelfde als met de voorgenoemde en meer.
Wat dacht je van Debuggen.
Type er een een simpele lisp in en je zult zie dat het makkelijker is dan bv Notepad.
EDIT: zie bijlage
@Cad_user86
Dit is een redelijk goed tutorial:
http://web2.airmail.net/terrycad/Tutorials/MyDialogs.htm
Wat ik vaak raadpleeg zijn deze site's:
www.cadsite.be (nederlandstalig) :vreegoe:
www.afralisp.net (engelstalig)