太和殿

太和殿

太和殿

Hall_of_supreme_harmony_cn_1.1

 

付费隐藏内容
此处内容需要权限查看

该内容查看价格:¥9999 / 永久VIP会员免费

登录后购买 开通VIP免费查看

 

付费隐藏内容
此处内容需要权限查看

该内容查看价格:¥9999 / 永久VIP会员免费

登录后购买 开通VIP免费查看
付费隐藏内容
此处内容需要权限查看

该内容查看价格:¥9999 / 永久VIP会员免费

登录后购买 开通VIP免费查看
付费隐藏内容
此处内容需要权限查看

该内容查看价格:¥9999 / 永久VIP会员免费

登录后购买 开通VIP免费查看
付费隐藏内容
此处内容需要权限查看

该内容查看价格:¥9999 / 永久VIP会员免费

登录后购买 开通VIP免费查看
/**
 * File:    TaiHe2022.1-1.0.cga
 * Created: 28 Nov 2022 03:27:59 GMT
 * Author:  mapda
 */

version "2022.1"



@Group("城市幻象","英文网站",0)
attr cityvistion_en = "www.createurban.com"

@Group("城市幻象","中文网站",0)
attr cityvistion_zh = "www.createurban.cn"


#####
##### attr

# color 

const basecolor = "#E0E0E0"
const brickcolor = "#d0d0d0"
const columnbasecolor = "#9D9D9D"
const columncolor ="#A73630"
const wallcolor = "#FF9797"
const roofcolor = "#9F5000"
const wincolor = "#D9B3B3"
const doorcolor = "#B87070"
const beamcolor = "#95CACA"


#lot
# @Group("地块控制","长度",10)@Range(min=32, max=120)@Order(1)
# //@Hidden
# attr harmony_length = 68
# @Group("地块控制","宽度",11)@Range(min=17, max=52)@Order(2)
# //@Hidden
# attr harmony_width  = 41

@Group("地块控制","旋转",12)@Range(min=0, max=360,stepsize=90)
attr rotate_angle  = 0

@Group("地块控制","地基高度",13)@Range(min=0.2, max=2)
attr baseheight = 0.35



#column
@Group("柱","宽度",50)@Range(min=0.5, max=9)
@Hidden
attr columnwidth =columnradiu*3.5

@Group("柱","面数",50) @Range(min=4, max=32)
@Hidden
attr column_facenum = 16
@Group("柱","半径",50) @Range(min=0.1, max=1.2)
@Hidden
attr columnradiu = 0.5
@Group("柱","高度",50) @Range(min=3, max=15)
attr columnheight = columnradiu*11
@Group("柱","颜色",50) @Color
attr column_color = "#A73630"

#roof
# @Group("屋顶","顶层坡度",30) @Range(min=10, max=50)
# attr top_roof_angle = 37
@Group("屋顶","屋顶坡度",30) @Range(min=10, max=50)
attr base_roof_angle= 27
@Group("roof","middle height" ,32) @Range(min=1, max=5)
const roof_middle_height = columnwidth*2
@Group("屋顶","屋檐长度",30) @Range(min=1, max=5)
@Hidden
attr roof_off_distance = 3.5

@Group("屋顶","递增坡度",30)@Range(min=5, max=9,stepsize=0.1)
attr roof_step_angle = 7

@Group("屋顶","弯曲比例",30)@Range(min=0.25, max=0.35,stepsize=0.01)
attr roof_percent = 0.3

@Group("墙体","显示关闭",20)@Enum("显示", "关闭")
attr wall_show = "显示"
@Group("墙体","开间宽度",20)@Range(min=2, max=15)
attr center_width = 7

##### function
##
# gethight= 
# # 	case scope.sx>scope.sz :scope.sx/9
# # 	else : scope.sz/9
# 	case geometry.area >= 2100 : 9
# 	case geometry.area >= 1500 : 8
# 	
# 	case geometry.area >= 1000 : 7
# 	else : 5
# 	
# getradiu =
# 	case scope.sx > scope.sz : scope.sx
# 	else : scope.sz/90




 dist = comp(fe){
    // inside : 2.5
      back   : 3.5
    | front  : 1.5
    | left   : 1
    | right  : 1
    
    }

 dists = comp(fe){ front  = 6   |
                   back   = scope.sx/12   |
                  side    = 0.1 
                                              
                       }


