//별자리의 첫번째, 또는 첫번째 두번째 별(헤드)
FeatureScript 1913;
import(path : "onshape/std/geometry.fs", version : "1913.0");
annotation { "Feature Type Name" : "ConstelLinesHead" }
export const starLinePlane = defineFeature(function(context is Context, id is Id, definition is map)
precondition
{
annotation { "Name" : "Ra_1" }
isAngle(definition.jeokGyeong1, ANGLE_360_BOUNDS);
annotation { "Name" : "Dec_1" }
isAngle(definition.geoGeuk1, ANGLE_360_BOUNDS);
annotation { "Name" : "Mag_1" }
isLength(definition.magnitude1, LENGTH_BOUNDS);
annotation { "Name" : "Ra_2" }
isAngle(definition.jeokGyeong2, ANGLE_360_BOUNDS);
annotation { "Name" : "Dec_2" }
isAngle(definition.geoGeuk2, ANGLE_360_BOUNDS);
annotation { "Name" : "Mag_2" }
isLength(definition.magnitude2, LENGTH_BOUNDS);
}
{
var radius150 = 150 * millimeter;
var x1 = radius150 * sin(definition.geoGeuk1) * cos(definition.jeokGyeong1);
var y1 = radius150 * sin(definition.geoGeuk1) * sin(definition.jeokGyeong1);
var z1 = radius150 * cos(definition.geoGeuk1);
var ex1 = (radius150+2*millimeter) * sin(definition.geoGeuk1) * cos(definition.jeokGyeong1);
var ey1 = (radius150+2*millimeter) * sin(definition.geoGeuk1) * sin(definition.jeokGyeong1);
var ez1 = (radius150+2*millimeter) * cos(definition.geoGeuk1);
var vec1 = vector(ex1, ey1, ez1);
var magRadius1 = (4 * millimeter - definition.magnitude1/2) ;
fCylinder(context, id + "cylinder1", {
"topCenter" : vector(0, 0, 0) * millimeter,
"bottomCenter" : vec1,
"radius" : magRadius1,
"endBound" : BoundingType.THROUGH_ALL,
});
if (definition.jeokGyeong2 != 30*degree){
var x2 = radius150 * sin(definition.geoGeuk2) * cos(definition.jeokGyeong2);
var y2 = radius150 * sin(definition.geoGeuk2) * sin(definition.jeokGyeong2);
var z2 = radius150 * cos(definition.geoGeuk2);
var ex2 = (radius150+2*millimeter) * sin(definition.geoGeuk2) * cos(definition.jeokGyeong2);
var ey2 = (radius150+2*millimeter) * sin(definition.geoGeuk2) * sin(definition.jeokGyeong2);
var ez2 = (radius150+2*millimeter) * cos(definition.geoGeuk2);
var vec2 = vector(ex2, ey2, ez2);
var magRadius2 = (4 * millimeter - definition.magnitude2/2) ;
fCylinder(context, id + "cylinder2", {
"topCenter" : vector(0, 0, 0) * millimeter,
"bottomCenter" : vec2,
"radius" : magRadius2,
"endBound" : BoundingType.THROUGH_ALL,
});
var angle = acos(((x1*x2+y1*y2+z1*z2)/radius150^2));
var normalVec = vector(y1*z2-z1*y2, z1*x2-x1*z2, x1*y2-y1*x2);
var constelLinePlane is Plane = plane(WORLD_ORIGIN, normalVec, vec1);
var radius = radius150 / millimeter;
var sketch1 = newSketchOnPlane(context, id + "sketch1", {
"sketchPlane" : constelLinePlane
});
skArc(sketch1, "constelLine", {
"start" : vector((radius+1), 0) * millimeter,
"mid" : vector((radius+1)*cos(angle/2), (radius+1)*sin(angle/2)) * millimeter,
"end" : vector((radius+1)*cos(angle), (radius+1)*sin(angle))*millimeter
});
skLineSegment(sketch1, "vec1", {
"start" : vector(0, 0) * millimeter,
"end" : vector((radius+1), 0) * millimeter
});
skLineSegment(sketch1, "vec2", {
"start" : vector(0, 0) * millimeter,
"end" : vector((radius+1)*cos(angle), (radius+1)*sin(angle)) * millimeter
});
skSolve(sketch1);
var regionToExtrude = qContainsPoint(qSketchRegion(id + "sketch1"), WORLD_ORIGIN);
debug(context, regionToExtrude);
opThicken(context, id + "thicken1", {
"entities" : regionToExtrude,
"thickness1" : 0.5* millimeter,
"thickness2" : 0.5 * millimeter,
"endBound" : BoundingType.THROUGH_ALL,
});
opFillet(context, id + "fillet2", {
"entities" : qCreatedBy(id + "cylinder2", EntityType.EDGE),
"radius" : magRadius2
});
opFillet(context, id + "fillet3", {
"entities" : qCreatedBy(id + "thicken1", EntityType.EDGE),
"radius" : 0.5*millimeter
});
}
opFillet(context, id + "fillet1", {
"entities" : qCreatedBy(id + "cylinder1", EntityType.EDGE),
"radius" : magRadius1
});
});
//눈금선 그리기
FeatureScript 1913;
import(path : "onshape/std/geometry.fs", version : "1913.0");
annotation { "Feature Type Name" : "scale_maker" }
export const myFeature = defineFeature(function(context is Context, id is Id, definition is map)
precondition
{
annotation { "Name" : "Face", "Filter" : EntityType.FACE }
definition.face is Query;
}
{
//var normalVec = definition.face.normal;
//var xAxis = evLine(context, {"edge": definition.direction}).direction;
var skPlane = evPlane(context, {"face": definition.face});
print(skPlane.normal);
//var skPlane =
var sketch1 = newSketchOnPlane(context, id + "sketch1", {
"sketchPlane" : skPlane
});
//var origin = vector(skPlane.origin)
for (var i = 0; i < 360; i += 1)
{
var angle = i * degree;
var x_x;
var y_x;
var xstart_x;
var ystart_x;
var x_y;
var y_y;
var xstart_y;
var ystart_y;
if (i % 30 == 0) {
x_x = 180 * cos(angle);
y_x = 180 * sin(angle)+1* cos(angle);
xstart_x = 160 * cos(angle);
ystart_x = 160 * sin(angle)+1* cos(angle);
x_y = 180 * cos(angle)+1 * sin(angle);
y_y = 180 * sin(angle);
xstart_y = 160 * cos(angle)+1 * sin(angle);
ystart_y = 160 * sin(angle);
} else if(i % 10 == 0) {
x_x = 175 * cos(angle);
y_x = 175 * sin(angle)+1* cos(angle);
xstart_x = 160 * cos(angle);
ystart_x = 160 * sin(angle)+1* cos(angle);
x_y = 175 * cos(angle)+1 * sin(angle);
y_y = 175 * sin(angle);
xstart_y = 160 * cos(angle)+1 * sin(angle);
ystart_y = 160 * sin(angle);
} else {
x_x = 170 * cos(angle);
y_x = 170 * sin(angle)+1* cos(angle);
xstart_x = 160 * cos(angle);
ystart_x = 160 * sin(angle)+1* cos(angle);
x_y = 170 * cos(angle)+1 * sin(angle);
y_y = 170 * sin(angle);
xstart_y = 160 * cos(angle)+1 * sin(angle);
ystart_y = 160 * sin(angle);
}
skLineSegment(sketch1, "vec1" ~ toString(i), {
"start" : vector(xstart_x, ystart_x) * millimeter,
"end" : vector(x_x, y_x) * millimeter
});
skLineSegment(sketch1, "vec2" ~ toString(i), {
"start" : vector(x_x, y_x) * millimeter,
"end" : vector(x_y, y_y) * millimeter
});
skLineSegment(sketch1, "vec3" ~ toString(i), {
"end" : vector(xstart_y, ystart_y) * millimeter,
"start" : vector(x_y, y_y) * millimeter
});
skLineSegment(sketch1, "vec4" ~ toString(i), {
"start" : vector(xstart_y, ystart_y) * millimeter,
"end" : vector(xstart_x, ystart_x) * millimeter
});
}
var sketch_cir = newSketchOnPlane(context, id + "sketch_cir", {
"sketchPlane" : skPlane
});
skCircle(sketch_cir, "circle1", {
"center" : vector(0, 0) * millimeter,
"radius" : 170 * millimeter
});
skCircle(sketch_cir, "circle1_t", {
"center" : vector(0, 0) * millimeter,
"radius" : 171 * millimeter
});
skCircle(sketch_cir, "circle2", {
"center" : vector(0, 0) * millimeter,
"radius" : 175 * millimeter
});
skCircle(sketch_cir, "circle2_t", {
"center" : vector(0, 0) * millimeter,
"radius" : 176 * millimeter
});
skCircle(sketch_cir, "circle3", {
"center" : vector(0, 0) * millimeter,
"radius" : 180 * millimeter
});
skCircle(sketch_cir, "circle3_t", {
"center" : vector(0, 0) * millimeter,
"radius" : 181 * millimeter
});
skSolve(sketch1);
skSolve(sketch_cir);
opExtrude(context, id + "extrude1", {
"entities" : qSketchRegion(id + "sketch1", true),
"direction" : skPlane.normal,
"endBound" : BoundingType.BLIND,
"endDepth" : 1*millimeter
});
});