fix dimension tag bugs
parent
a0f0566704
commit
930df2e288
Binary file not shown.
|
@ -16,13 +16,7 @@ import { AxesHelper } from './axes'
|
||||||
import CSG from "../lib/three-csg"
|
import CSG from "../lib/three-csg"
|
||||||
|
|
||||||
|
|
||||||
const eq = (a1, a2) => {
|
|
||||||
if (a1.length != a2.length) return false
|
|
||||||
for (let i = 0; i < a1.length; i++) {
|
|
||||||
if (a1[i] != a2[i]) return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
window.loader = new THREE.ObjectLoader();
|
window.loader = new THREE.ObjectLoader();
|
||||||
window.id = 0
|
window.id = 0
|
||||||
|
|
|
@ -313,9 +313,10 @@ class Sketch {
|
||||||
obj.geometry.dispose()
|
obj.geometry.dispose()
|
||||||
obj.material.dispose()
|
obj.material.dispose()
|
||||||
|
|
||||||
for (let c_id of obj.userData.constraints) {
|
for (let c_id of obj.userData.constraints.slice()) { // i hate js
|
||||||
this.deleteConstraints(c_id)
|
this.deleteConstraints(c_id)
|
||||||
}
|
}
|
||||||
|
obj.userData.constraints = []
|
||||||
}
|
}
|
||||||
|
|
||||||
this.obj3d.children.splice(i, link.length)
|
this.obj3d.children.splice(i, link.length)
|
||||||
|
@ -336,10 +337,11 @@ class Sketch {
|
||||||
}
|
}
|
||||||
this.constraints.delete(c_id)
|
this.constraints.delete(c_id)
|
||||||
|
|
||||||
for (let i = 0; i < this.obj3d.children[1].children.length; i++) {
|
for (let i = 0; i < this.dimGroup.children.length; i++) {
|
||||||
if (this.obj3d.children[1].children[i].name == c_id) {
|
if (this.dimGroup.children[i].name == c_id) {
|
||||||
this.obj3d.children[1].children.splice(i, i + 2).forEach(
|
this.dimGroup.children.splice(i, i + 2).forEach(
|
||||||
e => {
|
e => {
|
||||||
|
if (e.label) e.label.remove()
|
||||||
e.geometry.dispose()
|
e.geometry.dispose()
|
||||||
e.material.dispose()
|
e.material.dispose()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import * as THREE from '../node_modules/three/src/Three';
|
import * as THREE from '../node_modules/three/src/Three';
|
||||||
import { color } from './shared'
|
import { color } from './shared'
|
||||||
export function extrude(sketch, depth) {
|
export function extrude(sketch, depth) {
|
||||||
console.log(sketch, 'here')
|
|
||||||
|
|
||||||
let constraints = sketch.constraints;
|
let constraints = sketch.constraints;
|
||||||
let linkedObjs = sketch.linkedObjs;
|
let linkedObjs = sketch.linkedObjs;
|
||||||
|
@ -9,63 +8,70 @@ export function extrude(sketch, depth) {
|
||||||
let objIdx = sketch.objIdx;
|
let objIdx = sketch.objIdx;
|
||||||
let visited = new Set()
|
let visited = new Set()
|
||||||
let v2s = []
|
let v2s = []
|
||||||
let offSetPts = []
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function findPair(node) {
|
function findPair(node) {
|
||||||
|
console.log(node.name,'xx')
|
||||||
if (node.userData.construction) return;
|
if (node.userData.construction) return;
|
||||||
visited.add(node)
|
visited.add(node)
|
||||||
let linkedObj = linkedObjs.get(node.userData.l_id)
|
let linkedObj = linkedObjs.get(node.userData.l_id)
|
||||||
let arr;
|
let arr;
|
||||||
|
|
||||||
|
let lineNode
|
||||||
if (linkedObj[0] == 'line') {
|
if (linkedObj[0] == 'line') {
|
||||||
arr = children[objIdx.get(linkedObj[1][2])].geometry.attributes.position.array
|
lineNode = linkedObj[1][2]
|
||||||
} else if (linkedObj[0] == 'arc') {
|
} else if (linkedObj[0] == 'arc') {
|
||||||
arr = children[objIdx.get(linkedObj[1][3])].geometry.attributes.position.array
|
lineNode = linkedObj[1][3]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
arr = children[objIdx.get(lineNode)].geometry.attributes.position.array
|
||||||
|
let nextIdx
|
||||||
|
if (linkedObj[1][0] == node.name) {
|
||||||
|
nextIdx = 1
|
||||||
for (let i = 0; i < arr.length; i += 3) {
|
for (let i = 0; i < arr.length; i += 3) {
|
||||||
v2s.push(new THREE.Vector2(arr[i], arr[i + 1]))
|
v2s.push(new THREE.Vector2(arr[i], arr[i + 1]))
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
nextIdx = 0
|
||||||
|
for (let i = arr.length - 3; i >= 0; i -= 3) {
|
||||||
|
v2s.push(new THREE.Vector2(arr[i], arr[i + 1]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
offSetPts.push(arr[0], arr[1]) //make work points for sketch creation
|
|
||||||
// offSetPts.push(arr[arr.length - 3], arr[arr.length - 2])
|
|
||||||
|
|
||||||
for (let i = 0; i < 2; i++) {
|
|
||||||
let d = children[
|
let d = children[
|
||||||
objIdx.get(
|
objIdx.get(
|
||||||
linkedObj[1][i]
|
linkedObj[1][nextIdx]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
if (d == -1 || d == node) continue;
|
if (d == children[2]) {
|
||||||
if (d == children[4]) {
|
|
||||||
console.log('pair found')
|
console.log('pair found')
|
||||||
};
|
};
|
||||||
findTouching(d)
|
findTouching(d)
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function findTouching(node) {
|
function findTouching(node) {
|
||||||
|
console.log(node.name,'yy')
|
||||||
for (let t of node.userData.constraints) {
|
for (let t of node.userData.constraints) {
|
||||||
|
console.log(constraints.get(t)[2],node.name )
|
||||||
if (constraints.get(t)[0] != 'points_coincident') continue
|
if (constraints.get(t)[0] != 'points_coincident') continue
|
||||||
for (let c of constraints.get(t)[2]) {
|
for (let c of constraints.get(t)[2]) {
|
||||||
if (c == -1) continue;
|
if (c == -1) continue;
|
||||||
const d = children[objIdx.get(c)]
|
const d = children[objIdx.get(c)]
|
||||||
if (d == node) continue;
|
if (d == node) continue;
|
||||||
if (d == children[4]) {
|
if (d == children[2]) {
|
||||||
console.log('loop found')
|
console.log('loop found')
|
||||||
} else {
|
} else {
|
||||||
if (!visited.has(d)) {
|
// if (!visited.has(d)) {
|
||||||
findPair(d)
|
findPair(d)
|
||||||
}
|
// }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
findPair(children[4]) //??? need fixing
|
findPair(children[2]) //??? need fixing
|
||||||
|
|
||||||
const shape = new THREE.Shape(v2s);
|
const shape = new THREE.Shape(v2s);
|
||||||
// const extrudeSettings = { depth: Math.abs(depth), bevelEnabled: false };
|
// const extrudeSettings = { depth: Math.abs(depth), bevelEnabled: false };
|
||||||
|
@ -74,29 +80,29 @@ export function extrude(sketch, depth) {
|
||||||
|
|
||||||
const geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings);
|
const geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings);
|
||||||
|
|
||||||
// const material = new THREE.MeshLambertMaterial({
|
const material = new THREE.MeshPhongMaterial({
|
||||||
// const material = new THREE.MeshPhongMaterial({
|
color: color.mesh,
|
||||||
// color: color.mesh,
|
emissive: color.emissive,
|
||||||
// emissive: color.emissive,
|
// wireframe:true
|
||||||
// });
|
});
|
||||||
|
|
||||||
// const mesh = new THREE.Mesh(geometry, material)
|
const mesh = new THREE.Mesh(geometry, material)
|
||||||
|
|
||||||
// const material = new THREE.MeshPhongMaterial({
|
// const material = new THREE.MeshPhongMaterial({
|
||||||
// color: color.mesh,
|
// color: color.mesh,
|
||||||
// });
|
// });
|
||||||
// const wireframe = new THREE.EdgesGeometry( geometry );
|
|
||||||
|
// const wireframe = new THREE.WireframeGeometry( geometry );
|
||||||
// const mesh = new THREE.LineSegments( wireframe );
|
// const mesh = new THREE.LineSegments( wireframe );
|
||||||
// // mesh.material.depthTest = false;
|
// mesh.material.depthTest = true;
|
||||||
// // mesh.material.opacity = 0.25;
|
// mesh.material.opacity = 0.8;
|
||||||
// // mesh.material.transparent = true;
|
// mesh.material.transparent = true;
|
||||||
// mesh.material.transparent = false;
|
|
||||||
|
|
||||||
const edges = new THREE.EdgesGeometry( geometry, 15 );
|
// const edges = new THREE.EdgesGeometry( geometry, 15 );
|
||||||
edges.type = 'BufferGeometry'
|
// edges.type = 'BufferGeometry'
|
||||||
edges.parameters = undefined
|
// edges.parameters = undefined
|
||||||
|
|
||||||
const mesh = new THREE.LineSegments( edges, new THREE.LineBasicMaterial( { color: 0x000000 } ) );
|
// const mesh = new THREE.LineSegments( edges, new THREE.LineBasicMaterial( { color: 0x000000 } ) );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -105,16 +105,16 @@ int solver(int nPts, float *p_ptr, int nConst, float *c_ptr, int nLinks, float *
|
||||||
l_ptr += 4;
|
l_ptr += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
int c_id = 1;
|
int c_pre = 1;
|
||||||
sys.constraint[sys.constraints++] = Slvs_MakeConstraint(
|
sys.constraint[sys.constraints++] = Slvs_MakeConstraint(
|
||||||
c_id++, 2,
|
c_pre++, 2,
|
||||||
SLVS_C_POINTS_COINCIDENT,
|
SLVS_C_POINTS_COINCIDENT,
|
||||||
200,
|
200,
|
||||||
-1,
|
-1,
|
||||||
101, geomStartIdx, -1, -1);
|
101, geomStartIdx, -1, -1);
|
||||||
|
|
||||||
// it's 2 + nConst because c_id at this point is 2
|
|
||||||
for (; c_id < 2 + nConst; c_id++, c_ptr += 6)
|
for (int c_id=c_pre; c_id < c_pre + nConst; c_id++, c_ptr += 6)
|
||||||
{
|
{
|
||||||
sys.constraint[sys.constraints++] = Slvs_MakeConstraint(
|
sys.constraint[sys.constraints++] = Slvs_MakeConstraint(
|
||||||
c_id, g,
|
c_id, g,
|
||||||
|
|
Loading…
Reference in New Issue