Skip to content

Commit e148652

Browse files
committed
Fixing the regeneration problem with pasted items
Boils down to making sure that all added objects are added to the creaated names, but then are filtered out in the recoursive apply just like the locked items. THis allows the parameterics to be added to the new items, but also prevents then additional items from being selected in the selection box.
1 parent f9a7073 commit e148652

File tree

4 files changed

+49
-26
lines changed

4 files changed

+49
-26
lines changed

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/Allign.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.ArrayList;
44
import java.util.HashMap;
5+
import java.util.HashSet;
56
import java.util.List;
67

78
import com.google.gson.annotations.Expose;
@@ -25,7 +26,18 @@ public class Allign implements ICaDoodleOpperation {
2526
private TransformNR workplane=null;
2627
@Expose (serialize = true, deserialize = true)
2728
public StoragbeBounds bounds=null;
28-
29+
@Expose(serialize = true, deserialize = true)
30+
protected String name = null;
31+
public String getName() {
32+
if (name == null) {
33+
setName(RandomStringFactory.generateRandomString());
34+
}
35+
return name;
36+
}
37+
38+
public void setName(String name) {
39+
this.name = name;
40+
}
2941
@Override
3042
public String getType() {
3143
return "Allign";
@@ -62,12 +74,18 @@ public List<CSG> process(List<CSG> incoming) {
6274
}
6375
}
6476
for(String name:moves.keySet()) {
65-
Transform tf = TransformFactory.nrToCSG(moves.get(name));
77+
TransformNR wpinv = getWorkplane().inverse();
78+
TransformNR nr = moves.get(name);
79+
TransformNR wp = getWorkplane();
80+
81+
TransformNR times = wp.times(nr.times(wpinv));
82+
Transform tf = TransformFactory.nrToCSG(times);
6683
CaDoodleFile.applyToAllConstituantElements(false, name, back, (incoming1, depth) ->{
6784
ArrayList<CSG> b = new ArrayList<>();
68-
CSG c = incoming1.transformed(TransformFactory.nrToCSG(getWorkplane()).inverse());
69-
c=c.transformed(tf);
70-
b.add(sync(incoming1,c.transformed(TransformFactory.nrToCSG(getWorkplane()))));
85+
CSG c=incoming1.transformed(tf);
86+
sync(incoming1,c);
87+
MoveCenter.set(getName() , c, times);
88+
b.add(c);
7189
return b;
7290
}, 1);
7391
}

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/CaDoodleVitamin.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,19 +76,19 @@ public static CSG get(String typencoming,String defaultValue, ArrayList<Object>
7676
}
7777
CSG part;
7878
try {
79-
System.out.println("Generating Vitamin "+type+" "+word.getStrValue()+" for vitamin named "+name);
79+
// System.out.println("Generating Vitamin "+type+" "+word.getStrValue()+" for vitamin named "+name);
8080
part = Vitamins.get(type, word.getStrValue()).setIsHole(true);
8181
CSGDatabase.saveDatabase();
8282
Set<String> params = part.getParameters();
8383

8484
part.setParameter(word);
8585
part.setParameter(typeParam);
8686
params = part.getParameters();
87-
88-
System.out.println("Parameters on Vitamin: "+name);
89-
for(String s:params) {
90-
System.out.println("\t"+s);
91-
}
87+
part.setName(name);
88+
// System.out.println("Parameters on Vitamin: "+name);
89+
// for(String s:params) {
90+
// System.out.println("\t"+s);
91+
// }
9292
CSG back = part.setRegenerate(new IRegenerate() {
9393
@Override
9494
public CSG regenerate(CSG previous) {
@@ -98,7 +98,7 @@ public CSG regenerate(CSG previous) {
9898
name2=pv.get().toString();
9999
else
100100
name2=name;
101-
System.out.println("Regenerating source \n\t"+name+" on part \n\t"+name2);
101+
//System.out.println("Regenerating source \n\t"+name+" on part \n\t"+name2);
102102
ArrayList<Object> ar = new ArrayList<>();
103103
ar.addAll(args);
104104
ar.set(0, previous.getName());

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/Paste.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.HashSet;
99
import java.util.List;
1010
import java.util.Optional;
11+
import java.util.Set;
1112
import java.util.stream.Collectors;
1213

1314
import com.google.gson.annotations.Expose;
@@ -18,6 +19,8 @@
1819

1920
import eu.mihosoft.vrl.v3d.CSG;
2021
import eu.mihosoft.vrl.v3d.Transform;
22+
import eu.mihosoft.vrl.v3d.parametrics.CSGDatabase;
23+
import eu.mihosoft.vrl.v3d.parametrics.Parameter;
2124

2225
public class Paste extends AbstractAddFrom implements ICaDoodleOpperation {
2326
@Expose(serialize = true, deserialize = true)
@@ -87,25 +90,27 @@ private ArrayList<String> constituants(ArrayList<CSG> b, String name) {
8790

8891
private ArrayList<CSG> copyPasteMoved(ArrayList<CSG> back, CSG c, int depth) {
8992
String prevName = c.getName();
90-
String name = getName() +(index == 0 ? "" : "_" + index);
93+
String name = getName() +( index == 0 ? "" : "_" + index);
9194
CSG clone = c.clone();
9295
clone.setRegenerate(c.getRegenerate()).setName(name);
9396
clone.getStorage().set("PreviousName", prevName);
9497
Transform nrToCSG = MoveCenter.getTotalOffset(c);
9598
CSG newOne = null;
96-
if (CaDoodleVitamin.isVitamin(c))
97-
newOne = clone.regenerate().transformed(nrToCSG);
98-
else
99+
if (CaDoodleVitamin.isVitamin(c)) {
100+
CSG regenerate = clone.getRegenerate().regenerate(clone);
101+
newOne = regenerate.transformed(nrToCSG);
102+
newOne.setRegenerate(regenerate.getRegenerate());
103+
}else {
99104
newOne = clone;
100-
newOne.setRegenerate(c.getRegenerate()).setName(name);
101-
index++;
105+
newOne.setRegenerate(c.getRegenerate());
106+
}
102107
newOne.syncProperties(c).setName(name);
103-
if(!c.isInGroup())
104-
getNamesAdded().add(name);
108+
index++;
109+
getNamesAdded().add(name);
105110
ArrayList<CSG> b = new ArrayList<>();
106111
b.add(c);
107112
b.add(newOne);
108-
System.out.println("Copy "+c.getName()+" to "+newOne.getName());
113+
//System.out.println("Copy "+c.getName()+" to "+newOne.getName());
109114
cpMap.put(c.getName(), newOne.getName());
110115
return b;
111116
}

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/UnGroup.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ public List<CSG> process(List<CSG> incoming) {
3434
if (csg.checkGroupMembership(name)) {
3535
// release this object from the group
3636
Transform nrToCSG = MoveCenter.getTotalOffset(csg);
37-
CSG transformed=null;
38-
if(CaDoodleVitamin.isVitamin(csg))
39-
transformed= csg.regenerate().transformed(nrToCSG);
40-
else
41-
transformed=csg;
37+
CSG transformed=csg;
38+
if(CaDoodleVitamin.isVitamin(csg)) {
39+
CSG regenerate = csg.getRegenerate().regenerate(csg);
40+
transformed = regenerate.transformed(nrToCSG);
41+
}
4242
CSG readd= transformed.setRegenerate(csg.getRegenerate()).syncProperties(csg).setName(csg.getName());
4343

4444
readd.removeGroupMembership(name);

0 commit comments

Comments
 (0)