CADsite forum

AutoCAD => Autolisp => Topic gestart door: alexander op di 25 10 2005, 17:45:39

Titel: fouten
Bericht door: alexander op di 25 10 2005, 17:45:39
krijg van onderstaande lisp een fout.
de bedoeling is dat hij de hoogte meet de breedte dit gaat goed daarna aangeven hoeveel , hier gaat het fout want uiteindelijk tekent hij er maar 1

(defun front-deurverdeling (/ r)(/ a)(/ d)(/ b)(/ c)(/ e)(/ g)(/ j)(/ punt1)(/ punt2)(/ punt3)(/ punt4))
   (setq r (getdist "MEET UIT UW TEKENING; DE HOOGTE VAN DE ROMP... "))(terpri)
   (setq d (getdist "MEET UIT UW TEKENING; DE BREEDTE VAN DE ROMP... "))(terpri)
   (setq c (getint "HOEVEEL FRONTEN OF DEUREN WILT U IN DE BREEDTE TOEPASSEN  ? "))(terpri)
   (setq a (getint "HOEVEEL FRONTEN OF DEUREN WILT U IN DE HOOGTE TOEPASSEN  ? "))(terpri)
   (setq g (getreal "HOEVEEL GROOT MOET DE HANGNAAD BOVENIN WORDEN ? "))(terpri)
   (setq k (getreal "HOEVEEL GROOT MOET DE HANGNAAD AAN DE ZIJ' en ONDERKANT WORDEN ? "))(terpri)
   (setq j (getreal "HOEVEEL GROOT MOET DE HANGNAAD ONDERLING WORDEN ? "))(terpri)
   (setq h (- a 1))
   (setq e (- c 1))
   (setq b (/ (- d (+ (+ k k (* j e)))) c))
   (setq f (/ (- r (+ (+ g k (* j h)))) a))
   (setq x (+ f j))
   (setq y (+ b j))
   (if (= 1 a ) (setq x y) (setq x x))
   (setq punt1 (getpoint "KlIK AAN; DE LINKER BENEDENHOEK VAN DE ROMP... "))(terpri)
   (setq punt2 (polar punt1 0 k))
   (setq punt3 (polar punt2 1.570795 k))
   (setq punt4 (polar punt3 0 b))
   (setq punt5 (polar punt4 1.570795 f))
   (setq punt6 (polar punt5 pi b))
   (setq lastlay (getvar "clayer"))
   (command "layer" "n" "deur-front" "")
   (command "layer" "th" "deur-front" "")
   (command "layer" "on" "deur-front" "")
   (command "clayer" "deur-front")
   (command "layer" "c" "4" "" "")
   (command "pline" "non" punt3 "non" punt4 "non" punt5 "non" punt6 "non" "c")



kan er niet uit komen..
Titel: fouten
Bericht door: Joop op wo 26 10 2005, 07:39:09
Voorzover ik kan zien geef je ook maar een tekenopdracht.
Titel: fouten
Bericht door: alexander op wo 26 10 2005, 08:11:31
je bent er vroeg bij joop.. :lol:
Ja dat is ook de bedoeling.. als ik een vooraanzicht van een kast heb bijv rechthoek dan wil ik dmv de breedte te meten en de hoogte van mijn corpus  hierna aan te geven hoeveel deuren in de hoogte en de breedte en door aan te geven wat de hangnaad moet zijn dat hij auto deze deuren intekent..
Ik kan nu netjes alles ingeven maar als ik aangeef in mijn vcb bijv 2 in de breedte dan tekent hij maar 1
Titel: Re: fouten
Bericht door: HofCAD op wo 26 10 2005, 09:00:01
Citaat van: alexanderkrijg van onderstaande lisp een fout.
de bedoeling is dat hij de hoogte meet de breedte dit gaat goed daarna aangeven hoeveel , hier gaat het fout want uiteindelijk tekent hij er maar 1

