Rewrite equation for pt-on-circle to avoid negative diameter.
parent
8fd11f4886
commit
43dc16262a
|
@ -425,8 +425,7 @@ void ConstraintBase::GenerateEquations(IdList<Equation,hEquation> *l,
|
||||||
|
|
||||||
Expr *r = circle->CircleGetRadiusExpr();
|
Expr *r = circle->CircleGetRadiusExpr();
|
||||||
|
|
||||||
AddEq(l,
|
AddEq(l, du->Square()->Plus(dv->Square())->Sqrt()->Minus(r), 0);
|
||||||
((du->Square())->Plus(dv->Square()))->Minus(r->Square()), 0);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,364 @@
|
||||||
|
±²³SolveSpaceREVa
|
||||||
|
|
||||||
|
|
||||||
|
Group.h.v=00000001
|
||||||
|
Group.type=5000
|
||||||
|
Group.name=#references
|
||||||
|
Group.color=ff000000
|
||||||
|
Group.skipFirst=0
|
||||||
|
Group.predef.swapUV=0
|
||||||
|
Group.predef.negateU=0
|
||||||
|
Group.predef.negateV=0
|
||||||
|
Group.visible=1
|
||||||
|
Group.suppress=0
|
||||||
|
Group.relaxConstraints=0
|
||||||
|
Group.allowRedundant=0
|
||||||
|
Group.allDimsReference=0
|
||||||
|
Group.remap={
|
||||||
|
}
|
||||||
|
AddGroup
|
||||||
|
|
||||||
|
Group.h.v=00000002
|
||||||
|
Group.type=5001
|
||||||
|
Group.order=1
|
||||||
|
Group.name=sketch-in-plane
|
||||||
|
Group.activeWorkplane.v=80020000
|
||||||
|
Group.color=ff000000
|
||||||
|
Group.subtype=6000
|
||||||
|
Group.skipFirst=0
|
||||||
|
Group.predef.q.w=1.00000000000000000000
|
||||||
|
Group.predef.origin.v=00010001
|
||||||
|
Group.predef.swapUV=0
|
||||||
|
Group.predef.negateU=0
|
||||||
|
Group.predef.negateV=0
|
||||||
|
Group.visible=1
|
||||||
|
Group.suppress=0
|
||||||
|
Group.relaxConstraints=0
|
||||||
|
Group.allowRedundant=0
|
||||||
|
Group.allDimsReference=0
|
||||||
|
Group.remap={
|
||||||
|
}
|
||||||
|
AddGroup
|
||||||
|
|
||||||
|
Param.h.v.=00010010
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00010011
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00010012
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00010020
|
||||||
|
Param.val=1.00000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00010021
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00010022
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00010023
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00020010
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00020011
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00020012
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00020020
|
||||||
|
Param.val=0.50000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00020021
|
||||||
|
Param.val=0.50000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00020022
|
||||||
|
Param.val=0.50000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00020023
|
||||||
|
Param.val=0.50000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00030010
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00030011
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00030012
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00030020
|
||||||
|
Param.val=0.50000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00030021
|
||||||
|
Param.val=-0.50000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00030022
|
||||||
|
Param.val=-0.50000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00030023
|
||||||
|
Param.val=-0.50000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00040010
|
||||||
|
Param.val=9.99958442064562014195
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00040011
|
||||||
|
Param.val=5.00000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00040040
|
||||||
|
Param.val=-4.99958442064562014195
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00050010
|
||||||
|
Param.val=5.00000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00050011
|
||||||
|
Param.val=5.00000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00060010
|
||||||
|
Param.val=14.99916884129124028391
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Param.h.v.=00060011
|
||||||
|
Param.val=5.00000000000000000000
|
||||||
|
AddParam
|
||||||
|
|
||||||
|
Request.h.v=00000001
|
||||||
|
Request.type=100
|
||||||
|
Request.group.v=00000001
|
||||||
|
Request.construction=0
|
||||||
|
AddRequest
|
||||||
|
|
||||||
|
Request.h.v=00000002
|
||||||
|
Request.type=100
|
||||||
|
Request.group.v=00000001
|
||||||
|
Request.construction=0
|
||||||
|
AddRequest
|
||||||
|
|
||||||
|
Request.h.v=00000003
|
||||||
|
Request.type=100
|
||||||
|
Request.group.v=00000001
|
||||||
|
Request.construction=0
|
||||||
|
AddRequest
|
||||||
|
|
||||||
|
Request.h.v=00000004
|
||||||
|
Request.type=400
|
||||||
|
Request.workplane.v=80020000
|
||||||
|
Request.group.v=00000002
|
||||||
|
Request.construction=0
|
||||||
|
AddRequest
|
||||||
|
|
||||||
|
Request.h.v=00000005
|
||||||
|
Request.type=101
|
||||||
|
Request.workplane.v=80020000
|
||||||
|
Request.group.v=00000002
|
||||||
|
Request.construction=0
|
||||||
|
AddRequest
|
||||||
|
|
||||||
|
Request.h.v=00000006
|
||||||
|
Request.type=101
|
||||||
|
Request.workplane.v=80020000
|
||||||
|
Request.group.v=00000002
|
||||||
|
Request.construction=0
|
||||||
|
AddRequest
|
||||||
|
|
||||||
|
Entity.h.v=00010000
|
||||||
|
Entity.type=10000
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.point[0].v=00010001
|
||||||
|
Entity.normal.v=00010020
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00010001
|
||||||
|
Entity.type=2000
|
||||||
|
Entity.construction=1
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00010020
|
||||||
|
Entity.type=3000
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.point[0].v=00010001
|
||||||
|
Entity.actNormal.w=1.00000000000000000000
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00020000
|
||||||
|
Entity.type=10000
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.point[0].v=00020001
|
||||||
|
Entity.normal.v=00020020
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00020001
|
||||||
|
Entity.type=2000
|
||||||
|
Entity.construction=1
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00020020
|
||||||
|
Entity.type=3000
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.point[0].v=00020001
|
||||||
|
Entity.actNormal.w=0.50000000000000000000
|
||||||
|
Entity.actNormal.vx=0.50000000000000000000
|
||||||
|
Entity.actNormal.vy=0.50000000000000000000
|
||||||
|
Entity.actNormal.vz=0.50000000000000000000
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00030000
|
||||||
|
Entity.type=10000
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.point[0].v=00030001
|
||||||
|
Entity.normal.v=00030020
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00030001
|
||||||
|
Entity.type=2000
|
||||||
|
Entity.construction=1
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00030020
|
||||||
|
Entity.type=3000
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.point[0].v=00030001
|
||||||
|
Entity.actNormal.w=0.50000000000000000000
|
||||||
|
Entity.actNormal.vx=-0.50000000000000000000
|
||||||
|
Entity.actNormal.vy=-0.50000000000000000000
|
||||||
|
Entity.actNormal.vz=-0.50000000000000000000
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00040000
|
||||||
|
Entity.type=13000
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.point[0].v=00040001
|
||||||
|
Entity.normal.v=00040020
|
||||||
|
Entity.distance.v=00040040
|
||||||
|
Entity.workplane.v=80020000
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00040001
|
||||||
|
Entity.type=2001
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.workplane.v=80020000
|
||||||
|
Entity.actPoint.x=9.99958442064562014195
|
||||||
|
Entity.actPoint.y=5.00000000000000000000
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00040020
|
||||||
|
Entity.type=3001
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.point[0].v=00040001
|
||||||
|
Entity.workplane.v=80020000
|
||||||
|
Entity.actNormal.w=1.00000000000000000000
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00040040
|
||||||
|
Entity.type=4000
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.workplane.v=80020000
|
||||||
|
Entity.actDistance=-4.99958442064562014195
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00050000
|
||||||
|
Entity.type=2001
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.workplane.v=80020000
|
||||||
|
Entity.actPoint.x=5.00000000000000000000
|
||||||
|
Entity.actPoint.y=5.00000000000000000000
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=00060000
|
||||||
|
Entity.type=2001
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.workplane.v=80020000
|
||||||
|
Entity.actPoint.x=14.99916884129124028391
|
||||||
|
Entity.actPoint.y=5.00000000000000000000
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=80020000
|
||||||
|
Entity.type=10000
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.point[0].v=80020002
|
||||||
|
Entity.normal.v=80020001
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=80020001
|
||||||
|
Entity.type=3010
|
||||||
|
Entity.construction=0
|
||||||
|
Entity.point[0].v=80020002
|
||||||
|
Entity.actNormal.w=1.00000000000000000000
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Entity.h.v=80020002
|
||||||
|
Entity.type=2012
|
||||||
|
Entity.construction=1
|
||||||
|
Entity.actVisible=1
|
||||||
|
AddEntity
|
||||||
|
|
||||||
|
Constraint.h.v=00000001
|
||||||
|
Constraint.type=90
|
||||||
|
Constraint.group.v=00000002
|
||||||
|
Constraint.workplane.v=80020000
|
||||||
|
Constraint.valA=-9.99916884129124028391
|
||||||
|
Constraint.entityA.v=00040000
|
||||||
|
Constraint.other=0
|
||||||
|
Constraint.other2=0
|
||||||
|
Constraint.reference=1
|
||||||
|
Constraint.disp.offset.x=5.09750582376745420277
|
||||||
|
Constraint.disp.offset.y=5.06841431955496624084
|
||||||
|
AddConstraint
|
||||||
|
|
||||||
|
Constraint.h.v=00000002
|
||||||
|
Constraint.type=100
|
||||||
|
Constraint.group.v=00000002
|
||||||
|
Constraint.workplane.v=80020000
|
||||||
|
Constraint.ptA.v=00050000
|
||||||
|
Constraint.entityA.v=00040000
|
||||||
|
Constraint.other=0
|
||||||
|
Constraint.other2=0
|
||||||
|
Constraint.reference=0
|
||||||
|
AddConstraint
|
||||||
|
|
||||||
|
Constraint.h.v=00000003
|
||||||
|
Constraint.type=100
|
||||||
|
Constraint.group.v=00000002
|
||||||
|
Constraint.workplane.v=80020000
|
||||||
|
Constraint.ptA.v=00060000
|
||||||
|
Constraint.entityA.v=00040000
|
||||||
|
Constraint.other=0
|
||||||
|
Constraint.other2=0
|
||||||
|
Constraint.reference=0
|
||||||
|
AddConstraint
|
||||||
|
|
|
@ -15,3 +15,9 @@ TEST_CASE(normal_migrate_from_v22) {
|
||||||
CHECK_LOAD("normal_v22.slvs");
|
CHECK_LOAD("normal_v22.slvs");
|
||||||
CHECK_SAVE("normal.slvs");
|
CHECK_SAVE("normal.slvs");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE(negative_dia) {
|
||||||
|
CHECK_LOAD("negative_dia.slvs");
|
||||||
|
Entity *e = SK.GetEntity(hRequest { 4 }.entity(0));
|
||||||
|
CHECK_TRUE(e->CircleGetRadiusNum() > 0);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue