als ik deze lisp routine run dan wil hij de oude snap settings niet opnieuw instellen. Ziet er iemand de fout?
(defun dgfKozijnzicht-01
(dogvariablelist pt100 dogkeys / dogqqqv dogtag
VAR4
VAR3
VAR2
VAR1
VAR0
PT100
PT101
PT102
PT103
PT104
PT105
PT106
PT107
PT108
PT109
PT110
PT111
PT112
PT113
PT114
PT115
PT116
PT117
PT118
PT119
PT120
PT121
PT122
PT123
PT124
PT125
PT126
PT127
PT128
PT129
PT130
PT131
PT132
PT133
PT134
PT135
PT136
PT137
PT138
PT139
PT140
PT141
PT142
PT143
PT144
PT145
PT146
PT147
PT148
PT149
PT150
PT151
PT152
PT153
PT154
PT155
PT156
PT157
PT158
PT159
PT160
PT161
PT162
ENT6E9
ENT6E0
ENT6E6
ENT6E3
ENT716
ENT722
ENT71F
ENT719
ENT71C
ENT81A
ENTBA5
ENTB91
ENTB7D
ENTB6F
ENTB56
ENTB42
ENTB34
ENTB20
ENTB0C
ENTAF8
ENTAF0
ENTA19
ENT97C
ENT823
ENT190E
ENT1D1D
ENT2337
ENT2334
ENT252D
ENT252A
ENT2530
ENT273B
ENT2954
ENT2B67
ENT2D75
ENT2F94
ENT2F91
ENT31DD
ENT31BF
ENT31BB
ENT341B
ENT3891
ENT3899
)
;(c) S.E.B.Vinckier DOG 3.2
(setq dogtag (entlast))
(dog-begin)
(command "_layer" "_m" "DOG" "" )
(setq dogqqqv nil)
(setq oldsnap (getvar "osmode"))
(if (NULL (setq VAR4 (cdr (assoc "VAR4" dogvariablelist )))) ( setq VAR4 244))
(if (NULL (setq VAR3 (cdr (assoc "VAR3" dogvariablelist )))) ( setq VAR3 250))
(if (NULL (setq VAR2 (cdr (assoc "VAR2" dogvariablelist )))) ( setq VAR2 156))
(if (NULL (setq VAR1 (cdr (assoc "VAR1" dogvariablelist )))) ( setq VAR1 1150))
(if (NULL (setq VAR0 (cdr (assoc "VAR0" dogvariablelist )))) ( setq VAR0 1450))
; berekening toevoegen van aantal loodstroken onder kozijn
(setq maxloodstuk 1500.00)
(setq overlap 150.00)
(setq loodlengte (+ VAR0 VAR2 VAR2 300 300))
(setq aantaloverlap (fix (/ loodlengte maxloodstuk)))
(setq totaalloodlengte (+ loodlengte (* aantaloverlap overlap)))
(setq aantalloodstukken (+ (fix (/ totaalloodlengte maxloodstuk)) 1))
(setq lengteloodstuk (* (+ (fix (/ (/ totaalloodlengte aantalloodstukken) 10)) 1) 10))
; startpunt linksboven boeiboord
(setq dogq PT100 )
(setq PT100 (dog-newpoint "\nGeef linker bovenhoek bovenkant boeiboord :"))
(setvar "dimlfac" 2)
; tekenen van boeiboord
(setq PT101 (dog-cart PT100 (/ (+ (* (+ VAR3 VAR2 ) 2) VAR0 ) 2) 0))
(setq PT102 (dog-cart PT100 0 (/ (- VAR4 ) 2)))
(setq PT103 (dog-cart PT101 0 (/ (- VAR4 ) 2)))
(Dog-Layer-Set "TEKEN" 7 "CONTINUOUS" )
(dog-poly (list PT100 PT101))
(setq ENT6E0 (entlast))
(Dog-Layer-Set "TEKEN" 7 "CONTINUOUS" )
(dog-poly (list PT101 PT103))
(setq ENT6E3 (entlast))
(Dog-Layer-Set "TEKEN" 7 "CONTINUOUS" )
(dog-poly (list PT103 PT102))
(setq ENT6E6 (entlast))
(Dog-Layer-Set "TEKEN" 7 "CONTINUOUS" )
(dog-poly (list PT102 PT100))
(setq ENT6E9 (entlast))
; bovenkant zijwang en kozijn
(setq PT104 (dog-cart PT102 (/ VAR3 2) 0))
(setq PT105 (dog-cart PT103 (/ (- VAR3 ) 2) 0))
(setq PT106 (dog-cart PT104 (/ VAR2 2) 0))
(setq PT107 (dog-cart PT105 (/ (- VAR2 ) 2) 0))
; onderkant zijwang en kozijn
(setq PT108 (dog-cart PT104 0 (/ (- VAR1 ) 2)))
(setq PT109 (dog-cart PT106 0 (/ (- VAR1 ) 2)))
(setq PT110 (dog-cart PT107 0 (/ (- VAR1 ) 2)))
(setq PT111 (dog-cart PT105 0 (/ (- VAR1 ) 2)))
(Dog-Layer-Set "TEKEN" 7 "CONTINUOUS" )
(dog-poly (list PT104 PT108))
(setq ENT716 (entlast))
(Dog-Layer-Set "TEKEN" 7 "CONTINUOUS" )
(dog-poly (list PT106 PT109))
(setq ENT719 (entlast))
(Dog-Layer-Set "TEKEN" 7 "CONTINUOUS" )
(dog-poly (list PT107 PT110))
(setq ENT71C (entlast))
(Dog-Layer-Set "TEKEN" 7 "CONTINUOUS" )
(dog-poly (list PT105 PT111))
(setq ENT71F (entlast))
; onderlijn onderkant kozijn
(Dog-Layer-Set "TEKEN" 7 "CONTINUOUS" )
(dog-poly (list PT108 PT111))
(setq ENT722 (entlast))
; tekenen van lood onder kozijn
(setq PT112 (dog-cart PT108 0 30))
(setq PT113 (dog-cart PT112 (- 150) 0))
(setq PT114 (dog-cart PT113 0 (- 150)))
(setq PT115 (dog-cart PT111 0 30))
(setq PT116 (dog-cart PT115 150 0))
(setq PT117 (dog-cart PT116 0 (- 150)))
(Dog-Layer-Set "CENTER" 1 "CENTER" )
(dog-poly (list PT112 PT113 PT114 PT117 PT116 PT115))
(setq ENT81A (entlast))
; maatvoering kozijnen zijwang
(setq PT118 (dog-cart PT108 0 (- (+ (* 7 (getvar "dimscale")) 120))))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "H" PT108 PT109 PT118 nil)
(setq ENT823 (entlast))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "H" PT109 PT110 PT118 nil)
(setq ENT97C (entlast))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "H" PT110 PT111 PT118 nil)
(setq ENTA19 (entlast))
; tekst lood onder kozijn
(setq PT119 (dog-cart PT109 (/ (distance PT109 PT110) 2) (- 100)))
(Dog-Layer-Set "TEKST" 2 "CONTINUOUS" )
(dog-text "bc" PT119 (* 3 (getvar "dimscale")) 0 "lood 20 Kg/m2 (" aantalloodstukken 0 "/" lengteloodstuk 0 ")" )
(setq ENTB34 (entlast))
; tekst kozijnmaat
(setq PT120 (dog-cart PT119 0 (- (+ (* 12 (getvar "dimscale")) 20))))
(Dog-Layer-Set "TEKST" 2 "CONTINUOUS" )
(dog-text "bc" PT120 (* 3 (getvar "dimscale")) 0 "kozijnmaat" nil 0 "" nil 0 "" )
(setq ENTAF0 (entlast))
; maatvoering overstek en dakkapelmaat
(setq PT121 (dog-cart PT118 0 (- (* 12 (getvar "dimscale")))))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "H" PT102 PT108 PT121 nil)
(setq ENTAF8 (entlast))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "H" PT108 PT111 PT121 nil)
(setq ENTB0C (entlast))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "H" PT111 PT103 PT121 nil)
(setq ENTB20 (entlast))
; horizontale maatvoering maat lood buiten kozijn 300mm links
(setq PT122 (dog-cart PT112 0 (* 5 (getvar "dimscale"))))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "H" PT113 PT112 PT122 nil)
(setq ENTB42 (entlast))
; horizontale maatvoering maat lood buiten kozijn 300mm rechts
(setq PT123 (dog-cart PT115 0 (* 5 (getvar "dimscale"))))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "H" PT115 PT116 PT123 nil)
(setq ENTB56 (entlast))
; tekst merk kozijn
(setq PT124 (DOG-MID PT107 PT109 ))
(Dog-Layer-Set "GREEN" 3 "CONTINUOUS" )
(dog-text "mc" PT124 (* 3 (getvar "dimscale")) 0 "MERK " nil 0 "" nil 0 "" )
(setq ENTB6F (entlast))
; maatvoering vertikaal kozijnmaat
(setq PT125 (dog-cart PT113 (- (* 10 (getvar "dimscale"))) 0))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "V" PT108 PT104 PT125 nil)
(setq ENTB7D (entlast))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "V" PT102 PT100 PT125 nil)
(setq ENTB91 (entlast))
; maatvoering vertikaal dakkapel
(setq PT126 (dog-cart PT125 (- (* 7 (getvar "dimscale"))) 0))
(Dog-Layer-Set "BEMATING" 1 "CONTINUOUS" )
(dog-dim3 "V" PT108 PT100 PT126 nil)
(setq ENTBA5 (entlast))
; cirkel met detailnummer B
(setq PT127 (dog-cart PT105 (- (* 20 (getvar "dimscale"))) 0))
(setq PT128 (dog-cart PT105 (* 7 (getvar "dimscale")) (- (* 15 (getvar "dimscale")))))
(setvar "celtype" "CENTER")
(Dog-Layer-Set "BLUE" 5 "CONTINUOUS" )
(dog-circle PT105 PT127 )
(setq ENT190E (entlast))
(setvar "celtype" "BYLAYER")
(Dog-Layer-Set "GREEN" 3 "CONTINUOUS" )
(dog-text "bc" PT128 (* 7.5 (getvar "dimscale")) 0 "B" nil 0 "" nil 0 "" )
(setq ENT1D1D (entlast))
; tekenen van losse loodstroken boven dakkapel
(setq PT129 (dog-cart PT100 0 100))
(setq PT130 (dog-cart PT129 0 75))
(setq PT131 (dog-cart PT129 250 0))
(setq PT132 (dog-cart PT130 250 0))
(Dog-Layer-Set "CENTER" 1 "CENTER" )
(dog-poly (list PT129 PT131 PT132 PT130 PT129))
(setq ENT2334 (entlast))
(setq PT133 (dog-cart PT101 0 100))
(setq PT134 (dog-cart PT133 0 75))
(setq PT135 (dog-cart PT133 (- 250) 0))
(setq PT136 (dog-cart PT134 (- 250) 0))
(Dog-Layer-Set "CENTER" 1 "CENTER" )
(dog-poly (list PT133 PT134 PT136 PT135 PT133))
(setq ENT2337 (entlast))
; tekst loodstroken boven dakkapel
(setq PT137 (DOG-MID PT131 PT135 ))
(setq PT138 (dog-cart PT131 0 (* 5 (getvar "dimscale"))))
(setq PT139 (dog-cart PT135 0 (* 5 (getvar "dimscale"))))
(setq PT140 (dog-cart PT137 0 (* 5 (getvar "dimscale"))))
(Dog-Layer-Set "RED" 1 "CONTINUOUS" )
(dog-poly (list PT138 PT139))
(setq ENT252A (entlast))
(Dog-Layer-Set "TEKST" 2 "CONTINUOUS" )
(dog-text "bc" PT137 (* 3 (getvar "dimscale")) 0 "los meeleveren" nil 0 "" nil 0 "" )
(setq ENT252D (entlast))
(Dog-Layer-Set "TEKST" 2 "CONTINUOUS" )
(dog-text "bc" PT140 (* 3 (getvar "dimscale")) 0 "lood 20 Kg/m2 2/500" nil 0 "" nil 0 "" )
(setq ENT2530 (entlast))
; tekenen van stadsuitloop rechterzijde dakkapel
(setq PT141 (dog-cart PT101 0 (- 30)))
(setq PT142 (dog-cart PT141 0 (- 30)))
(setq PT143 (dog-cart PT141 75 0))
(setq PT144 (dog-cart PT142 75 0))
(setq PT145 (dog-cart PT144 (- 10) 0))
(setq PT146 (dog-cart PT145 (- 40) 0))
(setq PT147 (dog-cart PT145 0 (- 10)))
(setq PT148 (dog-cart PT146 0 (- 10)))
(Dog-Layer-Set "RED" 1 "CONTINUOUS" )
(dog-poly (list PT141 PT143 PT144 PT142))
(setq ENT273B (entlast))
(Dog-Layer-Set "RED" 1 "CONTINUOUS" )
(dog-poly (list PT145 PT147 PT148 PT146))
(setq ENT2954 (entlast))
; tekst hemelwaterafvoer
(setq PT149 (dog-cart PT143 (- 15) (- 15)))
(setq PT150 (dog-cart PT149 (* 65 (getvar "dimscale")) 0))
(setq PT151 (dog-cart PT150 0 (- (* 5 (getvar "dimscale")))))
(setq PT152 (dog-cart PT151 0 (- (* 5 (getvar "dimscale")))))
(Dog-Layer-Set "RED" 1 "CONTINUOUS" )
(dog-poly (list PT149 PT150))
(setq ENT2D75 (entlast))
(Dog-Layer-Set "TEKST" 2 "CONTINUOUS" )
(dog-text "br" PT150 (* 3 (getvar "dimscale")) 0 "HEMELWATERAFVOER" nil 0 "" nil 0 "" )
(setq ENT2B67 (entlast))
(Dog-Layer-Set "TEKST" 2 "CONTINUOUS" )
(dog-text "br" PT151 (* 3 (getvar "dimscale")) 0 "leveren en aanbrengen" nil 0 "" nil 0 "" )
(setq ENT2F91 (entlast))
(Dog-Layer-Set "TEKST" 2 "CONTINUOUS" )
(dog-text "br" PT152 (* 3 (getvar "dimscale")) 0 "door aannemer" nil 0 "" nil 0 "" )
(setq ENT2F94 (entlast))
; tekst detailnummer c
(setq PT153 (dog-cart PT115 (- 150) (/ (distance PT105 PT115) 3)))
(setq PT154 (dog-cart PT153 275 0))
(setvar "celtype" "CENTER")
(Dog-Layer-Set "BLUE" 5 "CONTINUOUS" )
(dog-poly (list PT153 PT154))
(setq ENT31BB (entlast))
(setvar "celtype" "BYLAYER")
(Dog-Layer-Set "GREEN" 3 "CONTINUOUS" )
(dog-text "br" PT154 (* 7.5 (getvar "dimscale")) 0 "C" nil 0 "" nil 0 "" )
(setq ENT31BF (entlast))
; tekst detailnummer 53
(setq PT155 (dog-cart PT117 (- 350) 60))
(setq PT156 (dog-cart PT117 150 60))
(setq PT157 (dog-cart PT156 0 50))
(setq PT158 (dog-cart PT156 0 150))
(setq PT159 (dog-cart PT156 60 50))
(setq PT160 (dog-cart PT156 (- 25) 0))
(setvar "celtype" "CENTER")
(Dog-Layer-Set "BLUE" 5 "CONTINUOUS" )
(dog-poly (list PT155 PT156 PT158 PT159 PT157))
(setq ENT31DD (entlast))
(setvar "celtype" "BYLAYER")
(Dog-Layer-Set "GREEN" 3 "CONTINUOUS" )
(dog-text "br" PT160 (* 7.5 (getvar "dimscale")) 0 "53" nil 0 "" nil 0 "" )
(setq ENT341B (entlast))
; tekst getekend dakkapel
(setq PT161 (dog-cart PT121 0 (- (* 15 (getvar "dimscale")))))
(Dog-Layer-Set "GREEN" 3 "CONTINUOUS" )
(dog-text "bl" PT161 (* 3 (getvar "dimscale")) 0 "x ALS GETEKEND bouwno: " nil 0 "" nil 0 "" )
(setq ENT3891 (entlast))
; tekst gespiegeld dakkapel
(setq PT162 (dog-cart PT161 0 (- (* 5 (getvar "dimscale")))))
(Dog-Layer-Set "GREEN" 3 "CONTINUOUS" )
(dog-text "bl" PT162 (* 3 (getvar "dimscale")) 0 "x ALS GESPIEGELD bouwno: " nil 0 "" nil 0 "" )
(setq ENT3899 (entlast))
(setvar "dimlfac" 1)
(setvar "attdia" 0 )
(setq file "DOG3VAR")
(command "_layer" "_s" "DOG" "" )
(dog-drvar PT100 -950.0000 0.0000 20.0000 "VAR0" "Breedte kozijnmaat" (rtos VAR0 2))
(dog-checklink (entlast))
(dog-drvar PT100 -950.0000 -150.0000 20.0000 "VAR1" "Hoogte kozijnmaat" (rtos VAR1 2))
(dog-checklink (entlast))
(dog-drvar PT100 -950.0000 -300.0000 20.0000 "VAR2" "Dikte zijwang (excl. binnenplaat)" (rtos VAR2 2))
(dog-checklink (entlast))
(dog-drvar PT100 -950.0000 -450.0000 20.0000 "VAR3" "Overstek buiten zijwang" (rtos VAR3 2))
(dog-checklink (entlast))
(dog-drvar PT100 -950.0000 -600.0000 20.0000 "VAR4" "Hoogte boeiboord" (rtos VAR4 2))
(dog-checklink (entlast))
(command "_insert" "dog3tag" (trans pt100 0 1) 8.0000 8.0000 0 dogcurrent )
(dog-tagging)
(dog-end)
(setvar "osmode" oldsnap)
);defun
kan iemand mij helpen? normaal moeten de functies:
in het begin
(setq oldsnap (getvar "osmode"))
op het einde
(setvar "osmode" oldsnap)
toch voldoende zijn?
groeten
sam
Vlgs mij heb je veelsteveeel tekens.... ;-) :shock: :shock:
Hier snap ik niks van, maar wel degelijk zijn hier mensen die je kunnen helpen.
de lisp tekent een dakkappel uit. De routine is gescreven geweest door hsb-cad. Jullie wellicht bekent.
Citaat van: fcbsam op wo 04 04 2007, 14:28:54
als ik deze lisp routine run dan wil hij de oude snap settings niet opnieuw instellen. Ziet er iemand de fout?
in het begin
(setq oldsnap (getvar "osmode"))
op het einde
(setvar "osmode" oldsnap)
toch voldoende zijn?
groeten sam
Beste Sam,
Waarschijnlijk wordt in een andere procedure de variabele oldsnap veranderd.
Test dat door bijv. de variabele naam oldsnap te veranderen in oldsnapnew in
de opdracht (setq oldsnap (getvar "osmode")) en in de opdracht (setvar "osmode" oldsnap)
Ook kan het zijn dat je eerder uit je programma loopt.
Test dat door na (setvar "osmode" oldsnap) , of na bovenstaande wijziging
(setvar "osmode" oldsnapnew), een uitvoeropdracht te zetten
(print (strcat "Einde is gehaald en de oldsnap waarde is " (itoa oldsnap)))
of na bovenstaande wijziging
(print (strcat "Einde is gehaald en de oldsnap waarde is " (itoa oldsnapnew)))
Verder kan het zijn, omdat dgfKozijnzicht-01 waarschijnlijk een subprocedure is,
je via een hoofdprocedure van Lisp terugkeert naar AutoCAD.
Test alle hoofd- en subprocedures met zoeken in Wordpad op het aantal
keer dat het woord oldsnap daarin voorkomt.
Met vriendelijke groet,
HofCAD CSI
ik zie zo in de hele lisp geen enkele wijziging van je osmode instelling.
dus ik snap beide regels niet zo :?
Ik ben het met hofcad eens dat e.a waarschijnlijk komt door gebruik van globale variabele
er kunnen twee dingen gebeuren
1 de variabele oldsnap wordt elders opnieuw ingesteld.
2 osmode wordt elders opnieuw ingesteld en in deze routine krijgt oldsnap dan de daar toegekende waarde.
tip probeer het eerst eens met voor beide regels een ; zodat ze zijn uitgeschakeld.
Ik heb de naam veranderd en er gebeurde niets. Daarna heb ik, (print (strcat "Einde is gehaald en de oldsnap waarde is " (itoa oldsnapnew))) na mijn opdracht geplaatst en dan kreeg ik dit te lezen op mijn commandoregel:
"Einde is gehaald en de oldsnap waarde is 0" _layer
Current layer: "0"
waar komt nu die layer vandaan? :?
ik ga nu wat voort zoeken...
weet iemand raad?
is het nu aan een bovenliggende routine gelegen?
groeten Sam
Beste,
als ik mijn oog even op de lisp werp... dan zie ik daar --> (dog-begin) en op het einde -->(dog-end)
Uit eigen ervaring voel ik dat hier een variable-remember-routine achter schuilt... dan helpen uw 2 toegevoegde lijnen niet.
Ik kan u ook niet echt aanraden deze uit te schakelen, aan gezien daar meestal meer achter zit dan enkel opslaan van variabelen, maar ook bv. een error-trap enz...
Doch zou ik deze even tijdelijk uitschakelen door een ';' voor te plaatsen en dan te kijken of hij uw regels wel in acht neemt, zijnde (setq oldsnap (getvar "osmode")) en(setvar "osmode" oldsnap).
Als ik gelijk heb ben je beter naar een basis.lsp of zo te zoeken naar de subroutine (dog-begin) of/en (dog-end)...
laat het ons eens weten
Volgens mij staat er in die andere programma's juist hetzelfde. (setq oldsnap (getvar "osmode")) staat in uw hoofd programma.
Als dit in uw andere programma's ook eens zou voorkomen dan wordt uw vorige waarde overschreven.
Verander eens in uw hoofdprogramma die OLDsnap door OUDEsnap. :wink:
ja ik had het nadat ik deze post had gezet ook opgemerkt dat het t.o.v. (dog-begin/dog -end) verkeerd stond en het hielp niet. Ik heb ook die naam veranderd in allerlei andere namen buiten oldsnap en niet werkt. Ik weet niet hoe het komt maar er veranderd niets. Het veranderd telkens naar de standaard waarden die in een andere lsp beschreven staan. DOG3.lsp en als ik hier de osmode verander in hetgene dat ik wil dan doet hij dat zo wel
greetz
Ik denk dat ik heb gevonden hoe het kom dat die osmode niet verandert.
(setq dogtag (entlast))
(dog-begin)
(command "_layer" "_m" "DOG" "" )
(setq dogqqqv nil)
(setq oldsnap (getvar "osmode"))
Als in het programme dog-begin uw snap op 0 worden gezet en erna oldsnap op de waarde krijgt , is die nl ook 0.
(dog-end)
(setvar "osmode" oldsnap)
Opt einde staat alles wel goed.
Dus wat jij in feite moest doen is:
(setq dogtag (entlast))
(setq oldsnap (getvar "osmode"))
(dog-begin)
(command "_layer" "_m" "DOG" "" )
(setq dogqqqv nil)
Die oldsnap moet zijn gegevens halen vooralleer er iets getekend wordt waarbij de snap bv op 0 staat.
Best is uw gegevens die ge wilt behouden, curren layer, snap setting enz dit op de eerste regels te programmeren.
Om deze gegevens terug te willen moet ge ze volledig op he einde van het programma plaatsen.
Ps: Had er vorige keer ni zo goed naar gekeken.
Mvg
Kenny