##### extension
## roofstyle


##################################
##### 中国古建筑屋顶类型扩展

//重檐歇山顶
extension DoubleGableAndHipRoof-->
roofHip(32,scope.sx/9)
split(y){'0.35:bottomroof | ~1 : 

primitiveQuad 
GableHiplot
t(0,scope.sx/5,0)
//roofGable(32,scope.sx/15)

roofHip (32,scope.sx/9)
split(y){'0.35:bottomroof | 
~1 :primitiveQuad roofGable(39,scope.sx/20) GableHipbox

} 
Gable_Hipbox 

}

GableHiplot--> extrude(scope.sx/5) 
    
    
    
//重檐庑殿顶
extension DoubleHipAndHipRoof-->
    roofHip(32,scope.sx/9)
    split(y){'0.35:bottomroof | ~1 : 
                                     
                                     primitiveQuad 
                                     HipHiplot
                                     t(0,scope.sx/5,0)
                                     roofHip(32,scope.sx/15) 
                                     Hip_Hipbox
                                     
                                     
            }
    
    HipHiplot--> extrude(scope.sx/5)
    
    
    
//歇山顶
extension GableAndHipRoof-->
    roofHip(32,scope.sx/9)
    split(y){'0.35:bottomroof | ~1 :                          
                                     primitiveQuad 
                                     roofGable(39,scope.sx/20) 
                                     GableHipbox
                                     
                                     
            }

    
//庑殿顶    
extension HipRoof-->
     roofHip(39,scope.sx/20) 
     Hipbox

// 硬山顶
extension GableRoof-->
     roofGable(35,scope.sx/17) 
     Gablebox    
    

//攒尖顶

extension PyramidRoof-->
    
    roofPyramid(32)
    Pyramidbox
    //roofHip(32,scope.sx/17)
    //split(y){'0.5:HipFlatbox}




//盝顶   庑殿顶平屋顶的组合