(defun front-deurverdeling (/ r)(/ a)(/ d)(/ b)(/ c)(/ e)(/ g)(/ j)(/ punt1)(/ punt2)(/ punt3)(/ punt4))
   (setq r (getdist "MEET UIT UW TEKENING; DE HOOGTE VAN DE ROMP... "))(terpri)
   (setq d (getdist "MEET UIT UW TEKENING; DE BREEDTE VAN DE ROMP... "))(terpri)
   (setq c (getint "HOEVEEL FRONTEN OF DEUREN WILT U IN DE BREEDTE TOEPASSEN  ? "))(terpri)
   (setq a (getint "HOEVEEL FRONTEN OF DEUREN WILT U IN DE HOOGTE TOEPASSEN  ? "))(terpri)
   (setq g (getreal "HOEVEEL GROOT MOET DE HANGNAAD BOVENIN WORDEN ? "))(terpri)
   (setq k (getreal "HOEVEEL GROOT MOET DE HANGNAAD AAN DE ZIJ' en ONDERKANT WORDEN ? "))(terpri)
   (setq j (getreal "HOEVEEL GROOT MOET DE HANGNAAD ONDERLING WORDEN ? "))(terpri)
   (setq h (- a 1))
   (setq e (- c 1))
   (setq b (/ (- d (+ (+ k k (* j e)))) c))
   (setq f (/ (- r (+ (+ g k (* j h)))) a))
   (setq x (+ f j))
   (setq y (+ b j))
   (if (= 1 a ) (setq x y) (setq x x))
   (setq punt1 (getpoint "KlIK AAN; DE LINKER BENEDENHOEK VAN DE ROMP... "))(terpri)
   (setq punt2 (polar punt1 0 k))
   (setq punt3 (polar punt2 1.570795 k))
   (setq punt4 (polar punt3 0 b))
   (setq punt5 (polar punt4 1.570795 f))
   (setq punt6 (polar punt5 pi b))
   (setq lastlay (getvar "clayer"))
   (command "layer" "n" "deur-front" "")
   (command "layer" "th" "deur-front" "")
   (command "layer" "on" "deur-front" "")
   (command "clayer" "deur-front")
   (command "layer" "c" "4" "" "")
   (command "pline" "non" punt3 "non" punt4 "non" punt5 "non" punt6 "non" "c")



kan er niet uit komen..


----------- ~\\|//~ ------------
------------
  • -
  • -------------
    -------ooO---(_)---Ooo-------- [/color]

    Beste Alexander,

    Ik snap niks van uw programma kop(declaratie)

    (defun front-deurverdeling (/ r)(/ a)(/ d)(/ b)(/ c)(/ e)(/ g)(/ j)(/ punt1)(/ punt2)(/ punt3)(/ punt4))
    Moet dat niet zijn:

    (defun front-deurverdeling ( / r  a d b c e g j punt1 punt2 punt3 punt4)

    Groetjes HofCAD CSI

    PS Ik ben blond :oops:  :oops:  :oops:  :oops:
Titel: fouten
Bericht door: alexander op wo 26 10 2005, 11:26:55
ik heb dat gewijzigd maar verandert weinig.

wat mijn bedoeling was is dat als ik een vooraanzicht teken van een kast
bijvoorbeeld 1000x800 hoog en hier 3 deurtjes voor wil hebben in vooraanzicht dat dmv lisp door de hoogte te meten en de breedte kan aangeven dmv hoeveel deuren ik nodig heb en de hangnaad aan onderzijde bovenzijde zijkant en onderling deze automatisch in een laag worden getekend in een bep. kleur..


ps. ik ben ook blond maar heb veel minder haar.. : :roll: roll:
Titel: fouten
Bericht door: Joop op do 27 10 2005, 07:40:41
Je moet van elk deurtje de hoek/tekenpunten bepalen en dan pas de deurtjes tekenen.
Gewoon sequentieel werken.
Titel: fouten
Bericht door: alexander op ma 31 10 2005, 21:44:49
dat valt me dan weer tegen van lisp..
dan ben ik sneler om via een polyline hetzelfde te bereiken.
Titel: fouten
Bericht door: Joop op di 01 11 2005, 07:39:42
Dit heeft niets met lisp te maken maar is een wiskundig probleem.
Je kunt de punten van de deurtjes met gebruik van "wiskunde" bepalen. (basis algebra)

Bv.:
Vlak is 1000x1000
Buitenste rand = 100
Te verdelen vlak = 800x800
Aantal deurtjes = 4
Tussenruimte = 100
punten deurtje links onder = 100,100 ((700 / 2) + 100),100 ((700 / 2) + 100),((700 / 2) + 100),100 100,((700 / 2) + 100),100

Andere deurtjes hetzelfde.
Als je nu variabelen gebruikt is het "simpel" te programmeren.