How to engrave(rotate) text on a slope

var geometry = new THREE.CylinderGeometry(10, 25, 160, 4, 1);
var material = new THREE.MeshPhongMaterial({ color: 0xeeeeee });
var texture = new THREE.ImageUtils.loadTexture("yu.jpg");
material.map = texture;
var mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

geometry = new THREE.CylinderGeometry(0, 10, 10, 4, 1);
mesh = new THREE.Mesh(geometry, material);
mesh.position.set(0, 85, 0);
scene.add(mesh);

geometry = new THREE.CylinderGeometry(100, 100, 1, 100, 1);
mesh = new THREE.Mesh(geometry, material);
mesh.position.set(0, -80, 0);
scene.add(mesh);

var text = new THREE.FontLoader().load('xingkai.json', function (text) {
    geometry = new THREE.TextGeometry('A\nB\nC\nD\nE\nF\nG', {
	    size: 10,
	    height: 3,
	    weight: 'normal',
	    font: text,
	    style: 'normal',
	   curveSegments: 30,
});
var material_text = new THREE.MeshPhongMaterial({ color: 0xffd700 });
mesh = new THREE.Mesh(geometry, material_text);
mesh.position.set(10, 40, 20);
mesh.rotation.set(0, 45, 0);
scene.add(mesh);
});

var ambient = new THREE.AmbientLight(0xffffff);
scene.add(ambient);


You could try to solve this problem with a CSG (Constructive Solid Geometry) library. For example:

Before CSG, the text position(angle) is not corect yet !

As mentioned at github, an enhancement of TextGeometry is necessary in order to define the text direction:

Or you try the mentioned workaround.

You do not figure out what I need.

Okay, this picture makes it more clear. You can try to offset the pivot point via BufferGeometry.translate() and then rotate the mesh via Object3D.rotation.

Solved ! It seem Geometry.translate and rotate change the axes of the object.
How to get the Geometry.height, then I can translate(0, Geometry.height, 0) automaticly.

var text = new THREE.FontLoader().load('xingkai.json', function (text) {
	geometry = new THREE.TextGeometry('A\nB\nC\nD\nE\nF\nG', {
		size: 10,
		height: 3,
		weight: 'normal',
		font: text,
		style: 'normal',
		curveSegments: 30,
	});
	geometry.translate(-7, 100, 15);
	geometry.rotateX(0.02 - Math.atan((25-10)/160));
	geometry.rotateY(Math.PI/4);
	var material_text = new THREE.MeshPhongMaterial({ color: 0xffd700 });
	mesh = new THREE.Mesh(geometry, material_text);
	mesh.position.set(0, -60, 0);
	scene.add(mesh);
});