2019 上海 CATIA hackathon logo 上图为2019年度上海CATIA Hackathon (4月24、25、26)的 LOGO, 使用了参数化的方法制作,采用未来轮毂的意向。中心的十字形辐条代表着沟通、交通,层层叠叠的设计体现出未来人际、人机交流的层层递进、无限深入。而边缘圆盘上的渐变纹样则隐喻速度与科技。本文为达索系统中国官方所发布的图文教程。
采用参数化的方法,还可以通过修改参数生成动态logo,如下图所示。
动态 下面就是使用 xGenerative Design 模块制作参数化 LOGO的教程。
主要步骤有:
第一步 ——制作圆盘部分
1. 初步准备
2. 建立基础圆盘
3. 建立纹样
第二步 —— 制作辐条
1. 建立框架线
2. 建立偏移曲线
3. 倒角
4. 插值
5. 收工
=============分割线===========
第一步 ——制作圆盘部分
1. 初步准备
首先打开 xGenerative Design(以下简称XGD)。
点击「Design Sequence」或者「Specification」右边的小铅笔,打开线框图界面。
p.s. Windows 系统下可以按「Win + 上/下/左/右箭头」快速布局多个窗口。
2. 建立基础圆盘
首先设置一个基准点(点击三维视图空白处的上下文菜单、Construct 选项卡中以及线框图界面左下角搜索栏搜索都可找到相关命令),如线框图中所示选中节点,设置其 Z 座标为 100 mm。由于之后我们不会修改其 x、y 参数的值,我们可以在选中节点状态下单击这两个参数,使之变成灰色。单击线框图空白处以取消节点选择,如下图所示,x、y 座标便不再显示。
这里的 Z 座标我们之后可能还会修改,因此在取消节点选择的状态下,单击 Z 的左侧的小点,出现如图所示的弹出窗口。单击 100mm 右侧的「+」号即可将其抽取出来作为变量。
我们最好对参数进行有意义的命名,在此我将刚刚题取出来的参数命名为「Pt - Disc Height(圆盘高度)」。细心的你应该也已经注意到,我们将刚刚建立的参考点也命名成了「Pt - Peak Point(最高点)」。
本文的命名中,前缀 Pt = Point(点),Int = Integer(整数),Flt = Float(小数/浮点数),Crv = Curve(曲线),Srf = Surface(曲面),Pln = Plane(平面),Vol = Volume(体)。
使用「Circle Center Point」建立圆环,以「Pt - Peak Point」为中心点。
命名为「Crv - Outer Circle」,其它参数的设置如图所示。由于我们后续不需要修改其半径与圆心角,因此在节点图中我们将其隐藏(单击使之成为灰色,如红色箭头所示)。
后续本文出现的节点也会隐藏不用的/不会改变的输入输出参数,或是激活需要改变的输入输出参数,如果发现不一致,依图调整即可。
以原点 o 为中心点、xy 为 support 建立圆环「Crv - Inner Circle」。我们之后需要能够修改其半径,因此也将其提取出来。
选中刚刚建立的两个圆环,进行放样(Loft)得到「Srf - Disc」。
3. 建立纹样
之后三个参考平面会变得有些碍眼,如图所示将其隐藏。
先暂时以原点 o 或「Pt - Peak Point」建立四边形,参数如图所示。
如图所示将其单轴缩放,得到基本的菱形。比例也是我们日后可以修改的参数,这里也将其提取出来。
现在我们希望纹样放到它们应在的位置。如上两图所示生成等差数列,并以结果作为 y 座标、以「Flt - Disc Height」为 z 座标,建立点阵列「Pt - Pattern Unit Base(单元纹样基准点)」。将其替换之前作为四边形原点的 o 或「Pt- Peak Point」,得到如图所示的图样。
「Flt - Disc Height」是之前以建立的参数
阵列中有多少个小菱形我们之后也要修改,因此将 Sequence 节点的 nb 参数也提取出来。
如图所示间隔旋转菱形。
「Odd Even」节点可以将列表间隔分开,我们选取期中任意的一组进行旋转。旋转的角度为 (360deg / 径向数量) * 2。注意图中「/」节点「Formula」一栏有公式。
如图所示参数化修改菱形大小。
将曲线的输出连到之前生成基础四边形的节点。
由于之后要进行布尔运算,因此我们如图所示挤出并加盖。
如图所示进行环形阵列。
如图所示,将开始生成的「Srf - Disc」偏移一个厚度。
如图所示,先将旋转得到的挤出纹样合并,再用刚刚偏移出厚度的圆盘进行布尔相减。
第二步 — 制作辐条
1. 建立框架线
如图所示,调整为正交顶视图,并以「Flt - Disc Height」为 z 座标依次建立 4 个点,将其连成折线「Crv - Outer Frame」。
本文图中的连结接顺序为「左下 → 右下 → 右上 → 左上」,大家可以自行选择顺序,顺时针逆时针也都可以。
以同样顺序、z 座标归 0 建立 4 个点,连成折线「Crv - Inner Frame」。
为了避免之后的重复劳动,我们使用「Build List」将二者合为一个列表,并且将之 Deepen。
之后本文中还会经常用到 Deepen、Flatten 等列表操作,背后思路比较复杂,囿于篇幅限制本文暂时不作讨论。熟悉 Grasshopper 的朋友应该可以较快上手。
2. 建立偏移曲线
首先如图所示,建立「Crv - Outer Frame」的 support plane「Pln - Outer Frame Support」。
再将其与 xy 平面「Build List」+「Deepen」,得到两条折线的 support plane。
如图所示设定两条折线的倒角大小「Flt - Fillet Radius」与偏移距离「Flt - Offset Distance」。
Build List 之后记得 Deepen 哦
使用「Curve Parallel」节点进行偏移,如上图所示,得到如下图所示的结果。
我们希望进一步偏移最上面的边。因此我们如图所示「Disassemble」后「Get Item」得到最上面的边。
最开始连接的顺序不同,「Get Item」使用的 index 可能也不同。
设置额外偏移量「Flt - Extra Offset Distance」,使用「Translate Length Direction」节点将两条线沿 y 轴偏移。
「Flt - Extra Offset Distance」的设置方法与之前倒角大小「Flt - Fillet Radius」与偏移距离「Flt - Offset Distance」相同。
由于之后要进行剪切,为了确保相交,我们希望对偏移后的两条曲线原位等比放大。为了保证「原位」,我们使用「Divide Curve」取得其中点「Pt - Edge Midpoint」作为缩放中心点,参数设置如图所示。
放大三倍,理论上讲应该足够了。
想要保证万无一失的话,建议设置成 10000000000000 之类的数字
如前两图所示,使用两个「Split」节点相互剪切,如果输出的曲线不是你想要的,调整 Orientation 参数即可。
3. 倒角
之前已经设置好倒角大小「Flt - Fillet Radius」与偏移距离「Flt - Offset Distance」,前者减后者得到偏移曲线的倒角大小。而如果偏移距离大于倒角大小,则会造成偏移曲线没有倒角。因此,这里设置了一个最小倒角,如图所示。
注意这里计算最小值的时候需要 Flatten。这种列表操作笔者习惯放到输入输出的 Node 栏,这样「Tree」窗口中可以不受这些列表操作干扰。
如图所示连接,得到倒角效果。由于没有发现曲线倒角的命令,这里取了个巧,先将曲线向内偏移倒角半径大小的距离,再偏移回来即可得到倒角。
4. 插值
如图所示连接,使用「Between Curve」生成插值曲线。
这里全是列表操作,就先略过了,大家可以试试有没有更简洁的办法。
p.s. 这里如果不进行 Disassemble 的话,插值会出现错误。
5. 收工
使用「Fill」填充。
旋转阵列,收工。
p.s. 记得及时保存,恢复不一定能完全复原。