extension HipFlatRoof-->
    roofHip(32,scope.sx/17)
    split(y){'0.5:HipFlatbox}



//盔顶
extension PyramidFlatRoof-->
    
    roofPyramid(32)
    split(y){'0.5:PyramidFlatbox}
    //Pyramidbox


// 平屋顶

extension ShedRoof-->
    //extrude(scope.sx/20)
    roofShed(9,0)
    Shedbox

/////特殊的类型  屋顶屋檐

extension HipFlatSideRoof-->
    roofHip(32,scope.sx/12)
    split(y){'0.15:HipFlatbox}

##################################
##### 中国古建筑屋重楼阁类型




##############################################
##############################################
#################  执行规则 ##################
##############################################
##############################################




@StartRule


Taihe-->
    r(scopeCenter, 0, rotate_angle, 0)
    //primitiveQuad(harmony_length, harmony_width)
    setback(dist) { all  : extrude(baseheight) Taihe_base |
               remainder : t(0, baseheight, 0) Taihe_build_lot }
             
Taihe_base-->
    color(basecolor)      
    
Taihe_build_lot-->
     
    Taihe_column
    Taihe_roof 
    Taihe_beam
    Taihe_wall
    Taihe_house
    Taihe_roofside
    RoofandRoof
    Taihe_hiproof
    Taihe_winanddoor
    
#####################
####  生成柱    #####
#####################

Taihe_column-->
    case scope.sx > scope.sz :
    split(x){ scope.sx/90    : split(z){ { scope.sz/30 : column | ~scope.sz/30*5  : columnspace  }* | scope.sz/30  : column }  
            | scope.sx/90*5  : columnspace
            
            | {scope.sx/90   : split(z){ { scope.sz/30 : column | ~scope.sz/30*5  : columnspace  }* | scope.sz/30  : column }  
              |scope.sx/90*7  : columnspace
              
              } *
            |  scope.sx/90   : split(z){ { scope.sz/30 : column | ~scope.sz/30*5  : columnspace  }* | scope.sz/30  : column }  
            | ~scope.sx/90*9 : centerroad 
            |  scope.sx/90   : split(z){ { scope.sz/30 : column | ~scope.sz/30*5  : columnspace  }* | scope.sz/30  : column }   
            | {scope.sx/90*7 : columnspace 
              |scope.sx/90   : split(z){ { scope.sz/30 : column | ~scope.sz/30*5  : columnspace  }* | scope.sz/30  : column }  
              
              } *
            
            | scope.sx/90*5  : columnspace 
            | scope.sx/90    : split(z){ { scope.sz/30 : column | ~scope.sz/30*5  : columnspace  }* | scope.sz/30  : column }  
           
            }
    
    else :  

        split(z){ scope.sz/90    : split(x){ { scope.sx/30 : column | ~scope.sx/30*5  : columnspace  }* | scope.sx/30  : column }  
            | scope.sz/90*5  : columnspace
            
            | {scope.sz/90   : split(x){ { scope.sx/30 : column | ~scope.sx/30*5  : columnspace  }* | scope.sx/30  : column }  
              |scope.sz/90*7  : columnspace
              
              } *
            |  scope.sz/90   : split(x){ { scope.sx/30 : column | ~scope.sx/30*5  : columnspace  }* | scope.sx/30  : column }  
            | ~scope.sz/90*9 : centerroad 
            |  scope.sz/90   : split(x){ { scope.sx/30 : column | ~scope.sx/30*5  : columnspace  }* | scope.sx/30  : column }   
            | {scope.sz/90*7 : columnspace 
              |scope.sz/90   : split(x){ { scope.sx/30 : column | ~scope.sx/30*5  : columnspace  }* | scope.sx/30  : column }  
              
              } *
            
            | scope.sz/90*5  : columnspace 
            | scope.sz/90    : split(x){ { scope.sx/30 : column | ~scope.sx/30*5  : columnspace  }* | scope.sx/30  : column }  
           
            }
    


column-->
    //primitiveQuad(column_width, column_width)
    extrude(world.up.flatTop, 0.01)
    comp(f) { side : column_tex_copy | top : columnbase_top }
    
columnbase_top-->    
    alignScopeToAxes(world.y)    
    
    column_tex_copy
    primitiveCone(column_facenum, columnradiu*1.5, columnradiu)
    split(y){'0.1    : column_base
                | ~5 : column_main }

column_base-->
    color("#9D9D9D")    
    
column_main-->
    color(column_color)
    primitiveCylinder(column_facenum, columnradiu, columnheight)        
        
//柱础基贴图
column_tex_copy-->
    color("#9D9D9D")


//生成墙外铺地砖外部底面
centerroad-->  
    color("#BEBEBE") 
    
//柱之间地块铺装
columnspace-->   
    color("#d0d0d0")
    
    
###################
##### 太和房间


Taihe_house-->
    extrude(baseheight+columnheight)
    house_box
house_box-->
    case scope.sx> scope.sz : split(z){ { scope.sz/30    : column | ~scope.sz/30*5  : columnspace  }*	                                        
                                        | scope.sz/30*5    : split(x){scope.sx/90   : wall_tin 
                                                                    | ~10         : NIL 
                                                                    | scope.sx/90 : wall_tin}
                                        |~scope.sz/30  : NIL
                                        }
    //split(z){~10 :BOX| scope.sx/30*5 : NIL }
    
    else : 					  split(x){ { scope.sx/30    : column | ~scope.sx/30*5  : columnspace  }*	                                        
                                        | scope.sx/30*5    : split(z){scope.sz/90   : wall_tin 
                                                                    | ~10         : NIL 
                                                                    | scope.sz/90 : wall_tin}
                                        |~scope.sx/30  : NIL
                                        }


######################
#形成梁架体系

Taihe_beam-->
    beam_down
    beam_up
    
beam_down-->
    t(0,columnheight,0)
    setback(columnwidth*0.47) { all : NIL | remainder : setback(columnradiu) { all : beam_lot | remainder : NIL } }

beam_up-->
    t(0,columnheight+0.75,0)
    setback(columnwidth*0.4) { all : NIL | remainder : setback(columnradiu) { all : beam_lot | remainder : NIL } }


beam_lot-->
    extrude(columnradiu*2)
    comp(f){all : beam_tex}
beam_tex-->
    color("#95CACA")
    


#########################
#形成屋顶


Taihe_roofside-->
    color(roofcolor)
    t(0,baseheight+columnheight+3,0)
    HipFlatSideRoof

RoofandRoof-->
    t(0,baseheight+columnheight+2,0)
    color(beamcolor)
    extrude(3)
    RR
    
Taihe_hiproof-->
    
    t(0,baseheight+columnheight+5.5,0)
# 	HipRoof
    RoofBox

# Taihe_roof-->
#     t(0,columnheight+baseheight+columnradiu*7,0)    
#     roofHip(base_roof_angle,roof_off_distance)
#     
#     split(y) { '0.25 : fengxian_roofside_one 
#                 | ~5 : t (0,roof_middle_height*1.2,0) 
#                        primitiveQuad 
#                        roofHip(base_roof_angle,roof_off_distance) 
# #                        fengxian_roofside 
#                        RoofBox
#              }
#     
# //首层屋顶    
# fengxian_roofside_one-->
#     comp(f) { horizontal : fengxian_roofone_top | all : fengxian_roofside }
# 
# fengxian_roofone_top-->
#     case geometry.isOriented(world.up) : extrude(roof_middle_height*1.1) fengxian_roofmiddle_facade
# 
#     else                               : NIL        
# 
# fengxian_roofside-->
#     comp(f) { all : fengxian_roofside_tex }
# fengxian_roofside_tex-->    
# 	color("#9F5000")
# 
# fengxian_roofmiddle_facade-->
#     comp(f){side : split(y) { '0.5 : roofmiddle_tex 
#                             | '0.3 : comp(f){side : roofShed(30)dougong}} }        //斗拱贴图位置
# 
# roofmiddle_tex-->
# 	color("#95CACA")
#     
#     
#     
# dougong-->
#     comp(f){side :dougong_tex }    
# 
# dougong_tex-->  
# 	color("#95CACA")
#     
# 
//重檐屋顶坡度递增    
RoofBox-->
    roofHip(32,1.5)
    split(y) { 'roof_percent : roofbottom | ~2 : NIL }

roofbottom-->
    comp(f) { horizontal  :   roof_up_one
                    | all :   harmony_roofside}

roof_up_one-->
    case geometry.isOriented(world.up) : roofHip(base_roof_angle+roof_step_angle) split(y){'roof_percent : roofbottom_one | ~2 : NIL }

    else : NIL

roofbottom_one-->
    comp(f) { horizontal  :  roof_up_two
                    | all :  harmony_roofside}

roof_up_two-->
    case geometry.isOriented(world.up) : roofHip(base_roof_angle+roof_step_angle*2) split(y){'roof_percent : roofbottom_two | ~2 : NIL }

    else : NIL

roofbottom_two-->
    comp(f) { horizontal  :   roof_up_three
                    | all :   harmony_roofside}

roof_up_three-->
    case geometry.isOriented(world.up) : roofHip(base_roof_angle+roof_step_angle*3) 
                                         comp(f){side:harmony_roofside}

    else : NIL
        
//屋顶贴图            
harmony_roofside-->
    color("#9F5000")
    
    
    
    /*
    
    
    
    
    */
    
    

[/riplus-hide]

付费隐藏内容
此处内容需要权限查看

该内容查看价格:¥9999 / 永久VIP会员免费

登录后购买 开通VIP免费查看
分享到 :
保和殿
上一篇 2022-08-26
CreateUrbanDesignPro-1.0-CN
2022-08-26 下一篇
相关推荐

天安门设计版(中文)

 源码 声明:本站所有文章,如无特殊说明或标注,均为本站原[&h...

紫禁城午门设计版(中文)

 源码声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个[&...

保和殿

保和殿Hall_of_preserving_harmony_zh_1.1&nbs[&...

中国皇家建筑

chinese-palace-building-CN-V0.1.zip声明:本站所[...

发表回复

登录... 后才能评论