(defun C:SADEL () (setvar "CMDECHO" 0) (setq D1 (getdist "\nStamdiameter:")) (setq D2 (getdist "\nSadeldiameter:")) (setq h (getdist "\nSadelhöjd:")) (setq alpha (getangle "\nSadelvinkel:")) (setq pt (getpoint "\nInsättningspunkt:")) (command "UCS" "D" "sad") (command "UCS" "S" "sad") (setq c (LIST 0.0 0.0 0.0)) ;Sätter nollpunkt i koordinatsystem (setq r1 (/ D1 2)) ;Räknar om stamdiameter till radie (setq r2 (/ D2 2)) ;Räknar ut sadeldiameter till radie (setq H (+ r1 h)) ;Ränar ut höjden från centrum av stamdiameter (setq p1 (LIST (- r2) H 0.0)) ;Gör en punkt med linjen från 3 e kvadranten av sadeldiameter (setq p2 (LIST (- r1) 0.0 0.0)) ;Gör en pinkt på 3 e kvadranten på stamdiameter (Command "UCS" "W") ;Sätter koordinatsystem till World (Command "CIRCLE" "0,0,0" "D" D1) ;Ritar stamdiameter cirkeln (setq ec1 (entlast)) (Command "LINE" p1 (Osnap p2 "_tan") "") ;Drar en linje från sadelpunkt till tangent på stamdiameter (setq lin (entlast)) (setq lpt (nth 10 (entget (entlast)))) ;Tar fram skärningspunkt mellan linje å tangent på stamdiameter (setq X1 (nth 1 lpt)) ;Beräknar X koordinat på skärningspunkt (setq Y1 (nth 2 lpt)) ;Beräknar y koordinat på skärningspunkt (setq H1 (- H Y1)) ;Beräknar höjd från Y koordinat till sadelhöjd (setq Z1 (+ r2 (/ H1 (tan alpha)))) ;Beräknar bredd på sadel vid given sadelvinkel (setq p3 (LIST X1 Y1 Z1)) ;Beräknar yttre hörnet av sadel (setq p4 (LIST 0 Y1 Z1)) ;Beräknar bredd vid centrum av sadel (Command "LINE" p3 p4 "") ;Drar en linje från yttrehörn till centrum (setq e2 (entlast)) :Tar ut linjen som sista entitey (setq p4 (LIST p4)) ;Sätter en extra parentes kring punkt (Command "UCS" "_x" "90") ;Vrider koordinatsystem 90 grader (setq cen (LIST 0 0 (- H))) ;Sätter centrumpunkt för sadeldiameter (setq p5 (LIST (- r2) 0 (- H))) ;sätter slutpunkt på arc (Setq p6 (LIST 0 r2 (- H))) ;sätter startpunkt på arc (setq p7 (LIST(LIST 0 H r2))) ;sätter en extra parentes kring första kvadrant på sadeldiameter (Command "ARC" "C" cen p6 p5) ;Ritar en arc (setq e1 (entlast)) ;Tar ut arcen som sista entitet (setq ent1 (cons e1 p7)) ;Slår ihop arc med en punktpå första kvadranten på arc (setq ent2 (cons e2 p4)) ;slår ihop linje och cenrumpunkt på stamdiameter (setq n (getvar 'SURFTAB1)) ;Tar ut värde på indeningar i citrkeln (setvar "SURFTAB1" (/ n 4)) ; delar det med 4 (Command "UCS" "W") ;sätter koordinatsystem till world (Command "RULESURF" ent1 ent2) ;Gör en rulesurf mella arc å linje (setq 3dm1 (entlast)) ;tar ut atcytan å sätter den till 3dm1 (Command "UCS" "_x" "-90") ;vrider koordinat sytem med 90 grader (command "MIRROR" 3dm1 "" "0,0" "10,0" "N") ;spegevänder are ytan (Command "UCS" "_x" "90") ;vrider tillbaka koordinat system (setq 3dm4 (entlast)) ; sätter den andra arc ytbn till 3dm4 (Command "3DFACE" p1 p1 p3 (LIST X1 Y1 (- Z1)) "") ;Gör ett 3D face i triangeln i sadel (setq 3dm2 (entlast)) ;sätter 3dface till 3dm2 (setq H2 (LIST 0 0 (* 1.2 Z1))) ;Beräknar rörlängd slår på 20% (setq H3 (LIST 0 0 (- (* 1.2 Z1)))) (Command "COPY" ec1 "" c H2) ;kopierar cirkeln uppåt (setq ec2 (entlast)) (command "MOVE" ec1 "" c H3) ;flyttar circkel nedåt (setq p8 (LIST(LIST r1 0 (- (* 1.2 Z1)))));tar ut punkt på cirkel (setq p9 (LIST(LIST r1 0 (* 1.2 Z1)))) (setq e11 (cons ec1 p8)) ;slår ihop till en lista med vinkel å punkt (setq e22 (cons ec2 p9)) (setq n (getvar 'SURFTAB1)) (setvar "SURFTAB1" (* 4 n)) ;tar upp surftab1 4 ggr (Command "RULESURF" e11 e22) ;gör stamröret (setq 3dm3 (entlast)) (setq prot (LIST X1 Y1 0)) ;beräkninmg av vridningsvinklen för stamröre (setq alph (angle c prot)) (setq beta (/ pi (* 2 n))) (setq n2 (fix (/ alph beta))) (setq beta2 (* n2 beta)) (setq X2 (* r1 (cos beta2))) (setq Y2 (* r1 (sin beta2))) (setq prot1 (LIST X2 Y2 0)) (command "ROTATE" 3dm3 "" c "R" c prot1 prot) ;Vrider stamrör så att sadeln når tangentpunkt (command "UCS" "_y" "-90") (Command "ROTATE" 3dm1 3dm2 3dm3 3dm4 "" c "-90") ;vrider sadel så att den går efter z axeln (command "UCS" "_y" "90") ; Jag kommer inte åt min applikation FOLDnik så jag hoppas ni kan lösa det här ; Här skall man göra en 3DJOIN av 3dm1 3dm2 3dm4 och och ta entlast setq hsad1 ; Här skall man göra en Command "Mirror" på hsad1 och entlast hsad2 ; Här skall man göra en 3Dtrim mellan hsad1 och 3dm3 ; Här skall man göra en 3DTRIM mellan hsad2 och 3dm3 ; Sen gör man BLOCK hsad1 hsad2 3dm3 ;(command "3DJOIN" 3dm1 3dm2 3dm4) ;(setq hsad1 (entlast)) ;(command "MIRROR" hsad1 "" "0,0" "0,10" "N") ;(setq hsad2 (entlast)) ;(command "3DTRIM" hsad1 3dm3) ;(command "3DTRIM" hsad2 3dm3) ;Ersätt BLOCK Nedan ;(command "BLOCK" "SADEL" "Y" c 3dm3 hsad1 hsad2 "") (command "ERASE" e2 lin e1 ec1 ec2 "") ;tar bort alla hjälp cirklar å stödlinjer (command "BLOCK" "SADEL" "Y" c 3dm3 3dm4 3dm2 3dm1 "") ;gör ett block av sadel (command "UCS" "R" "sad") ;tar tillbaka ursprungligt koordinat system (command "INSERT" "SADEL" pt "" "" "0") (setq blk (entlast)) (Command "EXPLODE" blk "") (command "UCS" "D" "sad") (princ) ) (defun tan (a) (/ (sin a) (cos a)))