Author Topic: snub dodecahedron - construction and main angle  (Read 2462 times)

0 Members and 1 Guest are viewing this topic.

ribarm

  • Gator
  • Posts: 3297
  • Marko Ribar, architect
snub dodecahedron - construction and main angle
« on: December 02, 2011, 01:21:24 PM »
Once, long time ago my friend from faculty of architecture, now my colegue, asked me to construct snub dodecahedron, so I did it with help of math forums where I found radius of cicumscribed sphere...
Now I discovered more precise way with help of Lee Mac's subfunctions that work perfect. So I thought I could share this my discovery...
To obtain main angle of rotation of edge triangle I used this routine :

Code: [Select]
;;----------------=={ 3D Rotate by Matrix }==-----------------;;
;;                                                            ;;
;;  Rotates a VLA-Object or Point List about a 3D axis using  ;;
;;  a Transformation matrix.                                  ;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  target - VLA-Object or Point List to Rotate               ;;
;;  p1,p2  - Two 3D points defining the axis of rotation      ;;
;;  ang    - Rotation Angle                                   ;;
;;------------------------------------------------------------;;

(defun LM:Rotate3D ( target p1 p2 ang / ux uy uz )

  (mapcar 'set '(ux uy uz) (setq u (unit (mapcar '- p2 p1))))

  (LM:ApplyMatrixTransformation target
    (setq m
      (m+m
        (list
          (list (cos ang) 0. 0.)
          (list 0. (cos ang) 0.)
          (list 0. 0. (cos ang))
        )
        (m+m
          (mxs
            (list
              (list 0. (- uz) uy)
              (list uz 0. (- ux))
              (list (- uy) ux 0.)
            )
            (sin ang)
          )
          (mxs (mapcar '(lambda ( e ) (vxs u e)) u) (- 1. (cos ang)))
        )
      )
    )     
    (mapcar '- p1 (mxv m p1))
  )
)

;;----------------=={ 3D Reflect by Matrix }==----------------;;
;;                                                            ;;
;;  Reflects a VLA-Object or Point List in a plane using a    ;;
;;  Transformation matrix.                                    ;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  target   - VLA-Object or Point List to Reflect            ;;
;;  p1,p2,p3 - Three 3D points defining the reflection plane  ;;
;;------------------------------------------------------------;;

(defun LM:Reflect3D ( target p1 p2 p3 / m u ux uy uz )

  (mapcar 'set '(ux uy uz) (setq u (unit (v^v (mapcar '- p2 p1) (mapcar '- p3 p1)))))

  (LM:ApplyMatrixTransformation target
    (setq m
      (list
        (list (- 1. (* 2. ux ux)) (* -2. uy ux) (* -2. ux uz))
        (list (* -2. ux uy) (- 1. (* 2. uy uy)) (* -2. uy uz))
        (list (* -2. ux uz) (* -2. uy uz) (- 1. (* 2. uz uz)))
      )
    )
    (mapcar '- p1 (mxv m p1))
  )
)

;;-----------=={ Apply Matrix Transformation }==--------------;;
;;                                                            ;;
;;  Transforms a VLA-Object or Point List using a             ;;
;;  Transformation Matrix                                     ;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2010 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  target - VLA-Object or Point List to Transform            ;;
;;  matrix - 3x3 Matrix by which to Transform object          ;;
;;  vector - 3D translation vector                            ;;
;;------------------------------------------------------------;;

(defun LM:ApplyMatrixTransformation ( target matrix vector ) (vl-load-com)
  (cond
    ( (eq 'VLA-OBJECT (type target))
     
      (vla-TransformBy target
        (vlax-tMatrix
          (append (mapcar '(lambda ( x v ) (append x (list v))) matrix vector)
           '((0. 0. 0. 1.))
          )
        )
      )
    )
    ( (listp target)

      (mapcar
        (function
          (lambda ( point ) (mapcar '+ (mxv matrix point) vector))
        )
        target
      )
    )       
  )
)

;; Matrix x Vector - Vladimir Nesterovsky
;; Args: m - nxn matrix, v - vector in R^n

(defun mxv ( m v )
  (mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
)

;; Matrix x Scalar - Lee Mac
;; Args: m - nxn matrix, n - real scalar

(defun mxs ( m s )
  (mapcar '(lambda ( r ) (mapcar '(lambda ( n ) (* n s)) r)) m)
)

;; Matrix + Matrix - Lee Mac
;; Args: m,n - nxn matrices

(defun m+m ( m n )
  (mapcar '(lambda ( r s ) (mapcar '+ r s)) m n)
)

;; Vector Norm - Lee Mac
;; Args: v - vector in R^n

(defun norm ( v )
  (sqrt (apply '+ (mapcar '* v v)))
)

;; Vector x Scalar - Lee Mac
;; Args: v - vector in R^n, s - real scalar

(defun vxs ( v s )
  (mapcar '(lambda ( n ) (* n s)) v)
)

;; Unit Vector - Lee Mac
;; Args: v - vector in R^n

(defun unit ( v )
  ( (lambda ( n ) (if (equal 0.0 n 1e-14) nil (vxs v (/ 1.0 n)))) (norm v))
)

;; Vector Cross Product - Lee Mac
;; Args: u,v - vectors in R^3

(defun v^v ( u v )
  (list
    (- (* (cadr u) (caddr v)) (* (cadr v) (caddr u)))
    (- (* (car  v) (caddr u)) (* (car  u) (caddr v)))
    (- (* (car  u) (cadr  v)) (* (car  v) (cadr  u)))
  )
)

(defun mid ( a b )
  (mapcar '(lambda (x y) (/ (+ x y) 2.0)) a b)
)

(defun dtr ( ad )
  (* (/ PI 180.0) ad)
)

;; Coplanar-p  -  Lee Mac
;; Returns T if points p1,p2,p3,p4 are coplanar

(defun LM:Coplanar-p ( p1 p2 p3 p4 )
    (
        (lambda ( n )
            (equal
                (last (trans p3 0 n))
                (last (trans p4 0 n))
                1e-9
            )
        )
        (v^v (mapcar '- p1 p2) (mapcar '- p1 p3))
    )
)

(defun snubcal ( pt1 pt2 pt3 cen cenn incr stan / ar pt3r ptt pttn o pp  )
  (setq ar stan)
  (setq pp pt3)
  (while (eq (LM:Coplanar-p cen cenn pt2 pp) nil)
    (setq ar (+ ar incr))
    (setq pt3r (car (LM:Rotate3D (list pt3) pt1 pt2 ar)))
    (setq ptt (inters pt3r (mid pt1 pt2) pt2 (mid pt1 pt3r) nil))
    (setq pttn (mapcar '+ ptt (v^v (mapcar '- pt3r pt1) (mapcar '- pt3r pt2))))
    (setq o (inters ptt pttn cen cenn nil))
    (setq pp (car (LM:Reflect3D (list pt1) pt2 o pt3r)))
  )
  pp
;  ar
)

(defun c:snub ( / pt1 pt2 pt3 cen cenn incr stan )
  (vl-cmdf "_.UCS" "w")
  (setq pt1 (getpoint "\nPick first point of edge triangle in WCS plane - start point of axis trans definition"))
  (setq pt2 (getpoint "\nPick second point of edge triangle in WCS plane - end point of axis trans definition"))
  (setq pt3 (getpoint "\nPick third point of edge triangle in WCS plane - transform point"))
  (setq cen (getpoint "\nPick center point of 5 sided polygon : "))
  (setq cenn (mapcar '+ cen '(0.0 0.0 1.0)))
  (initget 6)
  (setq stan (getreal "\nInput start angle for continuing calculation <0.472462019882673 radians - ENTER> : "))
  (if (null stan) (setq stan 0.472462019882673))
  (initget 6)
  (setq incr (getreal "\nInput angle increment in decimal degrees <1e-16 radians - ENTER> : "))
  (if (null incr) (setq incr 1e-16))
  (princ
    (strcat
      (rtos (car (snubcal pt1 pt2 pt3 cen cenn incr stan)) 2 10)
      " , "
      (rtos (cadr (snubcal pt1 pt2 pt3 cen cenn incr stan)) 2 10)
      " , "
      (rtos (caddr (snubcal pt1 pt2 pt3 cen cenn incr stan)) 2 10)
    )
  )
;  (princ (rtos (snubcal pt1 pt2 pt3 cen cenn incr stan) 2 30))
(princ)
)

In addition I will attach *.dwg with marked points for checking with this my code...
To see my old construction, watch :

http://www.youtube.com/watch?v=QIZTaaLPtyc

Regards, M.R.
Thanks, Lee Mac...
:)
« Last Edit: May 19, 2012, 12:49:47 PM by ribarm »
Marko Ribar, d.i.a. (graduated engineer of architecture)

:)

M.R. on Youtube

Jeremy

  • Guest
Re: snub dodecahedron - construction and main angle
« Reply #1 on: December 03, 2011, 06:43:15 PM »
It would be helpful if you could give a more verbal explanation of the process you are using because just looking at your code I don't really grasp what you are doing although I am sure it is clever. I've been writing a command to draw all the semiregular solids but I go through the trouble of listing all of the vertex coordinates so that I can deal with vertices or draw just a polyhedrons edges or the faces by groups of points. It's a lot of work listing the vertices but I think the overall accuracy is greater than reflecting and rotating several times. I think you will build accumulated error that way but I might be wrong. Even the regular plane tessellations I have found to be inaccurate if you just use the polygon command and connect polys. Better to generate by calculation but more labor intensive.

ribarm

  • Gator
  • Posts: 3297
  • Marko Ribar, architect
Re: snub dodecahedron - construction and main angle
« Reply #2 on: May 19, 2012, 12:53:10 PM »
This code refers to my newly made GEODESIC SPHERES.ZIP witch contains among all others that I know (main polyhedrons) snub dodecahedron geodesic sphere... Here I'll post only routine for pure snub dodecaheron :

Code: [Select]
(defun faceseg3 (p1 p2 p3)
  (vl-cmdf "_.3dpoly" p1 p2 p3 "c" "")
  (vl-cmdf "_.region" (entlast) "")
)

(defun faceseg5 (p1 p2 p3 p4 p5 / p1u p2u p3u p4u p5u)
  (vl-cmdf "_.ucs" "3" p1 p2 p3)
  (setq p1u (trans p1 0 1) p2u (trans p2 0 1) p3u (trans p3 0 1) p4u (trans p4 0 1) p5u (trans p5 0 1))
  (vl-cmdf "_.pline" p1u p2u p3u p4u p5u "c" "")
  (vl-cmdf "_.region" (entlast) "")
  (vl-cmdf "_.ucs" "p")
)

(defun c:snubdodeca ( / OSM DODECAF1 DODECAF10 DODECAF11 DODECAF12 DODECAF2 DODECAF3 DODECAF4 DODECAF5 DODECAF6 DODECAF7 DODECAF8 DODECAF9 ICOSAF1 ICOSAF10 ICOSAF11 ICOSAF12 ICOSAF13 ICOSAF14 ICOSAF15 ICOSAF16 ICOSAF17 ICOSAF18 ICOSAF19 ICOSAF2 ICOSAF20 ICOSAF21 ICOSAF22 ICOSAF23 ICOSAF24 ICOSAF25 ICOSAF26 ICOSAF27 ICOSAF28 ICOSAF29 ICOSAF3 ICOSAF30 ICOSAF31 ICOSAF32 ICOSAF33 ICOSAF34 ICOSAF35 ICOSAF36 ICOSAF37 ICOSAF38 ICOSAF39 ICOSAF4 ICOSAF40 ICOSAF41 ICOSAF42 ICOSAF43 ICOSAF44 ICOSAF45 ICOSAF46 ICOSAF47 ICOSAF48 ICOSAF49 ICOSAF5 ICOSAF50 ICOSAF51 ICOSAF52 ICOSAF53 ICOSAF54 ICOSAF55 ICOSAF56 ICOSAF57 ICOSAF58 ICOSAF59 ICOSAF6 ICOSAF60 ICOSAF61 ICOSAF62 ICOSAF63 ICOSAF64 ICOSAF65 ICOSAF66 ICOSAF67 ICOSAF68 ICOSAF69 ICOSAF7 ICOSAF70 ICOSAF71 ICOSAF72 ICOSAF73 ICOSAF74 ICOSAF75 ICOSAF76 ICOSAF77 ICOSAF78 ICOSAF79 ICOSAF8 ICOSAF80 ICOSAF9 M PT PTSNUBDODECALST PTSNUBDODECALSTN R RAD)
  (setq osm (getvar 'osmode))
  (setvar 'osmode 0)
  (setq ptsnubdodecalst (list
                          (list 0.85065081 0.00000000 1.98091595)
                          (list 0.26286556 0.80901699 1.98091595)
                          (list -0.68819096 0.50000000 1.98091595)
                          (list -0.68819096 -0.50000000 1.98091595)
                          (list 0.26286556 -0.80901699 1.98091595)
                          (list 1.65294319 0.00000000 1.38398469)
                          (list 1.18063392 0.85778075 1.58680514)
                          (list 0.51078754 1.57204239 1.38398469)
                          (list -0.45096203 1.38791841 1.58680514)
                          (list -1.33725913 0.97157563 1.38398469)
                          (list -1.45934378 0.00000000 1.58680514)
                          (list -1.33725913 -0.97157563 1.38398469)
                          (list -0.45096203 -1.38791841 1.58680514)
                          (list 0.51078754 -1.57204239 1.38398469)
                          (list 1.18063392 -0.85778075 1.58680514)
                          (list 1.82184102 -0.80901700 0.82098820)
                          (list 1.54828240 -1.49314098 0.14486686)
                          (list 0.73800680 -1.96471661 0.49281782)
                          (list -0.20644105 -1.98267377 0.82098820)
                          (list -0.00944063 -2.15094381 -0.14486688)
                          (list 0.89358915 -1.89901654 -0.49281783)
                          (list 1.56504743 -1.23460103 -0.82098822)
                          (list 2.04275181 -0.67365677 -0.14486688)
                          (list 2.09661318 0.09475535 0.49281782)
                          (list 2.08220629 0.26302540 -0.49281783)
                          (list 1.62888612 0.28098255 -1.38398469)
                          (list 1.30926437 -0.64460148 -1.58680514)
                          (list 0.77058378 -1.46233438 -1.38398469)
                          (list 0.39656397 -0.75255818 -1.98091595)
                          (list 0.83827037 0.14460148 -1.98091595)
                          (list 1.01763738 1.04599160 -1.58680514)
                          (list 1.65780161 1.10693586 -0.82098822)
                          (list 1.89850704 1.01109813 0.14486686)
                          (list 1.33240072 1.48267377 0.82098820)
                          (list 0.55777141 2.02327864 0.49281782)
                          (list 1.27193068 1.73460103 -0.14486688)
                          (list 0.23612321 1.63599114 -1.38398469)
                          (list 0.39328511 2.06157518 -0.49281783)
                          (list -0.37494053 2.11803399 0.14486686)
                          (list -0.54046969 1.91872501 -0.82098822)
                          (list -0.68032988 1.29105984 -1.58680514)
                          (list 0.12151561 0.84192681 -1.98091595)
                          (list -1.48295395 0.73011558 -1.38398469)
                          (list -1.83914272 1.01109813 -0.49281783)
                          (list -1.25665542 1.74569916 -0.14486688)
                          (list -0.76316959 0.37573790 -1.98091595)
                          (list -1.43810437 -0.24807273 -1.58680514)
                          (list -1.99183025 0.07890142 -0.82098822)
                          (list -2.13023303 0.29791887 0.14486686)
                          (list -1.75189149 1.15569962 0.49281782)
                          (list -0.99837208 1.72535978 0.82098820)
                          (list -1.94942860 -0.41634278 0.82098820)
                          (list -1.64049990 -1.30901700 0.49281782)
                          (list -2.04858644 -0.65569961 -0.14486688)
                          (list -1.52993783 -1.43668216 -0.49281783)
                          (list -1.15263915 -1.18475490 -1.38398469)
                          (list -0.59318035 -0.60970802 -1.98091595)
                          (list -0.20846750 -1.44437722 -1.58680514)
                          (list -0.69054910 -1.86996126 -0.82098822)
                          (list -0.94161589 -1.93391001 0.14486686)
                        )
  )
  (setq rad (getdist '(0.0 0.0 0.0) "\nPick radius : "))
  (setq r (distance '(0.0 0.0 0.0) (car ptsnubdodecalst)))
  (setq m (/ rad r))
  (setq ptsnubdodecalstn (mapcar '(lambda (pt) (list (* m (car pt)) (* m (cadr pt)) (* m (caddr pt)))) ptsnubdodecalst))

  (setq icosaf1 (faceseg3 (nth 0 ptsnubdodecalstn) (nth 5 ptsnubdodecalstn) (nth 6 ptsnubdodecalstn)))
  (setq icosaf2 (faceseg3 (nth 0 ptsnubdodecalstn) (nth 6 ptsnubdodecalstn) (nth 1 ptsnubdodecalstn)))
  (setq icosaf3 (faceseg3 (nth 1 ptsnubdodecalstn) (nth 6 ptsnubdodecalstn) (nth 7 ptsnubdodecalstn)))
  (setq icosaf4 (faceseg3 (nth 1 ptsnubdodecalstn) (nth 7 ptsnubdodecalstn) (nth 8 ptsnubdodecalstn)))
  (setq icosaf5 (faceseg3 (nth 1 ptsnubdodecalstn) (nth 8 ptsnubdodecalstn) (nth 2 ptsnubdodecalstn)))
  (setq icosaf6 (faceseg3 (nth 2 ptsnubdodecalstn) (nth 8 ptsnubdodecalstn) (nth 9 ptsnubdodecalstn)))
  (setq icosaf7 (faceseg3 (nth 2 ptsnubdodecalstn) (nth 9 ptsnubdodecalstn) (nth 10 ptsnubdodecalstn)))
  (setq icosaf8 (faceseg3 (nth 2 ptsnubdodecalstn) (nth 10 ptsnubdodecalstn) (nth 3 ptsnubdodecalstn)))
  (setq icosaf9 (faceseg3 (nth 3 ptsnubdodecalstn) (nth 10 ptsnubdodecalstn) (nth 11 ptsnubdodecalstn)))
  (setq icosaf10 (faceseg3 (nth 3 ptsnubdodecalstn) (nth 11 ptsnubdodecalstn) (nth 12 ptsnubdodecalstn)))
  (setq icosaf11 (faceseg3 (nth 3 ptsnubdodecalstn) (nth 12 ptsnubdodecalstn) (nth 4 ptsnubdodecalstn)))
  (setq icosaf12 (faceseg3 (nth 4 ptsnubdodecalstn) (nth 12 ptsnubdodecalstn) (nth 13 ptsnubdodecalstn)))
  (setq icosaf13 (faceseg3 (nth 4 ptsnubdodecalstn) (nth 13 ptsnubdodecalstn) (nth 14 ptsnubdodecalstn)))
  (setq icosaf14 (faceseg3 (nth 4 ptsnubdodecalstn) (nth 14 ptsnubdodecalstn) (nth 0 ptsnubdodecalstn)))
  (setq icosaf15 (faceseg3 (nth 0 ptsnubdodecalstn) (nth 14 ptsnubdodecalstn) (nth 5 ptsnubdodecalstn)))
  (setq icosaf16 (faceseg3 (nth 14 ptsnubdodecalstn) (nth 5 ptsnubdodecalstn) (nth 15 ptsnubdodecalstn)))
  (setq icosaf17 (faceseg3 (nth 5 ptsnubdodecalstn) (nth 15 ptsnubdodecalstn) (nth 23 ptsnubdodecalstn)))
  (setq icosaf18 (faceseg3 (nth 15 ptsnubdodecalstn) (nth 23 ptsnubdodecalstn) (nth 22 ptsnubdodecalstn)))
  (setq icosaf19 (faceseg3 (nth 15 ptsnubdodecalstn) (nth 22 ptsnubdodecalstn) (nth 16 ptsnubdodecalstn)))
  (setq icosaf20 (faceseg3 (nth 16 ptsnubdodecalstn) (nth 22 ptsnubdodecalstn) (nth 21 ptsnubdodecalstn)))
  (setq icosaf21 (faceseg3 (nth 16 ptsnubdodecalstn) (nth 20 ptsnubdodecalstn) (nth 21 ptsnubdodecalstn)))
  (setq icosaf22 (faceseg3 (nth 16 ptsnubdodecalstn) (nth 17 ptsnubdodecalstn) (nth 20 ptsnubdodecalstn)))
  (setq icosaf23 (faceseg3 (nth 17 ptsnubdodecalstn) (nth 19 ptsnubdodecalstn) (nth 20 ptsnubdodecalstn)))
  (setq icosaf24 (faceseg3 (nth 17 ptsnubdodecalstn) (nth 18 ptsnubdodecalstn) (nth 19 ptsnubdodecalstn)))
  (setq icosaf25 (faceseg3 (nth 17 ptsnubdodecalstn) (nth 18 ptsnubdodecalstn) (nth 13 ptsnubdodecalstn)))
  (setq icosaf26 (faceseg3 (nth 12 ptsnubdodecalstn) (nth 13 ptsnubdodecalstn) (nth 18 ptsnubdodecalstn)))
  (setq icosaf27 (faceseg3 (nth 18 ptsnubdodecalstn) (nth 19 ptsnubdodecalstn) (nth 59 ptsnubdodecalstn)))
  (setq icosaf28 (faceseg3 (nth 59 ptsnubdodecalstn) (nth 19 ptsnubdodecalstn) (nth 58 ptsnubdodecalstn)))
  (setq icosaf29 (faceseg3 (nth 59 ptsnubdodecalstn) (nth 58 ptsnubdodecalstn) (nth 54 ptsnubdodecalstn)))
  (setq icosaf30 (faceseg3 (nth 52 ptsnubdodecalstn) (nth 59 ptsnubdodecalstn) (nth 54 ptsnubdodecalstn)))
  (setq icosaf31 (faceseg3 (nth 52 ptsnubdodecalstn) (nth 53 ptsnubdodecalstn) (nth 54 ptsnubdodecalstn)))
  (setq icosaf32 (faceseg3 (nth 51 ptsnubdodecalstn) (nth 52 ptsnubdodecalstn) (nth 53 ptsnubdodecalstn)))
  (setq icosaf33 (faceseg3 (nth 51 ptsnubdodecalstn) (nth 52 ptsnubdodecalstn) (nth 11 ptsnubdodecalstn)))
  (setq icosaf34 (faceseg3 (nth 10 ptsnubdodecalstn) (nth 11 ptsnubdodecalstn) (nth 51 ptsnubdodecalstn)))
  (setq icosaf35 (faceseg3 (nth 51 ptsnubdodecalstn) (nth 53 ptsnubdodecalstn) (nth 48 ptsnubdodecalstn)))
  (setq icosaf36 (faceseg3 (nth 47 ptsnubdodecalstn) (nth 48 ptsnubdodecalstn) (nth 53 ptsnubdodecalstn)))
  (setq icosaf37 (faceseg3 (nth 43 ptsnubdodecalstn) (nth 47 ptsnubdodecalstn) (nth 48 ptsnubdodecalstn)))
  (setq icosaf38 (faceseg3 (nth 43 ptsnubdodecalstn) (nth 48 ptsnubdodecalstn) (nth 49 ptsnubdodecalstn)))
  (setq icosaf39 (faceseg3 (nth 43 ptsnubdodecalstn) (nth 44 ptsnubdodecalstn) (nth 49 ptsnubdodecalstn)))
  (setq icosaf40 (faceseg3 (nth 44 ptsnubdodecalstn) (nth 49 ptsnubdodecalstn) (nth 50 ptsnubdodecalstn)))
  (setq icosaf41 (faceseg3 (nth 49 ptsnubdodecalstn) (nth 50 ptsnubdodecalstn) (nth 9 ptsnubdodecalstn)))
  (setq icosaf42 (faceseg3 (nth 50 ptsnubdodecalstn) (nth 8 ptsnubdodecalstn) (nth 9 ptsnubdodecalstn)))
  (setq icosaf43 (faceseg3 (nth 50 ptsnubdodecalstn) (nth 44 ptsnubdodecalstn) (nth 38 ptsnubdodecalstn)))
  (setq icosaf44 (faceseg3 (nth 38 ptsnubdodecalstn) (nth 39 ptsnubdodecalstn) (nth 44 ptsnubdodecalstn)))
  (setq icosaf45 (faceseg3 (nth 37 ptsnubdodecalstn) (nth 38 ptsnubdodecalstn) (nth 39 ptsnubdodecalstn)))
  (setq icosaf46 (faceseg3 (nth 34 ptsnubdodecalstn) (nth 37 ptsnubdodecalstn) (nth 38 ptsnubdodecalstn)))
  (setq icosaf47 (faceseg3 (nth 34 ptsnubdodecalstn) (nth 35 ptsnubdodecalstn) (nth 37 ptsnubdodecalstn)))
  (setq icosaf48 (faceseg3 (nth 33 ptsnubdodecalstn) (nth 34 ptsnubdodecalstn) (nth 35 ptsnubdodecalstn)))
  (setq icosaf49 (faceseg3 (nth 33 ptsnubdodecalstn) (nth 34 ptsnubdodecalstn) (nth 7 ptsnubdodecalstn)))
  (setq icosaf50 (faceseg3 (nth 6 ptsnubdodecalstn) (nth 7 ptsnubdodecalstn) (nth 33 ptsnubdodecalstn)))
  (setq icosaf51 (faceseg3 (nth 32 ptsnubdodecalstn) (nth 33 ptsnubdodecalstn) (nth 35 ptsnubdodecalstn)))
  (setq icosaf52 (faceseg3 (nth 31 ptsnubdodecalstn) (nth 32 ptsnubdodecalstn) (nth 35 ptsnubdodecalstn)))
  (setq icosaf53 (faceseg3 (nth 24 ptsnubdodecalstn) (nth 31 ptsnubdodecalstn) (nth 32 ptsnubdodecalstn)))
  (setq icosaf54 (faceseg3 (nth 23 ptsnubdodecalstn) (nth 24 ptsnubdodecalstn) (nth 32 ptsnubdodecalstn)))
  (setq icosaf55 (faceseg3 (nth 22 ptsnubdodecalstn) (nth 23 ptsnubdodecalstn) (nth 24 ptsnubdodecalstn)))
  (setq icosaf56 (faceseg3 (nth 54 ptsnubdodecalstn) (nth 58 ptsnubdodecalstn) (nth 55 ptsnubdodecalstn)))
  (setq icosaf57 (faceseg3 (nth 55 ptsnubdodecalstn) (nth 57 ptsnubdodecalstn) (nth 58 ptsnubdodecalstn)))
  (setq icosaf58 (faceseg3 (nth 55 ptsnubdodecalstn) (nth 56 ptsnubdodecalstn) (nth 57 ptsnubdodecalstn)))
  (setq icosaf59 (faceseg3 (nth 46 ptsnubdodecalstn) (nth 56 ptsnubdodecalstn) (nth 55 ptsnubdodecalstn)))
  (setq icosaf60 (faceseg3 (nth 45 ptsnubdodecalstn) (nth 46 ptsnubdodecalstn) (nth 56 ptsnubdodecalstn)))
  (setq icosaf61 (faceseg3 (nth 42 ptsnubdodecalstn) (nth 45 ptsnubdodecalstn) (nth 46 ptsnubdodecalstn)))
  (setq icosaf62 (faceseg3 (nth 42 ptsnubdodecalstn) (nth 46 ptsnubdodecalstn) (nth 47 ptsnubdodecalstn)))
  (setq icosaf63 (faceseg3 (nth 42 ptsnubdodecalstn) (nth 43 ptsnubdodecalstn) (nth 47 ptsnubdodecalstn)))
  (setq icosaf64 (faceseg3 (nth 56 ptsnubdodecalstn) (nth 57 ptsnubdodecalstn) (nth 28 ptsnubdodecalstn)))
  (setq icosaf65 (faceseg3 (nth 27 ptsnubdodecalstn) (nth 28 ptsnubdodecalstn) (nth 57 ptsnubdodecalstn)))
  (setq icosaf66 (faceseg3 (nth 26 ptsnubdodecalstn) (nth 27 ptsnubdodecalstn) (nth 28 ptsnubdodecalstn)))
  (setq icosaf67 (faceseg3 (nth 26 ptsnubdodecalstn) (nth 27 ptsnubdodecalstn) (nth 21 ptsnubdodecalstn)))
  (setq icosaf68 (faceseg3 (nth 20 ptsnubdodecalstn) (nth 21 ptsnubdodecalstn) (nth 27 ptsnubdodecalstn)))
  (setq icosaf69 (faceseg3 (nth 40 ptsnubdodecalstn) (nth 42 ptsnubdodecalstn) (nth 45 ptsnubdodecalstn)))
  (setq icosaf70 (faceseg3 (nth 40 ptsnubdodecalstn) (nth 41 ptsnubdodecalstn) (nth 45 ptsnubdodecalstn)))
  (setq icosaf71 (faceseg3 (nth 40 ptsnubdodecalstn) (nth 36 ptsnubdodecalstn) (nth 41 ptsnubdodecalstn)))
  (setq icosaf72 (faceseg3 (nth 36 ptsnubdodecalstn) (nth 41 ptsnubdodecalstn) (nth 30 ptsnubdodecalstn)))
  (setq icosaf73 (faceseg3 (nth 29 ptsnubdodecalstn) (nth 30 ptsnubdodecalstn) (nth 41 ptsnubdodecalstn)))
  (setq icosaf74 (faceseg3 (nth 25 ptsnubdodecalstn) (nth 29 ptsnubdodecalstn) (nth 30 ptsnubdodecalstn)))
  (setq icosaf75 (faceseg3 (nth 25 ptsnubdodecalstn) (nth 26 ptsnubdodecalstn) (nth 29 ptsnubdodecalstn)))
  (setq icosaf76 (faceseg3 (nth 26 ptsnubdodecalstn) (nth 28 ptsnubdodecalstn) (nth 29 ptsnubdodecalstn)))
  (setq icosaf77 (faceseg3 (nth 30 ptsnubdodecalstn) (nth 31 ptsnubdodecalstn) (nth 25 ptsnubdodecalstn)))
  (setq icosaf78 (faceseg3 (nth 24 ptsnubdodecalstn) (nth 25 ptsnubdodecalstn) (nth 31 ptsnubdodecalstn)))
  (setq icosaf79 (faceseg3 (nth 39 ptsnubdodecalstn) (nth 40 ptsnubdodecalstn) (nth 36 ptsnubdodecalstn)))
  (setq icosaf80 (faceseg3 (nth 36 ptsnubdodecalstn) (nth 37 ptsnubdodecalstn) (nth 39 ptsnubdodecalstn)))

  (setq dodecaf1 (faceseg5 (nth 0 ptsnubdodecalstn) (nth 1 ptsnubdodecalstn) (nth 2 ptsnubdodecalstn) (nth 3 ptsnubdodecalstn) (nth 4 ptsnubdodecalstn)))
  (setq dodecaf2 (faceseg5 (nth 11 ptsnubdodecalstn) (nth 12 ptsnubdodecalstn) (nth 18 ptsnubdodecalstn) (nth 59 ptsnubdodecalstn) (nth 52 ptsnubdodecalstn)))
  (setq dodecaf3 (faceseg5 (nth 9 ptsnubdodecalstn) (nth 10 ptsnubdodecalstn) (nth 51 ptsnubdodecalstn) (nth 48 ptsnubdodecalstn) (nth 49 ptsnubdodecalstn)))
  (setq dodecaf4 (faceseg5 (nth 7 ptsnubdodecalstn) (nth 8 ptsnubdodecalstn) (nth 50 ptsnubdodecalstn) (nth 38 ptsnubdodecalstn) (nth 34 ptsnubdodecalstn)))
  (setq dodecaf5 (faceseg5 (nth 5 ptsnubdodecalstn) (nth 6 ptsnubdodecalstn) (nth 33 ptsnubdodecalstn) (nth 32 ptsnubdodecalstn) (nth 23 ptsnubdodecalstn)))
  (setq dodecaf6 (faceseg5 (nth 13 ptsnubdodecalstn) (nth 14 ptsnubdodecalstn) (nth 15 ptsnubdodecalstn) (nth 16 ptsnubdodecalstn) (nth 17 ptsnubdodecalstn)))
  (setq dodecaf7 (faceseg5 (nth 19 ptsnubdodecalstn) (nth 20 ptsnubdodecalstn) (nth 27 ptsnubdodecalstn) (nth 57 ptsnubdodecalstn) (nth 58 ptsnubdodecalstn)))
  (setq dodecaf8 (faceseg5 (nth 53 ptsnubdodecalstn) (nth 54 ptsnubdodecalstn) (nth 55 ptsnubdodecalstn) (nth 46 ptsnubdodecalstn) (nth 47 ptsnubdodecalstn)))
  (setq dodecaf9 (faceseg5 (nth 39 ptsnubdodecalstn) (nth 40 ptsnubdodecalstn) (nth 42 ptsnubdodecalstn) (nth 43 ptsnubdodecalstn) (nth 44 ptsnubdodecalstn)))
  (setq dodecaf10 (faceseg5 (nth 30 ptsnubdodecalstn) (nth 31 ptsnubdodecalstn) (nth 35 ptsnubdodecalstn) (nth 37 ptsnubdodecalstn) (nth 36 ptsnubdodecalstn)))
  (setq dodecaf11 (faceseg5 (nth 21 ptsnubdodecalstn) (nth 22 ptsnubdodecalstn) (nth 24 ptsnubdodecalstn) (nth 25 ptsnubdodecalstn) (nth 26 ptsnubdodecalstn)))
  (setq dodecaf12 (faceseg5 (nth 28 ptsnubdodecalstn) (nth 29 ptsnubdodecalstn) (nth 41 ptsnubdodecalstn) (nth 45 ptsnubdodecalstn) (nth 56 ptsnubdodecalstn)))

  (setvar 'osmode osm)
  (princ)
)

M.R.
Marko Ribar, d.i.a. (graduated engineer of architecture)

:)

M.R. on Youtube