Hard Ops Thread

Just tried it on Ubuntu 15.04 and it works without any issues.

ok then, i’ll debug it a little and see what i’ll find :slight_smile:

Small suggestion: adopt consistent, simple version numbering. Right now it says 006c(F) on gumroad, the zip archive contains a directory named 006c, the name of the addon in Blender is 006(F+), and the internal version number is 0.0.6.1. Maybe just name the next one version 7? :stuck_out_tongue:

Other than that, cool addon! :slight_smile: Wish the bevel modifier would just copy the border normals off the neighboring faces though, instead of having to rely on sharp edges. But that’s not the fault of your addon of course, that’s just Blender being difficult.

Mystery solved! Somehow i’ve set a different default layer for scene somewhere in the past(just random click i suppose) so copied cube was always there just on a different layer :frowning:

I’ve made a small patch that makes sure newly added piece gets added on a visible layer. I’m not sure if you want it or if i can post it here, so please let me know if i should post it somewhere for you :slight_smile:

i know Piotr. 006 was gonna drop and be the version for the next months but i couldnt stop adding stuff. I also didnt want to do a tutorial series showing stuff that didnt exist yet. 006 was a hectic update haha. Also commits starting coming in so alot of those silent updates were fixing glitches not yet discovered. In fact one fixed an csharpen glitch that existed since 001. Next version 007. If blender adds edge groups hard ops will change substantially however after much stress marked edges worked best.

thats excellent news gavlig! Yeah I’d love to see what fixed your issue and what caused it. I know about the local mode but but yours was something completely unique.

Well, basically this is it http://pastebin.com/YEk9ShQ8

insert that code after scene.objects.link(obj) (this line is also present in that patch so make sure you don’t have two scene.objects.link(obj) in a row :))

As i said, the issue was that i had a different layer set as a default for my scene. And scene.objects.link sets a default scene layer for the obj. So it was layer 18 for me instead of a visible layer 0 :slight_smile: And that patch looks for visible layers, compares them to the active scene layer and changes object layer if it’s not going to be visible after getting added to the scene.

And btw you have two implementations of class csplitBool(bpy.types.Operator) so you should get rid of one of them i guess :slight_smile:

1 Like

Hey, I’m having a small issue.
If I use the Re-Bool tool on an object that is already using the C/S Sharpen tool, the bevel modifier gets applied making a big mess.




(Sorry for those links, but as attachment they are taking way too much space)

Can I get some help? :slight_smile:

1 Like

@Nadeox1
That was fixed in Csplit operator, it is basically the same thing. So I suggest to use that one instead. I don’t think we will fix that for rebool I guess we will remove it at some point in the future.

thanks for that @gavlig !
there is actually a lot of problems with that method, so I am moving it to different idea currently. To allow working in local mode and with joined parts. For now implemented as f6 option. Also please let me know if it is working for You right now.

 
        context = bpy.context 
        scene = context.scene
        area = context.area
            
    
        is_bool = False
        is_solidify = False




        if self.separate_mesh:
            a = bpy.context.selected_objects
            b = bpy.context.active_object


            for mode in bpy.context.object.modifiers :
                if mode.type == 'BOOLEAN' :
                    is_bool = True


            if is_bool == False :
                bpy.ops.btool.boolean_diff()


            obj = context.object.copy()


            a.remove(b)


            b.select = False


            try:
                random_ob = choice(a)
            except IndexError:
                # no other object in chosen group
                pass


            random_ob.select = True


            bpy.context.scene.objects.active = random_ob
            bpy.ops.object.join()


            b.select = True
            bpy.context.scene.objects.active = b


            bool_mods = [m for m in obj.modifiers if m.type == 'BOOLEAN']
            if len(bool_mods):
                mod = bool_mods[-1]
                if mod.operation == 'DIFFERENCE':
                    mod.operation = 'INTERSECT'
                    
                elif mod.operation == 'INTERSECT':
                    mod.operation = 'DIFFERENCE'


            scene.objects.link(obj)


            if area.type == 'VIEW_3D' and len(area.spaces) > 0:
                layer_len = len(obj.layers)
                visible_layer = layer_len


                space = area.spaces[0]
                for id, layer in enumerate(space.layers):
                    if True == layer:
                        visible_layer = id
                        break


                act_l = scene.active_layer
                if layer_len != visible_layer and act_l != visible_layer and space.layers[act_l] == False:
                    obj.layers[visible_layer] = True
                    obj.layers[scene.active_layer] = False


            for obj in a:
                obj.select = False
            bpy.ops.multi.csharp()


            bpy.ops.object.select_all(action='DESELECT')


            for obj in a:
                obj.select = True


        else:
            a = bpy.context.selected_objects
            b = bpy.context.active_object


            a.remove(b)


            b.select = False


            try:
                random_ob = choice(a)
            except IndexError:
                # no other object in chosen group
                pass


            #random_ob.select = True


            bpy.context.scene.objects.active = random_ob
            random_ob.select = True


            for mode in bpy.context.object.modifiers :
                if mode.type == 'SOLIDIFY':
                    is_solidify = True


            #bpy.ops.object.select_all(action='DESELECT')
            #a.select = True
            for obj in a:
                if is_solidify == False:
                    new_mod = obj.modifiers.new(type='SOLIDIFY', name='Solidify')
                    new_mod.thickness = 0.0001
                else:  
                    pass


            #b.select = True
            bpy.context.scene.objects.active = b


        
            if is_bool == False :
                bpy.ops.btool.boolean_diff()


            bpy.ops.csharpen.objects()


            b.select = False
            for obj in a:
                obj.select = True
                obj.modifiers.clear()


        
        return {'FINISHED'}
1 Like

@rrtk: AttributeError: ‘csplitBool’ object has no attribute ‘separate_mesh’

I guess you forgot to add that :slight_smile: (or we base of off a different version of hardops)

I’ve tried the separate_mesh branch and it worked alright though!

i havent pushed an update for the last 48 AR. I am working on a feature to put in the next update so we can get together and do corrections. Haha brilliant! You figured out the local mode bug. Ugh. back to work haha.

oh yes looks like I copied only part of code :o my bad, good You figured it out.

@masterxeon1001
I will still make some small changes and cleanup and It wil be marged soon so dont worry about that for now. I will send You final when it will be ready.

Sorry for sounding dumb, but I’m kinda new to BoolTool and this addon.
CSplit is…? Is it part of the HardOps addon or of BoolTool?
Feel free to explain like I’m 5 :o

EDIT- And I found it!
For those needing the same info:
Just select the object you want to use for the boolean and your main object. Do not use BoolTool, but simply press Q and you should see CSplit as second option.

Also, it appears I’m having trouble to use the ‘circle’ feature.
http://i.imgur.com/xgJulX7.jpg

enable looptools in your addons Nadeox1


cubed

1 Like

The detail is incredible that you are producing. :slight_smile:

Thanks a lot. Maybe I missed it, but a PDF with the ‘very basic’ installation instruction would be sweet :slight_smile:




Thanks a lot!

1 Like

oh yeah im gonna do a troubleshooting page based off of all this glorious input.


Nadeox1 I made some videos on the booltool long ago when it was first introduced. Its basically a workflow for booleans but its a great workflow that makes booleans accessible. Its really the bees knees when it comes to making forms quickly. The booltool in itself has become an irreplaceable part of my workflow so it also has become a part of hard ops.

1 Like

I just bought this after seeing the 0.0.6 video. It only took me 5 minutes of watching the video as well. You horribly magnificent man. Looking forward to using this! Thanks.