Jump to content
3DCoat Forums

kritskiy

Member
  • Content count

    60
  • Joined

  • Last visited

Community Reputation

7 Neutral

About kritskiy

  • Rank
    Neophyte
  1. kritskiy

    Improving batch renaming script

    I guess a solution would be to have a specific pattern for a material name in the volume name and check against it: something like Volume_mat_Mat_Name, a regex would look for mat_*, something like (?<=_mat_)(.*), but I'm not sure AngelScript in 3DC supports regex
  2. kritskiy

    Improving batch renaming script

    I think you've changed an object shader between the runs? It only checks a name against the current shader, so if you have an object Volume with a shader Cartoon_Orange, after adding a suffix you'll get Volume_Cartoon_Orange. Next time you run the script, it'll check if there's Cartoon_Orange in the Volume_Cartoon_Orange, and if there is, it won't change it. But if you change the shader to Cartoon_Blue, the script will check if there's Cartoon_Blue in Volume_Cartoon_Orange: it's not there, so the suffix will be added to the whole thing: Volume_Cartoon_Orange_Cartoon_Blue.
  3. kritskiy

    Improving batch renaming script

    Update. Rename children will now adds _inst_ to instanced volumes (only if the had inst in their names already) Another script, Add Material Name as Suffix will add a shader name to an object as name suggests add_material_as_suffix.cpp rename_children.cpp Note that currently there's a bug where scripts will work on an object under a cursor. Make sure you hover your cursor over nothing before running them.
  4. kritskiy

    Change parents with a script?

    Changing parents was added somewhere around 4.9.30, moving layers to indexes was added in 4.9.33. Thank you Vitaliy!
  5. kritskiy

    3DCoat 4.9 BETA testing thread

    Thanks everyone, I'll try .31 (this was done in .30) and will disable sculpt layers. AbnRanger, yes, that's how I fixed this, however this happens at least once-twice a day, sometimes on different end of a model and I don't notice it until undoing is not an option... while this is fixable I'd prefer this won't happen at all :/
  6. kritskiy

    3DCoat 4.9 BETA testing thread

    My meshes are keep getting destroyed this happens quite often, I think it started on a stable 4.8.X and still continues (the video is from 4.8.30). Never had these issues on 4.7. I don't know the exact steps to reproduce, but this happens mostly after undoing something. Here I noticed some holes, run to voxel / remesh with different outcomes. 20-03-16-18-43-30.mp4 Here after an undo the mesh has covered with holes. For this one I'm attaching a scene 12_001.3b
  7. Is there a way to move layers in a voxtree? To specific layers, to specific indexes: doesn't matter. There's a Vox.changeParent(string), there's a cmd('changeParent_Name'), but none of those seem to do anything...
  8. kritskiy

    Improving batch renaming script

    Ok here's another version. This is fun! 1) if a layer has children, children will get parent name + counter 2) if a layer has no children and its parent is Root all layers will be renamed to volume_001, volume_002, etc 3) if a layer has no children but has a different layer as a parent, parent layer will be selected and children will be renamed the same as in 1) // globals int count; int padding = 3; // how many symbols in the counter (with padding = 3, 1 will become 001, 2 - 002, etc) string original_name; void main() { count = 0; // resetting counter original_name = GetCurVolume(); // current layer Vox v; string global_name = "volume"; // if current layer has children, start renaming them if (v.count() > 0) { v.forEach("rename");} else { // if there're no children, selecting the parent layer v.parent(); //and getting its name string parent_name = GetCurVolume(); // if parent name is the same as the original name we're at Root, globally renaming everything if (parent_name == original_name) { original_name = global_name; v.forRootEach("rename"); } else { // if parent has a different name, renaming all its children original_name = parent_name; v.forEach("rename"); } } } void rename() { count++; Vox child; RenameCurVolume(original_name + "_" + formatInt(count,"0",padding)); child.forEach("rename"); } There's an interesting... thing. I assigned this script to Shift+1 and it went CRAZY starting renaming both parent layer and children with huge counters. I wonder what's happening there?
  9. Oh wow. It seems that script is using the object beneath the mouse cursor (even though Auto Pick option is turned off). Is it a bug or a feature? I'd say a script should use what's written in a script if not asked otherwise with some sort of special option?
  10. Hi, I'm having a very unstable behaviour when I try to call for Subtract from a script. For instance something simple like this void main(){ cmd("$SubtractFrom_delta"); }; that's supposed to subtract the active layer from a layer 'delta' but in my case it completely removes a different layer ('charlie') in the attached video. In new scenes it works like it should but it's like with time a scene degrades or something and this one and similar scripts start to act on completely random layers. Does anyone have any ideas about what's happening? 2020-01-03 12-17-54.mp4
  11. kritskiy

    Баги

    ДА. И это адски бесит. Видел топик, что эта ошибка была исправлена в 4.9.9, но у меня она появляется до сих пор в 4.9.17
  12. kritskiy

    [Solved] Quick Menu Bug Version 4.9.17

    I still have this issue: had it on 4.9.15, now on 4.9.17
  13. kritskiy

    Improving batch renaming script

    Sorry for posting a lot, but Edit button disapears after several hours, so... Anyway, this will also rename all the nested children: int count = 0; string original_name = ""; void main() { count = 0; original_name = GetCurVolume(); Vox v; v.forEach("rename"); } void rename() { count++; Vox v; RenameCurVolume(original_name + "_" + formatInt(count,"0",3)); v.forEach("rename"); } P.S. I wonder if it's possible to pass values to forEach? don't want to put contaminate the global scope...
  14. kritskiy

    Improving batch renaming script

    ...a follow up. This will only rename child layers of the current layer, no need to hide any other layer: void main() { Vox v; string x = GetCurVolume(); for ( int i = 0; i < v.count(); ++i ) { v.at( i ).rename( x + "_" + formatInt(i, '0', 3) ).parent(); } } I'm not sure why you were selecting the root object in your code, I think it's more clear this way or am I missing something?
  15. kritskiy

    Improving batch renaming script

    Hey Anton, > I don't know how to add intelligent zero padding to numbers like "003, 013, 334" I would be glad if we could improve this script. you can use formatInt for that: void main() { Vox v; string x = GetCurVolume(); SelectFirstVolume(true); v.rename(x); for ( int i = 0; i < v.count(); ++i ) { v.at( i ).rename( x + "_" + formatInt(i, '0', 3) ).parent(); } } more info here. On a side note, I wonder if it's possible to get a list of children of the current volume or a parent? Iterating through all the visible nodes is not ideal...
×