Hallo,
Ik dacht mijn eerste kleine programma'tje geschreven te hebben, en waarempel het werkte nog ook.
Ik gebruikte vanmorgen snappoint "intersection" en dat ging goed, tot ik er nu "endpoint" bij aan heb gezet.
Nu wordt de lijn ook getekend vanaf het punt dat ik aanklik alleen gaat de lijn niet recht omhoog, maar volgt op een of andere manier een de stramienlijn die er ook loopt.
Is er iets fout in mijn code, of doe ik iets anders fout..??
(defun c:HL ()
(while
(setq beginpunt (getpoint "klik voor hulplijn: "))
(Command "clayer" "HULPLIJNTJE_KLEIN" "")
(setvar "celtype" "bylayer")
(command "line" beginpunt "@0,500" "")
(princ)
)
)
Met vriendelijke groet, Marcel..
Citaat van: marcelmaas op wo 18 03 2009, 12:17:00
Hallo,
Ik dacht mijn eerste kleine programma'tje geschreven te hebben, en waarempel het werkte nog ook.
Ik gebruikte vanmorgen snappoint "intersection" en dat ging goed, tot ik er nu "endpoint" bij aan heb gezet.
Nu wordt de lijn ook getekend vanaf het punt dat ik aanklik alleen gaat de lijn niet recht omhoog, maar volgt op een of andere manier een de stramienlijn die er ook loopt.
Is er iets fout in mijn code, of doe ik iets anders fout..??
(defun c:HL ()
(while
(setq beginpunt (getpoint "klik voor hulplijn: "))
(Command "clayer" "HULPLIJNTJE_KLEIN" "")
(setvar "celtype" "bylayer")
(command "line" beginpunt "@0,500" "")
(princ)
)
)
Met vriendelijke groet, Marcel..
Beste Marcel,
Probeer onderstaand:
(defun c:HL ( / ~osm)
(setq ~osm (getvar "OSMODE"));opslaan van de osnap setting
(setvar "OSMODE" 32);osnap op intersection
(Command "_layer" "M" "HULPLIJNTJE_KLEIN" "")
;laag HULPLIJNTJE_KLEIN evt. aanmaken en current zetten
(setvar "celtype" "bylayer")
(while
(setq beginpunt (getpoint "klik voor hulplijn: "))
(command "_line" beginpunt "@0,500" "")
)
(setvar "OSMODE" ~osm);terug zetten van de osnap setting
(princ)
)
Met vriendelijke groet, HofCAD CSI
Beste Hofcad,
Het probleem is er nog steeds.
Als ik het punt aanklik waar ik de lijn wil laten beginnen, dan wordt de lijn niet rechtomhoog, dus niet precies verticaal maar soms toch wat schuin getekend.
Dat terwijl er toch "@0,500" is opgegeven.
Het is net of de lijn aan de bovenkant toch ergens op snapt.
Waar zou dit aan kunnen liggen.?
Groeten, Marcel..
Beste Marcel,
Zit je dan in de buurt van een intersection?
Of probeer onderstaand:
(defun c:HL ( / ~osm ~cmd)
(setq ~osm (getvar "OSMODE"));opslaan van de osnap setting
(setq ~cmd (getvar "CMDECHO"));opslaan van de cmdecho setting
(setvar "CMDECHO" 0);cmdecho op 0
(Command "_layer" "M" "HULPLIJNTJE_KLEIN" "")
;laag HULPLIJNTJE_KLEIN evt. aanmaken en current zetten
(setvar "celtype" "bylayer")
(while
(setvar "OSMODE" 32);osnap op intersection
(setq beginpunt (getpoint "\nklik voor hulplijn: "))
(setvar "OSMODE" 0);osnap op none
(command "_line" beginpunt "@0,500" "")
)
(setvar "OSMODE" ~osm);terug zetten van de osnap setting
(setvar "CMDECHO" ~cmd);terug zetten van de cmdecho setting
(princ)
)
Met vriendelijke groet, HofCAD CSI
Beste Hofcad,
Zo werkt het wel, alleen heb ik ipv 'intersection' 'endpoint aangezet omdat ik merkte dat mijn onderlegger niet goed is getekend en ik daarom endpoint moest hebben om te kunnen snappen.
Nou is mijn vraag voor deze alleen nog, hoe kan ik meerdere snappoints aanzetten.?
Zo werkte het niet:
(setvar "OSMODE" 1 32);osnap op intersection
Moeten hier ergens wat comma's tussen of werkt het anders.?
Groeten, Marcel..
Citaat van: marcelmaas op wo 18 03 2009, 14:06:45
Beste Hofcad,
Zo werkt het wel, alleen heb ik ipv 'intersection' 'endpoint aangezet omdat ik merkte dat mijn onderlegger niet goed is getekend en ik daarom endpoint moest hebben om te kunnen snappen.
Nou is mijn vraag voor deze alleen nog, hoe kan ik meerdere snappoints aanzetten.?
Zo werkte het niet:
(setvar "OSMODE" 1 32);osnap op intersection
Moeten hier ergens wat comma's tussen of werkt het anders.?
Groeten, Marcel..
Beste Marcel,
Methode 1:
Zet de lopende osnap op de vangfunkties die je wil hebben, en type daarna OSMODE in.
Verander bij (setvar "OSMODE" 32) de 32 in de nieuwe waarde.
Methode 2:
Kijk in de help naar de AutoCAD variabele OSMODE en je ziet dat het de som is
van bitwaarden.
Dus o.a.:
0 NONe
1 ENDpoint
2 MIDpoint
4 CENter
8 NODe
16 QUAdrant
32 INTersection
64 INSertion
128 PERpendicular
Met vriendelijke groet, HofCAD CSI.
Beste Hofcad,
Ik heb inderdaad de bitwaarde opgeteld en kom dan op 33, hetzelfde als ik osmode intoets.
Dat heb ik veranderd en nu werkt het wel.
Alleen kan ik nu het commando stoppen door op esc te klikken, en niet via spatie of enter.
Wat ook inhoud dat de osnap settings die opgeslagen werden niet teruggezet gaan worden.
Is dat nog op te lossen.?
Groeten, Marcel..
Citaat van: marcelmaas op wo 18 03 2009, 14:42:47
Beste Hofcad,
Ik heb inderdaad de bitwaarde opgeteld en kom dan op 33, hetzelfde als ik osmode intoets.
Dat heb ik veranderd en nu werkt het wel.
Alleen kan ik nu het commando stoppen door op esc te klikken, en niet via spatie of enter.
Wat ook inhoud dat de osnap settings die opgeslagen werden niet teruggezet gaan worden.
Is dat nog op te lossen.?
Groeten, Marcel..
Beste Marcel,
Probeer dit eens:
(defun c:HL ( / ~osm ~cmd beginpunt)
(setq ~osm (getvar "OSMODE"));opslaan van de osnap setting
(setq ~cmd (getvar "CMDECHO"));opslaan van de cmdecho setting
(setvar "CMDECHO" 0);cmdecho op 0
(Command "_layer" "M" "HULPLIJNTJE_KLEIN" "")
;laag HULPLIJNTJE_KLEIN evt. aanmaken en current zetten
(setvar "celtype" "bylayer")
(while (setq beginpunt (getpoint "\nklik voor hulplijn: "))
(setvar "OSMODE" 0);osnap op none
(command "_line" beginpunt "@0,500" "")
(setvar "OSMODE" ~osm);osnap op oude setting
)
(setvar "OSMODE" ~osm);terug zetten van de osnap setting
(setvar "CMDECHO" ~cmd);terug zetten van de cmdecho setting
(princ)
)
Merk op dat je nu voor je het programma gebruikt je de lopende Osmode
op bijv.: Intersection en Endpoint moet instellen.
Wegens:
(setvar "OSMODE" ~osm);osnap op oude setting
Als je altijd alleen Intersection en Endpoint lopend wil hebben,
vervang dan de regel
(setvar "OSMODE" ~osm);osnap op oude setting
in
(setvar "OSMODE" 33);osnap op INT en END
Met vriendelijke groet, HofCAD CSI.
Beste Hofcad,
Ik begrijp dat het dus kiezen is tussen die 2 opties.
Als het dan niet mogelijk is om in het begin de osnap vangfuncties op te slaan en ze nadien weer terug te zetten, kies ik denk ik liever voor optie 1.
Ik gebruik toch meestal de functies endpoint en intersection.
Ik hoor het graag als je andere mogelijkheden ziet.
Groeten, Marcel..
Citaat van: marcelmaas op wo 18 03 2009, 15:27:28
Beste Hofcad,
Ik begrijp dat het dus kiezen is tussen die 2 opties.
Als het dan niet mogelijk is om in het begin de osnap vangfuncties op te slaan en ze nadien weer terug te zetten, kies ik denk ik liever voor optie 1.
Ik gebruik toch meestal de functies endpoint en intersection.
Ik hoor het graag als je andere mogelijkheden ziet.
Groeten, Marcel..
Beste Marcel,
Zet het laatste programma de Osmode dan niet terug?
Je moet niet
(setvar "OSMODE" ~osm);terug zetten van de osnap setting
veranderen, maar eventueel
(setvar "OSMODE" ~osm);osnap op oude setting
veranderen in
(setvar "OSMODE" 33);osnap op INT en END
.
Met vriendelijke groet, HofCAD CSI.
Beste Hofcad,
Ik heb nu deze code en die werkt opzicht goed.
Alleen als ik de code wil afsluiten omdat ik al mijn hulplijnen heb geplaatst dan kan dat niet met spatie/enter, maar moet dat met escape toets.
Daardoor zet hij ook de osnap settings niet terug denk ik.
Groeten, Marcel..
(defun c:HL ( / ~osm ~cmd)
(setq ~osm (getvar "OSMODE"));opslaan van de osnap setting
(setq ~cmd (getvar "CMDECHO"));opslaan van de cmdecho setting
(setvar "CMDECHO" 0);cmdecho op 0
(Command "_layer" "M" "HULPLIJNTJE_KLEIN" "")
;laag HULPLIJNTJE_KLEIN evt. aanmaken en current zetten
(setvar "celtype" "bylayer")
(while
(setvar "OSMODE" 33);osnap op endpoint en intersection
(setq beginpunt (getpoint "\nklik voor hulplijn: "))
(setvar "OSMODE" 0);osnap op none
(command "_line" beginpunt "@0,500" "")
)
(setvar "OSMODE" ~osm);terug zetten van de osnap setting
(setvar "CMDECHO" ~cmd);terug zetten van de cmdecho setting
(princ)
)
Citaat van: marcelmaas op wo 18 03 2009, 15:54:57
Beste Hofcad,
Ik heb nu deze code en die werkt opzicht goed.
Alleen als ik de code wil afsluiten omdat ik al mijn hulplijnen heb geplaatst dan kan dat niet met spatie/enter, maar moet dat met escape toets.
Daardoor zet hij ook de osnap settings niet terug denk ik.
Groeten, Marcel..
Beste Marcel,
Vreemd!!!!! :twisted:
Ik kan het laatste programma afsluiten met een spatie en met een Enter.
Zie het bijgevoegde bestand HL.lsp met de programma's HL en HL2.
Hoe test je eigenlijk mijn code, je kan mijn code na selectie en copy
gewoon op de commandoregel pasten(plakken).
Met vriendelijke groet, HofCAD CSI.
Citaat van: marcelmaas op wo 18 03 2009, 15:54:57
Beste Hofcad,
Ik heb nu deze code en die werkt opzicht goed.
Alleen als ik de code wil afsluiten omdat ik al mijn hulplijnen heb geplaatst dan kan dat niet met spatie/enter, maar moet dat met escape toets.
Daardoor zet hij ook de osnap settings niet terug denk ik.
Groeten, Marcel..
(defun c:HL ( / ~osm ~cmd)
(setq ~osm (getvar "OSMODE"));opslaan van de osnap setting
(setq ~cmd (getvar "CMDECHO"));opslaan van de cmdecho setting
(setvar "CMDECHO" 0);cmdecho op 0
(Command "_layer" "M" "HULPLIJNTJE_KLEIN" "")
;laag HULPLIJNTJE_KLEIN evt. aanmaken en current zetten
(setvar "celtype" "bylayer")
(while
(setvar "OSMODE" 33);osnap op endpoint en intersection
(setq beginpunt (getpoint "\nklik voor hulplijn: "))
(setvar "OSMODE" 0);osnap op none
(command "_line" beginpunt "@0,500" "")
)
(setvar "OSMODE" ~osm);terug zetten van de osnap setting
(setvar "CMDECHO" ~cmd);terug zetten van de cmdecho setting
(princ)
)
Als ik het goed heb werkt de optie van mercel niet omdat hier na While de OSMODE wordt aangepast. De theorie hierachter ken ik niet precies maar While wacht toch totdat er een variabele nil wordt?
Reimer.
zelf zou ik osnapcoord instellen om de nummerieke invoer boven de magneet funtie te stellen
Beste Hofcad,
Jou HL2 code werkt wel.
Ik zal zelf wel ergens iets fout begrepen hebben, en misschien verkeerd veranderd.
Maar nou werkt het zoals het zou moeten, geweldig.!!
Het is misschien dan nog maar een klein programma'tje maar scheelt mij wel weer wat werk.
En daar doen we het voor toch..!!!
Zo heb ik vandaag weer veel geleerd over lisp.
Hartstikke bedankt hiervoor.
Groeten, Marcel..
Beste Reimer,
Bedankt, Ik zie nu pas ook dat zijn code niet gelijk is aan de mijnen.
Achter de (While staat bij mij (while (setq beginpunt (getpoint "\nklik voor hulplijn: "))
Met vriendelijke groet, HofCAD CSI.