[几何图案系列] 动态3DMESH及一些3DMESH图形(心型、星型、莫比乌斯环、海螺等)
[飞马系列] 动态3DMESH及一些3DMESH图形(心型、星型、莫比乌斯环、海螺等)qjchen
首先说明一下,这些内容用MATLAB,MATHEMATICA之类均很简单地实现,此处仅探讨AUTOCAD 3DMESH的一些内容
一直以来,对数学图形总是比较着迷的
在早期学习lambda的时候,曾经去过这个网站
http://autolisp.mapcar.net/lambda.html
学到了lambda的有趣的用法和初窥3dmesh
后来,学grread的时候,写过如下的一段代码,用于动态形成波浪式的3dmesh,不过不少代码是来自他人的
;;;by David Bethel : http://www.cadtutor.biz/forum/showthread.php?t=5457
(defun draw_mesh (vlist mmesh nmesh mflg nflg / cflg)
(and (= (type vlist) 'LIST)
(= (type nmesh) 'INT)
(= (type mmesh) 'INT)
(< nmesh 256)
(< mmesh 256)
(> nmesh 2)
(> mmesh 2)
(cond ((and nflg mflg) (setq cflg 49))
(nflg (setq cflg 48))
(mflg (setq cflg 17))
(t (setq cflg 16)))
(entmake (list (cons 0 "POLYLINE")(cons 66 1)
(cons 6 "BYLAYER")
(cons 10 (list 0 0 0))
(cons 70 cflg)
(cons 71 mmesh)(cons 72 nmesh)
(cons 39 0)))
(foreach v vlist
(entmake (list (cons 0 "VERTEX")
(cons 6 "BYLAYER")
(cons 10 v)
(cons 70 64))))
(entmake (list (cons 0 "SEQEND")))
))
;;; by Qjchen
;;;; from http://autolisp.mapcar.net/lambda.html
(defun genlist(expr steps xpi ypi scale / plist tlist xn yn zn)
(setq plist nil)
(setq xn 0.0 yn 0.0)
(repeat(* xpi steps)
(setq tlist nil)
(setq yn 0.0)
(repeat(* ypi steps)
(setq zn(* scale ((eval expr) xn yn)))
(setq tlist(append tlist(list (list xn yn zn))))
(setq yn(+ yn(/ pi steps)))
)
(setq plist(append plist tlist))
(setq xn(+ xn(/ pi steps)))
)
plist
)
;;;the following is by qjchen@gmail.com
(defun c:test ( / ent1 gr height scale temp)
(setq temp (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "._-view" "_top")
(command "._-view" "_swiso")
(command "zoom" "w" "-10,-10" "15,15")
(setq height (getvar "viewsize"))
(while (= (car (setq gr (grread nil 5 0))) 5)
(if (setq ent1 (entlast))(entdel ent1))
(setq scale (* (/ (- (cadr (cadr gr)) 10) height) 5))
(draw_mesh (genlist '(lambda (x y /) (* (cos x) (cos y))) 10 3 3 scale) 30 30 nil nil )
)
(setvar "cmdecho" temp)
(princ)
)
近日,买了一本 王文栋(中国美院建筑专业研究生)写的《rhinos参数建模》的书,觉得大开眼界
不过书中的均是基于Rhino的Nurbs曲面
于是萌发出用3dmesh绘制这些漂亮图形的念头,于是花了几个小时撰写这个自娱自乐的代码
这次的代码是在Lee Mac的ActiveX思路上新写的,比Entmake要简单许多
http://www.theswamp.org/index.php?topic=33766.0
后来又在 (http://k3dsurf.sourceforge.net/ ) 下载了k3dsurf 这个开源软件,里面有更多有趣的曲面
采用了里面的一些图形定义
(注:图中的12个图形,部分经过缩放来保证各图形大小比较一致,部分经过旋转,渲染也是后期用CAD做的,非程序内置)
不过acad高版本是有nurbs的,不知道有没有哪位研究过如何用.Net或者Lisp来生成NURBS的
qjchen 大师果然强大 晕! 玩的太大了!这什么啊! 汗~~~~~~~~~~ 谢谢qjchen 分享,LISP的乐趣总是不经意间的发现。 不懂,学习一下 创意总在闪电中发生 感谢qjchen 分享程序! 很好、很强大,只能观仰了 很好很强大的东西,谢谢分享。
页:
[1]