Merge branch 'rel-4.1'
This commit is contained in:
commit
979458026b
5 changed files with 18 additions and 12 deletions
|
|
@ -1266,7 +1266,7 @@ CAM.init = function(kiri, api) {
|
||||||
centers = centers ?? []
|
centers = centers ?? []
|
||||||
// list of all hole centers and if they are selected
|
// list of all hole centers and if they are selected
|
||||||
kiri.api.widgets.for(widget => {
|
kiri.api.widgets.for(widget => {
|
||||||
const {holes} = centers.find(center=>center.id = widget.id)
|
const {holes} = centers.find(center=>center.id == widget.id)
|
||||||
// console.log(holes)
|
// console.log(holes)
|
||||||
if (!holes.length) unselectHoles(holes);
|
if (!holes.length) unselectHoles(holes);
|
||||||
holes.forEach(hole => {
|
holes.forEach(hole => {
|
||||||
|
|
@ -1791,7 +1791,7 @@ CAM.init = function(kiri, api) {
|
||||||
menu: UC.newRow([ UC.newButton("select", func.surfaceAdd) ], {class:"ext-buttons f-row"}),
|
menu: UC.newRow([ UC.newButton("select", func.surfaceAdd) ], {class:"ext-buttons f-row"}),
|
||||||
};
|
};
|
||||||
|
|
||||||
const drillOp =createPopOp('drill', {
|
createPopOp('drill', {
|
||||||
tool: 'camDrillTool',
|
tool: 'camDrillTool',
|
||||||
spindle: 'camDrillSpindle',
|
spindle: 'camDrillSpindle',
|
||||||
down: 'camDrillDown',
|
down: 'camDrillDown',
|
||||||
|
|
@ -1801,7 +1801,7 @@ CAM.init = function(kiri, api) {
|
||||||
mark: 'camDrillMark',
|
mark: 'camDrillMark',
|
||||||
precision:'camDrillPrecision',
|
precision:'camDrillPrecision',
|
||||||
thru: 'camDrillThru',
|
thru: 'camDrillThru',
|
||||||
|
fromTop: 'camDrillFromStockTop',
|
||||||
}).inputs = {
|
}).inputs = {
|
||||||
tool: UC.newSelect(LANG.cc_tool, {}, "tools"),
|
tool: UC.newSelect(LANG.cc_tool, {}, "tools"),
|
||||||
sep: UC.newBlank({class:"pop-sep"}),
|
sep: UC.newBlank({class:"pop-sep"}),
|
||||||
|
|
@ -1810,7 +1810,8 @@ CAM.init = function(kiri, api) {
|
||||||
down: UC.newInput(LANG.cc_sdwn_s, {title:LANG.cc_sdwn_l, convert:UC.toFloat, units:true}),
|
down: UC.newInput(LANG.cc_sdwn_s, {title:LANG.cc_sdwn_l, convert:UC.toFloat, units:true}),
|
||||||
dwell: UC.newInput(LANG.cd_dwll_s, {title:LANG.cd_dwll_l, convert:UC.toFloat}),
|
dwell: UC.newInput(LANG.cd_dwll_s, {title:LANG.cd_dwll_l, convert:UC.toFloat}),
|
||||||
lift: UC.newInput(LANG.cd_lift_s, {title:LANG.cd_lift_l, convert:UC.toFloat, units:true, show:() => !poppedRec.mark}),
|
lift: UC.newInput(LANG.cd_lift_s, {title:LANG.cd_lift_l, convert:UC.toFloat, units:true, show:() => !poppedRec.mark}),
|
||||||
mark: UC.newBoolean(LANG.cd_mark_s, undefined, {title:LANG.cd_mark_l}),
|
mark: UC.newBoolean(LANG.cd_mark_s,undefined, {title:LANG.cd_mark_l, show:() => !poppedRec.fromTop}),
|
||||||
|
fromTop: UC.newBoolean(LANG.cd_ftop_s,undefined, {title:LANG.cd_ftop_l, show:() => !poppedRec.mark}),
|
||||||
sep: UC.newBlank({class:"pop-sep"}),
|
sep: UC.newBlank({class:"pop-sep"}),
|
||||||
thru: UC.newInput(LANG.cd_dtru_s, {title:LANG.cd_dtru_l, convert:UC.toFloat, units:true,show:() => !poppedRec.mark}),
|
thru: UC.newInput(LANG.cd_dtru_s, {title:LANG.cd_dtru_l, convert:UC.toFloat, units:true,show:() => !poppedRec.mark}),
|
||||||
precision:UC.newInput(LANG.cd_prcn_s, {title:LANG.cd_prcn_l, convert:UC.toFloat, units:true,show:() => !poppedRec.mark}),
|
precision:UC.newInput(LANG.cd_prcn_s, {title:LANG.cd_prcn_l, convert:UC.toFloat, units:true,show:() => !poppedRec.mark}),
|
||||||
|
|
|
||||||
|
|
@ -200,9 +200,6 @@ class OpRough extends CamOp {
|
||||||
POLY.offset([ newPolygon().centerRectangle(stock.center, stock.x, stock.y) ], step) :
|
POLY.offset([ newPolygon().centerRectangle(stock.center, stock.x, stock.y) ], step) :
|
||||||
POLY.offset(shadow, roughIn ? step : step + roughLeave + toolDiam / 2);
|
POLY.offset(shadow, roughIn ? step : step + roughLeave + toolDiam / 2);
|
||||||
let facing = POLY.offset(inset, -step, { count: 999, flat: true });
|
let facing = POLY.offset(inset, -step, { count: 999, flat: true });
|
||||||
if (isIndexed) {
|
|
||||||
ztOff = (stock.z / 2) - zMax;
|
|
||||||
}
|
|
||||||
let zdiv = ztOff / roughDown;
|
let zdiv = ztOff / roughDown;
|
||||||
let zstep = (zdiv % 1 > 0) ? ztOff / (Math.floor(zdiv) + 1) : roughDown;
|
let zstep = (zdiv % 1 > 0) ? ztOff / (Math.floor(zdiv) + 1) : roughDown;
|
||||||
if (ztOff === 0) {
|
if (ztOff === 0) {
|
||||||
|
|
|
||||||
|
|
@ -52,8 +52,8 @@ CAM.slice = async function(settings, widget, onupdate, ondone) {
|
||||||
track = widget.track;
|
track = widget.track;
|
||||||
({ camZTop, camZBottom, camZThru } = proc);
|
({ camZTop, camZBottom, camZThru } = proc);
|
||||||
wztop = track.top;
|
wztop = track.top;
|
||||||
ztOff = isIndexed ? 0 : (stock.z - wztop);
|
ztOff = isIndexed ? (stock.z - bounds.dim.z) / 2 : (stock.z - wztop);
|
||||||
zbOff = isIndexed ? 0 : (wztop - track.box.d);
|
zbOff = isIndexed ? (stock.z - bounds.dim.z) / 2 : (wztop - track.box.d);
|
||||||
zBottom = isIndexed ? camZBottom : camZBottom - zbOff;
|
zBottom = isIndexed ? camZBottom : camZBottom - zbOff;
|
||||||
zMin = isIndexed ? bounds.min.z : Math.max(bounds.min.z, zBottom);
|
zMin = isIndexed ? bounds.min.z : Math.max(bounds.min.z, zBottom);
|
||||||
zMax = bounds.max.z;
|
zMax = bounds.max.z;
|
||||||
|
|
@ -125,7 +125,7 @@ CAM.slice = async function(settings, widget, onupdate, ondone) {
|
||||||
return error('no processes specified');
|
return error('no processes specified');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stock.x && stock.y && stock.z) {
|
if (stock.x && stock.y && stock.z && !isIndexed) {
|
||||||
if (stock.x + 0.00001 < bounds.max.x - bounds.min.x) {
|
if (stock.x + 0.00001 < bounds.max.x - bounds.min.x) {
|
||||||
return error('stock X too small for part. resize stock or use offset stock');
|
return error('stock X too small for part. resize stock or use offset stock');
|
||||||
}
|
}
|
||||||
|
|
@ -291,7 +291,7 @@ CAM.slice = async function(settings, widget, onupdate, ondone) {
|
||||||
if (op.op.type === "index") {
|
if (op.op.type === "index") {
|
||||||
widget.topo = undefined;
|
widget.topo = undefined;
|
||||||
// let points = base.verticesToPoints();
|
// let points = base.verticesToPoints();
|
||||||
state.slicer = new kiri.cam_slicer(widget);
|
slicer = state.slicer = new kiri.cam_slicer(widget);
|
||||||
shadows = {};
|
shadows = {};
|
||||||
await new CAM.OPS.shadow(state, { type: "shadow", silent: true }).slice(progress => {
|
await new CAM.OPS.shadow(state, { type: "shadow", silent: true }).slice(progress => {
|
||||||
// console.log('reshadow', progress.round(3));
|
// console.log('reshadow', progress.round(3));
|
||||||
|
|
@ -564,6 +564,11 @@ CAM.holes = async function(settings, widget, individual, rec,onProgress) {
|
||||||
onProgress(0.75+(i/circles.length*0.25),"assemble holes")
|
onProgress(0.75+(i/circles.length*0.25),"assemble holes")
|
||||||
}
|
}
|
||||||
drills.forEach( h=>{
|
drills.forEach( h=>{
|
||||||
|
if(rec.fromTop){
|
||||||
|
// set z top if selected
|
||||||
|
h.depth += wztop - h.z
|
||||||
|
h.z = wztop
|
||||||
|
}
|
||||||
delete h.overlapping //for encoding
|
delete h.overlapping //for encoding
|
||||||
h.diam = toolDiam // for mesh generation
|
h.diam = toolDiam // for mesh generation
|
||||||
h.selected = (!individual && Math.abs(h.area - area) <= area * 0.05 ); //for same size selection
|
h.selected = (!individual && Math.abs(h.area - area) <= area * 0.05 ); //for same size selection
|
||||||
|
|
|
||||||
|
|
@ -520,6 +520,7 @@ const conf = exports({
|
||||||
camDrillDwell: 250,
|
camDrillDwell: 250,
|
||||||
camDrillLift: 2,
|
camDrillLift: 2,
|
||||||
camDrillMark: false,
|
camDrillMark: false,
|
||||||
|
camDrillFromStockTop: false,
|
||||||
camDrillThru: 5,
|
camDrillThru: 5,
|
||||||
camDrillPrecision: 1,
|
camDrillPrecision: 1,
|
||||||
camDrillingOn: false,
|
camDrillingOn: false,
|
||||||
|
|
|
||||||
|
|
@ -599,6 +599,8 @@ self.kiri.lang['en-us'] = {
|
||||||
cd_dtru_l: ["additional drill depth below part bottom","overrides global z thru","0 to disable"],
|
cd_dtru_l: ["additional drill depth below part bottom","overrides global z thru","0 to disable"],
|
||||||
cd_mark_s: "marking",
|
cd_mark_s: "marking",
|
||||||
cd_mark_l: ["only mark holes, do not drill out","the step down setting is used","to determine how deep to mark"],
|
cd_mark_l: ["only mark holes, do not drill out","the step down setting is used","to determine how deep to mark"],
|
||||||
|
cd_ftop_s: "from stock top",
|
||||||
|
cd_ftop_l: ["drill from stock top","instead of part surface"],
|
||||||
cd_prcn_s: "precision",
|
cd_prcn_s: "precision",
|
||||||
cd_prcn_l: ["distance between slices","to search for holes","in workspace units","lower is slower and","uses more memory","0 = only flats"],
|
cd_prcn_l: ["distance between slices","to search for holes","in workspace units","lower is slower and","uses more memory","0 = only flats"],
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue