00453a29-ead1-4212-a392-9c5ea9d8d50f
run evidence
生成100米长、宽20米的街区道路,两侧有人行道
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [2.333, 0.0, 3.5], 'min': [-6.0, -0.2, 2.5]}; face_count=12; vertex_count=8; volume=1.667; surface_area=20.4
- nl2cga CE-vs-runtime deltas: bbox=91.67; face_count=2; surface_area=9180; vertex_count=12; volume=6e+04
- runtime: bbox={'max': [94.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=6e+04; surface_area=9200
- runtime CE-vs-runtime deltas: bbox=96.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, road, sidewalk, 100, 20\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 100.0\nattr depth = 100 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr streetLength = 100\nattr streetWidth = 20\nattr sourceLength = 12\nattr sourceWidth = 7\nattr sidewalkWidth = 3\nattr roadHeight = 0.15\nattr sidewalkHeight = 0.2\n\n@StartRule\nStreetBlock -->\n s(streetLength / sourceLength, streetWidth / sourceWidth, 1)\n split(y) {\n sidewalkWidth : Sidewalk\n | ~1 : Road\n | sidewalkWidth : Sidewalk\n }\n\nRoad -->\n extrude(roadHeight)\n\nSidewalk -->\n extrude(sidewalkHeight)\n"
查看原始结果 JSON →01710397-45b4-4e7f-8eae-91d0872f94bb
run evidence
生成一个带双坡屋顶的六层灰色住宅建筑,立面有规则窗格
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, gray, window, floor, floors, roof, gable\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floorCount = 6\nattr floorHeight = 3\nattr roofAngle = 30\nattr wallColor = \"#808080\"\nattr roofColor = \"#666666\"\nattr windowColor = \"#9FC5D8\"\n\n@StartRule\nLot -->\n s(buildingWidth, 1, buildingDepth)\n extrude(floorCount * floorHeight)\n Building\n\nBuilding -->\n comp(f) {\n side : Facade(floorCount) |\n top : Roof |\n bottom : Ground\n }\n\nFacade(n) -->\n color(wallColor)\n case n > 0 :\n split(y) {\n floorHeight : FloorFacade |\n ~1 : Facade(n - 1)\n }\n else :\n NIL\n\nFloorFacade -->\n split(y) {\n 0.5 : WallPanel |\n ~1 : WindowBand |\n 0.5 : WallPanel\n }\n\nWindowBand -->\n split(x) {\n ~1 : WallPanel |\n ~2 : Window |\n ~1 : WallPanel |\n ~2 : Window |\n ~1 : WallPanel |\n ~2 : Window |\n ~1 : WallPanel\n }\n\nWallPanel -->\n color(wallColor)\n\nWindow -->\n color(windowColor)\n\nRoof -->\n roofGable(roofAngle) RoofSurface\n\nRoofSurface -->\n color(roofColor)\n\nGround -->\n color(wallColor)\n"
查看原始结果 JSON →02277ffb-df01-4592-9490-ca1c40314ffa
run evidence
砖墙立面带阳台,四层
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -12.0, -4.7]}; face_count=72; vertex_count=80; volume=1010; surface_area=666
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=62; surface_area=1334; vertex_count=60; volume=7390
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -14.0, -16.5]}; face_count=10; vertex_count=20; volume=8400; surface_area=2000
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: brick, balcony, floor, floors\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 14.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"brick.jpg\") projectUV(0) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floorHeight = 3\nattr floors = 4\nattr buildingHeight = floorHeight * floors\nattr balconyWidth = 4.5\nattr balconyDepth = 1.2\nattr wallColor = \"#9B3F28\"\nattr mortarColor = \"#D5B49A\"\nattr balconyColor = \"#6B3325\"\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n Building\n\nBuilding -->\n comp(f) {\n front : FrontFacade\n | side : BrickSide\n | back : BrickSide\n | top : Roof\n }\n\nFrontFacade -->\n split(y) {\n floorHeight : Floor1\n | floorHeight : Floor2\n | floorHeight : Floor3\n | floorHeight : Floor4\n }\n\nFloor1 -->\n split(x) {\n ~1 : BrickWall\n | balconyWidth : Balcony\n | ~1 : BrickWall\n }\n\nFloor2 -->\n split(x) {\n ~1 : BrickWall\n | balconyWidth : Balcony\n | ~1 : BrickWall\n }\n\nFloor3 -->\n split(x) {\n ~1 : BrickWall\n | balconyWidth : Balcony\n | ~1 : BrickWall\n }\n\nFloor4 -->\n split(x) {\n ~1 : BrickWall\n | balconyWidth : Balcony\n | ~1 : BrickWall\n }\n\nBrickSide -->\n BrickWall\n\nBrickWall -->\n color(wallColor)\n\nBalcony -->\n extrude(balconyDepth)\n BalconyVolume\n\nBalconyVolume -->\n color(balconyColor)\n\nRoof -->\n color(mortarColor)\n"
查看原始结果 JSON →024a5bbe-3440-4db8-9ee5-aa4093abe3a0
run evidence
一条带人行道和路灯的城市街道街区
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, sidewalk, light\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingHeight = 3.5\nattr sidewalkHeight = 0.08\nattr lampHeight = 2.8\n\n@StartRule\nLot -->\n split(y) {\n 0.8 : BuildingFront\n | 1.2 : SidewalkFront\n | 4.0 : Road\n | 1.0 : SidewalkBack\n }\n\nBuildingFront -->\n color(\"#B8A58A\")\n extrude(buildingHeight)\n\nSidewalkFront -->\n split(x) {\n 2.0 : LampFront\n | 2.0 : SidewalkTile\n | 2.0 : LampFront\n | 2.0 : SidewalkTile\n | 2.0 : LampFront\n | 2.0 : SidewalkTile\n }\n\nSidewalkBack -->\n split(x) {\n 2.0 : LampBack\n | 2.0 : SidewalkTile\n | 2.0 : LampBack\n | 2.0 : SidewalkTile\n | 2.0 : LampBack\n | 2.0 : SidewalkTile\n }\n\nSidewalkTile -->\n color(\"#C8C8C8\")\n extrude(sidewalkHeight)\n\nRoad -->\n color(\"#35383B\")\n extrude(0.04)\n\nLampFront -->\n center(xy)\n s(0.12, 0.12, 1)\n color(\"#252525\")\n extrude(lampHeight)\n\nLampBack -->\n center(xy)\n s(0.12, 0.12, 1)\n color(\"#252525\")\n extrude(lampHeight)\n"
查看原始结果 JSON →057b797e-fb80-4003-8754-3d258e9170da
run evidence
生成一棵苹果树
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr treeHeight = 5\nattr trunkHeight = 3\nattr trunkDiameter = 0.35\nattr crownDiameter = 4.5\nattr appleDiameter = 0.32\nattr randomSeed = 42\n\n@StartRule\nLot -->\n\tTree\n\nTree -->\n\tCrown\n\t[\n\t\tt(0, trunkHeight * 0.55, 0)\n\t\tr(18, 0, 25)\n\t\ts(0.16, 1.8, 0.16)\n\t\tcenter(y)\n\t\tprimitiveCylinder(10)\n\t\tcolor(\"#6b4028\")\n\t]\n\t[\n\t\tt(0, trunkHeight * 0.7, 0)\n\t\tr(-20, 0, -35)\n\t\ts(0.14, 1.7, 0.14)\n\t\tcenter(y)\n\t\tprimitiveCylinder(10)\n\t\tcolor(\"#6b4028\")\n\t]\n\ts(trunkDiameter, trunkHeight, trunkDiameter)\n\tcenter(xz)\n\tprimitiveCylinder(12)\n\tcolor(\"#70452c\")\n\nCrown -->\n\tt(0, trunkHeight, 0)\n\ts(crownDiameter, crownDiameter, crownDiameter)\n\tcenter(xz)\n\tprimitiveSphere(16, 12)\n\tcolor(\"#3f8f3c\")\n\t[\n\t\tt(-0.62, -0.12, 0.08)\n\t\tApple\n\t]\n\t[\n\t\tt(0.58, 0.18, 0.18)\n\t\tApple\n\t]\n\t[\n\t\tt(-0.22, 0.55, 0.48)\n\t\tApple\n\t]\n\t[\n\t\tt(0.18, -0.48, -0.52)\n\t\tApple\n\t]\n\t[\n\t\tt(0.35, 0.12, -0.62)\n\t\tApple\n\t]\n\t[\n\t\tt(-0.5, 0.32, -0.32)\n\t\tApple\n\t]\n\nApple -->\n\ts(appleDiameter, appleDiameter, appleDiameter)\n\tcenter(xyz)\n\tprimitiveSphere(12, 8)\n\tcolor(\"#d83b32\")\n"
查看原始结果 JSON →06c234dd-88f8-4db7-b4ae-1dcee655a832
run evidence
生成100米长、宽20米的街区道路,两侧有人行道
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [4.167, 0.0, 1.429], 'min': [-4.167, -0.2, -1.429]}; face_count=24; vertex_count=16; volume=4.764; surface_area=55.45
- nl2cga CE-vs-runtime deltas: bbox=89.83; face_count=14; surface_area=9145; vertex_count=4; volume=6e+04
- runtime: bbox={'max': [94.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=6e+04; surface_area=9200
- runtime CE-vs-runtime deltas: bbox=96.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, road, sidewalk, 100, 20\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 100.0\nattr depth = 100 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr streetLength = 100\nattr streetWidth = 20\nattr sidewalkWidth = 2\nattr roadHeight = 0.15\nattr sidewalkHeight = 0.2\n\n@StartRule\nStreet -->\n s(streetLength / 12, 1, streetWidth / 7)\n center(xz)\n split(z) {\n sidewalkWidth : Sidewalk\n | ~1 : Road\n | sidewalkWidth : Sidewalk\n }\n\nSidewalk -->\n color(0.55, 0.55, 0.55)\n extrude(sidewalkHeight)\n\nRoad -->\n color(0.12, 0.12, 0.12)\n extrude(roadHeight)\n"
查看原始结果 JSON →074e89b0-5c3c-4923-9e23-cdd5772c47c1
run evidence
玻璃幕墙立面,宽30米高20米,3米分格
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -20.0, -3.5]}; face_count=196; vertex_count=392; volume=1680; surface_area=1012
- nl2cga CE-vs-runtime deltas: bbox=23; face_count=186; surface_area=2288; vertex_count=372; volume=1.632e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -20.0, -26.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3300
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: glass, 30, 20, 3\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 30.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 20.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 5\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"glass.jpg\") projectUV(0) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 30\nattr buildingDepth = 1\nattr buildingHeight = 20\nattr gridSize = 3\nattr randomSeed = 777\n\n@StartRule\nLot -->\n resize(buildingWidth, 1, buildingDepth)\n extrude(buildingHeight)\n comp(f) {\n front : GlassFacade\n | back : SideWall\n | left : SideWall\n | right : SideWall\n | top : Roof\n | bottom : Ground\n }\n\nGlassFacade -->\n split(x) {\n 3 : Bay\n | 3 : Bay\n | 3 : Bay\n | 3 : Bay\n | 3 : Bay\n | 3 : Bay\n | 3 : Bay\n | 3 : Bay\n | 3 : Bay\n | 3 : Bay\n }\n\nBay -->\n split(x) {\n 0.08 : Frame\n | 2.84 : GlassPanel\n | 0.08 : Frame\n }\n\nGlassPanel -->\n split(y) {\n 0.08 : Frame\n | 2.84 : Glass\n | 0.08 : Frame\n | 0.08 : Frame\n | 2.84 : Glass\n | 0.08 : Frame\n | 0.08 : Frame\n | 2.84 : Glass\n | 0.08 : Frame\n | 0.08 : Frame\n | 2.84 : Glass\n | 0.08 : Frame\n | 0.08 : Frame\n | 2.84 : Glass\n | 0.08 : Frame\n | 0.08 : Frame\n | 2.84 : Glass\n | 0.08 : Frame\n | 0.08 : Frame\n | 1.84 : Glass\n | 0.08 : Frame\n }\n\nFrame -->\n color(\"#3A4148\")\n\nGlass -->\n color(\"#78B7D8\")\n\nSideWall -->\n color(\"#B7BEC4\")\n\nRoof -->\n color(\"#6D747A\")\n\nGround -->\n color(\"#4A4A4A\")\n"
查看原始结果 JSON →07aed21e-e26d-4316-a586-4a9c034bf1b9
run evidence
生成一个带双坡屋顶的六层灰色住宅建筑,立面有规则窗格
state: RUNNING
查看 CGA 与测量证据
Measured metrics
(暂无 CGA 代码)
查看原始结果 JSON →08125cda-54d6-41ac-8ea7-02da16d9eaf7
run evidence
生成一个精致的别墅
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"version \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr buildingHeight = 6.5\nattr wallHeight = 4.3\nattr roofHeight = 2.2\n\n@StartRule\nLot -->\n offset(-0.45)\n extrude(wallHeight)\n VillaMass\n\nVillaMass -->\n comp(f) {\n front : FrontFacade\n | back : Facade\n | left : Facade\n | right : Facade\n | side : Facade\n | top : Roof\n }\n\nFacade -->\n color(0.82, 0.76, 0.66)\n split(y) {\n 0.25 : Plinth\n | ~ : MainFacade\n | 0.2 : Cornice\n }\n\nFrontFacade -->\n color(0.82, 0.76, 0.66)\n split(y) {\n 0.25 : Plinth\n | ~ : FrontOpenings\n | 0.2 : Cornice\n }\n\nMainFacade -->\n split(x) {\n 0.7 : WallSegment\n | 1.8 : Window\n | 0.45 : WallSegment\n | 1.8 : Window\n | ~ : WallSegment\n }\n\nFrontOpenings -->\n split(x) {\n 0.8 : WallSegment\n | 1.4 : Door\n | 0.8 : WallSegment\n | 1.8 : Window\n | ~ : WallSegment\n }\n\nPlinth -->\n color(0.32, 0.30, 0.27)\n extrude(0.04)\n\nCornice -->\n color(0.95, 0.91, 0.82)\n extrude(0.08)\n\nWallSegment -->\n color(0.82, 0.76, 0.66)\n\nWindow -->\n color(0.12, 0.25, 0.32)\n extrude(-0.06)\n\nDoor -->\n color(0.22, 0.12, 0.07)\n extrude(-0.08)\n\nRoof -->\n roofGable(30)\n RoofSurface\n\nRoofSurface -->\n color(0.18, 0.12, 0.1)\n"
查看原始结果 JSON →0997c574-be6d-4618-8e31-275fef8ada2e
run evidence
生成一个高10米、宽12米、进深7米的灰色平屋顶建筑
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -3.5]}; face_count=12; vertex_count=8; volume=840; surface_area=548
- nl2cga CE-vs-runtime deltas: bbox=5; face_count=2; surface_area=84; vertex_count=12; volume=0
- runtime: bbox={'max': [1.0, 0.0, 3.5], 'min': [-6.0, -10.0, -8.5]}; face_count=10; vertex_count=20; volume=840; surface_area=464
- runtime CE-vs-runtime deltas: bbox=10; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, gray, roof, flat, 10, 12, 7\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 7.0\nattr depth = 7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr height = 10\n\n@StartRule\nBuilding -->\n extrude(height)\n color(0.5, 0.5, 0.5)\n"
查看原始结果 JSON →0bfcd256-7071-4ebb-a092-d2bac848f1c4
run evidence
生成一个苹果树
state: RUNNING
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr trunkHeight = 3.2\nattr trunkRadius = 0.22\nattr crownHeight = 3.8\nattr crownRadius = 2.4\nattr appleRadius = 0.16\n\n@StartRule\nAppleTree -->\n extrude(trunkHeight + crownHeight)\n split(y) {\n trunkHeight: Trunk |\n crownHeight: Crown\n }\n\nTrunk -->\n primitiveCylinder\n s(trunkRadius * 2, 1, trunkRadius * 2)\n color(\"#6B3E1E\")\n\nCrown -->\n primitiveSphere\n s(crownRadius * 2, crownHeight, crownRadius * 2)\n color(\"#3F7D20\")\n scatter(surface, 12) { 1: Apple }\n\nApple -->\n primitiveSphere\n s(appleRadius * 2, appleRadius * 2, appleRadius * 2)\n color(\"#C62828\")\n"
查看原始结果 JSON →0e64d6d7-3dc3-4d5c-9586-ec64126b47bd
run evidence
生成一个高10米、宽12米、进深7米的灰色平屋顶建筑
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -3.5]}; face_count=10; vertex_count=20; volume=840; surface_area=464
- nl2cga CE-vs-runtime deltas: bbox=5; face_count=0; surface_area=0; vertex_count=0; volume=0
- runtime: bbox={'max': [1.0, 0.0, 3.5], 'min': [-6.0, -10.0, -8.5]}; face_count=10; vertex_count=20; volume=840; surface_area=464
- runtime CE-vs-runtime deltas: bbox=10; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, gray, roof, flat, 10, 12, 7\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 7.0\nattr depth = 7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr height = 10\n\n@StartRule\nLot --> extrude(height) Building\n\nBuilding --> comp(f) { side : Wall | top : Roof }\n\nWall --> color(\"#808080\")\n\nRoof --> color(\"#808080\")\n"
查看原始结果 JSON →0e9373bf-ac23-41fa-aa56-b8ae87f4c54c
run evidence
十字路口街区,路宽12米
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -0.15, -3.5]}; face_count=22; vertex_count=44; volume=12.6; surface_area=89.7
- nl2cga CE-vs-runtime deltas: bbox=29.85; face_count=12; surface_area=2790; vertex_count=24; volume=1.079e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -8.5]}; face_count=10; vertex_count=20; volume=1.08e+04; surface_area=2880
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr roadWidth = 12\nattr roadThickness = 0.15\nattr sidewalkHeight = 0.2\nattr sidewalkWidth = 1.5\nattr buildingWidth = 8\nattr buildingDepth = 5\nattr buildingHeight = 6\n\n@StartRule\nLot -->\n extrude(roadThickness)\n Intersection\n\nIntersection -->\n comp(f) { top : RoadSurface | side : RoadEdge }\n\nRoadSurface -->\n color(\"#3A3A3A\")\n CrossRoadMarkings\n\nRoadEdge -->\n color(\"#202020\")\n\nCrossRoadMarkings -->\n split(x) { 5 : RoadLane | 2 : CenterLine | 5 : RoadLane }\n\nRoadLane -->\n split(y) { 2.5 : LaneSurface | 2 : LaneMarking | 2.5 : LaneSurface }\n\nLaneSurface -->\n color(\"#3A3A3A\")\n\nCenterLine -->\n color(\"#F2D14B\")\n\nLaneMarking -->\n color(\"#E8E8E8\")\n"
查看原始结果 JSON →0f3e5fd4-aadb-4376-b0bb-499ad4b7eeed
run evidence
6层住宅楼,每层带阳台,红色坡屋顶
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, red, balcony, floor, floors, roof, gable, 6\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.2, 0.15) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.2, 0.15)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floorHeight = 3.0\nattr floors = 6\nattr balconyDepth = 1.2\nattr roofAngle = 35\nattr wallColor = \"#E8D8C8\"\nattr balconyColor = \"#C8B8A8\"\nattr roofColor = \"#B22222\"\n\n@StartRule\nLot -->\n extrude(floorHeight * floors)\n Building\n\nBuilding -->\n comp(f) { sides: Facades | top: Roof }\n\nFacades -->\n comp(f) { front: FrontFacade | back: WallFacade | left: WallFacade | right: WallFacade }\n\nFrontFacade -->\n split(z) {\n floorHeight: FrontFloor |\n floorHeight: FrontFloor |\n floorHeight: FrontFloor |\n floorHeight: FrontFloor |\n floorHeight: FrontFloor |\n floorHeight: FrontFloor\n }\n\nFrontFloor -->\n split(x) {\n 4: WallPanel |\n 4: Balcony |\n 4: WallPanel\n }\n\nBalcony -->\n extrude(balconyDepth)\n color(balconyColor)\n\nWallPanel -->\n color(wallColor)\n\nWallFacade -->\n color(wallColor)\n\nRoof -->\n roofHip(roofAngle)\n color(roofColor)\n"
查看原始结果 JSON →0fd7bf4f-eee8-453b-889e-b409cdfc7d34
run evidence
请建模一个住宅别墅,尺度约20.80米长、13.60米宽、5.50米高,使用浅灰清水混凝土,采用穹顶,深檐遮阳,重点表现两户独立入口;开放式平台变体1。
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# semantic_tags: entrance, residential, concrete, gray, platform, 20.80, 13.60, 5.50, 1\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 20.8\nattr depth = 20.8 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 13.6\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 5.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 1\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr length = 20.80\nattr width = 13.60\nattr wallHeight = 4.20\nattr domeHeight = 1.30\nattr eaveDepth = 1.00\nattr platformDepth = 2.00\nattr platformWidth = 8.00\n\n@StartRule\nVilla -->\n s(length, width, 1)\n extrude(wallHeight)\n color(\"#D2D2D0\")\n roofDome(domeHeight)\n comp(f) {\n front : FrontFacade\n | side : ConcreteWall\n | back : ConcreteWall\n | right : ConcreteWall\n | left : ConcreteWall\n | top : DomeFinish\n }\n\nFrontFacade -->\n split(x) {\n ~4.40 : ConcreteWall\n | 2.40 : EntranceA\n | ~6.80 : ConcreteWall\n | 2.40 : EntranceB\n | ~4.80 : ConcreteWall\n }\n\nEntranceA -->\n color(\"#555A5A\")\n extrude(0.18)\n split(y) {\n 2.30 : GlassDoor\n | ~1.90 : EntranceShade\n }\n\nEntranceB -->\n color(\"#555A5A\")\n extrude(0.18)\n split(y) {\n 2.30 : GlassDoor\n | ~1.90 : EntranceShade\n }\n\nGlassDoor -->\n color(\"#35464B\")\n setupProjection(0, scope.xy, 1)\n projectUV(0)\n texture(\"glass\")\n\nEntranceShade -->\n color(\"#9A9A96\")\n extrude(0.35)\n t(0, 2.20, 0)\n s(1, eaveDepth, 1)\n\nConcreteWall -->\n color(\"#D2D2D0\")\n\nDomeFinish -->\n color(\"#C8C8C5\")\n\nVilla -->\n VillaBody\n EntrancePlatform\n\nVillaBody -->\n s(length, width, 1)\n extrude(wallHeight)\n color(\"#D2D2D0\")\n roofDome(domeHeight)\n\nEntrancePlatform -->\n s(platformWidth, platformDepth, 0.20)\n t((length-platformWidth)/2, -platformDepth, 0)\n color(\"#B7B7B3\")\n extrude(0.20)\n"
查看原始结果 JSON →124f0893-1ed6-4e30-8b5b-a7f753f5aa42
run evidence
生成跨度24米、长60米、高8米的工业厂房
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [18.0, 0.0, 3.5], 'min': [-6.0, -8.0, -56.5]}; face_count=12; vertex_count=8; volume=1.152e+04; surface_area=4224
- nl2cga CE-vs-runtime deltas: bbox=36; face_count=2; surface_area=1440; vertex_count=12; volume=0
- runtime: bbox={'max': [54.0, 0.0, 3.5], 'min': [-6.0, -8.0, -20.5]}; face_count=10; vertex_count=20; volume=1.152e+04; surface_area=2784
- runtime CE-vs-runtime deltas: bbox=56.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: factory, industrial, 24, 60, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 60.0\nattr depth = 60 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 24.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 8.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr span = 24\nattr length = 60\nattr height = 8\n\n@StartRule\nLot -->\n primitiveCube()\n s(span, height, length)\n color(\"#8A939B\")\n"
查看原始结果 JSON →131e78a0-8390-43f8-aa2b-7299100e949f
run evidence
生成100米长、宽20米的街区道路,两侧有人行道
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -0.15, -3.5]}; face_count=38; vertex_count=28; volume=9.66; surface_area=260.1
- nl2cga CE-vs-runtime deltas: bbox=88; face_count=28; surface_area=8940; vertex_count=8; volume=5.999e+04
- runtime: bbox={'max': [94.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=6e+04; surface_area=9200
- runtime CE-vs-runtime deltas: bbox=96.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, road, sidewalk, 100, 20\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 100.0\nattr depth = 100 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr streetLength = 100\nattr streetWidth = 20\nattr sidewalkWidth = 3\nattr roadHeight = 0.08\nattr sidewalkHeight = 0.15\n\n@StartRule\nStreet -->\n alignScopeToGeometry(yUp, 0)\n resizeScope(streetWidth, 1, streetLength)\n split(x) {\n sidewalkWidth : Sidewalk\n | ~1 : Road\n | sidewalkWidth : Sidewalk\n }\n\nSidewalk -->\n extrude(sidewalkHeight)\n color(\"#B8B8B8\")\n\nRoad -->\n extrude(roadHeight)\n color(\"#333333\")\n"
查看原始结果 JSON →14085d64-10be-42c5-ba97-3a486fb20360
run evidence
高度10米且高度15米的建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr defaultWidth = 6\nattr defaultDepth = 7\nattr height10 = 10\nattr height15 = 15\n\n@StartRule\nLot -->\n split(x) { 6: Building10 | 6: Building15 }\n\nBuilding10 -->\n extrude(height10)\n color(0.72, 0.78, 0.88)\n\nBuilding15 -->\n extrude(height15)\n color(0.88, 0.72, 0.58)\n"
查看原始结果 JSON →15378fcb-1f4d-465a-bd13-e24e66a0d00c
run evidence
玻璃幕墙立面,宽30米高20米,3米分格
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -20.0, -26.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3300
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: glass, 30, 20, 3\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 30.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 20.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 5\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"glass.jpg\") projectUV(0) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 30\nattr buildingHeight = 20\nattr buildingDepth = 0.5\nattr gridSize = 3\n\n@StartRule\nLot -->\n s(buildingWidth / scope.sx, 1, buildingDepth / scope.sz)\n center(xz)\n extrude(buildingHeight)\n comp(f) {\n front: CurtainWall |\n back: CurtainWall |\n left: CurtainWall |\n right: CurtainWall |\n top: Roof |\n bottom: Ground\n }\n\nCurtainWall -->\n split(v) { ~gridSize: PanelRow }\n\nPanelRow -->\n split(u) { ~gridSize: GlassPanel }\n\nGlassPanel -->\n color(0.12, 0.38, 0.52)\n set(material.opacity, 0.48)\n\nRoof -->\n color(0.06, 0.08, 0.1)\n\nGround -->\n color(0.08, 0.08, 0.08)\n"
查看原始结果 JSON →15a707c9-a7e1-4c6c-a7ab-8d119a0a5790
run evidence
缓坡地形的公园,面积2000平方米
state: FAILED
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"attr parkSize = sqrt(2000) * 0.9 // 约42.4米见方\nattr terrainHeight = 1.5 // 缓坡高差\nattr treeHeight = 4\nattr crownRadius = 2.2\nattr pathWidth = 2.5\n\n@StartRule\nLot -->\n\tsetback(-parkSize/2) { shape: Park }\n\nPark -->\n\textrude(terrainHeight)\n\tcomp(f) { top: Terrain | side: Slope }\n\nTerrain -->\n\tsplit(x) { ~1: Aisle }\n\nAisle -->\n\tsplit(z) { ~1: LawnA | pathWidth: Path | ~1: LawnB }\n\nLawnA -->\n\tsplit(z) { ~1: Green | 30: scatterTrees }\n\t\nLawnB -->\n\tcolor(0.35, 0.6, 0.3)\n\nGreen -->\n\tcolor(0.35, 0.6, 0.3)\n\nscatterTrees -->\n\tsplit(z) { 15: Plant | ~1: Green }"
// teacher_ce.cga
"version \"2024.1\"\n\nattr parkArea = 2000\nattr parkWidth = 40\nattr parkDepth = 50\nattr terrainHeight = 0.3\nattr slopeAngle = 4\n\n@StartRule\nPark -->\n s(parkWidth / 12, 1, parkDepth / 7)\n rotate(x, slopeAngle)\n Terrain\n\nTerrain -->\n extrude(terrainHeight)\n comp(f) { top: ParkSurface | side: Soil }\n\nParkSurface -->\n split(z) {\n 4: MainPath\n |\n ~1: CentralArea\n |\n 4: MainPath\n }\n\nCentralArea -->\n split(x) {\n 3: SidePath\n |\n ~1: Lawn\n |\n 3: SidePath\n }\n\nMainPath -->\n color(0.72, 0.62, 0.45)\n extrude(0.08)\n\nSidePath -->\n color(0.68, 0.58, 0.42)\n extrude(0.08)\n\nLawn -->\n color(0.25, 0.55, 0.20)\n extrude(0.04)\n\nSoil -->\n color(0.36, 0.22, 0.12)\n"
查看原始结果 JSON →16b76c6b-2273-4ba5-a43a-aea44858a0cd
run evidence
生成50米x50米的景观绿地,中间有圆形花坛
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [69.0, 0.0, 3.5], 'min': [-6.0, -0.2, -71.5]}; face_count=14; vertex_count=12; volume=666.7; surface_area=7540
- nl2cga CE-vs-runtime deltas: bbox=29.8; face_count=4; surface_area=960; vertex_count=8; volume=7.433e+04
- runtime: bbox={'max': [44.0, 0.0, 3.5], 'min': [-6.0, -30.0, -46.5]}; face_count=10; vertex_count=20; volume=7.5e+04; surface_area=8500
- runtime CE-vs-runtime deltas: bbox=46.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: park, green, cylinder, 50\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 50.0\nattr depth = 50 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 50.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.3, 0.65, 0.35) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.3, 0.65, 0.35)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr siteWidth = 50\nattr siteDepth = 50\nattr groundHeight = 0.2\nattr flowerbedRadius = 8\nattr flowerbedHeight = 0.35\n\n@StartRule\nLot -->\n s(siteWidth, 1, siteDepth)\n Ground Flowerbed\n\nGround -->\n extrude(groundHeight)\n color(\"#4A8F3A\")\n\nFlowerbed -->\n t(siteWidth / 2, groundHeight, siteDepth / 2)\n primitiveCylinder(flowerbedRadius, flowerbedHeight)\n color(\"#D96B8A\")\n"
查看原始结果 JSON →198787a0-2cf9-47ac-ae61-b3ed3689f65e
run evidence
砖墙立面带阳台,四层
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -14.0, -16.5]}; face_count=10; vertex_count=20; volume=8400; surface_area=2000
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: brick, balcony, floor, floors\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 14.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"brick.jpg\") projectUV(0) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floorHeight = 2.8\nattr floorCount = 4\nattr buildingHeight = floorHeight * floorCount\nattr balconyDepth = 1.1\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n Building\n\nBuilding -->\n comp(f) {\n front : FrontFacade\n | back : BrickWall\n | side : BrickWall\n | top : Roof\n | bottom : NIL\n }\n\nFrontFacade -->\n split(z) {\n floorHeight : FloorFacade\n | floorHeight : FloorFacade\n | floorHeight : FloorFacade\n | floorHeight : FloorFacade\n }\n\nFloorFacade -->\n split(x) {\n 3 : BrickWall\n | 6 : Balcony\n | ~1 : BrickWall\n }\n\nBrickWall -->\n set(material.color, \"#9B4A32\")\n\nBalcony -->\n extrude(balconyDepth)\n BalconyStructure\n\nBalconyStructure -->\n set(material.color, \"#8A8A82\")\n comp(f) {\n front : BalconyRailing\n | side : BalconySide\n | top : BalconyFloor\n | back : NIL\n | bottom : NIL\n }\n\nBalconyRailing -->\n split(z) {\n ~1.0 : RailingTop\n | ~1.8 : NIL\n }\n\nRailingTop -->\n set(material.color, \"#5A5A55\")\n\nBalconySide -->\n set(material.color, \"#777770\")\n\nBalconyFloor -->\n set(material.color, \"#686860\")\n\nRoof -->\n set(material.color, \"#5C4033\")\n"
查看原始结果 JSON →1a13fd7b-a5ee-481b-bbc5-57f9e7afce81
run evidence
请建模一个住宅别墅,尺度约18.70米长、12.40米宽、4.75米高,使用浅灰清水混凝土,采用双坡屋顶,深檐遮阳,重点表现双坡屋顶和连续阳台;连续采光带变体1。
state: RUNNING
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# semantic_tags: residential, concrete, gray, balcony, roof, gable, 18.70, 12.40, 4.75, 1\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 18.7\nattr depth = 18.7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.4\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 4.75\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 1\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~4.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
查看原始结果 JSON →1a15511c-2941-4594-824b-e44af8e4889c
run evidence
一棵苹果树
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [2.4, 0.0, 1.3], 'min': [-2.5, -5.97, -5.9]}; face_count=192; vertex_count=112; volume=77.26; surface_area=197.9
- runtime CE-vs-runtime deltas: bbox=8.7; face_count=290; vertex_count=134
// student_ce.cga
"attr trunkHeight = 2.2\nattr trunkRadius = 0.15\nattr canopySize = 2.6\n\n@StartRule\nLot -->\n\tTrunk\n\nTrunk -->\n\tprimitiveCylinder(7)\n\ts(trunkRadius, trunkHeight, trunkRadius)\n\tcenter(xz)\n\tt(0, 0, 0)\n\tcolor(0.35, 0.22, 0.12)\n\tCanopy\n\nCanopy -->\n\tprimitiveSphere(8)\n\ts(canopySize, canopySize*0.85, canopySize)\n\tcenter(xz)\n\tt(0, trunkHeight + canopySize*0.35, 0)\n\tcolor(0.25, 0.5, 0.2)\n\tFruits\n\nFruits -->\n\tcopy()\n\tcopy()\n\tcopy()\n\tFruit(1.1, 0.3)\n\tFruit(-0.9, 1.8)\n\tFruit(0.2, 3.6)\n\tFruit(-1.2, 4.6)\n\nFruit(dx, dz) -->\n\tt(dx, canopySize*0.25, dz)\n\tprimitiveSphere(6)\n\ts(0.12, 0.13, 0.12)\n\tcenter(xyz)\n\tcolor(0.85, 0.1, 0.1)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr treeHeight = 8\nattr trunkHeight = 3\nattr crownWidth = 5\nattr crownDepth = 4\nattr trunkRadius = 0.28\nattr appleRadius = 0.14\n\n@StartRule\nTree -->\n s(crownWidth, 1, crownDepth)\n extrude(treeHeight)\n split(y) {\n trunkHeight : Trunk\n |\n treeHeight - trunkHeight : Crown\n }\n\nTrunk -->\n color(\"#6B3E1E\")\n s(2 * trunkRadius / crownWidth, 1, 2 * trunkRadius / crownDepth)\n primitiveCylinder\n\nCrown -->\n split(x) {\n 0.3 : LeafMass\n |\n 0.4 : AppleBand\n |\n 0.3 : LeafMass\n }\n\nLeafMass -->\n color(\"#3E7D32\")\n s(1, 0.82, 1)\n primitiveSphere\n\nAppleBand -->\n split(z) {\n 0.33 : Apple\n |\n 0.34 : Apple\n |\n 0.33 : Apple\n }\n\nApple -->\n color(\"#C62828\")\n s(2 * appleRadius / (crownWidth * 0.4), 2 * appleRadius / treeHeight, 2 * appleRadius / crownDepth)\n primitiveSphere\n"
查看原始结果 JSON →1b099936-e37c-45f2-82c7-0b9a11369f21
run evidence
高度15米、宽8米、深8米的办公楼,坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [0.333, 0.0, 0.571], 'min': [-0.333, -15.192, -0.571]}; face_count=16; vertex_count=22; volume=7.679; surface_area=56.01
- nl2cga CE-vs-runtime deltas: bbox=6.167; face_count=0; surface_area=598.6; vertex_count=6; volume=797.3
- runtime: bbox={'max': [2.5, 0.0, 3.933], 'min': [-6.5, -17.309, -4.933]}; face_count=16; vertex_count=28; volume=805; surface_area=654.6
- runtime CE-vs-runtime deltas: bbox=17.31; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, roof, gable, 15, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 8.0\nattr depth = 8 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 8.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 15.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 8\nattr buildingDepth = 8\nattr buildingHeight = 15\nattr roofAngle = 30\n\n@StartRule\nStart -->\n s(buildingWidth / scope.sx, 1, buildingDepth / scope.sz)\n center(xz)\n extrude(buildingHeight)\n Building\n\nBuilding -->\n comp(f) { side : Facade | top : Roof }\n\nFacade -->\n color(0.72, 0.76, 0.80)\n\nRoof -->\n roofGable(roofAngle)\n RoofSurface\n\nRoofSurface -->\n color(0.35, 0.18, 0.10)\n"
查看原始结果 JSON →1b3c359e-12d7-450c-af4d-a43e6d23b32e
run evidence
生成一棵苹果树
state: QUEUED
查看 CGA 与测量证据
Measured metrics
(暂无 CGA 代码)
查看原始结果 JSON →1bc8124f-2e7e-4635-8528-321978419bed
run evidence
生成一棵苹果树
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [1.394, 0.0, 1.3], 'min': [-1.3, -5.97, -2.47]}; face_count=216; vertex_count=126; volume=88.28; surface_area=226
- runtime CE-vs-runtime deltas: bbox=20; face_count=1706; vertex_count=846
// student_ce.cga
"attr trunkHeight = 2.2\nattr trunkRadius = 0.15\nattr canopySize = 2.6\n\n@StartRule\nLot -->\n\tTrunk\n\nTrunk -->\n\tprimitiveCylinder(7)\n\ts(trunkRadius, trunkHeight, trunkRadius)\n\tcenter(xz)\n\tt(0, 0, 0)\n\tcolor(0.35, 0.22, 0.12)\n\tCanopy\n\nCanopy -->\n\tprimitiveSphere(8)\n\ts(canopySize, canopySize*0.85, canopySize)\n\tcenter(xz)\n\tt(0, trunkHeight + canopySize*0.35, 0)\n\tcolor(0.25, 0.5, 0.2)\n\tFruits\n\nFruits -->\n\tFruit(1.2, 0.4)\n\tFruit(-1.0, 1.8)\n\tFruit(0.3, 3.4)\n\tFruit(-0.6, 4.6)\n\nFruit(dx, a) -->\n\tcopy()\n\tt(sin(a)*canopySize*0.45, canopySize*0.25, cos(a)*canopySize*0.45)\n\tprimitiveSphere(6)\n\ts(0.12, 0.13, 0.12)\n\tcolor(0.85, 0.1, 0.1)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr height = 10\n\n@StartRule\nLot -->\n s(width, 1, depth)\n extrude(height)\n color(0.5, 0.5, 0.5)\n"
查看原始结果 JSON →1d43fd83-8106-4145-afca-1e1348a9a433
run evidence
生成一个高10米、宽12米、进深7米的灰色平屋顶建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [1.0, 0.0, 3.5], 'min': [-6.0, -10.0, -8.5]}; face_count=10; vertex_count=20; volume=840; surface_area=464
- runtime CE-vs-runtime deltas: bbox=10; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, gray, roof, flat, 10, 12, 7\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 7.0\nattr depth = 7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr height = 10\nattr gray = \"#808080\"\n\n@StartRule\nLot -->\n extrude(height)\n Building\n\nBuilding -->\n color(gray)\n NIL\n"
查看原始结果 JSON →1dae8a2e-ea7b-448d-bdec-655832539d21
run evidence
生成一个高10米、宽12米、进深7米的灰色平屋顶建筑
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -3.5]}; face_count=12; vertex_count=8; volume=840; surface_area=548
- nl2cga CE-vs-runtime deltas: bbox=5; face_count=2; surface_area=84; vertex_count=12; volume=0
- runtime: bbox={'max': [1.0, 0.0, 3.5], 'min': [-6.0, -10.0, -8.5]}; face_count=10; vertex_count=20; volume=840; surface_area=464
- runtime CE-vs-runtime deltas: bbox=10; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, gray, roof, flat, 10, 12, 7\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 7.0\nattr depth = 7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr buildingHeight = 10\nattr buildingColor = \"#808080\"\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n color(buildingColor)\n"
查看原始结果 JSON →1db52e6f-d7fc-433c-a9af-13108cc5eab1
run evidence
请建模一个住宅别墅,尺度约19.40米长、12.80米宽、5.00米高,使用浅灰清水混凝土,采用锯齿屋顶,深檐遮阳,重点表现平屋顶退台;转角通高窗变体1。
state: FAILED
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 19.40\nattr buildingDepth = 12.80\nattr buildingHeight = 5.00\nattr roofAngle = 18\nattr eaveDepth = 1.20\nattr setbackDepth = 2.00\nattr concreteColor = \"#C7C9C8\"\nattr glassColor = \"#6E8790\"\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n comp(f) {\n side : Facade\n | top : Roof\n }\n\nFacade -->\n color(concreteColor)\n comp(f) {\n front : FrontFacade\n | back : ConcreteWall\n | left : SideFacade\n | right : SideFacade\n }\n\nFrontFacade -->\n split(x) {\n 18% : ConcreteWall\n | 18% : CornerWindow\n | 64% : ConcreteWall\n }\n\nSideFacade -->\n split(x) {\n 16% : ConcreteWall\n | 24% : CornerWindow\n | 60% : ConcreteWall\n }\n\nCornerWindow -->\n color(glassColor)\n set(material.opacity, 0.72)\n extrude(0.08)\n\nConcreteWall -->\n color(concreteColor)\n\nRoof -->\n setback(setbackDepth)\n split(x) {\n 20% : roofShed(roofAngle)\n | 20% : roofShed(-roofAngle)\n | 20% : roofShed(roofAngle)\n | 20% : roofShed(-roofAngle)\n | 20% : roofShed(roofAngle)\n }\n color(concreteColor)\n"
查看原始结果 JSON →1de2c801-e9a4-48d9-af7e-a6f18da8576d
run evidence
单层乡村小屋带烟囱
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [3.15, 0.0, 3.65], 'min': [-5.15, -5.301, -2.65]}; face_count=206; vertex_count=222; volume=170.9; surface_area=200
- runtime CE-vs-runtime deltas: bbox=9; face_count=0; vertex_count=0
// student_ce.cga
"attr wallHeight = 3.2\nattr floorCount = 1\nattr roofAngle = 35\nattr chimneyW = 0.5\nattr chimneyH = 2.0\nattr windowRatio = 0.25\n\n@StartRule\nLot -->\n\ts(8, 0, 6)\n\textrude(wallHeight * floorCount)\n\tcomp(f){ top: RoofBase | side: Facade }\n\nFacade -->\n\tsplit(y){ wallHeight: Wall }\n\nWall -->\n\tsetupProjection(0, scope.xy, 2, 2)\n\tprojectUV(0)\n\ttexture(\"builtin:Wood\")\n\tsplit(x){ ~0.5: Solid | 1.2: Window | ~1.0: Door | 1.2: Window | ~0.5: Solid }\n\nSolid -->\n\tcolor(0.85, 0.8, 0.7)\n\nWindow -->\n\tsplit(y){ ~0.7: Solid | 1.2: WindowGlass | ~0.7: Solid }\n\nWindowGlass -->\n\tt(0, 0, 0.05)\n\textrude(0.1)\n\tcolor(0.4, 0.6, 0.75)\n\nDoor -->\n\tsplit(y){ 2.2: DoorLeaf | ~1.0: Solid }\n\nDoorLeaf -->\n\tt(0, 0, 0.05)\n\textrude(0.1)\n\tsetupProjection(0, scope.xy, 1, 1)\n\tprojectUV(0)\n\ttexture(\"builtin:Wood\")\n\tcolor(0.5, 0.35, 0.2)\n\nRoofBase -->\n\troofGable(roofAngle)\n\tcomp(f){ top: Rooftop | side: Roofside | right: Chimney }\n\nRooftop -->\n\tsetupProjection(0, scope.xz, 3, 3)\n\tprojectUV(0)\n\ttexture(\"builtin:Wood\")\n\tcolor(0.5, 0.25, 0.2)\n\nRoofside -->\n\tsetupProjection(0, scope.xy, 3, 3)\n\tprojectUV(0)\n\ttexture(\"builtin:Wood\")\n\tcolor(0.45, 0.2, 0.18)\n\nChimney -->\n\tt(chimneyW, 0, 0)\n\tChimneyBody\n\nChimneyBody -->\n\ts(chimneyW, chimneyH, chimneyW)\n\tprimitiveCube\n\tsetupProjection(0, scope.xy, 1, 1)\n\tprojectUV(0)\n\ttexture(\"builtin:Brick\")\n\tcolor(0.6, 0.3, 0.25)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 10\nattr lotDepth = 8\nattr buildingWidth = 7\nattr buildingDepth = 5\nattr wallHeight = 3.2\nattr chimneyWidth = 0.8\nattr chimneyDepth = 0.8\nattr chimneyHeight = 1.4\n\n@StartRule\nLot -->\n offset(-1) { inside : Cottage }\n\nCottage -->\n extrude(wallHeight)\n BuildingMass\n\nBuildingMass -->\n comp(f) { top : RoofTop | sides : Facade }\n\nFacade -->\n color(0.72, 0.48, 0.28)\n\nRoofTop -->\n split(x) { ~buildingWidth : RoofSurface | chimneyWidth : ChimneyBase | ~1 : RoofSurface }\n\nRoofSurface -->\n color(0.35, 0.12, 0.06)\n\nChimneyBase -->\n split(z) { chimneyDepth : ChimneySection | ~1 : ChimneySection }\n\nChimneySection -->\n extrude(chimneyHeight)\n color(0.45, 0.18, 0.12)\n"
查看原始结果 JSON →2047fd5e-a759-42d9-9a65-7a106887de85
run evidence
生成50米x50米的景观绿地,中间有圆形花坛
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [-1.833, 0.0, 3.5], 'min': [-6.0, -0.15, 2.5]}; face_count=10; vertex_count=20; volume=0.625; surface_area=5.717
- nl2cga CE-vs-runtime deltas: bbox=49; face_count=0; surface_area=8494; vertex_count=0; volume=7.5e+04
- runtime: bbox={'max': [44.0, 0.0, 3.5], 'min': [-6.0, -30.0, -46.5]}; face_count=10; vertex_count=20; volume=7.5e+04; surface_area=8500
- runtime CE-vs-runtime deltas: bbox=46.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: park, green, cylinder, 50\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 50.0\nattr depth = 50 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 50.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.3, 0.65, 0.35) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.3, 0.65, 0.35)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr siteWidth = 50\nattr siteDepth = 50\nattr greenThickness = 0.15\nattr flowerRadius = 8\nattr flowerDepth = 0.25\n\n@StartRule\nLot -->\n s(siteWidth / 12, siteDepth / 7, 1)\n extrude(greenThickness)\n comp(f) { top : GreenSurface | side : GrassEdge }\n\nGreenSurface -->\n color(\"#4B8F29\")\n split(y) { siteDepth/2 : GardenBand | flowerRadius*2 : FlowerBand | siteDepth/2 : GardenBand }\n\nGardenBand -->\n split(x) { siteWidth/2 : GrassPatch | flowerRadius*2 : FlowerPatch | siteWidth/2 : GrassPatch }\n\nFlowerBand -->\n split(x) { siteWidth/2 : GrassPatch | flowerRadius*2 : FlowerBed | siteWidth/2 : GrassPatch }\n\nFlowerPatch -->\n color(\"#4B8F29\")\n\nGrassPatch -->\n color(\"#4B8F29\")\n\nFlowerBed -->\n center(xz)\n primitiveCylinder(flowerRadius, flowerDepth)\n color(\"#D96B27\")\n\nGrassEdge -->\n color(\"#356B20\")\n"
查看原始结果 JSON →20661809-af14-4032-a0e2-1f832dc54bb1
run evidence
玻璃幕墙立面,宽30米高20米,3米分格
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -20.0, -26.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3300
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: glass, 30, 20, 3\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 30.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 20.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 5\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"glass.jpg\") projectUV(0) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 30\nattr depth = 8\nattr height = 20\nattr module = 3\nattr frame = 0.08\n\n@StartRule\nLot -->\n s(width / 12, depth / 7, 1)\n extrude(height)\n comp(f) {\n front : CurtainWall |\n back : CurtainWall |\n side : SideWall |\n top : Roof |\n bottom: Ground\n }\n\nCurtainWall -->\n split(u) {\n module: Bay |\n module: Bay |\n module: Bay |\n module: Bay |\n module: Bay |\n module: Bay |\n module: Bay |\n module: Bay |\n module: Bay |\n module: module: Bay\n }\n\nBay -->\n split(v) {\n module: GlassCell |\n module: GlassCell |\n module: GlassCell |\n module: GlassCell |\n module: GlassCell |\n module: GlassCell |\n 2: GlassCell\n }\n\nGlassCell -->\n offset(-frame) {\n border: Mullion |\n inside: Glass\n }\n\nGlass -->\n color(0.18, 0.42, 0.58)\n set(material.opacity, 0.38)\n\nMullion -->\n color(0.08, 0.10, 0.12)\n extrude(0.06)\n\nSideWall -->\n color(0.12, 0.14, 0.16)\n\nRoof -->\n color(0.08, 0.09, 0.10)\n\nGround -->\n color(0.05, 0.05, 0.05)\n"
查看原始结果 JSON →20dd806c-9722-49f0-a54a-75896a7820b9
run evidence
带烟囱的锅炉房,高12米
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -12.0, -16.5]}; face_count=10; vertex_count=20; volume=7200; surface_area=1800
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 12.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr buildingHeight = 12\nattr chimneyWidth = 1\nattr chimneyDepth = 1\nattr chimneyHeight = 4\n\n@StartRule\nLot -->\n split(y) {\n buildingDepth - chimneyDepth: BoilerWing\n | chimneyDepth: ChimneyBand\n }\n\nBoilerWing -->\n extrude(buildingHeight)\n comp(f) {\n side: BoilerFacade\n | top: FlatRoof\n }\n\nChimneyBand -->\n split(x) {\n (buildingWidth - chimneyWidth) / 2: BoilerWing\n | chimneyWidth: Chimney\n | ~: BoilerWing\n }\n\nChimney -->\n extrude(buildingHeight + chimneyHeight)\n comp(f) {\n side: ChimneyBrick\n | top: ChimneyCap\n }\n\nBoilerFacade --> color(0.55, 0.38, 0.24)\nFlatRoof --> color(0.18, 0.18, 0.18)\nChimneyBrick --> color(0.42, 0.18, 0.10)\nChimneyCap --> color(0.12, 0.12, 0.12)\n"
查看原始结果 JSON →2339f0e2-b73b-4091-a948-2894aeb57132
run evidence
高度15米、宽8米、深8米的办公楼,坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -17.021, -3.5]}; face_count=18; vertex_count=26; volume=924.9; surface_area=849.1
- nl2cga CE-vs-runtime deltas: bbox=3.5; face_count=2; surface_area=194.5; vertex_count=2; volume=119.9
- runtime: bbox={'max': [2.5, 0.0, 3.933], 'min': [-6.5, -17.309, -4.933]}; face_count=16; vertex_count=28; volume=805; surface_area=654.6
- runtime CE-vs-runtime deltas: bbox=17.31; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, roof, gable, 15, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 8.0\nattr depth = 8 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 8.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 15.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 8\nattr buildingDepth = 8\nattr buildingHeight = 15\nattr roofAngle = 30\n\n@StartRule\nLot -->\n resize(buildingWidth, 0, buildingDepth)\n center(xz)\n extrude(buildingHeight)\n Building\n\nBuilding -->\n comp(f) {\n side : Facade\n | top : Roof\n }\n\nFacade -->\n color(0.72, 0.76, 0.80)\n\nRoof -->\n roofGable(roofAngle)\n color(0.45, 0.28, 0.16)\n"
查看原始结果 JSON →257f9ead-9d44-445c-97c6-141ec02f23c8
run evidence
高度10米且高度15米的建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 6\nattr buildingDepth = 7\nattr height10 = 10\nattr height15 = 15\n\n@StartRule\nLot -->\n setSeed(777)\n split(x) { buildingWidth: Building10 | buildingWidth: Building15 }\n\nBuilding10 -->\n extrude(height10)\n\nBuilding15 -->\n extrude(height15)\n"
查看原始结果 JSON →26647c6d-11e4-4889-9ad5-95732c7e1817
run evidence
生成一棵苹果树
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr treeHeight = 6\nattr trunkHeight = 3\nattr trunkRadius = 0.28\nattr crownRadius = 2.2\nattr appleRadius = 0.22\n\n@StartRule\nStart -->\n\tsetSeed(42)\n\tcenter(xz)\n\textrude(treeHeight)\n\tsplit(y) { trunkHeight : Trunk | ~1 : Crown }\n\nTrunk -->\n\ts(trunkRadius * 2, 1, trunkRadius * 2)\n\tcolor(\"#6B3E1E\")\n\tprimitiveCylinder(12)\n\nCrown -->\n\tsplit(x) {\n\t\t0.25 : Foliage\n\t\t| 0.15 : AppleCluster\n\t\t| 0.20 : Foliage\n\t\t| 0.15 : AppleCluster\n\t\t| ~1 : Foliage\n\t}\n\nFoliage -->\n\ts(crownRadius * 2, crownRadius * 2, crownRadius * 2)\n\tcolor(\"#3F8F35\")\n\tprimitiveSphere(16)\n\nAppleCluster -->\n\ts(appleRadius * 2, appleRadius * 2, appleRadius * 2)\n\tcolor(\"#C62828\")\n\tprimitiveSphere(12)\n"
查看原始结果 JSON →2a51f5f4-2375-45b3-ac35-823588e24ee6
run evidence
生成一个精致的别墅
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"version \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 11\nattr buildingDepth = 6\nattr buildingHeight = 6\nattr roofAngle = 28\n\n@StartRule\nLot -->\n offset(-0.5) { inside : Villa | border : Terrace }\n\nVilla -->\n extrude(buildingHeight)\n comp(f) {\n front : FrontFacade\n | back : BackFacade\n | left : SideFacade\n | right : SideFacade\n | top : Roof\n | bottom : Foundation\n }\n\nFrontFacade -->\n color(0.82, 0.78, 0.68)\n split(y) {\n 0.45 : Plinth\n | 0.25 : Belt\n | 2.25 : WindowLevel\n | 0.22 : Belt\n | 2.25 : WindowLevel\n | ~0.58 : Cornice\n }\n\nBackFacade -->\n color(0.82, 0.78, 0.68)\n split(y) {\n 0.45 : Plinth\n | 0.25 : Belt\n | 2.25 : WindowLevel\n | 0.22 : Belt\n | 2.25 : WindowLevel\n | ~0.58 : Cornice\n }\n\nSideFacade -->\n color(0.78, 0.74, 0.65)\n split(y) {\n 0.45 : Plinth\n | 0.25 : Belt\n | 2.25 : SideWindowLevel\n | 0.22 : Belt\n | 2.25 : SideWindowLevel\n | ~0.58 : Cornice\n }\n\nWindowLevel -->\n split(x) {\n 0.8 : Wall\n | 2.2 : Window\n | 0.7 : Wall\n | 2.2 : Window\n | 0.7 : Wall\n | 2.2 : Window\n | ~0.8 : Wall\n }\n\nSideWindowLevel -->\n split(x) {\n 0.8 : Wall\n | 1.8 : Window\n | 0.75 : Wall\n | 1.8 : Window\n | ~0.85 : Wall\n }\n\nWindow -->\n color(0.08, 0.16, 0.22)\n extrude(-0.035)\n\nWall -->\n color(0.82, 0.78, 0.68)\n\nPlinth -->\n color(0.28, 0.27, 0.24)\n\nBelt -->\n color(0.92, 0.88, 0.77)\n\nCornice -->\n color(0.95, 0.91, 0.81)\n\nFoundation -->\n color(0.22, 0.21, 0.19)\n\nRoof -->\n roofHip(roofAngle)\n color(0.18, 0.12, 0.1)\n\nTerrace -->\n color(0.65, 0.61, 0.53)\n"
查看原始结果 JSON →31a6839f-2ffd-43e4-a11d-ee8849ca6806
run evidence
生成一个带双坡屋顶的六层灰色住宅建筑,立面有规则窗格
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, gray, window, floor, floors, roof, gable\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n Building;\n\nattr buildingWidth = 12;\nattr buildingDepth = 7;\nattr floorHeight = 3;\nattr buildingFloors = 6;\nattr buildingHeight = floorHeight * buildingFloors;\nattr roofAngle = 30;\n\nBuilding -->\n comp(f) {\n front: FrontFacade |\n back: BackFacade |\n side: SideFacade |\n roof: Roof\n };\n\nFrontFacade -->\n split(y) {\n floorHeight: FrontFloor |\n floorHeight: FrontFloor |\n floorHeight: FrontFloor |\n floorHeight: FrontFloor |\n floorHeight: FrontFloor |\n floorHeight: FrontFloor\n };\n\nBackFacade -->\n split(y) {\n floorHeight: BackFloor |\n floorHeight: BackFloor |\n floorHeight: BackFloor |\n floorHeight: BackFloor |\n floorHeight: BackFloor |\n floorHeight: BackFloor\n };\n\nSideFacade -->\n split(y) {\n floorHeight: SideFloor |\n floorHeight: SideFloor |\n floorHeight: SideFloor |\n floorHeight: SideFloor |\n floorHeight: SideFloor |\n floorHeight: SideFloor\n };\n\nFrontFloor -->\n split(x) {\n 1: Wall |\n 2: Window |\n 1: Wall |\n 2: Window |\n 1: Wall |\n 2: Window |\n 1: Wall\n };\n\nBackFloor -->\n split(x) {\n 1: Wall |\n 2: Window |\n 1: Wall |\n 2: Window |\n 1: Wall |\n 2: Window |\n 1: Wall\n };\n\nSideFloor -->\n split(x) {\n 1: Wall |\n 1.5: Window |\n 1: Wall |\n 1.5: Window |\n 1: Wall |\n 1.5: Window |\n 1: Wall\n };\n\nWall -->\n color(0.55, 0.55, 0.55);\n\nWindow -->\n color(0.12, 0.22, 0.3);\n\nRoof -->\n roofGable(roofAngle)\n color(0.3, 0.3, 0.3);\n"
查看原始结果 JSON →31f78c08-1e83-4d49-b1f0-9bf9cbf1f2ca
run evidence
生成一个高10米、宽12米、进深7米的灰色平屋顶建筑
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -3.5]}; face_count=12; vertex_count=24; volume=840; surface_area=548
- nl2cga CE-vs-runtime deltas: bbox=5; face_count=2; surface_area=84; vertex_count=4; volume=0
- runtime: bbox={'max': [1.0, 0.0, 3.5], 'min': [-6.0, -10.0, -8.5]}; face_count=10; vertex_count=20; volume=840; surface_area=464
- runtime CE-vs-runtime deltas: bbox=10; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, gray, roof, flat, 10, 12, 7\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 7.0\nattr depth = 7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr height = 10\n\n@StartRule\nLot -->\n extrude(height)\n color(0.5, 0.5, 0.5)\n Building\n\nBuilding -->\n comp(f) { side: Facade | top: Roof | bottom: Ground }\n\nFacade -->\n color(0.5, 0.5, 0.5)\n\nRoof -->\n color(0.5, 0.5, 0.5)\n\nGround -->\n color(0.5, 0.5, 0.5)\n"
查看原始结果 JSON →34cdb546-26f7-4258-bc70-190ff314eac2
run evidence
一棵苹果树
state: QUEUED
查看 CGA 与测量证据
Measured metrics
(暂无 CGA 代码)
查看原始结果 JSON →34fffe16-0963-4413-b192-b7632bc60936
run evidence
砖墙立面带阳台,四层
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -12.0, -4.7]}; face_count=312; vertex_count=240; volume=921.9; surface_area=837.2
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=302; surface_area=1163; vertex_count=220; volume=7478
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -14.0, -16.5]}; face_count=10; vertex_count=20; volume=8400; surface_area=2000
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: brick, balcony, floor, floors\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 14.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"brick.jpg\") projectUV(0) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floorHeight = 3.0\nattr floorCount = 4\nattr buildingHeight = floorHeight * floorCount\nattr balconyDepth = 1.2\nattr brickColor = \"#A94F38\"\nattr mortarColor = \"#6B3428\"\nattr concreteColor = \"#8A8178\"\nattr railingColor = \"#3A302C\"\nattr glassColor = \"#5B8791\"\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n BuildingMass\n\nBuildingMass -->\n comp(f) {\n front : FrontFacade |\n side : SideFacade |\n back : SideFacade |\n top : Roof |\n bottom : NIL\n }\n\nFrontFacade -->\n split(y) {\n floorHeight : FrontFloor |\n floorHeight : FrontFloor |\n floorHeight : FrontFloor |\n floorHeight : FrontFloor\n }\n\nFrontFloor -->\n split(x) {\n 2.0 : BrickWall |\n 8.0 : BalconyBay |\n 2.0 : BrickWall\n }\n\nBalconyBay -->\n split(y) {\n 1.6 : WindowBand |\n 0.25 : BalconySlab |\n 1.15 : BalconyRailBand\n }\n\nWindowBand -->\n extrude(0.12)\n color(glassColor)\n\nBalconySlab -->\n extrude(balconyDepth)\n color(concreteColor)\n\nBalconyRailBand -->\n extrude(balconyDepth)\n BalconyRailFrame\n\nBalconyRailFrame -->\n split(x) {\n 0.15 : RailPost |\n 7.7 : RailFront |\n 0.15 : RailPost\n }\n\nRailPost -->\n color(railingColor)\n\nRailFront -->\n split(y) {\n 0.12 : RailBar |\n 0.91 : NIL |\n 0.12 : RailBar\n }\n\nRailBar -->\n color(railingColor)\n\nBrickWall -->\n color(brickColor)\n\nSideFacade -->\n color(brickColor)\n\nRoof -->\n color(mortarColor)\n"
查看原始结果 JSON →36a94859-a459-4df7-bd04-a726142205a1
run evidence
高层办公楼
state: RUNNING
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# semantic_tags: building, floor, floors\nversion \"2024.1\"\n\n// 方向8 片段级组合生成:modern_highrise\nattr height = 70.0\n\nattr roofColor = \"#333333\"\n\nLot -->\n extrude(2.0)\n comp(f) { top: Upper | side: BaseSide }\n\nUpper -->\n extrude(height - 2.0)\n comp(f) { top: Roof | side: Walls }\n\nBaseSide -->\n color(0.5, 0.5, 0.5)\n\nWalls -->\n color(0.7,0.75,0.8)\n Facade\n\nFloor --> color(0.7,0.75,0.8)\nFacade -->\n split(y) { ~1 : Floor }*\n\nRoof -->\n roofHip(30) color(roofColor)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floors = 18\nattr floorHeight = 3.6\nattr height = floors * floorHeight\n\n@StartRule\nLot -->\n extrude(height)\n comp(f) { side : OfficeFacade | top : Roof }\n\nOfficeFacade -->\n color(\"#6f8798\")\n\nRoof -->\n color(\"#3b4650\")\n"
查看原始结果 JSON →3c15db11-c16b-474a-9dbe-482b6246a63f
run evidence
生成一个带双坡屋顶的六层灰色住宅建筑,立面有规则窗格
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -20.451, -3.5]}; face_count=1160; vertex_count=1158; volume=865.6; surface_area=1096
- nl2cga CE-vs-runtime deltas: bbox=18.5; face_count=1144; surface_area=2466; vertex_count=1130; volume=9685
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, gray, window, floor, floors, roof, gable\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floorCount = 6\nattr floorHeight = 3\nattr bodyHeight = floorCount * floorHeight\nattr roofAngle = 35\n\n@StartRule\nLot -->\n extrude(bodyHeight) BuildingMass\n\nBuildingMass -->\n comp(f) {\n front : Facade |\n back : Facade |\n left : SideFacade |\n right : SideFacade |\n top : Roof |\n bottom: NIL\n }\n\nFacade -->\n split(y) {\n floorHeight: Floor |\n floorHeight: Floor |\n floorHeight: Floor |\n floorHeight: Floor |\n floorHeight: Floor |\n floorHeight: Floor\n }\n\nSideFacade -->\n split(y) {\n floorHeight: SideFloor |\n floorHeight: SideFloor |\n floorHeight: SideFloor |\n floorHeight: SideFloor |\n floorHeight: SideFloor |\n floorHeight: SideFloor\n }\n\nFloor -->\n split(y) {\n 0.7: Wall |\n ~1.6: WindowRow |\n 0.7: Wall\n }\n\nSideFloor -->\n split(y) {\n 0.7: Wall |\n ~1.6: SideWindowRow |\n 0.7: Wall\n }\n\nWindowRow -->\n split(x) {\n ~0.8: Wall |\n 1.8: Window |\n ~0.8: Wall |\n 1.8: Window |\n ~0.8: Wall |\n 1.8: Window |\n ~0.8: Wall\n }\n\nSideWindowRow -->\n split(x) {\n ~0.45: Wall |\n 1.2: Window |\n ~0.45: Wall |\n 1.2: Window |\n ~0.45: Wall |\n 1.2: Window |\n ~0.45: Wall\n }\n\nWall -->\n color(\"#777777\")\n\nWindow -->\n color(\"#263A46\") extrude(-0.08)\n\nRoof -->\n roofGable(roofAngle) color(\"#555555\")\n"
查看原始结果 JSON →3c1fda8c-c6dc-4d6b-9649-51296d3ccd49
run evidence
6层的住宅楼,红色坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -20.451, -3.5]}; face_count=16; vertex_count=22; volume=1111; surface_area=887.7
- nl2cga CE-vs-runtime deltas: bbox=18.5; face_count=0; surface_area=2675; vertex_count=6; volume=9439
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, red, floor, floors, roof, gable, 6\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.2, 0.15) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.2, 0.15)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floors = 6\nattr floorHeight = 3\nattr roofAngle = 35\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr bodyHeight = floors * floorHeight\n\n@StartRule\nLot -->\n extrude(bodyHeight)\n Building\n\nBuilding -->\n comp(f) {\n side: Facade |\n top: Roof |\n bottom: NIL\n }\n\nFacade -->\n split(y) { ~floorHeight: FloorBand }\n\nFloorBand -->\n color(\"#e8e0d6\")\n\nRoof -->\n roofGable(roofAngle)\n RoofSurface\n\nRoofSurface -->\n color(\"#b51f1f\")\n"
查看原始结果 JSON →3d7764c3-7da7-4751-9bff-e98e7cfd154a
run evidence
测试按钮
state: QUEUED
查看 CGA 与测量证据
Measured metrics
(暂无 CGA 代码)
查看原始结果 JSON →3f0cc05f-bf62-4040-abe5-5085647ef1dd
run evidence
a four-story office building with a gable roof
state: FAILED
查看 CGA 与测量证据
Measured metrics
(暂无 CGA 代码)
查看原始结果 JSON →3fb2416f-7bb2-4538-aa78-6bde38728391
run evidence
生成一个高10米、宽12米、进深7米的灰色平屋顶建筑
state: QUEUED
查看 CGA 与测量证据
Measured metrics
(暂无 CGA 代码)
查看原始结果 JSON →42289c5e-dacb-4d71-b6e9-bdd305a9c7a5
run evidence
三层沿街商铺,平屋顶带女儿墙
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -10.5, -16.5]}; face_count=10; vertex_count=20; volume=6300; surface_area=1650
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: shop, commercial, floor, floors, roof, flat\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floors = 3\nattr floorHeight = 3.2\nattr parapetHeight = 1.0\nattr parapetInset = 0.3\nattr randomSeed = 777\n\n@StartRule\nLot -->\n extrude(floors * floorHeight)\n BuildingMass\n\nBuildingMass -->\n comp(f) {\n front : FrontFacade |\n right : SideFacade |\n back : SideFacade |\n left : SideFacade |\n top : Roof |\n bottom : NIL\n }\n\nFrontFacade -->\n split(y) {\n floorHeight : Storey |\n floorHeight : Storey |\n floorHeight : Storey\n }\n\nStorey -->\n split(x) {\n 1.0 : Wall |\n 2.0 : Shopfront |\n 1.0 : Wall |\n 2.0 : Shopfront |\n 1.0 : Wall |\n 2.0 : Shopfront |\n 1.0 : Wall |\n 2.0 : Shopfront\n }\n\nShopfront -->\n extrude(-0.06)\n color(\"#78AFC2\")\n\nWall -->\n color(\"#D5C3A5\")\n\nSideFacade -->\n color(\"#C5B294\")\n\nRoof -->\n setback(parapetInset) {\n inside : RoofSurface |\n border : Parapet\n }\n\nRoofSurface -->\n color(\"#777777\")\n\nParapet -->\n extrude(parapetHeight)\n color(\"#B9A487\")\n"
查看原始结果 JSON →48d1a07d-5316-4cfa-b03c-3e3c0becad2c
run evidence
生成一个杯子
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# 单位说明:1 单位 = 0.01m,cupHeight = 12 对应 0.12m\nattr cupHeight = 12\nattr cupRadius = 4.5\nattr wallThickness = 0.4\nattr rimThickness = 0.35\nattr wallColor = \"#e8e4da\"\nattr drinkColor = \"#6b3a1f\"\nattr handleThickness = 1.2\nattr handleLength = 4.5\n\n@StartRule\nLot -->\n\tprimitiveCylinder(48, cupHeight)\n\tCupBody\n\nCupBody -->\n\tcolor(wallColor)\n\textrude(-wallThickness)\n\tcomp(f){top: Rim | side: Wall | bottom: Base}\n\nBase -->\n\textrude(0.6)\n\nRim -->\n\tinset(rimThickness)\n\textrude(-0.6)\n\tDish\n\nDish -->\n\tinset(0.1)\n\textrude(-0.8)\n\tcolor(drinkColor)\n\tinset(0.3)\n\textrude(0.4)\n\tHandle\n\nWall -->\n\tcolor(wallColor)\n\nHandle -->\n\ttranslate(cupRadius, cupHeight*0.6, 0)\n\trotate(0, 90, 0)\n\tprimitiveCylinder(24, handleLength)\n\tscale(0.6, 1, 1)\n\tcolor(wallColor)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr cupWidth = 2.0\nattr cupDepth = 2.0\nattr cupHeight = 3.0\nattr wallThickness = 0.18\nattr handleRadius = 0.75\n\n@StartRule\nLot -->\n t(6, 0, 3.5)\n Cup\n\nCup -->\n color(\"#D96B3A\")\n s(cupWidth / 2, cupHeight, cupDepth / 2)\n primitiveCylinder(1, 1)\n\nCup -->\n color(\"#D96B3A\")\n s(cupWidth / 2 + wallThickness, 0.12, cupDepth / 2 + wallThickness)\n t(0, cupHeight, 0)\n primitiveTorus(1, 0.12)\n\nCup -->\n color(\"#6B2E1A\")\n s(cupWidth / 2 - wallThickness, 0.03, cupDepth / 2 - wallThickness)\n t(0, cupHeight - 0.08, 0)\n primitiveCylinder(1, 1)\n\nCup -->\n color(\"#D96B3A\")\n t(cupWidth / 2 + handleRadius * 0.55, cupHeight * 0.52, 0)\n s(handleRadius, handleRadius, handleRadius * 0.3)\n primitiveTorus(1, 0.16)\n"
查看原始结果 JSON →4b5cbfa4-e371-4071-b3a3-7ea70e31c27e
run evidence
缓坡地形的公园,面积2000平方米
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [22.361, 1.6, 22.361], 'min': [-22.361, -6.1, -22.441]}; face_count=4680; vertex_count=2780; volume=1467; surface_area=3345
- runtime CE-vs-runtime deltas: bbox=11; face_count=5420; vertex_count=2580
// student_ce.cga
"attr parkSide = sqrt(2000) // 约44.7米见方\nattr slopeMin = 0.4 // 缓坡最低点\nattr slopeMax = 1.6 // 缓坡最高点\nattr bands = 10 // 分带数量,越多越接近连续缓坡\nattr plazaRatio = 0.10\nattr pathRatio = 0.08\nattr grassColor = \"#5a8f4a\"\nattr pathColor = \"#b8a88a\"\nattr plazaColor = \"#c9b8a0\"\nattr treeColor = \"#2e6b2e\"\nattr treeDensity = 0.35\nattr treeMaxH = 4.0\nattr liftH = 0.08 // 铺装抬升厚度\n\n@StartRule\nLot -->\n\talignScopeToAxes(y)\n\tprimitiveQuad(parkSide, parkSide)\n\tSlopeBands\n\nSlopeBands -->\n\tsplit(z) { ~1: Band(0) | ~1: Band(1) | ~1: Band(2) | ~1: Band(3) | ~1: Band(4) |\n\t ~1: Band(5) | ~1: Band(6) | ~1: Band(7) | ~1: Band(8) | ~1: Band(9) }\n\nBand(i) -->\n\t// 按带序号线性插值高度,近似连续缓坡\n\tt(0, slopeMin + (slopeMax - slopeMin) * (i / (bands - 1.0)), 0)\n\tGround\n\nGround -->\n\t// 侧向封闭:将每带挤出到基面,消除带间缝隙与悬空边\n\textrude(-1)\n\tcomp(f) { side: SlopeFace | top: Surface }\n\nSlopeFace -->\n\t// 坡面连接几何,覆盖相邻带间高差\n\tcolor(grassColor)\n\nSurface -->\n\tsplit(x) { ~plazaRatio: Plaza | ~pathRatio: Path | ~1: Lawn }\n\nPlaza -->\n\tt(0, liftH, 0)\n\textrude(liftH)\n\tcolor(plazaColor)\n\nPath -->\n\tt(0, liftH, 0)\n\textrude(liftH)\n\tcolor(pathColor)\n\nLawn -->\n\tcolor(grassColor)\n\tsplit(x) { ~treeDensity: Trees | ~1: Grass }\n\nGrass -->\n\t// 普通草坪,无递归\n\tcolor(grassColor)\n\nTrees -->\n\t// 行道树/种植:散布树干与树冠\n\tsplit(x) { ~1: Tree | ~2: Grass }\n\tsplit(z) { ~1: Tree | ~2: Grass }\n\nTree -->\n\textrude(treeMaxH)\n\tcolor(treeColor)\n\tcomp(f) { top: TreeCrown }\n\nTreeCrown -->\n\ts(3, 2, 3)\n\tcenter(xz)\n\tprimitiveSphere\n\tcolor(treeColor)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr parkArea = 2000\nattr lotWidth = 12\nattr lotDepth = 7\nattr terrainThickness = 0.25\nattr slopeRise = 1.2\nattr pathWidth = 2\n\nattr footprintScale = sqrt(parkArea / (lotWidth * lotDepth))\n\n@StartRule\nPark -->\n s(footprintScale, 1, footprintScale)\n ParkLayout\n\nParkLayout -->\n split(x) {\n 43%: TerrainArea\n | pathWidth: PathArea\n | ~1: TerrainArea\n }\n\nTerrainArea -->\n split(z) {\n 20%: GrassStep(0)\n | 20%: GrassStep(slopeRise * 0.2)\n | 20%: GrassStep(slopeRise * 0.4)\n | 20%: GrassStep(slopeRise * 0.6)\n | 20%: GrassStep(slopeRise * 0.8)\n }\n\nPathArea -->\n split(z) {\n 20%: PathStep(0)\n | 20%: PathStep(slopeRise * 0.2)\n | 20%: PathStep(slopeRise * 0.4)\n | 20%: PathStep(slopeRise * 0.6)\n | 20%: PathStep(slopeRise * 0.8)\n }\n\nGrassStep(height) -->\n t(0, height, 0)\n extrude(terrainThickness)\n color(\"#5A8F3A\")\n\nPathStep(height) -->\n t(0, height + 0.04, 0)\n extrude(terrainThickness + 0.08)\n color(\"#B69B72\")\n"
查看原始结果 JSON →4bf76ab7-b4e4-4fe4-849e-527926a71441
run evidence
一个螺旋上升的现代塔楼,高30米
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, tower, 30\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\nattr towerWidth = 12\nattr towerDepth = 7\nattr towerHeight = 30\nattr floorHeight = 3\n\n@StartRule\nLot -->\n extrude(towerHeight)\n Tower\n\nTower -->\n split(y) {\n floorHeight: L0 |\n floorHeight: L1 |\n floorHeight: L2 |\n floorHeight: L3 |\n floorHeight: L4 |\n floorHeight: L5 |\n floorHeight: L6 |\n floorHeight: L7 |\n floorHeight: L8 |\n floorHeight: L9\n }\n\nL0 --> r(y, 0) Floor\nL1 --> r(y, 15) Floor\nL2 --> r(y, 30) Floor\nL3 --> r(y, 45) Floor\nL4 --> r(y, 60) Floor\nL5 --> r(y, 75) Floor\nL6 --> r(y, 90) Floor\nL7 --> r(y, 105) Floor\nL8 --> r(y, 120) Floor\nL9 --> r(y, 135) Floor\n\nFloor -->\n comp(f) {\n side: Facade |\n top: Roof |\n bottom: Base\n }\n\nFacade -->\n color(0.08, 0.18, 0.24)\n\nRoof -->\n color(0.03, 0.04, 0.05)\n\nBase -->\n color(0.12, 0.13, 0.14)\n"
查看原始结果 JSON →4fa750cd-f941-4f09-95e4-bdfdb143d1e8
run evidence
砖墙立面带阳台,四层
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -12.3, -4.7]}; face_count=250; vertex_count=228; volume=645.6; surface_area=792.8
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=240; surface_area=1207; vertex_count=208; volume=7754
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -14.0, -16.5]}; face_count=10; vertex_count=20; volume=8400; surface_area=2000
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: brick, balcony, floor, floors\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 14.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"brick.jpg\") projectUV(0) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floors = 4\nattr floorHeight = 3\nattr totalHeight = floors * floorHeight\nattr balconyDepth = 1.2\nattr brickColor = \"#A84F35\"\nattr mortarColor = \"#6B3328\"\nattr windowColor = \"#263B48\"\nattr roofColor = \"#4A2520\"\n\n@StartRule\nLot -->\n extrude(totalHeight)\n Mass\n\nMass -->\n comp(f) {\n front : FrontFacade\n | back : BrickWall\n | left : BrickWall\n | right : BrickWall\n | top : Roof\n | bottom : NIL\n }\n\nFrontFacade -->\n split(y) {\n floorHeight : FloorFacade\n | floorHeight : FloorFacade\n | floorHeight : FloorFacade\n | floorHeight : FloorFacade\n }\n\nFloorFacade -->\n split(x) {\n 4 : WindowBay\n | 4 : BalconyBay\n | 4 : WindowBay\n }\n\nWindowBay -->\n split(y) {\n 0.75 : BrickBand\n | 1.5 : Window\n | 0.75 : BrickBand\n }\n\nBalconyBay -->\n split(y) {\n 0.25 : BalconyBase\n | 0.75 : BalconyRail\n | 2 : BalconyOpening\n }\n\nBrickWall -->\n color(brickColor)\n\nBrickBand -->\n color(brickColor)\n\nBrickOpening -->\n color(brickColor)\n\nWindow -->\n color(windowColor)\n extrude(-0.08)\n\nBalconyBase -->\n color(mortarColor)\n extrude(balconyDepth)\n\nBalconyRail -->\n color(brickColor)\n extrude(balconyDepth)\n\nRoof -->\n color(roofColor)\n extrude(0.3)\n"
查看原始结果 JSON →554757bd-8f44-4ae6-a22b-e880ae7b5513
run evidence
生成一个办公楼
state: QUEUED
查看 CGA 与测量证据
Measured metrics
(暂无 CGA 代码)
查看原始结果 JSON →59e5e688-7921-4deb-8af2-5bf02fd63deb
run evidence
玻璃幕墙立面,宽30米高20米,3米分格
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -20.0, -26.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3300
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: glass, 30, 20, 3\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 30.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 20.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 5\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"glass.jpg\") projectUV(0) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 30\nattr buildingDepth = 7\nattr buildingHeight = 20\n\n@StartRule\nBuilding -->\n s(buildingWidth, buildingDepth, 1)\n extrude(buildingHeight)\n Envelope\n\nEnvelope -->\n comp(f) {\n front: GlassFacade\n | sides: SideFacade\n | top: Roof\n | bottom: NIL\n }\n\nGlassFacade -->\n split(u) {\n 3: GlassColumn\n | 3: GlassColumn\n | 3: GlassColumn\n | 3: GlassColumn\n | 3: GlassColumn\n | 3: GlassColumn\n | 3: GlassColumn\n | 3: GlassColumn\n | 3: GlassColumn\n | 3: GlassColumn\n }\n\nGlassColumn -->\n split(v) {\n 3: GlassPanel\n | 3: GlassPanel\n | 3: GlassPanel\n | 3: GlassPanel\n | 3: GlassPanel\n | 3: GlassPanel\n | 2: GlassPanel\n }\n\nGlassPanel -->\n color(\"#6FAFC4\")\n set(material.opacity, 0.65)\n\nSideFacade -->\n color(\"#4D6570\")\n\nRoof -->\n color(\"#30383D\")\n"
查看原始结果 JSON →5a738bcf-2b84-46f2-a39b-e93760ffbb59
run evidence
6层的住宅楼,红色坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -19.353, -3.5]}; face_count=16; vertex_count=22; volume=1080; surface_area=897.7
- nl2cga CE-vs-runtime deltas: bbox=18.5; face_count=0; surface_area=2665; vertex_count=6; volume=9470
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, red, floor, floors, roof, gable, 6\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.2, 0.15) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.2, 0.15)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr floors = 6\nattr floorHeight = 3.2\nattr roofHeight = 2.5\nattr roofColor = \"#B22222\"\nattr wallColor = \"#D9D2C3\"\n\n@StartRule\nLot -->\n extrude(floors * floorHeight)\n Building\n\nBuilding -->\n comp(f) {\n side : Facade\n | top : Roof\n }\n\nFacade -->\n color(wallColor)\n\nRoof -->\n roofHip(roofHeight)\n color(roofColor)\n"
查看原始结果 JSON →60d05f29-c0a8-4c38-8dbd-24d90305564f
run evidence
高度10米且高度15米的建筑
state: FAILED
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 5.0\nattr buildingDepth = 5.0\nattr buildingGap = 1.0\n\n@StartRule\nLot -->\n split(x) {\n buildingWidth : Building10\n | buildingGap : OpenSpace\n | buildingWidth : Building15\n | remainder : OpenSpace\n }\n\nBuilding10 -->\n s(buildingWidth, buildingDepth, 1)\n center(xz)\n extrude(10)\n Mass\n\nBuilding15 -->\n s(buildingWidth, buildingDepth, 1)\n center(xz)\n extrude(15)\n Mass\n\nMass -->\n color(\"#B8B8B8\")\n comp(f) { front : Facade | side : Facade | back : Facade | top : Roof }\n\nFacade -->\n color(\"#D0D0D0\")\n\nRoof -->\n color(\"#666666\")\n\nOpenSpace -->\n color(\"#9AAA7A\")\n"
查看原始结果 JSON →6194fbbc-6256-45f8-b1ce-cdd6da50474e
run evidence
一个抽象的现代雕塑产品造型
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"version \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr width = 4.2\nattr depth = 2.8\nattr height = 6.0\nattr baseHeight = 0.6\n\n@StartRule\nStartRule -->\n center(xz)\n s(width / lotWidth, 1, depth / lotDepth)\n Sculpture\n\nSculpture -->\n extrude(height)\n split(y) {\n baseHeight: Pedestal\n | ~1: LowerForm\n | ~1: MiddleForm\n | ~1: UpperForm\n }\n\nPedestal -->\n color(\"#2B3038\")\n comp(f) {\n top: color(\"#565E68\")\n | side: color(\"#20242A\")\n }\n\nLowerForm -->\n center(xz)\n s(0.88, 1, 0.88)\n r(y, -12)\n color(\"#AAB4BF\")\n comp(f) {\n top: color(\"#D5DCE2\")\n | side: color(\"#7F8994\")\n }\n\nMiddleForm -->\n center(xz)\n s(0.68, 1, 0.68)\n r(y, 24)\n color(\"#66727E\")\n comp(f) {\n top: color(\"#B6C0C9\")\n | side: color(\"#4A555F\")\n }\n\nUpperForm -->\n center(xz)\n s(0.46, 1, 0.46)\n r(y, -38)\n color(\"#D0D7DD\")\n comp(f) {\n top: color(\"#F1F4F6\")\n | side: color(\"#909BA5\")\n }\n"
查看原始结果 JSON →61f42183-4630-41d8-8466-b60077cd0313
run evidence
6层的住宅楼,红色坡屋顶
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, red, floor, floors, roof, gable, 6\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.2, 0.15) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.2, 0.15)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floorHeight = 3\nattr roofHeight = 2\nattr buildingWidth = 12\nattr buildingDepth = 7\n\n@StartRule\nLot -->\n extrude(6 * floorHeight)\n Building\n\nBuilding -->\n comp(f) {\n sides : Facade\n | top : Roof\n }\n\nFacade -->\n split(y) {\n floorHeight : Floor\n | floorHeight : Floor\n | floorHeight : Floor\n | floorHeight : Floor\n | floorHeight : Floor\n | floorHeight : Floor\n }\n\nFloor -->\n color(0.78, 0.72, 0.65)\n\nRoof -->\n roofHip(30)\n color(1, 0, 0)\n"
查看原始结果 JSON →63cb9263-83f8-49d8-8832-7605428697f6
run evidence
生成一个别墅
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [0.417, 0.0, 0.393], 'min': [-0.417, -6.227, -0.393]}; face_count=16; vertex_count=22; volume=2.673; surface_area=20.85
- nl2cga CE-vs-runtime deltas: bbox=23.77; face_count=6; surface_area=3579; vertex_count=2; volume=1.8e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"version \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr buildingWidth = 10\nattr buildingDepth = 5.5\nattr buildingHeight = 6\nattr roofAngle = 30\nattr randomSeed = 7\n\n@StartRule\nLot -->\n s(buildingWidth / lotWidth, 1, buildingDepth / lotDepth)\n center(xz)\n extrude(buildingHeight)\n VillaMass\n\nVillaMass -->\n comp(f) {\n side : Facade\n | top : Roof\n }\n\nFacade -->\n color(0.82, 0.72, 0.58)\n\nRoof -->\n roofHip(roofAngle)\n RoofSurface\n\nRoofSurface -->\n color(0.28, 0.12, 0.06)\n"
查看原始结果 JSON →649c9f48-b28e-4384-b2ae-76162468e5d8
run evidence
生成一个重檐歇山顶中国古建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -35.774, -16.933]}; face_count=16; vertex_count=28; volume=1.429e+04; surface_area=4462
- runtime CE-vs-runtime deltas: bbox=35.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, gable\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr bodyHeight = 4\nattr lowerRoofHeight = 1.2\nattr upperRoofHeight = 1.0\nattr lowerRoofAngle = 30\nattr upperRoofAngle = 25\nattr eaveOffset = 0.7\nattr upperRoofScale = 0.78\n\n@StartRule\nLot -->\n s(width, depth, 0)\n Building\n\nBuilding -->\n extrude(bodyHeight)\n Mass\n\nMass -->\n comp(f) {\n top : LowerEaveRoof\n side : Wall\n }\n\nWall -->\n color(0.72, 0.10, 0.05)\n\nLowerEaveRoof -->\n roofHip(lowerRoofAngle)\n LowerRoofVolume\n\nLowerRoofVolume -->\n extrude(lowerRoofHeight)\n comp(f) {\n top : UpperEaveRoof\n side : EaveTrim\n }\n\nEaveTrim -->\n color(0.18, 0.06, 0.025)\n\nUpperEaveRoof -->\n offset(-eaveOffset)\n roofHip(upperRoofAngle)\n extrude(upperRoofHeight)\n UpperRoofSurface\n\nUpperRoofSurface -->\n color(0.32, 0.06, 0.025)\n"
查看原始结果 JSON →64bd5529-6210-4267-88e5-875cb86fd255
run evidence
生成一个高10米、宽12米、进深7米的灰色平屋顶建筑
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -3.5]}; face_count=12; vertex_count=8; volume=840; surface_area=548
- nl2cga CE-vs-runtime deltas: bbox=5; face_count=2; surface_area=84; vertex_count=12; volume=0
- runtime: bbox={'max': [1.0, 0.0, 3.5], 'min': [-6.0, -10.0, -8.5]}; face_count=10; vertex_count=20; volume=840; surface_area=464
- runtime CE-vs-runtime deltas: bbox=10; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, gray, roof, flat, 10, 12, 7\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 7.0\nattr depth = 7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr buildingHeight = 10\nattr roofColor = \"#808080\"\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n color(roofColor)\n"
查看原始结果 JSON →6539621b-b32c-4df5-8309-f51b1bb3e1dd
run evidence
生成跨度24米、长60米、高8米的工业厂房
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [54.0, 0.0, 3.5], 'min': [-6.0, -8.0, -20.5]}; face_count=10; vertex_count=20; volume=1.152e+04; surface_area=2784
- runtime CE-vs-runtime deltas: bbox=56.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: factory, industrial, 24, 60, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 60.0\nattr depth = 60 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 24.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 8.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 24\nattr depth = 60\nattr height = 8\n\n@StartRule\nLot -->\n s(width, 1, depth)\n center(xz)\n extrude(height) Building\n\nBuilding -->\n comp(f) {\n side : Wall\n top : Roof\n }\n\nWall -->\n color(0.55, 0.58, 0.62)\n\nRoof -->\n color(0.28, 0.30, 0.34)\n"
查看原始结果 JSON →67203361-2c6d-4207-b74b-db842f039c39
run evidence
带烟囱的锅炉房,高12米
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -12.0, -16.5]}; face_count=10; vertex_count=20; volume=7200; surface_area=1800
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 12.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr buildingHeight = 12\nattr chimneyWidth = 1.2\nattr chimneyDepth = 1.2\nattr chimneyHeight = 4\n\n@StartRule\nBoilerRoom -->\n extrude(buildingHeight)\n BuildingMass\n\nBuildingMass -->\n comp(f) {\n side: Facade\n | top: Roof\n | bottom: Foundation\n }\n\nFacade -->\n color(0.42, 0.45, 0.48)\n\nFoundation -->\n color(0.18, 0.18, 0.18)\n\nRoof -->\n color(0.22, 0.24, 0.26)\n offset(-1) {\n inside: Chimney\n | border: RoofSurface\n }\n\nRoofSurface -->\n color(0.25, 0.27, 0.29)\n\nChimney -->\n center(xz)\n s(chimneyWidth, 1, chimneyDepth)\n extrude(chimneyHeight)\n ChimneyVolume\n\nChimneyVolume -->\n comp(f) {\n side: ChimneySide\n | top: ChimneyCap\n | bottom: ChimneyBase\n }\n\nChimneySide -->\n color(0.30, 0.30, 0.30)\n\nChimneyCap -->\n color(0.16, 0.16, 0.16)\n\nChimneyBase -->\n color(0.24, 0.24, 0.24)\n"
查看原始结果 JSON →67769d85-e5e9-46a9-9c8f-14d11e8994c1
run evidence
a simple two-story rectangular office building with a flat roof
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -6.4, -3.5]}; face_count=20; vertex_count=40; volume=537.6; surface_area=411.2
- nl2cga CE-vs-runtime deltas: bbox=23.6; face_count=10; surface_area=3189; vertex_count=20; volume=1.746e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, roof, flat\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floorHeight = 3.2\nattr roofThickness = 0.2\n\n@StartRule\nLot -->\n extrude(floorHeight * 2)\n comp(f) { side : Facade | top : Roof | bottom : Ground }\n\nFacade -->\n split(y) { floorHeight : Story | floorHeight : Story }\n\nStory -->\n color(\"#D9DDE2\")\n\nRoof -->\n color(\"#4A4F57\")\n\nGround -->\n color(\"#777777\")\n"
查看原始结果 JSON →6c9827e9-64d0-4dd8-a4f4-521fefe811b0
run evidence
一面带窗户和阳台的欧式建筑立面
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -4.2]}; face_count=226; vertex_count=356; volume=824.8; surface_area=559.5
- nl2cga CE-vs-runtime deltas: bbox=20; face_count=216; surface_area=3041; vertex_count=336; volume=1.718e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, balcony, window\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr buildingHeight = 10\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n Building\n\nBuilding -->\n comp(f) {\n front : Facade |\n side : SideWall |\n back : BackWall |\n top : Roof |\n bottom : Ground\n }\n\nFacade -->\n color(\"#E6D5B8\")\n split(y) {\n 1 : GroundLevel |\n 3 : BalconyFloor |\n 3 : BalconyFloor |\n 3 : TopFloor\n }\n\nGroundLevel -->\n split(x) {\n 1.25 : Wall |\n 2.5 : EntranceBay |\n 1.25 : Wall |\n 2.5 : WindowBay |\n 1.25 : Wall |\n 2.5 : WindowBay |\n 1.25 : Wall\n }\n\nTopFloor -->\n split(x) {\n 1.25 : Wall |\n 2.5 : WindowBay |\n 1.25 : Wall |\n 2.5 : WindowBay |\n 1.25 : Wall |\n 2.5 : WindowBay |\n 1.25 : Wall\n }\n\nBalconyFloor -->\n split(x) {\n 1.25 : Wall |\n 2.5 : BalconyBay |\n 1.25 : Wall |\n 2.5 : BalconyBay |\n 1.25 : Wall |\n 2.5 : BalconyBay |\n 1.25 : Wall\n }\n\nWindowBay -->\n split(x) {\n 0.3 : WallTrim |\n 1.9 : Window |\n 0.3 : WallTrim\n }\n\nEntranceBay -->\n split(x) {\n 0.35 : WallTrim |\n 1.8 : Entrance |\n 0.35 : WallTrim\n }\n\nBalconyBay -->\n split(x) {\n 0.3 : WallTrim |\n 1.9 : BalconyAssembly |\n 0.3 : WallTrim\n }\n\nBalconyAssembly -->\n split(y) {\n 0.35 : BalconySlab |\n 1.2 : BalconyWindow |\n 0.25 : BalconyRail |\n 0.2 : BalconyTopTrim\n }\n\nWindow -->\n split(y) {\n 0.45 : WindowSill |\n 2.1 : Glass |\n 0.45 : WindowLintel\n }\n\nEntrance -->\n color(\"#5A3825\")\n\nGlass -->\n color(\"#5C91A8\")\n\nWindowSill -->\n color(\"#C9B18C\")\n\nWindowLintel -->\n color(\"#C9B18C\")\n\nBalconyWindow -->\n color(\"#587F91\")\n\nBalconySlab -->\n extrude(0.7)\n color(\"#B79A72\")\n\nBalconyRail -->\n color(\"#3E3A35\")\n\nBalconyTopTrim -->\n color(\"#C9B18C\")\n\nWall -->\n color(\"#E6D5B8\")\n\nWallTrim -->\n color(\"#C9B18C\")\n\nSideWall -->\n color(\"#D8C3A2\")\n\nBackWall -->\n color(\"#D8C3A2\")\n\nRoof -->\n color(\"#704A35\")\n\nGround -->\n color(\"#8B8173\")\n"
查看原始结果 JSON →6ddcd220-a299-4e3c-9c06-5d4f3358be22
run evidence
一座带花园的别墅
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"version \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr buildingHeight = 4.5\nattr gardenDepth = 2\n\n@StartRule\nLot -->\n split(y) { gardenDepth: Garden | ~: Villa }\n\nGarden -->\n split(x) { 2: GardenPath | ~: Lawn }\n\nGardenPath -->\n color(0.55, 0.42, 0.25)\n\nLawn -->\n color(0.18, 0.52, 0.12)\n\nVilla -->\n extrude(buildingHeight)\n comp(f) { top: Roof | side: Walls | bottom: Foundation }\n\nWalls -->\n color(0.82, 0.72, 0.58)\n\nRoof -->\n color(0.28, 0.16, 0.10)\n\nFoundation -->\n color(0.35, 0.35, 0.32)\n"
查看原始结果 JSON →70117e38-a095-427b-b5d7-22381a0dc21a
run evidence
生成一棵苹果树
state: RUNNING
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"attr trunkHeight = 2.2\nattr trunkRadius = 0.15\nattr canopySize = 2.6\n\n@StartRule\nLot -->\n\tTrunk\n\nTrunk -->\n\tprimitiveCylinder(7)\n\ts(trunkRadius, trunkHeight, trunkRadius)\n\tcenter(xz)\n\tt(0, 0, 0)\n\tcolor(0.35, 0.22, 0.12)\n\tCanopy\n\nCanopy -->\n\tprimitiveSphere(8)\n\ts(canopySize, canopySize*0.85, canopySize)\n\tcenter(xz)\n\tt(0, trunkHeight + canopySize*0.35, 0)\n\tcolor(0.25, 0.5, 0.2)\n\tFruits\n\nFruits -->\n\tcopy()\n\tcopy()\n\tFruit(1.2, 0)\n\tFruit(-1.0, 2.0)\n\tFruit(0.2, 4.0)\n\nFruit(dx, dz) -->\n\tt(dx, canopySize*0.25, dz)\n\tprimitiveSphere(6)\n\ts(0.12, 0.13, 0.12)\n\tcenter(xyz)\n\tcolor(0.85, 0.1, 0.1)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr treeWidth = lotWidth * 0.4\nattr treeDepth = lotDepth * 0.6\nattr treeHeight = 7\nattr trunkHeight = 3.5\nattr trunkDiameter = 0.45\nattr canopyWidth = treeWidth\nattr canopyDepth = treeDepth\nattr appleSize = 0.45\n\n@StartRule\nTree -->\n center(xz)\n s(treeWidth, 1, treeDepth)\n extrude(treeHeight)\n split(y) {\n trunkHeight: Trunk\n | remainder: Crown\n }\n\nTrunk -->\n s(trunkDiameter, 1, trunkDiameter)\n primitiveCylinder\n color(0.32, 0.14, 0.045)\n\nCrown -->\n split(y) {\n 32%: FoliageLayer\n | 36%: FruitLayer\n | 32%: FoliageLayer\n }\n\nFoliageLayer -->\n s(canopyWidth, 1, canopyDepth)\n primitiveSphere\n color(0.12, 0.42, 0.08)\n\nFruitLayer -->\n split(x) {\n 25%: FruitColumn\n | 50%: FruitColumn\n | 25%: FruitColumn\n }\n\nFruitColumn -->\n split(z) {\n 25%: Apple\n | 50%: Apple\n | 25%: Apple\n }\n\nApple -->\n s(appleSize, appleSize, appleSize)\n primitiveSphere\n color(0.78, 0.035, 0.02)\n"
查看原始结果 JSON →707b4822-3137-4b8f-93e1-b6ad11a7225e
run evidence
6层的住宅楼,红色坡屋顶
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, red, floor, floors, roof, gable, 6\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.2, 0.15) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.2, 0.15)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floors = 6\nattr floorHeight = 3\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr roofPitch = 25\n\n@StartRule\nLot -->\n extrude(floorHeight * floors)\n Building\n\nBuilding -->\n comp(f) {\n \"side\" : Facade\n | \"top\" : Roof\n }\n\nFacade -->\n split(y) { floorHeight : Floor }*\n\nFloor -->\n color(0.82, 0.82, 0.82)\n\nRoof -->\n roofHip(roofPitch)\n color(1, 0, 0)\n"
查看原始结果 JSON →736e6814-9c7d-48cf-b2b5-d17445c91ae4
run evidence
高度10米且高度15米的建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\n@StartRule\nLot -->\n split(x) { 6: Building10 | 6: Building15 }\n\nBuilding10 -->\n extrude(10)\n\nBuilding15 -->\n extrude(15)\n"
查看原始结果 JSON →73d0b55c-8727-4b99-81b6-8060f78e227c
run evidence
高度10米且高度15米的建筑
state: FAILED
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 6\nattr buildingDepth = 6\nattr height10 = 10\nattr height15 = 15\nattr randomSeed = 777\n\n@StartRule\nLot -->\n split(x) { buildingWidth : Site10 | buildingWidth : Site15 }\n\nSite10 -->\n split(y) { buildingDepth : Building10 | ~ : OpenSpace }\n\nSite15 -->\n split(y) { buildingDepth : Building15 | ~ : OpenSpace }\n\nBuilding10 -->\n extrude(height10) Mass10\n\nBuilding15 -->\n extrude(height15) Mass15\n\nMass10 -->\n color(0.72, 0.72, 0.78)\n\nMass15 -->\n color(0.42, 0.48, 0.58)\n\nOpenSpace -->\n NIL\n"
查看原始结果 JSON →74399461-c469-4dc6-9a9a-6697023b9b56
run evidence
生成100米长、宽20米的街区道路,两侧有人行道
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -0.18, -3.5]}; face_count=14; vertex_count=12; volume=4.285; surface_area=135.6
- nl2cga CE-vs-runtime deltas: bbox=88; face_count=4; surface_area=9064; vertex_count=8; volume=6e+04
- runtime: bbox={'max': [94.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=6e+04; surface_area=9200
- runtime CE-vs-runtime deltas: bbox=96.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, road, sidewalk, 100, 20\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 100.0\nattr depth = 100 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr streetLength = 100\nattr streetWidth = 20\nattr sidewalkWidth = 3\nattr roadWidth = streetWidth - 2 * sidewalkWidth\nattr sidewalkHeight = 0.18\nattr roadThickness = 0.04\nattr randomSeed = 777\n\n@StartRule\nStreet -->\n rotx(-90)\n s(streetLength / 12, 1, streetWidth / 7)\n split(z) {\n sidewalkWidth: Sidewalk\n | roadWidth: Road\n | sidewalkWidth: Sidewalk\n }\n\nSidewalk -->\n color(0.62, 0.62, 0.62)\n extrude(sidewalkHeight)\n\nRoad -->\n color(0.08, 0.08, 0.08)\n extrude(roadThickness)\n"
查看原始结果 JSON →7639f64e-d1fc-47a1-9d45-020a4379bb3f
run evidence
一棵苹果树 掐表000424
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [1.95, 8.35, 1.66], 'min': [-1.77, 3.78, -1.94]}; face_count=280; vertex_count=160; volume=61.89; surface_area=161.7
- runtime CE-vs-runtime deltas: bbox=18.06; face_count=202; vertex_count=86
// student_ce.cga
"attr trunkHeight = 2.2\nattr trunkRadius = 0.15\nattr canopySize = 2.4\nattr appleCount = 5\n\n@StartRule\nLot -->\n\talignScopeToAxes(y)\n\tTrunk\n\nTrunk -->\n\tprimitiveCylinder(8)\n\ts(trunkRadius, trunkHeight, trunkRadius)\n\tcenter(xz)\n\tt(0, trunkHeight/2, 0)\n\tcolor(0.32, 0.20, 0.11)\n\tCanopy\n\nCanopy -->\n\tt(0, trunkHeight + canopySize*0.2, 0)\n\tCanopyBall\n\nCanopyBall -->\n\tprimitiveSphere(10)\n\ts(canopySize, canopySize*0.9, canopySize)\n\tcenter(xz)\n\tt(0, canopySize*0.45, 0)\n\tcolor(0.25, 0.5, 0.2)\n\tLeafDetail\n\nLeafDetail -->\n\tcopy()\n\tcopy()\n\tcopy()\n\tLeaf(0.5, 0.3)\n\tLeaf(-0.6, -0.4)\n\tLeaf(0.2, -0.7)\n\nLeaf(dx, dz) -->\n\tt(dx*canopySize*0.5, canopySize*0.7, dz*canopySize*0.5)\n\tApple(dx, dz)\n\nApple(dx, dz) -->\n\tt(0.15, -0.35, 0.1)\n\tprimitiveSphere(6)\n\ts(0.12, 0.13, 0.12)\n\tcolor(0.85, 0.1, 0.1)\n\tLeafColor\n\nLeafColor -->\n\tcolor(0.25, 0.5, 0.2)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr treeHeight = 6\nattr treeWidth = 4\nattr treeDepth = 4\nattr trunkHeight = 3\nattr trunkRadius = 0.22\nattr crownRadius = 1.8\nattr appleRadius = 0.12\n\n@StartRule\nStart --> t(6, 0, 3.5) AppleTree\n\nAppleTree --> Trunk CrownA CrownB CrownC CrownD Apples\n\nTrunk -->\n\tset(scope.sx, trunkRadius * 2)\n\tset(scope.sy, trunkHeight)\n\tset(scope.sz, trunkRadius * 2)\n\tcolor(\"#6B3E1E\")\n\tprimitiveCylinder\n\nCrownA -->\n\tt(0, trunkHeight + 1.2, 0)\n\tset(scope.sx, crownRadius * 2)\n\tset(scope.sy, crownRadius * 2)\n\tset(scope.sz, crownRadius * 2)\n\tcolor(\"#3E8E3E\")\n\tprimitiveSphere\n\nCrownB -->\n\tt(-1.1, trunkHeight + 1.8, 0.4)\n\tset(scope.sx, crownRadius * 1.6)\n\tset(scope.sy, crownRadius * 1.6)\n\tset(scope.sz, crownRadius * 1.6)\n\tcolor(\"#4FA642\")\n\tprimitiveSphere\n\nCrownC -->\n\tt(1.1, trunkHeight + 1.7, 0.2)\n\tset(scope.sx, crownRadius * 1.7)\n\tset(scope.sy, crownRadius * 1.7)\n\tset(scope.sz, crownRadius * 1.7)\n\tcolor(\"#398A36\")\n\tprimitiveSphere\n\nCrownD -->\n\tt(0, trunkHeight + 2.5, -0.6)\n\tset(scope.sx, crownRadius * 1.5)\n\tset(scope.sy, crownRadius * 1.5)\n\tset(scope.sz, crownRadius * 1.5)\n\tcolor(\"#5AAE45\")\n\tprimitiveSphere\n\nApples --> AppleA AppleB AppleC AppleD AppleE AppleF AppleG AppleH\n\nAppleA --> t(-1.25, 4.2, 0.55) Apple\nAppleB --> t(1.15, 4.0, 0.7) Apple\nAppleC --> t(0.2, 5.0, 1.45) Apple\nAppleD --> t(-0.35, 5.45, -1.1) Apple\nAppleE --> t(1.1, 5.2, -0.65) Apple\nAppleF --> t(-1.5, 3.9, -0.45) Apple\nAppleG --> t(0.7, 3.75, -1.25) Apple\nAppleH --> t(-0.15, 4.65, 0.95) Apple\n\nApple -->\n\tset(scope.sx, appleRadius * 2)\n\tset(scope.sy, appleRadius * 2)\n\tset(scope.sz, appleRadius * 2)\n\tcolor(\"#C62828\")\n\tprimitiveSphere\n"
查看原始结果 JSON →77ca7790-56ac-4cae-9de4-56e718ea5c0b
run evidence
中式四合院
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -3.6, -3.5]}; face_count=60; vertex_count=40; volume=217.9; surface_area=443.4
- nl2cga CE-vs-runtime deltas: bbox=5.421; face_count=196; surface_area=213.5; vertex_count=466; volume=577.3
- runtime: bbox={'max': [6.433, 0.0, 3.933], 'min': [-6.433, -9.021, -3.933]}; face_count=256; vertex_count=506; volume=795.2; surface_area=656.9
- runtime CE-vs-runtime deltas: bbox=9.887; face_count=122; vertex_count=241
// student_ce.cga
"version \"2024.1\"\n\n// 方向8 片段级组合生成:chinese_residence\nattr height = 7.0\n\nLot -->\n extrude(2.0)\n comp(f) { top: Upper | side: BaseSide }\n\nUpper -->\n extrude(height - 2.0)\n comp(f) { top: Roof | side: Walls }\n\nBaseSide -->\n color(0.6, 0.6, 0.6) # Dark gray for the base\n\nWall -->\n\tcolor(0.85, 0.8, 0.7) # Medium brown for the walls\n\n# Define the window\nWindow -->\n\tcolor(0.4, 0.5, 0.6) # Light blue for the windows\nWalls -->\n split(x) { ~3: Wall | 1.5: Window }*\n \tcolor(0.9, 0.85, 0.75) # Light brown for the walls\n Facade\n\nFloor -->\n\tsplit(x) { ~3: Wall | 1.5: Window }*\n\tcolor(0.9, 0.85, 0.75) # Light brown for the walls\n\n# Define the wall\nFacade -->\n split(y) { ~1: Floor }*\n\nRoof -->\n roofHip(30, 0.5)\n \tcolor(0.2, 0.2, 0.25)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr wingDepth = 2\nattr wingHeight = 3.6\nattr courtyardHeight = 0.08\n\n@StartRule\nLot -->\n split(x) {\n wingDepth : WestWing\n | ~1 : Center\n | wingDepth : EastWing\n }\n\nCenter -->\n split(z) {\n wingDepth : SouthWing\n | ~1 : Courtyard\n | wingDepth : NorthWing\n }\n\nWestWing -->\n extrude(wingHeight)\n color(0.72, 0.22, 0.10)\n\nEastWing -->\n extrude(wingHeight)\n color(0.72, 0.22, 0.10)\n\nSouthWing -->\n extrude(wingHeight)\n color(0.68, 0.16, 0.08)\n\nNorthWing -->\n extrude(wingHeight)\n color(0.68, 0.16, 0.08)\n\nCourtyard -->\n extrude(courtyardHeight)\n color(0.55, 0.48, 0.34)\n"
查看原始结果 JSON →78b8b8f0-029a-49a8-a3c4-fc74286a5bb9
run evidence
生成一棵苹果树
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [1.394, 0.0, 1.3], 'min': [-1.3, -5.97, -2.47]}; face_count=216; vertex_count=126; volume=88.28; surface_area=226
- runtime CE-vs-runtime deltas: bbox=20; face_count=1706; vertex_count=846
// student_ce.cga
"attr trunkHeight = 2.2\nattr trunkRadius = 0.15\nattr canopySize = 2.6\n\n@StartRule\nLot -->\n\tTrunk\n\nTrunk -->\n\tprimitiveCylinder(7)\n\ts(trunkRadius, trunkHeight, trunkRadius)\n\tcenter(xz)\n\tt(0, 0, 0)\n\tcolor(0.35, 0.22, 0.12)\n\tCanopy\n\nCanopy -->\n\tprimitiveSphere(8)\n\ts(canopySize, canopySize*0.85, canopySize)\n\tcenter(xz)\n\tt(0, trunkHeight + canopySize*0.35, 0)\n\tcolor(0.25, 0.5, 0.2)\n\tFruits\n\nFruits -->\n\tFruit(1.2, 0.4)\n\tFruit(-1.0, 1.8)\n\tFruit(0.3, 3.4)\n\tFruit(-0.6, 4.6)\n\nFruit(dx, a) -->\n\tcopy()\n\tt(sin(a)*canopySize*0.45, canopySize*0.25, cos(a)*canopySize*0.45)\n\tprimitiveSphere(6)\n\ts(0.12, 0.13, 0.12)\n\tcolor(0.85, 0.1, 0.1)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr height = 10\n\n@StartRule\nLot -->\n s(width, 1, depth)\n extrude(height)\n color(0.5, 0.5, 0.5)\n"
查看原始结果 JSON →7a5836cf-6815-48c2-ac89-c1d8c4e5f2c7
run evidence
三层沿街商铺,平屋顶带女儿墙
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -10.5, -16.5]}; face_count=10; vertex_count=20; volume=6300; surface_area=1650
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: shop, commercial, floor, floors, roof, flat\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floorHeight = 3\nattr parapetHeight = 1.2\nattr buildingHeight = 3 * floorHeight\n\n@StartRule\nLot -->\n extrude(buildingHeight) MainVolume\n\nMainVolume -->\n comp(f) {\n top : RoofBase\n side : Facade\n }\n\nRoofBase -->\n extrude(parapetHeight) Parapet\n\nParapet -->\n comp(f) {\n top : Roof\n side : ParapetWall\n }\n\nFacade -->\n split(y) {\n floorHeight : GroundShop\n floorHeight : MiddleShop\n floorHeight : UpperShop\n }\n\nGroundShop -->\n color(\"#B87545\")\n\nMiddleShop -->\n color(\"#C58B5A\")\n\nUpperShop -->\n color(\"#D2A679\")\n\nParapetWall -->\n color(\"#BFC3C7\")\n\nRoof -->\n color(\"#666A70\")\n"
查看原始结果 JSON →7bdff1b8-288a-4af0-87cb-113f3e2d3b95
run evidence
高度10米且高度15米的建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr defaultWidth = 12\nattr defaultDepth = 7\n\n@StartRule\nLot -->\n split(x) { 1: Building10 | 1: Building15 }\n\nBuilding10 -->\n extrude(10)\n\nBuilding15 -->\n extrude(15)\n"
查看原始结果 JSON →7d17ab9b-3178-4068-a4e9-735719ccdded
run evidence
请建模一个住宅别墅,尺度约18.00米长、12.00米宽、4.50米高,使用浅灰清水混凝土,采用平屋顶,深檐遮阳,重点表现人字坡屋顶和落地窗;深檐遮阳变体1。
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# semantic_tags: residential, concrete, gray, window, roof, flat, gable, 18.00, 12.00, 4.50, 1\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 18.0\nattr depth = 18 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 4.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 1\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(y) { ~4.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\n@Group(\"Building\")\nattr buildingLength = 18.0\nattr buildingWidth = 12.0\nattr buildingHeight = 4.5\nattr roofOverhang = 1.2\nattr roofRise = 1.4\nattr windowHeight = 3.2\nattr windowInset = 0.08\nattr concreteColor = \"#D2D4D3\"\nattr glassColor = \"#6B8790\"\n\n@StartRule\nLot -->\n alignScopeToAxes(y)\n cleanupGeometry\n Building\n\nBuilding -->\n color(concreteColor)\n extrude(buildingHeight)\n split(y){ ~1: FacadeFront | ~1: FacadeBack | ~1: FacadeSide | ~1: FacadeSide }\n RoofBase\n\nFacadeFront -->\n split(x){\n 2.0: ConcretePanel |\n 6.0: GlassWindow |\n 2.0: ConcretePanel |\n 6.0: GlassWindow |\n 2.0: ConcretePanel\n }\n\nFacadeBack -->\n split(x){\n 2.0: ConcretePanel |\n 4.0: GlassWindow |\n 6.0: ConcretePanel |\n 4.0: GlassWindow |\n 2.0: ConcretePanel\n }\n\nFacadeSide -->\n split(y){\n 2.0: ConcretePanel |\n 3.5: GlassWindow |\n 3.0: ConcretePanel |\n 3.5: GlassWindow\n }\n\nConcretePanel -->\n color(concreteColor)\n setupProjection(0)\n projectUV(0)\n NIL\n\nGlassWindow -->\n s(scope.x, scope.y, windowHeight)\n t(0, 0, 0.65)\n i(windowInset)\n color(glassColor)\n GlassFrame\n\nGlassFrame -->\n set(material.opacity, 0.72)\n comp(f){ front: WindowGlass | side: ConcreteFrame }\n\nWindowGlass -->\n color(glassColor)\n NIL\n\nConcreteFrame -->\n color(concreteColor)\n NIL\n\nRoofBase -->\n roofGable(roofRise)\n RoofCanopy\n\nRoofCanopy -->\n offset(roofOverhang)\n extrude(0.22)\n color(concreteColor)\n split(x){ ~0.5: EaveLeft | ~0.5: EaveRight }\n\nEaveLeft -->\n s(scope.x, 0.35, 0.35)\n t(0, -0.35, 0)\n color(concreteColor)\n NIL\n\nEaveRight -->\n s(scope.x, 0.35, 0.35)\n t(0, scope.y, 0)\n color(concreteColor)\n NIL\n"
查看原始结果 JSON →7d81af10-b1a7-498c-915b-fd8fed2bf2bc
run evidence
一座带树木和草坪的小山丘公园景观
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 6.85, 7.691], 'min': [-8.191, -3.15, -6.411]}; face_count=4020; vertex_count=2786; volume=527.5; surface_area=1107
- nl2cga CE-vs-runtime deltas: bbox=26.85; face_count=4010; surface_area=2493; vertex_count=2766; volume=1.747e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: park, grass, tree\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr groundHeight = 0.15\nattr trunkHeight = 2.0\nattr crownLift = 0.85\n\n@StartRule\nLot --> extrude(groundHeight) GroundSolid\n\nGroundSolid -->\n\tcomp(f) {\n\t\ttop: Landscape |\n\t\tside: GroundSide\n\t}\n\nGroundSide --> color(\"#6B8E4E\")\nLandscape --> split(x) {\n\t2: LawnWest |\n\t3: HillWest |\n\t2: HillCenter |\n\t3: HillEast |\n\t2: LawnEast\n}\n\nLawnWest --> color(\"#63B34F\")\nLawnEast --> color(\"#63B34F\")\n\nHillWest -->\n\textrude(0.45) HillWestVolume\n\nHillWestVolume -->\n\tcolor(\"#70B957\")\n\tsplit(z) {\n\t\t1.5: TreeCell |\n\t\t~1: LawnPatch |\n\t\t1.5: TreeCell\n\t}\n\nHillCenter -->\n\textrude(0.9) HillCenterVolume\n\nHillCenterVolume -->\n\tcolor(\"#78BF5A\")\n\tsplit(z) {\n\t\t2: LawnPatch |\n\t\t3: TreeCell |\n\t\t2: LawnPatch\n\t}\n\nHillEast -->\n\textrude(0.45) HillEastVolume\n\nHillEastVolume -->\n\tcolor(\"#70B957\")\n\tsplit(z) {\n\t\t1.5: TreeCell |\n\t\t~1: LawnPatch |\n\t\t1.5: TreeCell\n\t}\n\nLawnPatch --> color(\"#63B34F\")\n\nTreeCell -->\n\ts(0.22, 1, 0.22)\n\textrude(trunkHeight) TreeTrunk\n\nTreeTrunk -->\n\tcomp(f) {\n\t\ttop: TreeCrown |\n\t\tside: TreeBark\n\t}\n\nTreeBark --> color(\"#70452A\")\n\nTreeCrown -->\n\tt(0, crownLift, 0)\n\ts(5, 2.5, 5)\n\tprimitiveSphere(12, 8) CrownSurface\n\nCrownSurface --> color(\"#2E7D32\")\n"
查看原始结果 JSON →7e2154a9-d7e9-4105-ba8d-42b06a235958
run evidence
生成一棵苹果树
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"attr trunkHeight = 2.2\nattr trunkRadius = 0.14\nattr canopySize = 2.4\n\n@StartRule\nLot -->\n\tTrunk\n\nTrunk -->\n\tprimitiveCylinder(8)\n\ts(trunkRadius, trunkHeight, trunkRadius)\n\tcenter(xz)\n\tt(0, 0, 0)\n\tcolor(0.35, 0.22, 0.12)\n\tCanopy\n\nCanopy -->\n\tprimitiveSphere(8)\n\ts(canopySize, canopySize*0.85, canopySize)\n\tcenter(xz)\n\tt(0, trunkHeight + canopySize*0.35, 0)\n\tcolor(0.25, 0.5, 0.2)\n\tFruits\n\nFruits -->\n\tFruit(1.1, 0.2)\n\tFruit(-1.0, 1.2)\n\tFruit(0.2, 2.2)\n\nFruit(dx, dz) -->\n\tt(dx, canopySize*0.2, dz)\n\tprimitiveSphere(6)\n\ts(0.12, 0.13, 0.12)\n\tcenter(xyz)\n\tcolor(0.85, 0.1, 0.1)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr treeHeight = 6\nattr canopyWidth = 5\nattr canopyDepth = 5\nattr trunkHeight = 3.2\nattr trunkRadius = 0.22\nattr branchRadius = 0.12\nattr appleRadius = 0.16\n\n@StartRule\nAppleTree -->\n setSeed(42)\n Trunk\n Branches\n Canopy\n Apples\n\nTrunk -->\n s(trunkRadius, trunkRadius, trunkHeight)\n i(\"builtin:cylinder\")\n color(\"#6B3F24\")\n\nBranches -->\n BranchA\n BranchB\n BranchC\n BranchD\n BranchE\n BranchF\n\nBranchA -->\n t(0, 0, 2.3)\n r(0, 28, -18)\n s(branchRadius, branchRadius, 2.2)\n i(\"builtin:cylinder\")\n color(\"#6B3F24\")\n\nBranchB -->\n t(0, 0, 2.6)\n r(0, -32, 22)\n s(branchRadius, branchRadius, 2.1)\n i(\"builtin:cylinder\")\n color(\"#6B3F24\")\n\nBranchC -->\n t(0, 0, 2.8)\n r(18, 0, 42)\n s(branchRadius, branchRadius, 1.9)\n i(\"builtin:cylinder\")\n color(\"#6B3F24\")\n\nBranchD -->\n t(0, 0, 2.5)\n r(-18, 0, -42)\n s(branchRadius, branchRadius, 1.9)\n i(\"builtin:cylinder\")\n color(\"#6B3F24\")\n\nBranchE -->\n t(0, 0, 3)\n r(0, 22, -55)\n s(branchRadius, branchRadius, 1.7)\n i(\"builtin:cylinder\")\n color(\"#6B3F24\")\n\nBranchF -->\n t(0, 0, 3)\n r(0, -24, 58)\n s(branchRadius, branchRadius, 1.7)\n i(\"builtin:cylinder\")\n color(\"#6B3F24\")\n\nCanopy -->\n t(0, 0, 4.4)\n s(canopyWidth / 2, canopyDepth / 2, 2.2)\n i(\"builtin:sphere\")\n color(\"#3E7D32\")\n\nApples -->\n Apple(1.3, 0.8, 5.2)\n Apple(-1.5, 0.7, 4.8)\n Apple(0.2, 1.3, 5.5)\n Apple(1.7, -0.8, 4.3)\n Apple(-0.8, -1.4, 4.4)\n Apple(-2, 0, 5.1)\n Apple(0.9, -1.8, 5.2)\n\nApple(x, y, z) -->\n t(x, y, z)\n s(appleRadius, appleRadius, appleRadius)\n i(\"builtin:sphere\")\n color(\"#C83232\")\n"
查看原始结果 JSON →7ef7099f-6f80-4d02-b3d9-604a61b1f96e
run evidence
生成一个中式歇山顶的三层茶楼,高12米
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.358, 0.0, 3.858], 'min': [-6.358, -11.658, -3.858]}; face_count=128; vertex_count=250; volume=652.1; surface_area=549.2
- nl2cga CE-vs-runtime deltas: bbox=9.142; face_count=112; surface_area=608.9; vertex_count=222; volume=1354
- runtime: bbox={'max': [6.433, 0.0, 4.0], 'min': [-6.433, -15.464, -13.0]}; face_count=16; vertex_count=28; volume=2006; surface_area=1158
- runtime CE-vs-runtime deltas: bbox=15.46; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, floor, floors, gable, 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 12\nattr depth = 12 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 16\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 12.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 3\n# 结构特征: 歇山顶、挑檐、雕花栏杆\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.35, 0.36, 0.38)\n\nFacade --> color(0.6, 0.45, 0.32) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.6, 0.45, 0.32)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr totalHeight = 12\nattr floorCount = 3\nattr floorHeight = 3\nattr roofHeight = 3\nattr overhang = 0.45\nattr roofAngle = atan(roofHeight / (depth / 2 + overhang))\nattr randomSeed = 11\n\n@StartRule\nLot -->\n extrude(totalHeight - roofHeight)\n Building\n\nBuilding -->\n comp(f) {\n side : Facade |\n top : Roof\n }\n\nFacade -->\n split(y) {\n floorHeight : Floor\n }*\n\nFloor -->\n split(x) {\n ~1 : Wall |\n 1.5 : Window |\n ~1 : Wall |\n 1.5 : Window |\n ~1 : Wall\n }\n\nWall -->\n color(0.72, 0.18, 0.08)\n\nWindow -->\n color(0.12, 0.25, 0.28)\n\nRoof -->\n roofHip(roofAngle, overhang)\n RoofSurface\n\nRoofSurface -->\n color(0.48, 0.08, 0.035)\n"
查看原始结果 JSON →81b5943e-b601-41cb-891c-98ed7e454191
run evidence
砖墙立面带阳台,四层
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -12.0, -4.4]}; face_count=130; vertex_count=260; volume=976; surface_area=859.2
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=120; surface_area=1141; vertex_count=240; volume=7424
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -14.0, -16.5]}; face_count=10; vertex_count=20; volume=8400; surface_area=2000
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: brick, balcony, floor, floors\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 14.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"brick.jpg\") projectUV(0) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floorHeight = 3\nattr totalHeight = floorHeight * 4\nattr balconyDepth = 0.9\nattr brickColor = \"#A94732\"\nattr mortarColor = \"#6E2E24\"\nattr railingColor = \"#252525\"\nattr windowColor = \"#9CC7D9\"\n\n@StartRule\nLot -->\n extrude(totalHeight)\n comp(f) { front: FrontFacade | all: BrickSurface }\n\nBrickSurface -->\n color(brickColor)\n\nFrontFacade -->\n split(y) {\n floorHeight: Floor |\n floorHeight: Floor |\n floorHeight: Floor |\n floorHeight: Floor\n }\n\nFloor -->\n split(x) {\n 0.5: WallSection |\n 5: BalconyZone |\n 0.5: WallSection |\n 5: BalconyZone |\n 1: WallSection\n }\n\nWallSection -->\n color(brickColor)\n\nBalconyZone -->\n extrude(balconyDepth)\n comp(f) { front: BalconyRailing | all: BalconyBrick }\n\nBalconyBrick -->\n color(brickColor)\n\nBalconyRailing -->\n color(railingColor)\n"
查看原始结果 JSON →83669738-4138-4f6e-a0ef-d791c57b94a5
run evidence
生成100米长、宽20米的街区道路,两侧有人行道
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [94.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=6e+04; surface_area=9200
- runtime CE-vs-runtime deltas: bbox=96.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, road, sidewalk, 100, 20\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 100.0\nattr depth = 100 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr streetLength = 100\nattr streetWidth = 20\nattr sidewalkWidth = 2\nattr roadHeight = 0.08\nattr sidewalkHeight = 0.15\n\n@StartRule\nStreet -->\n alignScopeToGeometry(y)\n resize(streetLength, 0, streetWidth)\n split(z) {\n sidewalkWidth : Sidewalk\n | ~1 : Road\n | sidewalkWidth : Sidewalk\n }\n\nSidewalk -->\n extrude(sidewalkHeight)\n color(\"#B8B8B8\")\n\nRoad -->\n extrude(roadHeight)\n color(\"#3A3A3A\")\n"
查看原始结果 JSON →837739ac-d1f9-4ecc-8bf4-cd18be9ebd7b
run evidence
十字路口街区,路宽12米
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -0.12, -3.5]}; face_count=12; vertex_count=8; volume=10.08; surface_area=172.6
- nl2cga CE-vs-runtime deltas: bbox=29.88; face_count=2; surface_area=2707; vertex_count=12; volume=1.079e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -8.5]}; face_count=10; vertex_count=20; volume=1.08e+04; surface_area=2880
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr roadWidth = 12\nattr lotWidth = 12\nattr lotDepth = 7\nattr pavementHeight = 0.12\nattr curbHeight = 0.15\nattr curbWidth = 0.25\n\n@StartRule\nStart -->\n CrossIntersection\n\nCrossIntersection -->\n extrude(pavementHeight)\n color(\"#3A3A3A\")\n"
查看原始结果 JSON →86aeaa1a-1b92-4fb1-b5e9-4e81d7b29a41
run evidence
一面带窗户和阳台的欧式建筑立面
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, balcony, window\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12.0\nattr buildingDepth = 7.0\nattr buildingHeight = 9.0\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n Mass\n\nMass -->\n comp(f) {\n front : Facade\n | side : SideWall\n | back : SideWall\n }\n\nFacade -->\n split(v) {\n 0.8 : GroundFloor\n | 2.6 : BalconyLevel\n | 2.6 : BalconyLevel\n | 2.3 : UpperLevel\n | ~1 : Crown\n }\n\nGroundFloor -->\n split(u) {\n 1.0 : StonePier\n | ~1 : Door\n | 1.0 : StonePier\n | ~1 : Window\n | 1.0 : StonePier\n | ~1 : Window\n | 1.0 : StonePier\n | ~1 : Door\n | 1.0 : StonePier\n }\n\nBalconyLevel -->\n split(u) {\n 1.0 : StonePier\n | ~1 : BalconyBay\n | 1.0 : StonePier\n | ~1 : Window\n | 1.0 : StonePier\n | ~1 : BalconyBay\n | 1.0 : StonePier\n }\n\nUpperLevel -->\n split(u) {\n 1.0 : StonePier\n | ~1 : Window\n | 1.0 : StonePier\n | ~1 : Window\n | 1.0 : StonePier\n | ~1 : Window\n | 1.0 : StonePier\n }\n\nBalconyBay -->\n split(v) {\n 0.65 : Balcony\n | ~1 : Window\n }\n\nWindow -->\n extrude(-0.12)\n Glass\n\nDoor -->\n extrude(-0.08)\n DoorPanel\n\nBalcony -->\n extrude(0.45)\n BalconyStructure\n\nBalconyStructure -->\n comp(f) {\n front : BalconyRail\n | side : BalconyRail\n | top : BalconyDeck\n | bottom : BalconyDeck\n }\n\nBalconyRail -->\n color(0.12, 0.12, 0.12)\n\nBalconyDeck -->\n color(0.38, 0.30, 0.22)\n\nGlass -->\n color(0.16, 0.32, 0.42)\n\nDoorPanel -->\n color(0.24, 0.12, 0.06)\n\nStonePier -->\n color(0.78, 0.72, 0.62)\n\nCrown -->\n color(0.86, 0.80, 0.70)\n\nSideWall -->\n color(0.72, 0.67, 0.58)\n"
查看原始结果 JSON →88e18a3c-8400-4b92-8d26-41ca1820a129
run evidence
十字路口街区,路宽12米
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -8.5]}; face_count=10; vertex_count=20; volume=1.08e+04; surface_area=2880
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr roadWidth = 12\nattr parcelWidth = 12\nattr parcelDepth = 7\nattr roadThickness = 0.15\nattr curbHeight = 0.18\nattr randomSeed = 777\n\n@StartRule\nLot -->\n s(parcelWidth / parcelWidth, roadWidth / parcelDepth, 1)\n Intersection\n\nIntersection -->\n color(\"#3A3A3A\")\n extrude(roadThickness)\n RoadSurface\n\nRoadSurface -->\n comp(f) {\n top: RoadTop\n side: Curb\n bottom: AsphaltBase\n }\n\nRoadTop -->\n color(\"#454545\")\n\nCurb -->\n color(\"#B8B8B8\")\n extrude(curbHeight)\n\nAsphaltBase -->\n color(\"#292929\")\n"
查看原始结果 JSON →8a8bdf92-77ae-4594-8719-d8820e3567a5
run evidence
一座带烟囱和管道的大型工业厂房
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -8.0, -3.5]}; face_count=18; vertex_count=36; volume=672; surface_area=388
- nl2cga CE-vs-runtime deltas: bbox=22; face_count=8; surface_area=3212; vertex_count=16; volume=1.733e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: factory, industrial\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr buildingHeight = 8\nattr chimneyHeight = 3\nattr pipeRise = 0.35\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n BuildingMass\n\nBuildingMass -->\n comp(f) {\n top : Roof\n | side : Facade\n }\n\nFacade -->\n color(0.32, 0.35, 0.38)\n\nRoof -->\n split(x) {\n 0.45 : PipeRun\n | ~1 : RoofPanel\n | 0.8 : ChimneyRow\n | ~1 : RoofPanel\n | 0.45 : PipeRun\n }\n\nChimneyRow -->\n split(z) {\n ~1 : RoofPanel\n | 0.8 : Chimney\n | ~1 : RoofPanel\n }\n\nPipeRun -->\n split(z) {\n 0.2 : Pipe\n | ~1 : RoofPanel\n | 0.2 : Pipe\n }\n\nRoofPanel -->\n color(0.18, 0.2, 0.22)\n\nPipe -->\n extrude(pipeRise)\n PipeBody\n\nPipeBody -->\n color(0.55, 0.58, 0.6)\n\nChimney -->\n extrude(chimneyHeight)\n ChimneyBody\n\nChimneyBody -->\n comp(f) {\n top : ChimneyCap\n | side : ChimneyWall\n }\n\nChimneyWall -->\n color(0.28, 0.2, 0.16)\n\nChimneyCap -->\n color(0.12, 0.12, 0.12)\n"
查看原始结果 JSON →8acecc70-2414-477c-8191-297852479ed7
run evidence
玻璃幕墙立面,宽30米高20米,3米分格
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -20.0, -26.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3300
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: glass, 30, 20, 3\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 30.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 20.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 5\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"glass.jpg\") projectUV(0) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 30\nattr depth = 7\nattr height = 20\nattr grid = 3\nattr randomSeed = 777\n\n@StartRule\nLot -->\n s(width / 12, 1, depth / 7)\n extrude(height)\n BuildingMass\n\nBuildingMass -->\n comp(f) {\n front : FrontFacade\n | back : FrontFacade\n | left : SideGlass\n | right : SideGlass\n | top : RoofGlass\n | bottom : Ground\n }\n\nFrontFacade -->\n split(u) {\n 3 : PanelBay\n | 3 : PanelBay\n | 3 : PanelBay\n | 3 : PanelBay\n | 3 : PanelBay\n | 3 : PanelBay\n | 3 : PanelBay\n | 3 : PanelBay\n | 3 : PanelBay\n | 3 : PanelBay\n }\n\nPanelBay -->\n split(v) {\n 0.08 : Frame\n | 2.92 : GlassPanel\n | 0.08 : Frame\n | 2.92 : GlassPanel\n | 0.08 : Frame\n | 2.92 : GlassPanel\n | 0.08 : Frame\n | 2.92 : GlassPanel\n | 0.08 : Frame\n | 2.92 : GlassPanel\n | 0.08 : Frame\n | 2.92 : GlassPanel\n | 0.08 : Frame\n | 1.92 : GlassPanel\n | 0.08 : Frame\n }\n\nGlassPanel -->\n color(\"#78B7D1\")\n\nFrame -->\n color(\"#263746\")\n\nSideGlass -->\n color(\"#669AAF\")\n\nRoofGlass -->\n color(\"#3D5968\")\n\nGround -->\n color(\"#18232A\")\n"
查看原始结果 JSON →8e092b24-41fe-493a-ab8a-da6b51c7012d
run evidence
一座现代化的体育馆
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"attr height = 18\nattr floorHeight = 9\nattr windowRatio = 0.35\nattr panelWidth = 6\n\n@StartRule\nstart -->\n\tprimitiveCube(80, height, 60)\n\tcomp(f){top: FlatRoof | side: CurtainWallFacade | bottom: Platform}\n\nFlatRoof -->\n\textrude(0.35)\n\tcolor(0.42, 0.43, 0.46)\n\nPlatform -->\n\tsetback(2) {all: color(0.55, 0.56, 0.58)}\n\tcolor(0.60, 0.61, 0.63)\n\nCurtainWallFacade -->\n\tsplit(y) { {floorHeight: HallFloor}* }\n\nHallFloor -->\n\tsplit(x) { {~panelWidth: FacadeBay}* }\n\nFacadeBay -->\n\tsplit(z) { {1 - windowRatio: MetalPanel | windowRatio: GlassCurtain} }\n\tEntranceCanopy\n\nMetalPanel -->\n\tcolor(0.72, 0.74, 0.78)\n\nGlassCurtain -->\n\tcolor(0.18, 0.32, 0.48)\n\nEntranceCanopy -->\n\ttranslate(0, -0.8, 0)\n\tprimitiveCube(panelWidth, 0.35, 3.2)\n\tcolor(0.30, 0.31, 0.34)\n\tColumnGrid\n\nColumnGrid -->\n\trepeat(x, 6) {\n\t\tprimitiveCube(0.35, floorHeight * 0.85, 0.35)\n\t\tcolor(0.48, 0.49, 0.52)\n\t}"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingHeight = 8\nattr roofAngle = 8\n\n@StartRule\nLot -->\n color(0.12, 0.15, 0.18)\n extrude(buildingHeight)\n comp(f) {\n side : Facade\n | top : Roof\n | bottom : Ground\n }\n\nFacade -->\n split(y) {\n 1.2 : Base\n | ~2.8 : GlassBand\n | ~1.0 : Crown\n }\n\nBase --> color(0.08, 0.1, 0.12)\n\nGlassBand -->\n split(x) {\n ~1.0 : Frame\n | ~5.0 : Glass\n | ~1.0 : Frame\n }\n\nFrame --> color(0.06, 0.07, 0.08)\n\nGlass --> color(0.18, 0.42, 0.52)\n\nCrown --> color(0.1, 0.12, 0.14)\n\nRoof -->\n roofShed(roofAngle)\n color(0.05, 0.06, 0.07)\n\nGround --> color(0.25, 0.27, 0.28)\n"
查看原始结果 JSON →8ef9a280-01e3-41cb-99ba-c9ee18fa044d
run evidence
三层沿街商铺,平屋顶带女儿墙
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.2, -3.5]}; face_count=226; vertex_count=452; volume=856.8; surface_area=471.6
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=216; surface_area=1178; vertex_count=432; volume=5443
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -10.5, -16.5]}; face_count=10; vertex_count=20; volume=6300; surface_area=1650
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: shop, commercial, floor, floors, roof, flat\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floors = 3\nattr floorHeight = 3\nattr parapetHeight = 1.2\nattr buildingWidth = 12\nattr buildingDepth = 7\n\n@StartRule\nLot -->\n extrude(floorHeight * floors)\n Building\n\nBuilding -->\n comp(f) {\n side : Facade |\n top : RoofBase\n }\n\nFacade -->\n split(y) {\n floorHeight : GroundFloor |\n floorHeight : UpperFloor |\n floorHeight : UpperFloor\n }\n\nGroundFloor -->\n split(x) { ~3 : GroundBay }*\n\nGroundBay -->\n split(x) {\n 0.2 : Frame |\n ~2.6 : Storefront |\n 0.2 : Frame\n }\n\nStorefront -->\n color(\"#355C63\")\n\nUpperFloor -->\n split(x) { ~3 : UpperBay }*\n\nUpperBay -->\n split(x) {\n 0.25 : Wall |\n ~2.5 : Window |\n 0.25 : Wall\n }\n\nWall -->\n color(\"#D8C7AD\")\n\nWindow -->\n color(\"#6F9298\")\n\nFrame -->\n color(\"#4A4037\")\n\nRoofBase -->\n color(\"#574F48\")\n extrude(parapetHeight)\n Parapet\n\nParapet -->\n comp(f) {\n side : ParapetWall |\n top : RoofSurface\n }\n\nParapetWall -->\n color(\"#C5B39A\")\n\nRoofSurface -->\n color(\"#716960\")\n"
查看原始结果 JSON →91b406be-017d-458f-8055-6310c4303688
run evidence
缓坡地形的公园,面积2000平方米
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"attr area = 2000\nattr side = sqrt(area)\nattr rows = 4\nattr cols = 4\nattr treeChance = 0.32\nattr treeH = 4\n\n@StartRule\nstart Lot -->\n\talignScopeToAxes(y)\n\tprimitiveQuad(side, side)\n\tParkBase\n\nParkBase -->\n\troofShed(5, 0.15)\n\tcomp(f){top: Terrain | side: Slope}\n\nTerrain -->\n\tsplit(y){~0.36: Lawn | ~0.28: Pavilion | ~0.36: Lawn}\n\nLawn -->\n\tsplit(x){~0.10: Path | ~0.80: LawnInner | ~0.10: Path}\n\nLawnInner -->\n\tsplit(y){~0.10: Path | ~0.80: Grove | ~0.10: Path}\n\nGrove -->\n\tsplit(x){~0.06: Grass | ~0.88: Planting | ~0.06: Grass}\n\nPlanting -->\n\tsplit(x){ {~1: Col}* }\n\nCol -->\n\tsplit(y){ {~1: Cell}* }\n\nCell -->\n\tcase rand < treeChance : Tree\n\telse : Grass\n\nGrass -->\n\tcolor(0.45, 0.68, 0.33)\n\nTree -->\n\tcenter(xz)\n\ts(0.28, 2.1, 0.28)\n\tprimitiveCylinder\n\tcolor(0.36, 0.23, 0.13)\n\tCrown\n\nCrown -->\n\tt(0, 1.25, 0)\n\ts(2.2, 2.6, 2.2)\n\tprimitiveCone\n\tcolor(0.16, 0.36, 0.18)\n\nPath -->\n\tcase rand < 0.16 : Lighting\n\telse : color(0.43, 0.45, 0.47)\n\nLighting -->\n\tcenter(xz)\n\ts(0.12, 2.4, 0.12)\n\tprimitiveCylinder\n\tcolor(0.20, 0.22, 0.24)\n\tLampHead\n\nLampHead -->\n\tt(0, 2.25, 0)\n\ts(0.34, 0.34, 0.34)\n\tprimitiveSphere\n\tcolor(1.0, 0.86, 0.55)\n\nPavilion -->\n\tcenter(xz)\n\ts(4.8, 0.30, 4.8)\n\tprimitiveCube\n\tcolor(0.72, 0.69, 0.63)\n\tPavilionBody\n\nPavilionBody -->\n\tt(0, 0.30, 0)\n\tsplit(x){~0.20: Pillar | ~0.60: PavilionFloor | ~0.20: Pillar}\n\nPavilionFloor -->\n\ts(3.4, 0.16, 3.4)\n\tprimitiveCube\n\tcolor(0.58, 0.43, 0.31)\n\tPavilionRoof\n\nPavilionRoof -->\n\tt(0, 2.35, 0)\n\ts(5.6, 1.5, 5.6)\n\tprimitiveCone\n\tcolor(0.46, 0.18, 0.13)\n\nPillar -->\n\ts(0.36, 2.35, 0.36)\n\tprimitiveCube\n\tcolor(0.62, 0.24, 0.18)\n\nSlope -->\n\tcolor(0.55, 0.48, 0.36)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr parkArea = 2000\nattr terrainWidth = 44.72\nattr terrainDepth = parkArea / terrainWidth\nattr slopeAngle = 3\nattr soilDepth = 0.25\n\n@StartRule\nPark -->\n s(terrainWidth / 12, terrainDepth / 7, 1)\n Terrain\n\nTerrain -->\n rotateScope(0, slopeAngle)\n extrude(soilDepth)\n comp(f) { top : ParkSurface | side : Soil }\n\nParkSurface -->\n split(x) { 0.08 : Path | 0.84 : GreenArea | 0.08 : Path }\n\nGreenArea -->\n split(y) { 0.08 : Path | 0.84 : Lawn | 0.08 : Path }\n\nPath -->\n color(\"#C8B88A\")\n extrude(0.03)\n\nLawn -->\n color(\"#78A85B\")\n extrude(0.02)\n\nSoil -->\n color(\"#76563A\")\n"
查看原始结果 JSON →92a276ec-b2ea-4c02-8efc-1a7d84345d50
run evidence
高度15米、宽8米、深8米的办公楼,坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -17.021, -3.5]}; face_count=18; vertex_count=26; volume=924.9; surface_area=849.1
- nl2cga CE-vs-runtime deltas: bbox=3.5; face_count=2; surface_area=194.5; vertex_count=2; volume=119.9
- runtime: bbox={'max': [2.5, 0.0, 3.933], 'min': [-6.5, -17.309, -4.933]}; face_count=16; vertex_count=28; volume=805; surface_area=654.6
- runtime CE-vs-runtime deltas: bbox=17.31; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, roof, gable, 15, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 8.0\nattr depth = 8 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 8.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 15.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 8\nattr buildingDepth = 8\nattr buildingHeight = 15\nattr roofPitch = 30\n\n@StartRule\nLot -->\n resize(buildingWidth, 0, buildingDepth)\n extrude(buildingHeight)\n Mass\n\nMass -->\n comp(f) {\n side : Facade\n | top : Roof\n }\n\nFacade -->\n color(0.72, 0.72, 0.68)\n\nRoof -->\n roofGable(roofPitch)\n color(0.35, 0.18, 0.10)\n"
查看原始结果 JSON →964af524-d444-4d79-93ff-ab537d185007
run evidence
生成一个带双坡屋顶的六层灰色住宅建筑,立面有规则窗格
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -20.021, -3.5]}; face_count=812; vertex_count=750; volume=491.2; surface_area=1349
- nl2cga CE-vs-runtime deltas: bbox=18.5; face_count=796; surface_area=2214; vertex_count=722; volume=1.006e+04
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, gray, window, floor, floors, roof, gable\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floorHeight = 3\nattr floors = 6\nattr roofAngle = 30\nattr wallColor = \"#A6A6A6\"\nattr windowColor = \"#263746\"\n\n@StartRule\nLot -->\n extrude(floors * floorHeight)\n comp(f) { front : FrontFacade | side : SideFacade | back : FrontFacade | top : Roof }\n\nFrontFacade -->\n color(wallColor)\n split(y) {\n floorHeight : FloorFacade |\n floorHeight : FloorFacade |\n floorHeight : FloorFacade |\n floorHeight : FloorFacade |\n floorHeight : FloorFacade |\n floorHeight : FloorFacade\n }\n\nFloorFacade -->\n split(x) {\n 0.6 : WallPanel |\n 3 : WindowBay |\n 0.6 : WallPanel |\n 3 : WindowBay |\n 0.6 : WallPanel |\n 3 : WindowBay |\n ~1 : WallPanel\n }\n\nSideFacade -->\n color(wallColor)\n split(y) {\n floorHeight : SideFloor |\n floorHeight : SideFloor |\n floorHeight : SideFloor |\n floorHeight : SideFloor |\n floorHeight : SideFloor |\n floorHeight : SideFloor\n }\n\nSideFloor -->\n split(x) {\n 0.7 : WallPanel |\n 2.4 : WindowBay |\n 0.7 : WallPanel |\n 2.4 : WindowBay |\n ~1 : WallPanel\n }\n\nWallPanel -->\n color(wallColor)\n\nWindowBay -->\n color(windowColor)\n extrude(-0.08)\n\nRoof -->\n color(\"#666666\")\n roofGable(roofAngle)regel\n"
查看原始结果 JSON →972f7c20-78ff-43ed-9f38-1a3ef13f0c6f
run evidence
生成一颗苹果树
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"// 注意:植被/树木生成超出典型建筑 CGA 范围;以下为简化示意模型,非真实植物结构。\nattr trunkHeight = 2.2\nattr trunkRadius = 0.15\nattr canopySize = 2.4\nattr canopyHeight = 2.0\nattr appleCount = 5\nattr randSeed = 17\n\n@StartRule\nLot -->\n\tseed(randSeed)\n\talignScopeToAxes(y)\n\tTrunk\n\nTrunk -->\n\tsplit(y) {\n\t\t0.55 : TrunkBase |\n\t\t~1 : TrunkMid |\n\t\t0.45 : TrunkTop\n\t}\n\nTrunkBase -->\n\tprimitiveCylinder(8)\n\ts(trunkRadius * 1.15, trunkHeight * 0.55, trunkRadius * 1.15)\n\tcenter(xz)\n\tt(0, trunkHeight * 0.275, 0)\n\tcolor(0.32, 0.20, 0.11)\n\tNextTrunk\n\nTrunkMid -->\n\tprimitiveCylinder(8)\n\ts(trunkRadius * 1.0, trunkHeight * 0.45, trunkRadius * 1.0)\n\tcenter(xz)\n\tt(0, trunkHeight * 0.55 + trunkHeight * 0.225, 0)\n\tcolor(0.35, 0.22, 0.12)\n\tNextTrunk\n\nTrunkTop -->\n\tprimitiveCylinder(8)\n\ts(trunkRadius * 0.75, trunkHeight * 0.35, trunkRadius * 0.75)\n\tcenter(xz)\n\tt(0, trunkHeight * 0.85 + trunkHeight * 0.175, 0)\n\tcolor(0.38, 0.24, 0.13)\n\tCanopy\n\n// 简化示意:分段树干连接占位,实际应进入 branch_structure 组件;这里保持连续以可运行。\nNextTrunk -->\n\tcase scope.elevation > 0 : NIL\n\telse : NIL\n\nCanopy -->\n\tprimitiveSphere(10)\n\ts(canopySize, canopyHeight, canopySize)\n\tcenter(xz)\n\tt(0, trunkHeight + canopyHeight * 0.45, 0)\n\tcolor(0.25, 0.5, 0.2)\n\tsoftenNormals\n\t[Apples]\n\nApples -->\n\tsplit(y) {\n\t\t{~1 : AppleRing}*\n\t}\n\nAppleRing -->\n\tcase geometry.area > 0 && rand() < 0.75 :\n\t\tAppleAt(rand(-1.0, 1.0), rand(-1.0, 1.0))\n\telse :\n\t\tNIL\n\nAppleAt(angleU, angleV) -->\n\t// 在树冠局部归一化坐标内生成,再映射到 scope 尺寸,降低悬空/入干概率。\n\tset(localU, angleU)\n\tset(localV, angleV)\n\tt(\n\t\trand(-canopySize * 0.38, canopySize * 0.38),\n\t\trand(-canopyHeight * 0.05, canopyHeight * 0.42),\n\t\trand(-canopySize * 0.38, canopySize * 0.38)\n\t)\n\tprimitiveSphere(6)\n\ts(0.12, 0.13, 0.12)\n\tcolor(0.85, 0.1, 0.1)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr trunkHeight = 3.2\nattr trunkRadius = 0.22\nattr crownRadius = 2.2\nattr crownHeight = 2.4\nattr appleRadius = 0.16\n\n@StartRule\nAppleTree -->\n center(xz)\n Tree\n\nTree -->\n Trunk\n Crown\n Apples\n\nTrunk -->\n primitiveCylinder\n s(trunkRadius, trunkHeight, trunkRadius)\n color(\"#6B3E20\")\n\nCrown -->\n t(0, trunkHeight, 0)\n primitiveSphere\n s(crownRadius, crownHeight, crownRadius)\n color(\"#2F7D32\")\n\nApples -->\n t(0.9, 4.25, 0.45)\n primitiveSphere\n s(appleRadius, appleRadius, appleRadius)\n color(\"#C62828\")\n Apples2\n\nApples2 -->\n t(-1.15, 4.05, 0.25)\n primitiveSphere\n s(appleRadius, appleRadius, appleRadius)\n color(\"#D32F2F\")\n Apples3\n\nApples3 -->\n t(0.35, 4.7, -0.85)\n primitiveSphere\n s(appleRadius, appleRadius, appleRadius)\n color(\"#B71C1C\")\n Apples4\n\nApples4 -->\n t(-0.55, 4.65, 0.95)\n primitiveSphere\n s(appleRadius, appleRadius, appleRadius)\n color(\"#E53935\")\n Apples5\n\nApples5 -->\n t(1.25, 3.75, -0.55)\n primitiveSphere\n s(appleRadius, appleRadius, appleRadius)\n color(\"#C62828\")\n Apples6\n\nApples6 -->\n t(-0.2, 3.8, -1.2)\n primitiveSphere\n s(appleRadius, appleRadius, appleRadius)\n color(\"#D32F2F\")\n"
查看原始结果 JSON →998c069f-7304-4667-b3a1-4e535436dfa5
run evidence
请建模一个住宅别墅,尺度约18.00米长、12.00米宽、4.50米高,使用浅灰清水混凝土,采用平屋顶,深檐遮阳,重点表现人字坡屋顶和落地窗;深檐遮阳变体1。
state: RUNNING
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# semantic_tags: residential, concrete, gray, window, roof, flat, gable, 18.00, 12.00, 4.50, 1\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 18.0\nattr depth = 18 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 4.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 1\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(y) { ~4.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr length = 18.0\nattr width = 12.0\nattr height = 4.5\nattr bodyHeight = 3.6\nattr roofRise = 0.9\nattr overhang = 1.2\nattr windowInset = 0.08\n\n@StartRule\nLot -->\n s(length, width, 1)\n House\n\nHouse -->\n color(0.72, 0.74, 0.75)\n extrude(bodyHeight)\n ConcreteBody\n\nConcreteBody -->\n comp(f) {\n front : FrontFacade\n back : BackFacade\n left : SideFacade\n right : SideFacade\n top : FlatRoof\n all : ConcreteSurface\n }\n\nConcreteSurface -->\n color(0.72, 0.74, 0.75)\n setupProjection(0, scope.xy, 1, 1)\n texture(\"concrete_light_gray.jpg\")\n\nFrontFacade -->\n split(v, unitSpace, 2) {\n ~1 : ConcreteSurface\n 5 : WindowBay\n ~1 : ConcreteSurface\n 5 : WindowBay\n ~1 : ConcreteSurface\n }\n\nBackFacade -->\n split(v, unitSpace, 2) {\n ~1 : ConcreteSurface\n 4 : WindowBay\n ~1 : ConcreteSurface\n 4 : WindowBay\n ~1 : ConcreteSurface\n }\n\nSideFacade -->\n split(v, unitSpace, 3) {\n ~1 : ConcreteSurface\n 3 : WindowBay\n ~1 : ConcreteSurface\n }\n\nWindowBay -->\n color(0.08, 0.12, 0.15)\n s(0.92, 0.82, 1)\n i(windowInset)\n Glass\n\nGlass -->\n color(0.12, 0.20, 0.24)\n material.opacity(0.35)\n setupProjection(0, scope.xy, 1, 1)\n texture(\"glass_reflective.jpg\")\n\nFlatRoof -->\n color(0.62, 0.64, 0.66)\n roofGable(18)\n RoofFinish\n\nRoofFinish -->\n color(0.62, 0.64, 0.66)\n setupProjection(0, scope.xy, 1, 1)\n texture(\"concrete_light_gray.jpg\")\n DeepEave\n\nDeepEave -->\n offset(-overhang)\n color(0.48, 0.50, 0.52)\n extrude(0.18)\n EaveSurface\n\nEaveSurface -->\n color(0.48, 0.50, 0.52)\n setupProjection(0, scope.xy, 1, 1)\n texture(\"concrete_shadow.jpg\")\n"
查看原始结果 JSON →9b9261a2-cc91-4a82-85ee-1e7671730941
run evidence
缓坡地形的公园,面积2000平方米
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [22.361, 3.8, 22.361], 'min': [-22.361, -1.6, -22.361]}; face_count=192; vertex_count=176; volume=292.8; surface_area=2949
- runtime CE-vs-runtime deltas: bbox=5; face_count=1.152e+04; vertex_count=5760
// student_ce.cga
"attr area = 2000\nattr side = sqrt(area)\nattr slopeHeight = 2.0\nattr pathWidth = 2.5\nattr plazaSize = 8\nattr treeHeight = 4\nattr grassColor = \"#5a8f4a\"\nattr pathColor = \"#b8a88a\"\n\n@StartRule\nLot -->\n\talignScopeToAxes(y)\n\tprimitiveQuad(side, side)\n\tTerrain\n\nTerrain -->\n\tsplit(z){\n\t\t~0.25: Band0 |\n\t\t~0.25: Band1 |\n\t\t~0.25: Band2 |\n\t\t~0.25: Band3\n\t}\n\nBand0 --> t(0, 0, 0) BandGround\nBand1 --> t(0, slopeHeight * 0.33, 0) BandGround\nBand2 --> t(0, slopeHeight * 0.66, 0) BandGround\nBand3 --> t(0, slopeHeight, 0) BandGround\n\nBandGround -->\n\tsplit(x){\n\t\t~1: Lawn |\n\t\tpathWidth: Path |\n\t\t~1: LawnWithTrees |\n\t\tpathWidth: Path |\n\t\t~1: Lawn\n\t}\n\nLawn -->\n\textrude(0.2)\n\tcolor(grassColor)\n\nLawnWithTrees -->\n\textrude(0.2)\n\tcolor(grassColor)\n\tsplit(x){ ~1: scatterTrees }\n\nscatterTrees -->\n\tscatter(surface, 6, uniform) { Tree }\n\nTree -->\n\tt(0, 0, 0)\n\tprimitiveCylinder(0.15, treeHeight * 0.4)\n\tCrown\n\nCrown -->\n\tt(0, treeHeight * 0.4, 0)\n\tprimitiveSphere(1.5)\n\tcolor(0.2, 0.5, 0.25)\n\nPath -->\n\textrude(0.25)\n\tcolor(pathColor)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr parkArea = 2000\nattr parkWidth = 40\nattr parkDepth = 50\nattr terrainBaseHeight = 0.25\nattr slopeRise = 3\n\n@StartRule\nPark -->\n alignScopeToGeometry(yUp, 0)\n s(parkWidth / 12, 1, parkDepth / 7)\n split(z) {\n 20%: Terrace01\n | 20%: Terrace02\n | 20%: Terrace03\n | 20%: Terrace04\n | 20%: Terrace05\n }\n\nTerrace01 -->\n color(\"#6E9F45\")\n extrude(terrainBaseHeight)\n\nTerrace02 -->\n t(0, slopeRise * 0.2, 0)\n color(\"#75A94A\")\n extrude(terrainBaseHeight + slopeRise * 0.2)\n\nTerrace03 -->\n t(0, slopeRise * 0.4, 0)\n color(\"#7CAF4D\")\n extrude(terrainBaseHeight + slopeRise * 0.4)\n\nTerrace04 -->\n t(0, slopeRise * 0.6, 0)\n color(\"#83B550\")\n extrude(terrainBaseHeight + slopeRise * 0.6)\n\nTerrace05 -->\n t(0, slopeRise * 0.8, 0)\n color(\"#8ABB53\")\n extrude(terrainBaseHeight + slopeRise * 0.8)\n"
查看原始结果 JSON →9e0dbd88-3632-4270-837e-23083f8d0619
run evidence
高度10米且高度15米的建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr lowBuildingHeight = 10\nattr highBuildingHeight = 15\n\n@StartRule\nLot -->\n split(x) { lotWidth / 2: LowBuilding | lotWidth / 2: HighBuilding }\n\nLowBuilding -->\n extrude(lowBuildingHeight) LowMass\n\nHighBuilding -->\n extrude(highBuildingHeight) HighMass\n\nLowMass -->\n comp(f) { side: LowFacade | top: LowRoof | bottom: LowBase }\n\nHighMass -->\n comp(f) { side: HighFacade | top: HighRoof | bottom: HighBase }\n\nLowFacade -->\n color(\"#B8C0CC\")\n\nHighFacade -->\n color(\"#D9B382\")\n\nLowRoof -->\n color(\"#6B7280\")\n\nHighRoof -->\n color(\"#8B5E3C\")\n\nLowBase -->\n color(\"#858585\")\n\nHighBase -->\n color(\"#858585\")\n"
查看原始结果 JSON →a1d57338-dd45-4928-bd28-c068b1862443
run evidence
三层沿街商铺,平屋顶带女儿墙
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -3.5]}; face_count=370; vertex_count=740; volume=840; surface_area=464
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=360; surface_area=1186; vertex_count=720; volume=5460
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -10.5, -16.5]}; face_count=10; vertex_count=20; volume=6300; surface_area=1650
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: shop, commercial, floor, floors, roof, flat\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floorHeight = 3\nattr floors = 3\nattr parapetHeight = 1\nattr totalHeight = floorHeight * floors + parapetHeight\n\n@StartRule\nStartRule -->\n extrude(totalHeight)\n comp(f) { side : Facade | top : FlatRoof }\n\nFacade -->\n split(y) {\n floorHeight : Storey\n | floorHeight : Storey\n | floorHeight : Storey\n | parapetHeight : Parapet\n }\n\nStorey -->\n split(x) {\n 2 : ShopBay\n | 2 : ShopBay\n | 2 : ShopBay\n | 2 : ShopBay\n | 2 : ShopBay\n | 2 : ShopBay\n }\n\nShopBay -->\n split(y) {\n 0.8 : WallBase\n | 1.7 : Storefront\n | 0.5 : SignBand\n }\n\nWallBase -->\n color(\"#B8A28C\")\n\nStorefront -->\n color(\"#496B78\")\n\nSignBand -->\n color(\"#D9B45B\")\n\nParapet -->\n color(\"#A98F78\")\n\nFlatRoof -->\n color(\"#77706A\")\n"
查看原始结果 JSON →a23dd521-c7b3-4ab8-89fc-8e41bafc76ac
run evidence
一条带人行道和路灯的城市街道街区
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, sidewalk, light\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr blockWidth = 12\nattr blockDepth = 7\nattr sidewalkWidth = 1.4\nattr roadWidth = blockDepth - sidewalkWidth * 2\nattr curbHeight = 0.15\nattr roadHeight = 0.08\nattr lampHeight = 3.0\nattr lampWidth = 0.12\nattr lampSpacing = 2.0\n\n@StartRule\nLot -->\n split(y) {\n sidewalkWidth: Sidewalk |\n ~: Road |\n sidewalkWidth: Sidewalk\n }\n\nSidewalk -->\n split(x) {\n lampSpacing: LampBay |\n lampSpacing: LampBay |\n lampSpacing: LampBay |\n lampSpacing: LampBay |\n lampSpacing: LampBay |\n ~: LampBay\n }\n\nLampBay -->\n split(x) {\n lampWidth: LampBase |\n ~: Walkway\n }\n\nLampBase -->\n split(y) {\n lampWidth: LampPost |\n ~: Walkway\n }\n\nWalkway -->\n extrude(curbHeight)\n color(0.62, 0.62, 0.58)\n\nLampPost -->\n extrude(lampHeight)\n color(0.08, 0.08, 0.07)\n\nRoad -->\n extrude(roadHeight)\n color(0.12, 0.12, 0.12)\n"
查看原始结果 JSON →a610e6c6-5170-4416-9f37-83a7de317b88
run evidence
玻璃幕墙立面,宽30米高20米,3米分格
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [-3.5, 0.0, 3.5], 'min': [-6.0, -20.0, 2.47]}; face_count=108; vertex_count=104; volume=91.79; surface_area=195.6
- nl2cga CE-vs-runtime deltas: bbox=28.97; face_count=98; surface_area=3104; vertex_count=84; volume=1.791e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -20.0, -26.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3300
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: glass, 30, 20, 3\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 30.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 20.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 5\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"glass.jpg\") projectUV(0) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr facadeWidth = 30\nattr facadeHeight = 20\nattr facadeDepth = 7\nattr module = 3\nattr frameWidth = 0.08\n\n@StartRule\nLot -->\n s(facadeWidth / 12, 1, 1)\n extrude(facadeHeight)\n Building\n\nBuilding -->\n comp(f) {\n front : CurtainWall\n | side : SideWall\n | back : SideWall\n | top : Roof\n | bottom : Ground\n }\n\nCurtainWall -->\n split(y) {\n 3 : PanelRow\n | 3 : PanelRow\n | 3 : PanelRow\n | 3 : PanelRow\n | 3 : PanelRow\n | 3 : PanelRow\n | 2 : PanelRow\n }\n\nPanelRow -->\n split(x) {\n 0.08 : Mullion\n | 2.84 : GlassCell\n | 0.08 : Mullion\n | 0.08 : Mullion\n | 2.84 : GlassCell\n | 0.08 : Mullion\n | 0.08 : Mullion\n | 2.84 : GlassCell\n | 0.08 : Mullion\n | 0.08 : Mullion\n | 2.84 : GlassCell\n | 0.08 : Mullion\n | 0.08 : Mullion\n | 2.84 : GlassCell\n | 0.08 : Mullion\n | 0.08 : Mullion\n | 2.84 : GlassCell\n | 0.08 : Mullion\n | 0.08 : Mullion\n | 2.84 : GlassCell\n | 0.08 : Mullion\n | 0.08 : Mullion\n | 2.84 : GlassCell\n | 0.08 : Mullion\n | 0.08 : Mullion\n | 2.84 : GlassCell\n | 0.08 : Mullion\n | 0.08 : Mullion\n | 2.84 : GlassCell\n | 0.08 : Mullion\n }\n\nGlassCell -->\n color(0.18, 0.52, 0.72)\n extrude(0.03)\n\nMullion -->\n color(0.05, 0.07, 0.09)\n\nSideWall -->\n color(0.16, 0.18, 0.2)\n\nRoof -->\n color(0.12, 0.14, 0.16)\n\nGround -->\n color(0.1, 0.1, 0.1)\n"
查看原始结果 JSON →a6831c33-cde8-43ea-aeb4-cc7cd242e33d
run evidence
生成跨度24米、长60米、高8米的工业厂房
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [-4.0, 0.0, 3.5], 'min': [-6.0, -8.0, 2.5]}; face_count=12; vertex_count=8; volume=16; surface_area=52
- nl2cga CE-vs-runtime deltas: bbox=58; face_count=2; surface_area=2732; vertex_count=12; volume=1.15e+04
- runtime: bbox={'max': [54.0, 0.0, 3.5], 'min': [-6.0, -8.0, -20.5]}; face_count=10; vertex_count=20; volume=1.152e+04; surface_area=2784
- runtime CE-vs-runtime deltas: bbox=56.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: factory, industrial, 24, 60, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 60.0\nattr depth = 60 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 24.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 8.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 24\nattr buildingDepth = 60\nattr buildingHeight = 8\nattr sourceWidth = 12\nattr sourceDepth = 7\n\n@StartRule\nLot --> s(buildingWidth / sourceWidth, buildingDepth / sourceDepth, 1) extrude(buildingHeight)\n"
查看原始结果 JSON →aac922bd-233c-4320-a691-7eb418c2ea92
run evidence
请建模一个住宅别墅,尺度约18.70米长、12.40米宽、4.75米高,使用浅灰清水混凝土,采用双坡屋顶,深檐遮阳,重点表现双坡屋顶和连续阳台;连续采光带变体1。
state: RUNNING
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# semantic_tags: residential, concrete, gray, balcony, roof, gable, 18.70, 12.40, 4.75, 1\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 18.7\nattr depth = 18.7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.4\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 4.75\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 1\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(y) { ~4.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingLength = 18.70\nattr buildingWidth = 12.40\nattr buildingHeight = 4.75\nattr roofAngle = 28\nattr eaveDepth = 1.20\nattr balconyDepth = 2.20\nattr balconyHeight = 0.22\nattr lightBandHeight = 0.65\n\n@StartRule\nLot -->\n alignScopeToAxes(y)\n s(buildingLength, buildingWidth, 1)\n Building\n\nBuilding -->\n extrude(buildingHeight)\n comp(f) {\n front : FrontFacade\n side : SideFacade\n back : BackFacade\n top : Roof\n bottom : Ground\n }\n\nFrontFacade -->\n split(y) {\n 0.55 : ConcreteWall\n lightBandHeight : ContinuousLightBand\n ~1 : ConcreteWall\n 0.55 : ConcreteWall\n }\n\nSideFacade -->\n split(y) {\n 0.55 : ConcreteWall\n lightBandHeight : ContinuousLightBand\n ~1 : ConcreteWall\n 0.55 : ConcreteWall\n }\n\nBackFacade -->\n split(y) {\n 0.55 : ConcreteWall\n lightBandHeight : ContinuousLightBand\n ~1 : ConcreteWall\n 0.55 : ConcreteWall\n }\n\nConcreteWall -->\n color(0.72, 0.74, 0.75)\n set(material.name, \"浅灰清水混凝土\")\n\nContinuousLightBand -->\n color(0.12, 0.18, 0.20)\n set(material.name, \"连续采光带玻璃\")\n\nRoof -->\n roofGable(roofAngle)\n offset(-eaveDepth)\n color(0.28, 0.30, 0.31)\n set(material.name, \"深灰金属屋面\")\n\nGround -->\n color(0.35, 0.35, 0.33)\n\nBuilding -->\n extrude(buildingHeight)\n comp(f) {\n front : FrontWithBalcony\n side : SideFacade\n back : BackFacade\n top : Roof\n bottom : Ground\n }\n\nFrontWithBalcony -->\n split(y) {\n 0.55 : ConcreteWall\n lightBandHeight : ContinuousLightBand\n ~1 : BalconyLevel\n 0.55 : ConcreteWall\n }\n\nBalconyLevel -->\n offset(-balconyDepth)\n extrude(balconyHeight)\n comp(f) {\n front : BalconySlab\n side : BalconySlab\n back : BalconySlab\n top : BalconySlab\n bottom : BalconySlab\n }\n\nBalconySlab -->\n color(0.68, 0.70, 0.71)\n set(material.name, \"浅灰清水混凝土阳台\")\n\nBalconyLevel -->\n split(x) {\n 0.35 : BalconySlab\n ~1 : BalconyGlazing\n 0.35 : BalconySlab\n }\n\nBalconyGlazing -->\n color(0.10, 0.16, 0.18)\n set(material.name, \"连续阳台玻璃栏板\")\n"
查看原始结果 JSON →ad2834e6-4df0-43ff-893a-6ec181cc4bcb
run evidence
三层沿街商铺,平屋顶带女儿墙
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.7, -3.5]}; face_count=36; vertex_count=72; volume=898.8; surface_area=574.6
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=26; surface_area=1075; vertex_count=52; volume=5401
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -10.5, -16.5]}; face_count=10; vertex_count=20; volume=6300; surface_area=1650
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: shop, commercial, floor, floors, roof, flat\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floorHeight = 3.2\nattr parapetHeight = 1.1\nattr buildingHeight = floorHeight * 3 + parapetHeight\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n Mass\n\nMass -->\n comp(f) {\n front: FrontFacade\n | back: SideFacade\n | left: SideFacade\n | right: SideFacade\n | top: Roof\n | bottom: Ground\n }\n\nFrontFacade -->\n split(y) {\n floorHeight: Storefront\n | floorHeight: UpperFacade\n | floorHeight: UpperFacade\n | parapetHeight: Parapet\n }\n\nSideFacade -->\n split(y) {\n floorHeight: StorefrontSide\n | floorHeight: UpperFacade\n | floorHeight: UpperFacade\n | parapetHeight: Parapet\n }\n\nStorefront -->\n color(\"#B8794A\")\n\nStorefrontSide -->\n color(\"#9C633E\")\n\nUpperFacade -->\n color(\"#D7C6A5\")\n\nParapet -->\n color(\"#C2AD8C\")\n\nRoof -->\n color(\"#77736A\")\n\nGround -->\n color(\"#5A5A55\")\n"
查看原始结果 JSON →ad57f93b-3a0f-4636-a2aa-bc628c0d4571
run evidence
请建模一个住宅别墅,尺度约21.50米长、14.00米宽、5.75米高,使用浅灰清水混凝土,采用折板屋顶,深檐遮阳,重点表现内凹庭院;内凹入口变体1。
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# semantic_tags: entrance, residential, concrete, gray, roof, 21.50, 14.00, 5.75, 1\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 21.5\nattr depth = 21.5 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 14.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 5.75\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 1\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotLength = 21.5\nattr lotWidth = 14.0\nattr buildingHeight = 5.75\nattr courtyardLength = 7.5\nattr eaveDepth = 1.2\nattr roofAngle = 25\nattr defaultDepth = 6.0\n\n@StartRule\nLot -->\n color(\"#B8B8B8\")\n split(x) {\n 7.0 : CourtyardWing\n courtyardLength : NIL\n ~1 : CourtyardWing\n }\n\nCourtyardWing -->\n split(y) {\n ~5.5 : ConcreteVolume\n ~3.0 : CourtyardEdge\n ~5.5 : ConcreteVolume\n }\n\nCourtyardEdge -->\n extrude(buildingHeight * 0.72)\n color(\"#B8B8B8\")\n roofGable(roofAngle, eaveDepth)\n\nConcreteVolume -->\n extrude(buildingHeight)\n color(\"#B8B8B8\")\n roofGable(roofAngle, eaveDepth)\n\nNIL -->\n NIL\n"
查看原始结果 JSON →ae2c3483-e4b7-4acf-a98a-ea013737618f
run evidence
一个抽象的现代雕塑产品造型
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"version \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 8\nattr depth = 4.8\nattr height = 5.5\nattr plinthHeight = 0.35\nattr mainWidth = 1.35\nattr mainDepth = 0.8\nattr bladeWidth = 4.8\nattr bladeDepth = 0.42\nattr bladeElevation = 3.6\nattr bladeThickness = 0.28\nattr pillarWidth = 0.5\nattr pillarDepth = 0.5\nattr pillarHeight = 2.4\n\n@StartRule\nStart -->\n Plinth\n MainForm\n Blade\n Pillar\n\nPlinth -->\n s(width / 12, 1, depth / 7)\n center(xz)\n extrude(plinthHeight)\n color(\"#252A30\")\n\nMainForm -->\n s(mainWidth / 12, 1, mainDepth / 7)\n center(xz)\n extrude(height)\n rotate(0, 0, -12)\n color(\"#D7D9D6\")\n\nBlade -->\n s(bladeWidth / 12, 1, bladeDepth / 7)\n center(xz)\n t(0, bladeElevation, 0)\n extrude(bladeThickness)\n rotate(0, 0, 18)\n color(\"#A7B7BC\")\n\nPillar -->\n s(pillarWidth / 12, 1, pillarDepth / 7)\n center(xz)\n t(2.1, 0, 0)\n extrude(pillarHeight)\n rotate(0, 0, 8)\n color(\"#59666B\")\n"
查看原始结果 JSON →ae4dbfb6-7f48-4537-93b9-7c2bc3bf7b15
run evidence
请建模一个住宅别墅,尺度约18.70米长、12.40米宽、4.75米高,使用浅灰清水混凝土,采用双坡屋顶,深檐遮阳,重点表现双坡屋顶和连续阳台;连续采光带变体1。
state: RUNNING
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# semantic_tags: residential, concrete, gray, balcony, roof, gable, 18.70, 12.40, 4.75, 1\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 18.7\nattr depth = 18.7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.4\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 4.75\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 1\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(y) { ~4.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingLength = 18.70\nattr buildingWidth = 12.40\nattr buildingHeight = 4.75\nattr roofAngle = 30\nattr eaveDepth = 1.20\nattr balconyDepth = 2.00\nattr balconySlabHeight = 0.28\nattr balconyWidth = 16.50\nattr windowBandHeight = 1.80\nattr wallThickness = 0.25\n\n@StartRule\nLot -->\n alignScopeToGeometry(yUp)\n scale(buildingLength, 1, buildingWidth)\n Building\n\nBuilding -->\n extrude(buildingHeight)\n comp(f) { front : FacadeFront | side : FacadeSide | back : FacadeBack | right : FacadeSide }\n comp(o) { top : Roof | bottom : Ground }\n\nGround -->\n color(\"#8A8A86\")\n\nRoof -->\n roofGable(roofAngle)\n offset(-eaveDepth)\n color(\"#6E6E69\")\n comp(f) { roof : RoofSurface }\n\nRoofSurface -->\n color(\"#777771\")\n\nFacadeFront -->\n color(\"#C8C9C6\")\n comp(v) { 0.18 : WallSegment | 0.64 : BalconyZone | 0.18 : WallSegment }\n\nWallSegment -->\n split(y) { 0.12 : WallBase | 0.70 : WindowBand | 0.18 : WallTop }\n\nWallBase -->\n color(\"#BFC0BD\")\n\nWallTop -->\n color(\"#C8C9C6\")\n\nWindowBand -->\n split(x) { 0.08 : ConcretePier | 0.84 : ContinuousGlazingBand | 0.08 : ConcretePier }\n\nContinuousGlazingBand -->\n color(\"#7C9398\")\n set(material.reflectivity, 0.35)\n set(material.transparency, 0.18)\n\nBalconyZone -->\n split(y) { 0.12 : BalconyRailing | 0.76 : BalconyOpening | 0.12 : BalconyBeam }\n\nBalconyOpening -->\n color(\"#82979A\")\n set(material.transparency, 0.22)\n\nBalconyRailing -->\n color(\"#AEB0AD\")\n extrude(0.08)\n\nBalconyBeam -->\n color(\"#B8B9B6\")\n\nFacadeSide -->\n color(\"#C8C9C6\")\n split(y) { 0.12 : WallBase | 0.70 : SideWindows | 0.18 : WallTop }\n\nSideWindows -->\n split(x) { 0.20 : ConcretePier | 0.60 : SideGlazing | 0.20 : ConcretePier }\n\nSideGlazing -->\n color(\"#7C9398\")\n set(material.transparency, 0.18)\n\nFacadeBack -->\n color(\"#C8C9C6\")\n split(y) { 0.12 : WallBase | 0.70 : RearGlazing | 0.18 : WallTop }\n\nRearGlazing -->\n split(x) { 0.12 : ConcretePier | 0.76 : ContinuousGlazingBand | 0.12 : ConcretePier }\n\nConcretePier -->\n color(\"#B7B8B5\")\n\nBalcony -->\n extrude(balconySlabHeight)\n color(\"#A9AAA7\")\n\nBalconySlab -->\n color(\"#A9AAA7\")\n\nBalconyRailingElement -->\n extrude(1.05)\n color(\"#B7B8B5\")\n\nGround -->\n color(\"#8A8A86\")\n"
查看原始结果 JSON →ae7fb48b-2bc7-41e9-8eb2-0e1eb3a6e703
run evidence
砖墙立面带阳台,四层
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -14.0, -16.5]}; face_count=10; vertex_count=20; volume=8400; surface_area=2000
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: brick, balcony, floor, floors\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 14.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"brick.jpg\") projectUV(0) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floorHeight = 3.2\nattr floorCount = 4\nattr buildingHeight = floorHeight * floorCount\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n comp(f) {\n front: FrontFacade\n | side: SideFacade\n | back: BrickWall\n | bottom: Foundation\n }\n\nFrontFacade -->\n split(y) {\n floorHeight: Floor\n | floorHeight: Floor\n | floorHeight: Floor\n | floorHeight: Floor\n }\n\nFloor -->\n split(x) {\n 2: BrickWall\n | 8: BalconyBay\n | 2: BrickWall\n }\n\nBalconyBay -->\n split(y) {\n 1.0: BrickWall\n | 0.22: BalconyDeck\n | 0.18: BalconyRailing\n | ~1.8: BalconyOpening\n }\n\nBalconyDeck -->\n extrude(-1.2)\n color(\"#8B5A42\")\n\nBalconyRailing -->\n extrude(-1.2)\n color(\"#3A3A36\")\n\nBalconyOpening -->\n color(\"#7A9EAE\")\n extrude(-0.08)\n\nSideFacade -->\n BrickWall\n\nBrickWall -->\n color(\"#A64B3B\")\n repeat(y) {\n 0.22: BrickCourse\n }\n\nBrickCourse -->\n repeat(x) {\n 0.6: BrickUnit\n }\n\nBrickUnit -->\n color(\"#A64B3B\")\n\nFoundation -->\n color(\"#5A514A\")\n"
查看原始结果 JSON →ae8379a6-a29d-4d3f-84c0-2c211485e936
run evidence
十字路口街区,路宽12米
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -0.15, -3.5]}; face_count=12; vertex_count=24; volume=12.6; surface_area=173.7
- nl2cga CE-vs-runtime deltas: bbox=29.85; face_count=2; surface_area=2706; vertex_count=4; volume=1.079e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -8.5]}; face_count=10; vertex_count=20; volume=1.08e+04; surface_area=2880
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr roadWidth = 12\nattr lotWidth = 12\nattr lotDepth = 7\nattr roadThickness = 0.15\nattr curbHeight = 0.15\n\n@StartRule\nLot -->\n color(0.16, 0.16, 0.16)\n extrude(roadThickness)\n Intersection\n\nIntersection -->\n comp(f) {\n top: RoadSurface\n | side: Curb\n | bottom: GroundContact\n }\n\nRoadSurface -->\n color(0.16, 0.16, 0.16)\n\nCurb -->\n color(0.28, 0.28, 0.28)\n\nGroundContact -->\n color(0.08, 0.08, 0.08)\n"
查看原始结果 JSON →b01e398e-16aa-40ca-8091-359062c17776
run evidence
缓坡地形的公园,面积2000平方米
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"attr area = 2000\nattr side = 44.72\nattr plazaRatio = 0.08\nattr pathRatio = 0.06\nattr treeCount = 55\nattr grassColor = \"#5a8f4a\"\nattr pathColor = \"#b8a88a\"\nattr waterColor = \"#4a7fa0\"\nattr slopeMin = 0.5\nattr slopeMax = 1.8\n\n@StartRule\nLot -->\n\talignScopeToAxes(y)\n\tprimitiveQuad(side, side)\n\tTerrain\n\nTerrain -->\n\tsplit(z){\n\t\t~0.20: SlopeBand0 |\n\t\t~0.20: SlopeBand1 |\n\t\t~0.20: SlopeBand2 |\n\t\t~0.20: SlopeBand3 |\n\t\t~0.20: SlopeBand4\n\t}\n\nSlopeBand0 --> t(0, slopeMin, 0) Ground\nSlopeBand1 --> t(0, slopeMin + (slopeMax - slopeMin) * 0.25, 0) Ground\nSlopeBand2 --> t(0, slopeMin + (slopeMax - slopeMin) * 0.50, 0) Ground\nSlopeBand3 --> t(0, slopeMin + (slopeMax - slopeMin) * 0.75, 0) Ground\nSlopeBand4 --> t(0, slopeMax, 0) Ground\n\nGround -->\n\tsplit(x){~plazaRatio: Plaza | ~pathRatio: Path | ~1: Lawn}\n\nPlaza -->\n\textrude(0.05)\n\tcolor(pathColor)\n\nPath -->\n\textrude(0.06)\n\tcolor(pathColor)\n\nLawn -->\n\tcolor(grassColor)\n\textrude(0.04)\n\tcomp(f){top: ScatterTrees | side: NIL}\n\nScatterTrees -->\n\tscatter(treeCount, \"uniform\", 0) {\n\t\tTree |\n\t\t~1: color(grassColor)\n\t}\n\nTree -->\n\tt(0, 0.04, 0)\n\tTrunk\n\nTrunk -->\n\ts(0.32, 2.4, 0.32)\n\tt(0, 1.2, 0)\n\tprimitiveCylinder\n\tcolor(\"#6b4a2f\")\n\tCrown\n\nCrown -->\n\tt(0, 2.0, 0)\n\ts(2.1, 1.7, 2.1)\n\tprimitiveSphere\n\tcolor(\"#3f6f35\")"
// teacher_ce.cga
"version \"2024.1\"\n\nattr parkArea = 2000\nattr parkWidth = 58.55\nattr parkDepth = 34.15\nattr slopeAngle = 2.5\nattr terrainThickness = 0.6\n\n@StartRule\nPark -->\n s(parkWidth / 12, parkDepth / 7, 1)\n roofShed(slopeAngle) Terrain\n\nTerrain -->\n color(0.28, 0.58, 0.20)\n comp(f) {\n top: GrassSurface\n side: TerrainEdge\n }\n\nGrassSurface -->\n color(0.32, 0.64, 0.24)\n\nTerrainEdge -->\n color(0.22, 0.45, 0.14)\n extrude(terrainThickness)\n"
查看原始结果 JSON →b3279683-c9dd-401b-8e37-ba413d22c29c
run evidence
生成一个高10米、宽12米、进深7米的灰色平屋顶建筑
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -3.5]}; face_count=12; vertex_count=8; volume=840; surface_area=548
- nl2cga CE-vs-runtime deltas: bbox=5; face_count=2; surface_area=84; vertex_count=12; volume=0
- runtime: bbox={'max': [1.0, 0.0, 3.5], 'min': [-6.0, -10.0, -8.5]}; face_count=10; vertex_count=20; volume=840; surface_area=464
- runtime CE-vs-runtime deltas: bbox=10; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, gray, roof, flat, 10, 12, 7\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 7.0\nattr depth = 7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr height = 10\nattr buildingColor = \"#808080\"\n\n@StartRule\nBuilding -->\n extrude(height)\n color(buildingColor)\n"
查看原始结果 JSON →b6fc2451-e978-409d-940f-505366b5671a
run evidence
高度10米且高度15米的建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidthA = 6\nattr buildingWidthB = 6\nattr buildingDepth = 7\nattr buildingHeightA = 10\nattr buildingHeightB = 15\n\n@StartRule\nLot -->\n split(x) {\n buildingWidthA: BuildingA\n | buildingWidthB: BuildingB\n }\n\nBuildingA -->\n extrude(buildingHeightA)\n MassA\n\nBuildingB -->\n extrude(buildingHeightB)\n MassB\n\nMassA -->\n color(\"#B8C4D0\")\n\nMassB -->\n color(\"#D59A6A\")\n"
查看原始结果 JSON →b7ef46d1-4e9d-46a0-b1f4-1eeeec049444
run evidence
生成50米x50米的景观绿地,中间有圆形花坛
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [-1.833, 0.0, 3.5], 'min': [-6.0, -0.05, 2.5]}; face_count=12; vertex_count=8; volume=0.2084; surface_area=8.851
- nl2cga CE-vs-runtime deltas: bbox=49; face_count=2; surface_area=8491; vertex_count=12; volume=7.5e+04
- runtime: bbox={'max': [44.0, 0.0, 3.5], 'min': [-6.0, -30.0, -46.5]}; face_count=10; vertex_count=20; volume=7.5e+04; surface_area=8500
- runtime CE-vs-runtime deltas: bbox=46.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: park, green, cylinder, 50\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 50.0\nattr depth = 50 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 50.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.3, 0.65, 0.35) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.3, 0.65, 0.35)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\n@StartRule\nLot -->\n s(50 / 12, 50 / 7, 1)\n Landscape\n\nLandscape -->\n color(\"#6FAF45\")\n Grass\n\nGrass -->\n comp(f) { side : Border | top : GreenSurface }\n\nGreenSurface -->\n FlowerBedArea\n\nFlowerBedArea -->\n split(x) { 21.5 : GreenLeft | 7 : FlowerBed | 21.5 : GreenRight }\n\nGreenLeft -->\n split(y) { 21.5 : GreenTop | 7 : GreenBottom | 21.5 : GreenTop }\n\nGreenRight -->\n split(y) { 21.5 : GreenTop | 7 : GreenBottom | 21.5 : GreenTop }\n\nFlowerBed -->\n color(\"#8B5A2B\")\n extrude(0.15)\n s(1, 1, 1)\n primitiveCylinder(3.5, 0.15)\n FlowerBedFill\n\nFlowerBedFill -->\n color(\"#D94F70\")\n primitiveCylinder(3.1, 0.2)\n\nGreenTop -->\n color(\"#6FAF45\")\n GrassPatch\n\nGreenBottom -->\n color(\"#6FAF45\")\n GrassPatch\n\nGrassPatch -->\n extrude(0.05)\n color(\"#6FAF45\")\n GrassVolume\n\nGrassVolume -->\n primitiveCube\n\nBorder -->\n color(\"#A8A8A8\")\n extrude(0.08)\n primitiveCube\n"
查看原始结果 JSON →b86497ad-ac5a-44be-adec-e6d315e839e3
run evidence
带烟囱的锅炉房,高12米
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -3.5]}; face_count=14; vertex_count=28; volume=840; surface_area=464
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=4; surface_area=1336; vertex_count=8; volume=6360
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -12.0, -16.5]}; face_count=10; vertex_count=20; volume=7200; surface_area=1800
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 12.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr height = 12\nattr chimneyWidth = 1.2\nattr chimneyDepth = 1.2\nattr chimneyHeight = 2\nattr bodyHeight = height - chimneyHeight\n\n@StartRule\nLot -->\n extrude(bodyHeight)\n BoilerRoom\n\nBoilerRoom -->\n comp(f) {\n top: BoilerRoof |\n side: BoilerWall\n }\n\nBoilerWall -->\n color(\"#777777\")\n\nBoilerRoof -->\n split(x) {\n 5.4: RoofSection |\n chimneyWidth: ChimneyStrip |\n 5.4: RoofSection\n }\n\nChimneyStrip -->\n split(z) {\n 2.9: RoofSection |\n chimneyDepth: ChimneyBase |\n 2.9: RoofSection\n }\n\nRoofSection -->\n color(\"#4A4A4A\")\n\nChimneyBase -->\n extrude(chimneyHeight)\n Chimney\n\nChimney -->\n comp(f) {\n top: ChimneyCap |\n side: ChimneyWall\n }\n\nChimneyWall -->\n color(\"#555555\")\n\nChimneyCap -->\n color(\"#333333\")\n"
查看原始结果 JSON →b8dcd1b5-5ca3-4a62-9b1a-67ef97ec5d0f
run evidence
高度15米、宽8米、深8米的办公楼,坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [-5.333, 0.0, 3.5], 'min': [-6.0, -11.333, 2.357]}; face_count=16; vertex_count=22; volume=5.693; surface_area=41.66
- nl2cga CE-vs-runtime deltas: bbox=7.833; face_count=0; surface_area=612.9; vertex_count=6; volume=799.3
- runtime: bbox={'max': [2.5, 0.0, 3.933], 'min': [-6.5, -17.309, -4.933]}; face_count=16; vertex_count=28; volume=805; surface_area=654.6
- runtime CE-vs-runtime deltas: bbox=17.31; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, roof, gable, 15, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 8.0\nattr depth = 8 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 8.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 15.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 8\nattr buildingDepth = 8\nattr buildingHeight = 15\nattr roofHeight = 4\nattr wallHeight = buildingHeight - roofHeight\n\n@StartRule\nLot -->\n s(buildingWidth / 12, 1, buildingDepth / 7)\n extrude(wallHeight)\n comp(f) { side : Facade | top : Roof }\n\nFacade -->\n color(0.72, 0.76, 0.80)\n\nRoof -->\n roofHip(45)\n color(0.35, 0.18, 0.10)\n"
查看原始结果 JSON →b909dda9-94b1-404d-8e5d-a0be2ceb42d3
run evidence
高度10米且高度15米的建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr firstBuildingWidth = 6\nattr secondBuildingWidth = 6\n\n@StartRule\nLot -->\n split(x) {\n firstBuildingWidth: Building10\n | secondBuildingWidth: Building15\n }\n\nBuilding10 -->\n extrude(10)\n\nBuilding15 -->\n extrude(15)\n"
查看原始结果 JSON →b954da86-0d7b-49d1-a0c1-38cd255a7660
run evidence
一栋带玻璃幕墙的十二层办公楼
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -42.0, -16.5]}; face_count=10; vertex_count=20; volume=2.52e+04; surface_area=4800
- runtime CE-vs-runtime deltas: bbox=42; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, glass, floor, floors\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 42.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 12\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> setupProjection(0, scope.xy, 2, 2) texture(\"glass.jpg\") projectUV(0) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floorCount = 12\nattr floorHeight = 3.2\nattr totalHeight = floorCount * floorHeight\n\n@StartRule\nBuilding -->\n extrude(totalHeight)\n OfficeTower\n\nOfficeTower -->\n repeat(y) { floorHeight : Floor }\n\nFloor -->\n comp(f) {\n front : CurtainWall |\n back : CurtainWall |\n left : CurtainWall |\n right : CurtainWall |\n top : ConcreteSlab |\n bottom : ConcreteSlab\n }\n\nCurtainWall -->\n repeat(u) { 1.5 : GlassBay }\n\nGlassBay -->\n split(u) {\n 0.06 : Mullion |\n ~ : GlassPanel\n }\n\nGlassPanel -->\n color(0.16, 0.42, 0.62)\n\nMullion -->\n color(0.08, 0.10, 0.12)\n\nConcreteSlab -->\n color(0.48, 0.50, 0.53)\n"
查看原始结果 JSON →ba0db621-294d-45af-a1d4-db1f16d72dc2
run evidence
生成一棵苹果树
state: QUEUED
查看 CGA 与测量证据
Measured metrics
(暂无 CGA 代码)
查看原始结果 JSON →bc014e18-5d73-4cf3-bea7-bc42cdc1f564
run evidence
生成一个带双坡屋顶的六层灰色住宅建筑,立面有规则窗格
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, gray, window, floor, floors, roof, gable\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floors = 6\nattr floorHeight = 3.0\nattr buildingHeight = floors * floorHeight\nattr roofAngle = 30\nattr wallColor = \"#808080\"\nattr windowColor = \"#20252A\"\nattr roofColor = \"#666666\"\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n comp(f) { side : Facade | front : Facade | back : Facade | top : Roof }\n\nFacade -->\n split(y) {\n floorHeight : Floor\n | floorHeight : Floor\n | floorHeight : Floor\n | floorHeight : Floor\n | floorHeight : Floor\n | floorHeight : Floor\n }\n\nFloor -->\n split(y) {\n 0.65 : WallBand\n | 1.70 : WindowRow\n | ~1 : WallBand\n }\n\nWindowRow -->\n split(x) {\n ~1 : WallPanel\n | 1.30 : Window\n | ~1 : WallPanel\n | 1.30 : Window\n | ~1 : WallPanel\n | 1.30 : Window\n | ~1 : WallPanel\n }\n\nWallBand -->\n color(wallColor)\n\nWallPanel -->\n color(wallColor)\n\nWindow -->\n color(windowColor)\n i(0.06)\n color(windowColor)\n\nRoof -->\n roofGable(roofAngle)\n color(roofColor)\n"
查看原始结果 JSON →c1971240-40e3-4a21-902c-cd7d81fcd0f8
run evidence
高度10米且高度15米的建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 6\nattr buildingDepth = 7\nattr height10 = 10\nattr height15 = 15\n\n@StartRule\nLot -->\n setSeed(3)\n split(x) { ~1: Building10 | ~1: Building15 }\n\nBuilding10 -->\n extrude(height10)\n BuildingMass\n\nBuilding15 -->\n extrude(height15)\n BuildingMass\n\nBuildingMass -->\n comp(f) {\n side: Facade\n | top: Roof\n | bottom: Foundation\n }\n\nFacade -->\n color(0.72, 0.72, 0.72)\n\nRoof -->\n color(0.35, 0.35, 0.35)\n\nFoundation -->\n color(0.45, 0.45, 0.45)\n"
查看原始结果 JSON →c527ea62-ea8b-487a-b49d-b12f159dfb08
run evidence
高度10米且高度15米的建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr height10 = 10\nattr height15 = 15\nattr width = 12\nattr depth = 7\n\n@StartRule\nLot -->\n split(x) { ~1: Building10 | ~1: Building15 }\n\nBuilding10 -->\n extrude(height10)\n color(\"#B8C4D0\")\n\nBuilding15 -->\n extrude(height15)\n color(\"#D3A679\")\n"
查看原始结果 JSON →c8f8527c-fa26-442e-a212-9a069a60f3d5
run evidence
缓坡地形的公园,面积2000平方米
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [22.361, 3.52, 22.361], 'min': [-22.361, 0.0, -22.361]}; face_count=6; vertex_count=14; volume=3520; surface_area=2321
- runtime CE-vs-runtime deltas: bbox=5; face_count=4; vertex_count=10
// student_ce.cga
"attr area = 2000\nattr side = sqrt(area) // 约44.7米见方\nattr slopeMin = 0.5\nattr slopeMax = 2.0\nattr grassColor = \"#5a8f4a\"\nattr pathColor = \"#b8a88a\"\nattr pathRatio = 0.08\nattr plazaRatio = 0.06\nattr treeDensity = 0.35\nattr slopeAngle = 4.5\n\n@StartRule\nLot -->\n\talignScopeToAxes(y)\n\tprimitiveQuad(side, side)\n\troofShed(slopeAngle)\n\tcomp(f) { top: SlopeSurface | side: TerrainSide }\n\nSlopeSurface -->\n\t// 先在统一坡面上沿 z 向一次性划分功能区,避免每个高程带重复布置\n\tsplit(z) {\n\t\t~plazaRatio: PlazaStrip |\n\t\t~pathRatio: PathStrip |\n\t\t~1: ParkSlope\n\t}\n\nParkSlope -->\n\tsplit(x) {\n\t\t~pathRatio: Path |\n\t\t~1: LawnField\n\t}\n\nLawnField -->\n\tsplit(z) {\n\t\t~0.5: TreeRowA |\n\t\t~0.5: TreeRowB\n\t}\n\nTreeRowA -->\n\tcase rand() < treeDensity : Tree\n\telse : Grass\n\nTreeRowB -->\n\tcase rand() < treeDensity * 0.8 : Tree\n\telse : Grass\n\nTree -->\n\tt(0, 0.1, 0)\n\tprimitiveCylinder(0.18, 1.6)\n\tcolor(\"#6b4f2f\")\n\textrude(0.01)\n\tcomp(f) { top: Crown | all: NIL }\n\nCrown -->\n\tt(0, 1.4, 0)\n\tprimitiveSphere(1.1)\n\tcolor(\"#2f6b33\")\n\nGrass -->\n\tcolor(grassColor)\n\nPlazaStrip -->\n\tcolor(0.7, 0.68, 0.65)\n\nPathStrip -->\n\tcolor(pathColor)\n\nPath -->\n\tcolor(pathColor)\n\nTerrainSide -->\n\t// 侧坡按高程做简单插值着色,体现从低到高的缓坡过渡\n\tcolor(0.45 + 0.25 * (slopeMin / slopeMax), 0.42, 0.34)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr parkArea = 2000\nattr terrainWidth = 12\nattr terrainDepth = 7\nattr slopeHeight = 3\nattr pathHeight = 0.12\nattr plantingHeight = 0.08\n\n@StartRule\nPark -->\n report(\"park.area\", parkArea)\n alignScopeToGeometry(yUp, 0)\n Terrain\n\nTerrain -->\n extrude(slopeHeight)\n comp(f) { top : TerrainTop | side : TerrainSide }\n\nTerrainTop -->\n color(\"#7FA35B\")\n split(x) { 1 : BorderLawn | ~10 : CentralPark | 1 : BorderLawn }\n\nCentralPark -->\n split(y) { 1 : Walkway | ~5 : Lawn | 1 : Walkway }\n\nBorderLawn -->\n color(\"#6F9650\")\n extrude(plantingHeight)\n\nWalkway -->\n color(\"#B7A98B\")\n extrude(pathHeight)\n\nLawn -->\n color(\"#87AA5F\")\n split(x) { 2 : Planting | ~6 : OpenLawn | 2 : Planting }\n\nPlanting -->\n color(\"#5E8748\")\n extrude(plantingHeight)\n\nOpenLawn -->\n color(\"#91B56A\")\n extrude(0.03)\n\nTerrainSide -->\n color(\"#806C4A\")\n"
查看原始结果 JSON →c90e2836-bff5-48e5-b00d-ed73c2316c48
run evidence
生成50米x50米的景观绿地,中间有圆形花坛
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [25.0, 0.0, 25.0], 'min': [-25.0, -0.55, -25.0]}; face_count=150; vertex_count=84; volume=1070; surface_area=1.058e+04
- nl2cga CE-vs-runtime deltas: bbox=29.45; face_count=140; surface_area=2081; vertex_count=64; volume=7.393e+04
- runtime: bbox={'max': [44.0, 0.0, 3.5], 'min': [-6.0, -30.0, -46.5]}; face_count=10; vertex_count=20; volume=7.5e+04; surface_area=8500
- runtime CE-vs-runtime deltas: bbox=46.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: park, green, cylinder, 50\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 50.0\nattr depth = 50 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 50.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.3, 0.65, 0.35) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.3, 0.65, 0.35)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr siteWidth = 50\nattr siteDepth = 50\nattr baseHeight = 0.2\nattr flowerBedRadius = 8\nattr flowerBedHeight = 0.35\nattr randomSeed = 42\n\n@StartRule\nStart -->\n push()\n primitiveCube(siteWidth, baseHeight, siteDepth)\n color(\"#4A8F3A\")\n pop()\n push()\n t(0, baseHeight, 0)\n primitiveCylinder(32, flowerBedRadius, flowerBedHeight)\n color(\"#8B5A2B\")\n pop()\n"
查看原始结果 JSON →c934a0a8-fbe3-4102-9105-e88fda91530e
run evidence
6层的住宅楼,红色坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -20.021, -3.5]}; face_count=16; vertex_count=22; volume=1076; surface_area=865
- nl2cga CE-vs-runtime deltas: bbox=18.5; face_count=0; surface_area=2697; vertex_count=6; volume=9474
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, red, floor, floors, roof, gable, 6\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.2, 0.15) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.2, 0.15)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr floorHeight = 3\nattr roofHeight = 2\nattr floorCount = 6\n\n@StartRule\nLot -->\n extrude(floorCount * floorHeight)\n Building\n\nBuilding -->\n comp(f) { side : Facade | top : Roof | bottom : NIL }\n\nFacade -->\n color(\"#D9D9D9\")\n\nRoof -->\n roofHip(30)\n color(\"#B22222\")\n"
查看原始结果 JSON →ca1464ab-1a72-4c4a-a176-af479b11790e
run evidence
生成50米x50米的景观绿地,中间有圆形花坛
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [44.0, -0.15, 3.5], 'min': [-6.0, -0.15, 2.5]}; face_count=4; vertex_count=8; volume=2.5; surface_area=50
- nl2cga CE-vs-runtime deltas: bbox=49; face_count=6; surface_area=8450; vertex_count=12; volume=7.5e+04
- runtime: bbox={'max': [44.0, 0.0, 3.5], 'min': [-6.0, -30.0, -46.5]}; face_count=10; vertex_count=20; volume=7.5e+04; surface_area=8500
- runtime CE-vs-runtime deltas: bbox=46.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: park, green, cylinder, 50\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 50.0\nattr depth = 50 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 50.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.3, 0.65, 0.35) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.3, 0.65, 0.35)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr siteWidth = 50\nattr siteDepth = 50\nattr groundHeight = 0.15\nattr flowerBedRadius = 8\nattr flowerBedHeight = 0.3\n\n@StartRule\nStart -->\n s(siteWidth, siteDepth, 1)\n Ground\n\nGround -->\n extrude(groundHeight)\n color(\"#6B8E23\")\n comp(f) {\n top: LandscapeSurface\n }\n\nLandscapeSurface -->\n split(y) {\n flowerBedRadius * 2: FlowerBedArea |\n siteDepth - flowerBedRadius * 2: RemainingLandscape |\n flowerBedRadius * 2: FlowerBedArea\n }\n\nFlowerBedArea -->\n split(x) {\n flowerBedRadius * 2: FlowerBed |\n siteWidth - flowerBedRadius * 2: RemainingLandscape |\n flowerBedRadius * 2: FlowerBed\n }\n\nFlowerBed -->\n primitiveCylinder(flowerBedRadius, flowerBedHeight)\n color(\"#8B4513\")\n"
查看原始结果 JSON →ccc470fb-2f32-40f2-9eec-0f54a44fa81b
run evidence
a four-story office building with a gable roof
state: FAILED
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floors = 4\nattr floorHeight = 3\nattr roofAngle = 30\n\n@StartRule\nBuilding -->\n extrude(floors * floorHeight)\n OfficeMass\n\nOfficeMass -->\n comp(f) { side : Facade | top : Roof }\n\nFacade -->\n split(y) {\n floorHeight : FloorBand\n | floorHeight : FloorBand\n | floorHeight : FloorBand\n | floorHeight : FloorBand\n }\n\nFloorBand -->\n color(0.65, 0.72, 0.78)\n\nRoof -->\n roofGable(roofAngle)\n RoofSurface\n\nRoofSurface -->\n color(0.25, 0.28, 0.32)\n"
查看原始结果 JSON →cd88a9a1-7971-445d-8725-1cd26cfc94e6
run evidence
带烟囱的锅炉房,高12米
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -16.0, -3.5]}; face_count=22; vertex_count=44; volume=672.7; surface_area=549.7
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=12; surface_area=1250; vertex_count=24; volume=6527
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -12.0, -16.5]}; face_count=10; vertex_count=20; volume=7200; surface_area=1800
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 12.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr buildingHeight = 12\nattr chimneyWidth = 2\nattr chimneyDepth = 2\nattr chimneyHeight = 4\n\n@StartRule\nStart -->\n extrude(buildingHeight)\n BoilerRoom\n\nBoilerRoom -->\n comp(f) {\n side: Facade\n | top: Roof\n | bottom: Foundation\n }\n\nFacade -->\n color(0.45, 0.48, 0.5)\n\nFoundation -->\n color(0.25, 0.25, 0.25)\n\nRoof -->\n color(0.2, 0.22, 0.24)\n center(xz)\n s(chimneyWidth / buildingWidth, 1, chimneyDepth / buildingDepth)\n extrude(chimneyHeight)\n Chimney\n\nChimney -->\n comp(f) {\n side: ChimneySide\n | top: ChimneyTop\n | bottom: ChimneyBase\n }\n\nChimneySide -->\n color(0.3, 0.3, 0.3)\n\nChimneyTop -->\n color(0.18, 0.18, 0.18)\n\nChimneyBase -->\n color(0.3, 0.3, 0.3)\n"
查看原始结果 JSON →cef456b3-f110-4b15-98d1-75226a4bc49d
run evidence
带烟囱的锅炉房,高12米
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -12.0, -3.5]}; face_count=14; vertex_count=28; volume=1008; surface_area=540
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=4; surface_area=1260; vertex_count=8; volume=6192
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -12.0, -16.5]}; face_count=10; vertex_count=20; volume=7200; surface_area=1800
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 12.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingHeight = 12\nattr chimneyWidth = 1.2\nattr chimneyHeight = 4\nattr wallColor = \"#777777\"\nattr roofColor = \"#444444\"\nattr chimneyColor = \"#333333\"\n\n@StartRule\nBoilerRoom -->\n extrude(buildingHeight)\n BuildingMass\n\nBuildingMass -->\n comp(f) {\n side: Wall\n | top: Roof\n }\n\nWall -->\n color(wallColor)\n\nRoof -->\n split(x) {\n ~5.4: RoofSurface\n | chimneyWidth: ChimneyStrip\n | ~5.4: RoofSurface\n }\n\nRoofSurface -->\n color(roofColor)\n\nChimneyStrip -->\n split(z) {\n ~2.9: RoofSurface\n | chimneyWidth: Chimney\n | ~2.9: RoofSurface\n }\n\nChimney -->\n extrude(chimneyHeight)\n ChimneyBody\n\nChimneyBody -->\n comp(f) {\n side: ChimneyWall\n | top: ChimneyCap\n }\n\nChimneyWall -->\n color(chimneyColor)\n\nChimneyCap -->\n color(chimneyColor)\n"
查看原始结果 JSON →d0b2c0cd-60e4-46e4-b4d3-565bd8851321
run evidence
生成一个高10米、宽12米、进深7米的灰色平屋顶建筑
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -3.5]}; face_count=12; vertex_count=24; volume=840; surface_area=548
- nl2cga CE-vs-runtime deltas: bbox=5; face_count=2; surface_area=84; vertex_count=4; volume=0
- runtime: bbox={'max': [1.0, 0.0, 3.5], 'min': [-6.0, -10.0, -8.5]}; face_count=10; vertex_count=20; volume=840; surface_area=464
- runtime CE-vs-runtime deltas: bbox=10; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, gray, roof, flat, 10, 12, 7\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 7.0\nattr depth = 7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr height = 10\nattr buildingColor = \"#808080\"\n\n@StartRule\nLot -->\n extrude(height)\n comp(f) { side: Wall | top: Roof | bottom: Ground }\n\nWall -->\n color(buildingColor)\n\nRoof -->\n color(buildingColor)\n\nGround -->\n color(buildingColor)\n"
查看原始结果 JSON →d1633d06-cc99-4a7e-b2af-c741bb160c0c
run evidence
生成一个高10米、宽12米、进深7米的灰色平屋顶建筑
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -10.0, -3.5]}; face_count=12; vertex_count=24; volume=840; surface_area=548
- nl2cga CE-vs-runtime deltas: bbox=5; face_count=2; surface_area=84; vertex_count=4; volume=0
- runtime: bbox={'max': [1.0, 0.0, 3.5], 'min': [-6.0, -10.0, -8.5]}; face_count=10; vertex_count=20; volume=840; surface_area=464
- runtime CE-vs-runtime deltas: bbox=10; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, gray, roof, flat, 10, 12, 7\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 7.0\nattr depth = 7 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr buildingHeight = 10\n\n@StartRule\nLot -->\n extrude(buildingHeight)\n Building\n\nBuilding -->\n comp(f) { side : Facade | top : Roof | bottom : Ground }\n\nFacade -->\n color(0.5, 0.5, 0.5)\n\nRoof -->\n color(0.5, 0.5, 0.5)\n\nGround -->\n color(0.5, 0.5, 0.5)\n"
查看原始结果 JSON →d1b77bc4-0c3f-420d-a3b2-71effa681bfb
run evidence
一座带露台的现代三层别墅
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -9.2, -3.5]}; face_count=40; vertex_count=80; volume=796.8; surface_area=515.6
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=30; surface_area=1134; vertex_count=60; volume=5503
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -10.5, -16.5]}; face_count=10; vertex_count=20; volume=6300; surface_area=1650
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: floor, floors\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr villaHeight = 9\nattr floorHeight = 3\nattr terraceDepth = 2\nattr terraceSlabThickness = 0.2\n\n@StartRule\nLot -->\n split(z) {\n lotDepth - terraceDepth: VillaMass\n | terraceDepth: RooftopTerrace\n }\n\nVillaMass -->\n extrude(villaHeight)\n split(y) {\n floorHeight: GroundFloor\n | floorHeight: SecondFloor\n | floorHeight: ThirdFloor\n }\n\nGroundFloor -->\n comp(f) {\n side: GroundFacade\n | top: FloorSlab\n }\n\nSecondFloor -->\n comp(f) {\n side: SecondFacade\n | top: FloorSlab\n }\n\nThirdFloor -->\n comp(f) {\n side: ThirdFacade\n | top: Roof\n }\n\nRooftopTerrace -->\n t(0, villaHeight, 0)\n extrude(terraceSlabThickness)\n comp(f) {\n side: TerraceEdge\n | top: TerraceSurface\n }\n\nGroundFacade -->\n color(\"#c8c8c8\")\n\nSecondFacade -->\n color(\"#dedede\")\n\nThirdFacade -->\n color(\"#f0f0f0\")\n\nFloorSlab -->\n color(\"#555555\")\n\nRoof -->\n color(\"#333333\")\n\nTerraceEdge -->\n color(\"#777777\")\n\nTerraceSurface -->\n color(\"#9a9a9a\")\n"
查看原始结果 JSON →d1de44c5-7dc2-40c3-bc7e-ca0ea3e1b8e2
run evidence
生成跨度24米、长60米、高8米的工业厂房
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [-4.0, 0.0, 3.5], 'min': [-6.0, -8.0, -5.071]}; face_count=12; vertex_count=24; volume=137.1; surface_area=203.4
- nl2cga CE-vs-runtime deltas: bbox=58; face_count=2; surface_area=2581; vertex_count=4; volume=1.138e+04
- runtime: bbox={'max': [54.0, 0.0, 3.5], 'min': [-6.0, -8.0, -20.5]}; face_count=10; vertex_count=20; volume=1.152e+04; surface_area=2784
- runtime CE-vs-runtime deltas: bbox=56.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: factory, industrial, 24, 60, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 60.0\nattr depth = 60 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 24.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 8.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 24\nattr depth = 60\nattr height = 8\nattr lotWidth = 12\nattr lotDepth = 7\n\n@StartRule\nLot --> s(width / lotWidth, 1, depth / lotDepth) extrude(height) Building\n\nBuilding --> comp(f) { side : Facade | top : Roof | bottom : Ground }\n\nFacade --> color(0.45, 0.48, 0.5)\n\nRoof --> color(0.25, 0.28, 0.3)\n\nGround --> color(0.2, 0.22, 0.2)\n"
查看原始结果 JSON →d3117246-57a6-46bf-a7bb-3d4eefe6419f
run evidence
高度10米且高度15米的建筑
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr buildingWidth = 6\nattr buildingDepth = 7\nattr buildingHeight10 = 10\nattr buildingHeight15 = 15\n\n@StartRule\nLot -->\n split(x) { buildingWidth: Building10 | buildingWidth: Building15 }\n\nBuilding10 -->\n extrude(buildingHeight10)\n Mass10\n\nBuilding15 -->\n extrude(buildingHeight15)\n Mass15\n\nMass10 -->\n color(0.65, 0.72, 0.82)\n\nMass15 -->\n color(0.78, 0.58, 0.38)\n"
查看原始结果 JSON →d7044d4d-3010-46c4-837d-67ad031d460d
run evidence
6层的住宅楼,红色坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -20.451, -3.5]}; face_count=16; vertex_count=22; volume=1091; surface_area=870.5
- nl2cga CE-vs-runtime deltas: bbox=18.5; face_count=0; surface_area=2692; vertex_count=6; volume=9459
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, red, floor, floors, roof, gable, 6\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.2, 0.15) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.2, 0.15)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floors = 6\nattr floorHeight = 3.0\nattr roofPitch = 35.0\n\n@StartRule\nLot -->\n extrude(floors * floorHeight)\n comp(f) { side: Facade | top: Roof }\n\nFacade -->\n color(0.82, 0.78, 0.72)\n\nRoof -->\n roofHip(roofPitch)\n color(0.65, 0.05, 0.03)\n"
查看原始结果 JSON →d794192e-be88-43aa-b0ea-a13b538c82b0
run evidence
生成一个带双坡屋顶的六层灰色住宅建筑,立面有规则窗格
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.3, 0.0, 3.746], 'min': [-6.3, -20.451, -3.746]}; face_count=1186; vertex_count=1408; volume=831.9; surface_area=1279
- nl2cga CE-vs-runtime deltas: bbox=18.2; face_count=1170; surface_area=2284; vertex_count=1380; volume=9718
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, gray, window, floor, floors, roof, gable\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floorCount = 6\nattr floorHeight = 3\nattr roofAngle = 35\nattr windowBayWidth = 2.4\nattr wallBayWidth = 0.8\nattr windowHeight = 1.7\n\n@StartRule\nLot -->\n extrude(floorCount * floorHeight)\n Building\n\nBuilding -->\n color(\"#777777\")\n comp(f) {\n front : Facade\n | back : Facade\n | side : Facade\n | top : Roof\n | bottom : Ground\n }\n\nFacade -->\n split(y) { { ~floorHeight : Floor }* }\n\nFloor -->\n split(x) {\n 0.6 : Wall\n | { ~windowBayWidth : WindowBay | ~wallBayWidth : Wall }*\n | 0.6 : Wall\n }\n\nWindowBay -->\n split(y) {\n 0.65 : Wall\n | ~windowHeight : Window\n | 0.65 : Wall\n }\n\nWall -->\n color(\"#777777\")\n X\n\nWindow -->\n color(\"#263746\")\n extrude(0.08)\n X\n\nRoof -->\n roofGable(roofAngle, 0.3, 0.3)\n color(\"#555555\")\n X\n\nGround -->\n color(\"#777777\")\n X\n"
查看原始结果 JSON →db9a0211-c217-4ca7-8990-bb88aea69f79
run evidence
高度15米、宽8米、深8米的办公楼,坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [2.0, 0.0, 3.5], 'min': [-6.0, -15.289, 2.5]}; face_count=16; vertex_count=22; volume=81.16; surface_area=287.5
- nl2cga CE-vs-runtime deltas: bbox=7.433; face_count=0; surface_area=367.1; vertex_count=6; volume=723.9
- runtime: bbox={'max': [2.5, 0.0, 3.933], 'min': [-6.5, -17.309, -4.933]}; face_count=16; vertex_count=28; volume=805; surface_area=654.6
- runtime CE-vs-runtime deltas: bbox=17.31; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, roof, gable, 15, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 8.0\nattr depth = 8 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 8.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 15.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 8\nattr depth = 8\nattr height = 15\nattr roofAngle = 30\n\n@StartRule\nLot -->\n s(width, depth, 1)\n extrude(height)\n BuildingMass\n\nBuildingMass -->\n comp(f) { side : Facade | top : Roof }\n\nFacade -->\n color(\"#B8C4D0\")\n\nRoof -->\n roofGable(roofAngle)\n color(\"#5B6570\")\n"
查看原始结果 JSON →e0de76bf-535d-4f57-916c-87fc76013610
run evidence
生成一棵苹果树
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [-2.1, 0.0, 4.854], 'min': [-8.0, -6.2, -0.3]}; face_count=212; vertex_count=152; volume=41.8; surface_area=34.47
- nl2cga CE-vs-runtime deltas: bbox=26.1; face_count=202; surface_area=3566; vertex_count=132; volume=1.796e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"version \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr trunkHeight = 4.0\nattr trunkRadius = 0.28\nattr branchLength = 2.2\nattr branchRadius = 0.12\nattr canopyRadius = 2.6\nattr appleRadius = 0.18\n\n@StartRule\nTree -->\n Trunk\n BranchA\n BranchB\n BranchC\n BranchD\n CanopyA\n CanopyB\n CanopyC\n CanopyD\n AppleA\n AppleB\n AppleC\n AppleD\n AppleE\n AppleF\n AppleG\n AppleH\n\nTrunk -->\n s(trunkRadius, trunkHeight, trunkRadius)\n primitiveCylinder(12)\n color(\"#6B3F22\")\n\nBranchA -->\n t(0, 2.8, 0)\n r(0, 0, -48)\n s(branchRadius, branchLength, branchRadius)\n primitiveCylinder(10)\n color(\"#6B3F22\")\n\nBranchB -->\n t(0, 2.4, 0)\n r(0, 0, 48)\n s(branchRadius, branchLength, branchRadius)\n primitiveCylinder(10)\n color(\"#6B3F22\")\n\nBranchC -->\n t(0, 3.2, 0)\n r(38, 0, 0)\n s(branchRadius, branchLength, branchRadius)\n primitiveCylinder(10)\n color(\"#6B3F22\")\n\nBranchD -->\n t(0, 3.6, 0)\n r(-38, 0, 0)\n s(branchRadius, branchLength, branchRadius)\n primitiveCylinder(10)\n color(\"#6B3F22\")\n\nCanopyA -->\n t(-1.3, 4.2, 0)\n s(canopyRadius, canopyRadius, canopyRadius)\n primitiveSphere(16)\n color(\"#3D7A32\")\n\nCanopyB -->\n t(1.3, 4.5, 0)\n s(canopyRadius, canopyRadius, canopyRadius)\n primitiveSphere(16)\n color(\"#4D8B38\")\n\nCanopyC -->\n t(0, 5.3, 1.2)\n s(canopyRadius, canopyRadius, canopyRadius)\n primitiveSphere(16)\n color(\"#3D7A32\")\n\nCanopyD -->\n t(0, 4.2, -1.3)\n s(canopyRadius, canopyRadius, canopyRadius)\n primitiveSphere(16)\n color(\"#4D8B38\")\n\nAppleA -->\n t(-2.0, 4.8, 0.8)\n s(appleRadius, appleRadius, appleRadius)\n primitiveSphere(12)\n color(\"#C92822\")\n\nAppleB -->\n t(-0.8, 5.8, 1.4)\n s(appleRadius, appleRadius, appleRadius)\n primitiveSphere(12)\n color(\"#D83A24\")\n\nAppleC -->\n t(1.2, 5.0, 1.3)\n s(appleRadius, appleRadius, appleRadius)\n primitiveSphere(12)\n color(\"#C92822\")\n\nAppleD -->\n t(2.0, 4.1, -0.4)\n s(appleRadius, appleRadius, appleRadius)\n primitiveSphere(12)\n color(\"#D83A24\")\n\nAppleE -->\n t(0.5, 6.2, -0.5)\n s(appleRadius, appleRadius, appleRadius)\n primitiveSphere(12)\n color(\"#C92822\")\n\nAppleF -->\n t(-1.5, 3.9, -1.2)\n s(appleRadius, appleRadius, appleRadius)\n primitiveSphere(12)\n color(\"#D83A24\")\n\nAppleG -->\n t(1.5, 5.8, -1.2)\n s(appleRadius, appleRadius, appleRadius)\n primitiveSphere(12)\n color(\"#C92822\")\n\nAppleH -->\n t(0, 4.7, 2.0)\n s(appleRadius, appleRadius, appleRadius)\n primitiveSphere(12)\n color(\"#D83A24\")\n"
查看原始结果 JSON →e10d2c5e-211f-4436-93c5-89bb2135fa3d
run evidence
请建模一个住宅别墅,尺度约20.10米长、13.20米宽、5.25米高,使用浅灰清水混凝土,采用拱形屋顶,深檐遮阳,重点表现窄面竖向窗带;模块化立面变体1。
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# semantic_tags: residential, concrete, gray, window, roof, 20.10, 13.20, 5.25, 1\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 20.1\nattr depth = 20.1 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 13.2\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 5.25\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 1\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~5.25: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingLength = 20.10\nattr buildingWidth = 13.20\nattr buildingHeight = 5.25\nattr wallHeight = 3.80\nattr roofRise = 1.45\nattr eaveDepth = 1.20\nattr windowWidth = 0.55\nattr windowHeight = 2.80\nattr windowSpacing = 1.15\nattr concreteColor = \"#D2D4D3\"\nattr glassColor = \"#26343A\"\nattr frameColor = \"#4A5050\"\n\n@StartRule\nLot -->\n alignScopeToGeometry(yUp)\n s(buildingLength, buildingWidth, 1)\n Building\n\nBuilding -->\n extrude(wallHeight)\n ConcreteMass\n comp(f) { front : FrontFacade | side : SideFacade | back : BackFacade | top : ArchedRoof }\n\nConcreteMass -->\n color(concreteColor)\n\nFrontFacade -->\n split(x) {\n 1.20 : ConcreteStrip\n 0.80 : VerticalWindow\n windowSpacing : ConcreteStrip\n 0.80 : VerticalWindow\n windowSpacing : ConcreteStrip\n 0.80 : VerticalWindow\n windowSpacing : ConcreteStrip\n 0.80 : VerticalWindow\n windowSpacing : ConcreteStrip\n 0.80 : VerticalWindow\n 1.20 : ConcreteStrip\n }\n\nSideFacade -->\n split(x) {\n 1.50 : ConcreteStrip\n 0.70 : VerticalWindow\n 3.50 : ConcreteStrip\n 0.70 : VerticalWindow\n 3.50 : ConcreteStrip\n 0.70 : VerticalWindow\n 1.50 : ConcreteStrip\n }\n\nBackFacade -->\n split(x) {\n 1.50 : ConcreteStrip\n 1.20 : VerticalWindow\n 3.00 : ConcreteStrip\n 1.20 : VerticalWindow\n 3.00 : ConcreteStrip\n 1.20 : VerticalWindow\n 1.50 : ConcreteStrip\n }\n\nConcreteStrip -->\n color(concreteColor)\n\nVerticalWindow -->\n i(windowWidth, 0, windowHeight)\n Glass\n\nGlass -->\n color(glassColor)\n comp(f) { front : GlassPane | side : Frame | back : GlassPane | top : Frame | bottom : Frame }\n\nFrame -->\n color(frameColor)\n extrude(0.08)\n\nGlassPane -->\n color(glassColor)\n\nArchedRoof -->\n roofGable(45, 0, eaveDepth)\n RoofSurface\n\nRoofSurface -->\n color(concreteColor)\n comp(f) { front : RoofArchEnd | side : RoofPlane | back : RoofArchEnd | top : RoofPlane }\n\nRoofPlane -->\n color(concreteColor)\n\nRoofArchEnd -->\n color(concreteColor)\n offset(-0.35)\n extrude(0.18)\n\nFrontRoofShade -->\n setupProjection(0, scope.xy, 1, 1)\n split(y) { 0.35 : ConcreteStrip | 0.25 : ShadeSlab | 0.35 : ConcreteStrip }\n\nShadeSlab -->\n color(concreteColor)\n extrude(eaveDepth)\n"
查看原始结果 JSON →e1a6bdaa-d6b8-49fc-a582-ac2072a8187a
run evidence
生成跨度24米、长60米、高8米的工业厂房
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [-4.0, 0.0, 3.5], 'min': [-6.0, -8.0, 2.5]}; face_count=10; vertex_count=20; volume=16; surface_area=50
- nl2cga CE-vs-runtime deltas: bbox=58; face_count=0; surface_area=2734; vertex_count=0; volume=1.15e+04
- runtime: bbox={'max': [54.0, 0.0, 3.5], 'min': [-6.0, -8.0, -20.5]}; face_count=10; vertex_count=20; volume=1.152e+04; surface_area=2784
- runtime CE-vs-runtime deltas: bbox=56.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: factory, industrial, 24, 60, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 60.0\nattr depth = 60 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 24.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 8.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 24\nattr depth = 60\nattr height = 8\n\n@StartRule\nFactory -->\n s(width / 12, depth / 7, 1)\n extrude(height)\n comp(f) {\n side : Facade |\n top : Roof\n }\n\nFacade -->\n color(0.55, 0.58, 0.62)\n\nRoof -->\n color(0.32, 0.35, 0.38)\n"
查看原始结果 JSON →e5c5a07b-482d-41bc-abe5-a97650cbe140
run evidence
一面带窗户和阳台的欧式建筑立面
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, balcony, window\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr buildingHeight = 9\nattr floorHeight = 3\nattr balconyDepth = 1.4\nattr balconyWidth = 3.2\n\n@StartRule\nStart -->\n s(buildingWidth, buildingDepth, 1)\n extrude(buildingHeight)\n Building\n\nBuilding -->\n comp(f) {\n front : FrontFacade\n | side : SideFacade\n | back : SideFacade\n | top : Roof\n }\n\nFrontFacade -->\n color(0.82, 0.76, 0.65)\n split(y) {\n 0.8 : GroundFacade\n | floorHeight : UpperFacade\n | floorHeight : UpperFacade\n | floorHeight : UpperFacade\n }\n\nGroundFacade -->\n split(x) {\n 1.2 : WallPanel\n | 2.2 : WindowBay\n | 1.2 : WallPanel\n | 2.2 : EntranceBay\n | 1.2 : WallPanel\n | 2.2 : WindowBay\n | 1.0 : WallPanel\n }\n\nUpperFacade -->\n split(x) {\n 1.1 : WallPanel\n | 2.3 : WindowBay\n | 1.1 : WallPanel\n | 3.2 : BalconyBay\n | 1.1 : WallPanel\n | 2.3 : WindowBay\n | 0.9 : WallPanel\n }\n\nWindowBay -->\n color(0.18, 0.25, 0.28)\n extrude(-0.12)\n frame(0.12)\n color(0.75, 0.82, 0.84)\n\nEntranceBay -->\n color(0.28, 0.18, 0.12)\n extrude(-0.15)\n frame(0.16)\n color(0.12, 0.18, 0.2)\n\nBalconyBay -->\n Balcony\n\nBalcony -->\n color(0.78, 0.72, 0.61)\n extrude(0.25)\n s(1, balconyDepth, 1)\n BalconySlab\n\nBalconySlab -->\n split(z) {\n 0.15 : BalconyFront\n | ~1 : BalconyDeck\n }\n\nBalconyFront -->\n color(0.65, 0.58, 0.48)\n BalconyRail\n\nBalconyDeck -->\n color(0.72, 0.66, 0.55)\n BalconyRail\n\nBalconyRail -->\n alignScopeToGeometry(y)\n split(x) {\n 0.12 : RailPost\n | ~1 : RailPanel\n | 0.12 : RailPost\n }\n\nRailPost -->\n color(0.12, 0.12, 0.1)\n extrude(1.0)\n\nRailPanel -->\n color(0.16, 0.16, 0.14)\n extrude(0.08)\n\nWallPanel -->\n color(0.82, 0.76, 0.65)\n\nSideFacade -->\n color(0.76, 0.70, 0.59)\n split(y) {\n 0.8 : SideBase\n | ~1 : SideUpper\n }\n\nSideBase -->\n color(0.72, 0.66, 0.55)\n\nSideUpper -->\n color(0.76, 0.70, 0.59)\n\nRoof -->\n color(0.22, 0.12, 0.08)\n roofHip(1.8)\n"
查看原始结果 JSON →e996442c-e3dc-4232-9796-2bfbcb212ce7
run evidence
一个抽象的现代雕塑产品造型
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"version \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 8\nattr depth = 5\nattr height = 6\nattr baseHeight = 0.35\nattr lowerHeight = height * 0.23\nattr middleHeight = height * 0.27\nattr upperHeight = height * 0.30\nattr crownHeight = height - baseHeight - lowerHeight - middleHeight - upperHeight\n\n@StartRule\nLot -->\n s(width, 1, depth)\n center(xz)\n extrude(baseHeight)\n comp(f) { side: BaseSide | top: LowerMass | bottom: Ground }\n\nBaseSide -->\n color(\"#20252B\")\n\nGround -->\n color(\"#111418\")\n\nLowerMass -->\n s(0.84, 1, 0.84)\n rot(y, -18)\n extrude(lowerHeight)\n comp(f) { side: LowerSide | top: MiddleMass | bottom: LowerBottom }\n\nLowerSide -->\n color(\"#59636D\")\n\nLowerBottom -->\n color(\"#303840\")\n\nMiddleMass -->\n s(0.78, 1, 0.78)\n rot(y, 38)\n extrude(middleHeight)\n comp(f) { side: MiddleSide | top: UpperMass | bottom: MiddleBottom }\n\nMiddleSide -->\n color(\"#AEB8BF\")\n\nMiddleBottom -->\n color(\"#68737B\")\n\nUpperMass -->\n s(0.68, 1, 0.68)\n rot(y, -27)\n extrude(upperHeight)\n comp(f) { side: UpperSide | top: CrownMass | bottom: UpperBottom }\n\nUpperSide -->\n color(\"#D7DDE0\")\n\nUpperBottom -->\n color(\"#8D989F\")\n\nCrownMass -->\n s(0.58, 1, 0.58)\n rot(y, 34)\n extrude(crownHeight)\n comp(f) { side: CrownSide | top: CrownTop | bottom: CrownBottom }\n\nCrownSide -->\n color(\"#6E7B84\")\n\nCrownTop -->\n color(\"#F2F4F5\")\n\nCrownBottom -->\n color(\"#A5B0B7\")\n"
查看原始结果 JSON →ea78d30e-a324-4f9e-bba4-4908b7b1d25e
run evidence
十字路口街区,路宽12米
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -8.5]}; face_count=10; vertex_count=20; volume=1.08e+04; surface_area=2880
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr roadWidth = 12\nattr lotWidth = 12\nattr lotDepth = 7\nattr buildingWidth = 10\nattr buildingDepth = 5\nattr buildingHeight = 10\nattr sidewalkWidth = 1\nattr roadThickness = 0.15\nattr randomSeed = 777\n\n@StartRule\nLot -->\n setSeed(randomSeed)\n split(y) {\n sidewalkWidth: Sidewalk\n |\n ~1: Block\n |\n sidewalkWidth: Sidewalk\n }\n\nSidewalk -->\n color(\"#777777\")\n extrude(roadThickness)\n\nBlock -->\n split(x) {\n ~1: BuildingZone\n |\n ~1: Courtyard\n }\n\nBuildingZone -->\n split(y) {\n ~1: Building\n |\n ~1: ServiceYard\n }\n\nBuilding -->\n split(x) {\n ~1: BuildingMass\n |\n ~1: BuildingMass\n }\n\nBuildingMass -->\n color(\"#C99A6B\")\n extrude(buildingHeight)\n\nCourtyard -->\n color(\"#6B8E23\")\n extrude(0.08)\n\nServiceYard -->\n color(\"#A9A9A9\")\n extrude(0.08)\n"
查看原始结果 JSON →ea817f17-f538-4664-b2f5-17e8b66c9534
run evidence
三层沿街商铺,平屋顶带女儿墙
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -11.5, -3.5]}; face_count=86; vertex_count=172; volume=672; surface_area=689
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=76; surface_area=961; vertex_count=152; volume=5628
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -10.5, -16.5]}; face_count=10; vertex_count=20; volume=6300; surface_area=1650
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: shop, commercial, floor, floors, roof, flat\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floorHeight = 3.5\nattr parapetHeight = 1.0\n\n@StartRule\nBuilding -->\n extrude(floorHeight * 3) Mass\n\nMass -->\n comp(f) {\n side : Facade\n | top : Roof\n | bottom : Ground\n }\n\nFacade -->\n split(y) {\n floorHeight : Storey\n | floorHeight : Storey\n | floorHeight : Storey\n }\n\nStorey -->\n split(y) {\n 0.35 : BaseBand\n | 2.5 : Shopfront\n | 0.65 : HeaderBand\n }\n\nBaseBand -->\n color(\"#5A4638\")\n\nShopfront -->\n color(\"#C7D6D8\")\n\nHeaderBand -->\n color(\"#8B6F5A\")\n\nGround -->\n color(\"#6B6258\")\n\nRoof -->\n extrude(parapetHeight) Parapet\n\nParapet -->\n comp(f) {\n side : ParapetWall\n | top : RoofSurface\n | bottom : RoofDeck\n }\n\nParapetWall -->\n color(\"#B8A38C\")\n\nRoofSurface -->\n color(\"#6F655D\")\n\nRoofDeck -->\n color(\"#85776A\")\n"
查看原始结果 JSON →ecb9f940-8c46-4787-951e-ff081a9d3043
run evidence
十字路口街区,路宽12米
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -9.0, -3.5]}; face_count=26; vertex_count=20; volume=18.3; surface_area=146.9
- nl2cga CE-vs-runtime deltas: bbox=21; face_count=16; surface_area=2733; vertex_count=0; volume=1.078e+04
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -8.5]}; face_count=10; vertex_count=20; volume=1.08e+04; surface_area=2880
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr roadWidth = 12\nattr originalWidth = 12\nattr originalDepth = 7\nattr blockScale = 2\nattr buildingHeight = 9\nattr roadThickness = 0.15\nattr sideX = (originalWidth * blockScale - roadWidth) / 2\nattr sideZ = (originalDepth * blockScale - roadWidth) / 2\nattr randomSeed = 3\n\n@StartRule\nStart -->\n setSeed(randomSeed)\n s(blockScale, 1, blockScale)\n Crossroad\n\nCrossroad -->\n split(x) {\n sideX: WestBand\n | roadWidth: RoadSurface\n | sideX: EastBand\n }\n\nWestBand -->\n split(z) {\n sideZ: Building\n | roadWidth: RoadSurface\n | sideZ: Building\n }\n\nEastBand -->\n split(z) {\n sideZ: Building\n | roadWidth: RoadSurface\n | sideZ: Building\n }\n\nBuilding -->\n extrude(buildingHeight)\n BuildingVolume\n\nBuildingVolume -->\n color(\"#B8A28D\")\n\nRoadSurface -->\n extrude(roadThickness)\n RoadVolume\n\nRoadVolume -->\n color(\"#4A4A4A\")\n"
查看原始结果 JSON →ed2763e5-0cb9-4159-a20b-5973057696c8
run evidence
请建模一个住宅别墅,尺度约18.00米长、12.00米宽、4.50米高,使用浅灰清水混凝土,采用平屋顶,深檐遮阳,重点表现人字坡屋顶和落地窗;深檐遮阳变体1。
state: RUNNING
查看 CGA 与测量证据
Measured metrics
// student_ce.cga
"# semantic_tags: residential, concrete, gray, window, roof, flat, gable, 18.00, 12.00, 4.50, 1\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 18.0\nattr depth = 18 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 12.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 4.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 1\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~4.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
查看原始结果 JSON →edd47c54-5a92-4750-9d79-620c1d549013
run evidence
一个抽象的现代雕塑产品造型
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=1.8e+04; surface_area=3600
- runtime CE-vs-runtime deltas: bbox=30; face_count=0; vertex_count=0
// student_ce.cga
"version \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 12\nattr depth = 7\nattr plinthHeight = 0.45\nattr coreHeight = 5.2\nattr sideHeight = 3.4\nattr finHeight = 4.1\n\n@StartRule\nLot -->\n color(\"#3A3D42\")\n extrude(plinthHeight)\n comp(f) { top : SculptureTop | side : PlinthSide }\n\nSculptureTop -->\n split(x) { 2.3 : LeftForm | 7.4 : CoreForm | 2.3 : RightForm }\n\nLeftForm -->\n s(0.82, 1, 0.58)\n center(xz)\n r(y, -22)\n color(\"#D8B26E\")\n extrude(sideHeight)\n\nCoreForm -->\n s(0.72, 1, 0.72)\n center(xz)\n color(\"#E6E8EA\")\n extrude(coreHeight)\n\nRightForm -->\n s(0.82, 1, 0.58)\n center(xz)\n r(y, 22)\n color(\"#8C9AA6\")\n extrude(finHeight)\n\nPlinthSide -->\n color(\"#25282C\")\n"
查看原始结果 JSON →ee140723-6eb2-416f-86a3-248341ed2335
run evidence
一棵苹果树
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [2.4, 0.0, 1.3], 'min': [-2.5, -5.97, -5.9]}; face_count=192; vertex_count=112; volume=77.26; surface_area=197.9
- runtime CE-vs-runtime deltas: bbox=8.7; face_count=290; vertex_count=134
// student_ce.cga
"attr trunkHeight = 2.2\nattr trunkRadius = 0.15\nattr canopySize = 2.6\n\n@StartRule\nLot -->\n\tTrunk\n\nTrunk -->\n\tprimitiveCylinder(7)\n\ts(trunkRadius, trunkHeight, trunkRadius)\n\tcenter(xz)\n\tt(0, 0, 0)\n\tcolor(0.35, 0.22, 0.12)\n\tCanopy\n\nCanopy -->\n\tprimitiveSphere(8)\n\ts(canopySize, canopySize*0.85, canopySize)\n\tcenter(xz)\n\tt(0, trunkHeight + canopySize*0.35, 0)\n\tcolor(0.25, 0.5, 0.2)\n\tFruits\n\nFruits -->\n\tcopy()\n\tcopy()\n\tcopy()\n\tFruit(1.1, 0.3)\n\tFruit(-0.9, 1.8)\n\tFruit(0.2, 3.6)\n\tFruit(-1.2, 4.6)\n\nFruit(dx, dz) -->\n\tt(dx, canopySize*0.25, dz)\n\tprimitiveSphere(6)\n\ts(0.12, 0.13, 0.12)\n\tcenter(xyz)\n\tcolor(0.85, 0.1, 0.1)"
// teacher_ce.cga
"version \"2024.1\"\n\nattr treeHeight = 8\nattr trunkHeight = 3\nattr crownWidth = 5\nattr crownDepth = 4\nattr trunkRadius = 0.28\nattr appleRadius = 0.14\n\n@StartRule\nTree -->\n s(crownWidth, 1, crownDepth)\n extrude(treeHeight)\n split(y) {\n trunkHeight : Trunk\n |\n treeHeight - trunkHeight : Crown\n }\n\nTrunk -->\n color(\"#6B3E1E\")\n s(2 * trunkRadius / crownWidth, 1, 2 * trunkRadius / crownDepth)\n primitiveCylinder\n\nCrown -->\n split(x) {\n 0.3 : LeafMass\n |\n 0.4 : AppleBand\n |\n 0.3 : LeafMass\n }\n\nLeafMass -->\n color(\"#3E7D32\")\n s(1, 0.82, 1)\n primitiveSphere\n\nAppleBand -->\n split(z) {\n 0.33 : Apple\n |\n 0.34 : Apple\n |\n 0.33 : Apple\n }\n\nApple -->\n color(\"#C62828\")\n s(2 * appleRadius / (crownWidth * 0.4), 2 * appleRadius / treeHeight, 2 * appleRadius / crownDepth)\n primitiveSphere\n"
查看原始结果 JSON →ee6292ef-8e72-4fd4-a729-77032d69015f
run evidence
一座带钟楼的三层老火车站
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.12, 0.0, 3.62], 'min': [-6.12, -12.864, -7.18]}; face_count=564; vertex_count=519; volume=405.4; surface_area=872.3
- nl2cga CE-vs-runtime deltas: bbox=17.88; face_count=554; surface_area=777.7; vertex_count=499; volume=5895
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -10.5, -16.5]}; face_count=10; vertex_count=20; volume=6300; surface_area=1650
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, floor, floors\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 12\nattr lotDepth = 7\nattr floorHeight = 3.2\nattr mainHeight = floorHeight * 3\nattr towerWidth = 3\nattr towerDepth = 3\nattr towerHeight = 5\nattr wallColor = \"#8B7355\"\nattr trimColor = \"#D8C39B\"\nattr roofColor = \"#4A3024\"\nattr windowColor = \"#243746\"\nattr clockColor = \"#E8D7A8\"\n\n@StartRule\nStart -->\n MainStation\n Tower\n\nMainStation -->\n extrude(mainHeight)\n MainBody\n\nMainBody -->\n comp(f) {\n front: MainFacade |\n back: MainFacade |\n left: SideFacade |\n right: SideFacade |\n top: MainRoof |\n bottom: NIL\n }\n\nMainFacade -->\n color(wallColor)\n split(y) {\n floorHeight: StoreyFacade |\n floorHeight: StoreyFacade |\n floorHeight: StoreyFacade\n }\n\nSideFacade -->\n color(wallColor)\n split(y) {\n floorHeight: StoreyFacade |\n floorHeight: StoreyFacade |\n floorHeight: StoreyFacade\n }\n\nStoreyFacade -->\n split(x) {\n 1.0: WallPier |\n ~2.0: WindowBay |\n 1.0: WallPier |\n ~2.0: WindowBay |\n 1.0: WallPier |\n ~2.0: WindowBay |\n 1.0: WallPier\n }\n\nWindowBay -->\n color(windowColor)\n extrude(0.12)\n\nWallPier -->\n color(wallColor)\n\nMainRoof -->\n color(roofColor)\n roofShed(25, 0)\n\nTower -->\n s(towerWidth / lotWidth, towerDepth / lotDepth, 1)\n t((lotWidth - towerWidth) / 2, (lotDepth - towerDepth) / 2, mainHeight)\n extrude(towerHeight)\n TowerBody\n\nTowerBody -->\n comp(f) {\n front: TowerFront |\n back: TowerWall |\n left: TowerWall |\n right: TowerWall |\n top: TowerRoof |\n bottom: NIL\n }\n\nTowerFront -->\n color(wallColor)\n split(y) {\n 1.5: TowerWall |\n 2.0: ClockFace |\n ~1.5: TowerWall\n }\n\nTowerWall -->\n color(wallColor)\n\nClockFace -->\n color(clockColor)\n extrude(0.08)\n\nTowerRoof -->\n color(roofColor)\n roofPyramid(35)\n"
查看原始结果 JSON →eee533a8-8179-4fe8-88cf-1c3165e1034f
run evidence
生成100米长、宽20米的街区道路,两侧有人行道
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [2.333, 0.0, 3.5], 'min': [-6.0, -0.15, 2.5]}; face_count=12; vertex_count=8; volume=1.25; surface_area=19.47
- nl2cga CE-vs-runtime deltas: bbox=91.67; face_count=2; surface_area=9181; vertex_count=12; volume=6e+04
- runtime: bbox={'max': [94.0, 0.0, 3.5], 'min': [-6.0, -30.0, -16.5]}; face_count=10; vertex_count=20; volume=6e+04; surface_area=9200
- runtime CE-vs-runtime deltas: bbox=96.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: street, road, sidewalk, 100, 20\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 100.0\nattr depth = 100 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr blockLength = 100\nattr blockWidth = 20\nattr sidewalkWidth = 2.5\nattr sidewalkHeight = 0.15\nattr roadThickness = 0.1\nattr randomSeed = 3\n\n@StartRule\nBlock -->\n s(blockLength / 12, blockWidth / 7, 1)\n split(y) {\n sidewalkWidth : Sidewalk\n | ~1 : Road\n | sidewalkWidth : Sidewalk\n }\n\nSidewalk -->\n extrude(sidewalkHeight)\n color(\"#B8B8B8\")\n\nRoad -->\n extrude(roadThickness)\n color(\"#404040\")\n"
查看原始结果 JSON →ef550968-9cbf-4438-872a-f1d03fbe34e0
run evidence
生成一个带双坡屋顶的六层灰色住宅建筑,立面有规则窗格
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, gray, window, floor, floors, roof, gable\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.5, 0.5, 0.52) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.5, 0.5, 0.52)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 12\nattr buildingDepth = 7\nattr floorHeight = 3\nattr floorCount = 6\nattr roofAngle = 30\nattr wallColor = \"#808080\"\nattr windowColor = \"#B8D4E8\"\nattr frameColor = \"#4A4A4A\"\nattr roofColor = \"#555555\"\nattr groundColor = \"#707070\"\n\n@StartRule\nStart -->\n extrude(floorCount * floorHeight)\n Mass;\n\nMass -->\n comp(f) {\n side : Facade |\n top : Roof |\n bottom : Ground\n };\n\nFacade -->\n color(wallColor)\n split(y) { floorHeight : Floor }*;\n\nFloor -->\n split(x) {\n ~1 : Wall |\n ~2 : Window |\n ~1 : Wall |\n ~2 : Window |\n ~1 : Wall\n };\n\nWall -->\n color(wallColor);\n\nWindow -->\n color(frameColor)\n split(x) {\n ~1 : GlassPane |\n 0.08 : Frame |\n ~1 : GlassPane\n };\n\nGlassPane -->\n color(windowColor)\n extrude(0.06);\n\nFrame -->\n color(frameColor);\n\nRoof -->\n roofGable(roofAngle)\n color(roofColor);\n\nGround -->\n color(groundColor);\n"
查看原始结果 JSON →f093deba-0e9f-4986-8d1e-3a701e28e874
run evidence
生成跨度24米、长60米、高8米的工业厂房
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [54.0, 0.0, 3.5], 'min': [-6.0, -8.0, -20.5]}; face_count=10; vertex_count=20; volume=1.152e+04; surface_area=2784
- runtime CE-vs-runtime deltas: bbox=56.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: factory, industrial, 24, 60, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 60.0\nattr depth = 60 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 24.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 8.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr width = 24\nattr depth = 60\nattr height = 8\n\n@StartRule\nLot -->\n alignScopeToGeometry(yUp, 0)\n s(width / scope.x, 1, depth / scope.z)\n extrude(height)\n Building\n\nBuilding -->\n comp(f) {\n side: Facade\n | top: Roof\n | bottom: Foundation\n }\n\nFacade -->\n color(\"#B8BEC5\")\n\nRoof -->\n color(\"#6B7280\")\n\nFoundation -->\n color(\"#707780\")\n"
查看原始结果 JSON →f39f2e9b-7c8f-4ac3-a951-d9d1a17cafb4
run evidence
请建模一个住宅别墅,尺度约20.10米长、13.20米宽、5.25米高,使用浅灰清水混凝土,采用拱形屋顶,深檐遮阳,重点表现窄面竖向窗带;模块化立面变体1。
state: QUEUED
查看 CGA 与测量证据
Measured metrics
(暂无 CGA 代码)
查看原始结果 JSON →f3b3fc4a-d1c3-442b-8b0f-120ba25a54e8
run evidence
一栋三层小楼
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -9.0, -3.5]}; face_count=28; vertex_count=56; volume=756; surface_area=510
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=18; surface_area=1140; vertex_count=36; volume=5544
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -10.5, -16.5]}; face_count=10; vertex_count=20; volume=6300; surface_area=1650
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, floor, floors\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 10.5\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floorHeight = 3\nattr floors = 3\nattr totalHeight = floorHeight * floors\n\n@StartRule\nStart --> extrude(totalHeight) Building\n\nBuilding -->\n comp(f) {\n side: Facade\n | top: Roof\n | bottom: Ground\n }\n\nFacade -->\n split(y) {\n floorHeight: Floor\n | floorHeight: Floor\n | floorHeight: Floor\n }\n\nFloor -->\n color(0.78, 0.72, 0.62)\n\nRoof -->\n color(0.35, 0.18, 0.10)\n\nGround -->\n color(0.25, 0.25, 0.25)\n"
查看原始结果 JSON →f41f3d10-d4b1-4060-a58e-75bf28c2bec1
run evidence
6层的住宅楼,红色坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -20.451, -3.5]}; face_count=14; vertex_count=30; volume=1615; surface_area=803.7
- nl2cga CE-vs-runtime deltas: bbox=18.5; face_count=2; surface_area=2759; vertex_count=2; volume=8935
- runtime: bbox={'max': [24.5, 0.0, 3.933], 'min': [-6.5, -26.774, -16.933]}; face_count=16; vertex_count=28; volume=1.055e+04; surface_area=3562
- runtime CE-vs-runtime deltas: bbox=26.77; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, residential, red, floor, floors, roof, gable, 6\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 21.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 6\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.2, 0.15) split(z) { ~3.5: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.2, 0.15)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr floors = 6\nattr floorHeight = 3.0\nattr roofHeight = 2.5\nattr roofAngle = 35\n\n@StartRule\nLot -->\n extrude(floors * floorHeight)\n comp(f) { side : Facade | top : Roof }\n\nFacade -->\n color(0.82, 0.82, 0.78)\n material(\"Concrete\")\n\nRoof -->\n roofGable(roofAngle)\n comp(f) { side : RoofSurface | top : RoofSurface }\n\nRoofSurface -->\n color(0.75, 0.03, 0.02)\n material(\"RoofTiles\")\n"
查看原始结果 JSON →f475268e-9cf1-4344-a08b-4c9d4cccc218
run evidence
高度15米、宽8米、深8米的办公楼,坡屋顶
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [-5.333, 0.0, 3.5], 'min': [-6.0, -15.192, 2.357]}; face_count=18; vertex_count=26; volume=7.697; surface_area=56.83
- nl2cga CE-vs-runtime deltas: bbox=7.833; face_count=2; surface_area=597.8; vertex_count=2; volume=797.3
- runtime: bbox={'max': [2.5, 0.0, 3.933], 'min': [-6.5, -17.309, -4.933]}; face_count=16; vertex_count=28; volume=805; surface_area=654.6
- runtime CE-vs-runtime deltas: bbox=17.31; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: building, roof, gable, 15, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 8.0\nattr depth = 8 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 8.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 15.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 4\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> roofGable(30, 0.5) color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 8\nattr buildingDepth = 8\nattr buildingHeight = 15\nattr roofAngle = 30\n\n@StartRule\nLot -->\n s(buildingWidth / 12, 1, buildingDepth / 7)\n extrude(buildingHeight)\n comp(f) { side : Facade | top : Roof | bottom : Foundation }\n\nFacade -->\n color(0.72, 0.76, 0.80)\n\nFoundation -->\n color(0.35, 0.36, 0.38)\n\nRoof -->\n roofGable(roofAngle)\n color(0.30, 0.18, 0.10)\n"
查看原始结果 JSON →f71a257d-ce2b-4c48-8848-ce0df3e65b45
run evidence
带烟囱的锅炉房,高12米
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [6.0, 0.0, 3.5], 'min': [-6.0, -16.0, -3.5]}; face_count=28; vertex_count=40; volume=1008; surface_area=557
- nl2cga CE-vs-runtime deltas: bbox=18; face_count=18; surface_area=1243; vertex_count=20; volume=6192
- runtime: bbox={'max': [24.0, 0.0, 3.5], 'min': [-6.0, -12.0, -16.5]}; face_count=10; vertex_count=20; volume=7200; surface_area=1800
- runtime CE-vs-runtime deltas: bbox=26.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: 12\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 30\nattr depth = 30 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 20\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 12.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 3\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingHeight = 12\nattr chimneyHeight = 4\nattr chimneyWidth = 1\nattr chimneyDepth = 1\n\n@StartRule\nBoilerRoom -->\n extrude(buildingHeight)\n comp(f) { side : Wall | top : RoofTop }\n\nWall -->\n color(\"#777777\")\n\nRoofTop -->\n split(x) { ~3 : RoofPanel | chimneyWidth : ChimneyBand | ~8 : RoofPanel }\n\nChimneyBand -->\n split(y) { ~3 : RoofPanel | chimneyDepth : Chimney | ~3 : RoofPanel }\n\nRoofPanel -->\n color(\"#444444\")\n\nChimney -->\n extrude(chimneyHeight)\n color(\"#555555\")\n"
查看原始结果 JSON →fc76ce2f-490c-45dd-b31c-07ed747ee835
run evidence
生成跨度24米、长60米、高8米的工业厂房
state: SUCCEEDED
查看 CGA 与测量证据
Measured metrics
- nl2cga: bbox={'max': [18.0, 0.0, 56.5], 'min': [-6.0, -8.0, -3.5]}; face_count=12; vertex_count=24; volume=1.152e+04; surface_area=4224
- nl2cga CE-vs-runtime deltas: bbox=53; face_count=2; surface_area=1440; vertex_count=4; volume=0
- runtime: bbox={'max': [54.0, 0.0, 3.5], 'min': [-6.0, -8.0, -20.5]}; face_count=10; vertex_count=20; volume=1.152e+04; surface_area=2784
- runtime CE-vs-runtime deltas: bbox=56.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: factory, industrial, 24, 60, 8\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 60.0\nattr depth = 60 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 24.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 8.0\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 2\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.8, 0.8, 0.82) split(z) { ~4.0: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.8, 0.8, 0.82)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr buildingWidth = 24\nattr buildingLength = 60\nattr buildingHeight = 8\n\n@StartRule\nLot -->\n alignScopeToAxes(y)\n s(buildingWidth, 1, buildingLength)\n extrude(buildingHeight)\n Building\n\nBuilding -->\n color(0.42, 0.45, 0.48)\n BuildingMass\n\nBuildingMass -->\n comp(f) { side : Facade | top : Roof | bottom : Ground }\n\nFacade -->\n color(0.48, 0.52, 0.56)\n\nRoof -->\n color(0.28, 0.30, 0.32)\n\nGround -->\n color(0.20, 0.22, 0.20)\n"
查看原始结果 JSON →fe1cf6db-7fa0-4c43-ad3f-70412703a92e
run evidence
生成50米x50米的景观绿地,中间有圆形花坛
state: PARTIAL
查看 CGA 与测量证据
Measured metrics
- runtime: bbox={'max': [44.0, 0.0, 3.5], 'min': [-6.0, -30.0, -46.5]}; face_count=10; vertex_count=20; volume=7.5e+04; surface_area=8500
- runtime CE-vs-runtime deltas: bbox=46.5; face_count=0; vertex_count=0
// student_ce.cga
"# semantic_tags: park, green, cylinder, 50\nversion \"2024.1\"\n\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(1)\nattr length = 50.0\nattr depth = 50 // canonical alias of length (P6 depth-attr 规范化)\n@Group(\"尺寸\",1) @Range(min=1, max=300) @Order(2)\nattr width = 50.0\n@Group(\"尺寸\",1) @Range(min=1, max=500) @Order(3)\nattr height = 30\n@Group(\"楼层\",1) @Range(min=1, max=100) @Order(4)\nattr floors = 8\n@Group(\"开间\",1) @Range(min=1, max=20) @Order(5)\nattr bays = 4\n\n@StartRule\nLot -->\n s(length, 1, width)\n primitiveQuad()\n extrude(height)\n comp(f){ top: Roof | side: Facade | bottom: NIL }\n\nRoof --> color(0.3, 0.3, 0.32)\n\nFacade --> color(0.3, 0.65, 0.35) split(z) { ~3.75: FloorBand }*\n\nFloorBand --> split(x) { ~0.6: Wall | 0.4: Window }*\nWall --> color(0.3, 0.65, 0.35)\nWindow --> color(0.3, 0.5, 0.7)\n"
// teacher_ce.cga
"version \"2024.1\"\n\nattr lotWidth = 50\nattr lotDepth = 50\nattr groundHeight = 0.15\nattr flowerbedDiameter = 10\nattr flowerbedHeight = 0.3\n\n@StartRule\nStart -->\n\tsetSeed(3)\n\t[\n\t\tcenter(xz)\n\t\ts('lotWidth, 'groundHeight, 'lotDepth)\n\t\tcolor(\"#4C8C3B\")\n\t\tprimitiveCube()\n\t]\n\t[\n\t\tcenter(xz)\n\t\ts('flowerbedDiameter, 'flowerbedHeight, 'flowerbedDiameter)\n\t\tcolor(\"#8B5A2B\")\n\t\tprimitiveCylinder(48)\n\t]\n"
查看原始结果 JSON →fedb03ab-6e71-48b6-a29e-22f8722cbd57
run evidence
请建模一个住宅别墅,尺度约19.40米长、12.80米宽、5.00米高,使用浅灰清水混凝土,采用锯齿屋顶,深檐遮阳,重点表现平屋顶退台;转角通高窗变体1。
state: QUEUED
查看 CGA 与测量证据
Measured metrics
(暂无 CGA 代码)
查看原始结果 JSON →