C4模型理解

        谈C4前说两句架构设计,“纸上的不是架构,每个人脑子里的才是架构“。这话告诉我们每个人对架构的理解都不一样,一千个人眼中有一千个哈姆雷特。还有一句就是,“那些精妙的方案之所以落不了地,是因为设计上没有兼容人类的愚蠢”,即把思想问题转变成情绪问题。(两句话都引自可视化架构设计——C4介绍 - 百度文库)认可这两句话本身是一种无奈,但架构师还是得手持架构原则去做好每一个架构方案,架构方案的落地都是艺术品。

        C4没有定义一套完整的架构工具、元素,它是抽象优先的可视化软件架构方法(The C4 model is an "abstraction-first" approach to diagramming software architecture),它的主要特点是简单,定义了软件架构的四层以及每层描述的内容,主要是给软件架构师和开发人员使用

        C4模型包含Person、Software System、Container、Component、Code。详细说明见:The C4 model for visualising software architecture或者用于软件架构的C4模型_架构_Simon Brown_InfoQ精选文章

Software System:描述系统定义、系统之关间关系的图

Container:可独立部署的最小单位

C4与ArchiMate

(详见:C4 Model, Architecture Viewpoint and Archi 4.7 – Archi)

Person:C4中代表系统使用人,可映射到业务参与者Business Actor

Software System 和Container:可以映射到应用组件(Application Component

Component:可以映射到应用功能(Application Function

Code:ArchiMate中没有类似概念,可映射到应用功能 (Application Function

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用C4D Python创建一个简单小车模型的代码示例: ```python import c4d # 创建一个新的场景 doc = c4d.documents.BaseDocument() # 创建车轮模型 wheel = c4d.BaseObject(c4d.Ocube) wheel[c4d.PRIM_CUBE_LEN, c4d.VECTOR_X] = 50.0 wheel[c4d.PRIM_CUBE_LEN, c4d.VECTOR_Y] = 20.0 wheel[c4d.PRIM_CUBE_LEN, c4d.VECTOR_Z] = 50.0 doc.InsertObject(wheel) # 复制车轮模型并创建轮子轴 wheel_axis = c4d.BaseObject(c4d.Onull) wheel_axis.InsertUnder(wheel) wheel_copy = wheel.GetClone() wheel_copy.InsertUnder(wheel_axis) wheel_copy[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_X] = 50.0 wheel_copy2 = wheel_copy.GetClone() wheel_copy2[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_X] = -50.0 # 创建车身模型 body = c4d.BaseObject(c4d.Ocube) body[c4d.PRIM_CUBE_LEN, c4d.VECTOR_X] = 150.0 body[c4d.PRIM_CUBE_LEN, c4d.VECTOR_Y] = 50.0 body[c4d.PRIM_CUBE_LEN, c4d.VECTOR_Z] = 100.0 doc.InsertObject(body) # 将车轮轴模型放置在车身的两侧 wheel_axis[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Y] = -25.0 wheel_axis2 = wheel_axis.GetClone() wheel_axis2[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_X] = -75.0 wheel_axis2.InsertUnder(body) # 创建转向模型 steering = c4d.BaseObject(c4d.Ocone) steering[c4d.PRIM_CONE_RADIUS] = 20.0 steering[c4d.PRIM_CONE_HEIGHT] = 50.0 steering[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Z] = 100.0 doc.InsertObject(steering) # 将车身和转向模型组合成一个对象 car = c4d.BaseObject(c4d.Onull) car.InsertUnder(doc.GetFirstObject()) body.InsertUnder(car) steering.InsertUnder(car) # 创建车架模型 frame = c4d.BaseObject(c4d.Ocube) frame[c4d.PRIM_CUBE_LEN, c4d.VECTOR_X] = 150.0 frame[c4d.PRIM_CUBE_LEN, c4d.VECTOR_Y] = 10.0 frame[c4d.PRIM_CUBE_LEN, c4d.VECTOR_Z] = 60.0 frame[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Y] = -20.0 doc.InsertObject(frame) frame.InsertUnder(body) # 将所有模型组合成一个对象 car_model = c4d.BaseObject(c4d.Onull) car_model.InsertUnder(doc.GetFirstObject()) wheel_axis.InsertUnder(car_model) wheel_axis2.InsertUnder(car_model) car.InsertUnder(car_model) frame.InsertUnder(car_model) # 将对象添加到场景 doc.SetActiveObject(car_model) c4d.EventAdd() ``` 注意,这只是一个简单的示例,实际上创建一个完整的小车模型可能需要更复杂的代码。同时,需要具备一定的C4D建模和Python编程基础才能理解和修改这个代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值