Create Circle with Inner RadiusFill space between inner meshHow to add edge loops to a circle (triangle fan)Creating a mesh cone with exponential radiusRemove inner wall on thin shell model with complex geometryCleaning inner self-intersectionsHow do I create a star extrusion to circle?Issue with 2D Shrinkwrap (Circle onto Cross)How to set icosphere's radiusCreate a railing around a circle?How to make Holes in Walls, connect Joints and make it symmetric / equal sides?

Which dice game has a board with 9x9 squares that has different colors on the diagonals and midway on some edges?

How does mathematics work?

Does Mathematica 12 support GT 730 CUDA?

I have a domain, static IP and many devices I'd like to access outside my house. How to route them?

Can the caster of Time Stop still use their bonus action or reaction?

Counterexample finite intersection property

How to pass array of values in lualatex?

Book in which the "mountain" in the distance was a hole in the flat world

As the Ferris wheel turns

Monday's Blocking Donimoes Problem

Can a creature sustain itself by eating its own severed body parts?

How can I deal with someone that wants to kill something that isn't supposed to be killed?

Why can't a country print its own money to spend it only abroad?

Why is the UH-60 tail rotor canted?

Why Lie algebras if what we care about in physics are groups?

Create Circle with Inner Radius

What would be the effects of (relatively) widespread precognition on the stock market?

Why does the salt in the oceans not sink to the bottom?

Stellen - Putting, or putting away?

Is it OK to accept a job opportunity while planning on not taking it?

Why do we need an estimator to be consistent?

Function pointer parameter without asterisk

What kind of curve (or model) should I fit to my percentage data?

Killing a star safely



Create Circle with Inner Radius


Fill space between inner meshHow to add edge loops to a circle (triangle fan)Creating a mesh cone with exponential radiusRemove inner wall on thin shell model with complex geometryCleaning inner self-intersectionsHow do I create a star extrusion to circle?Issue with 2D Shrinkwrap (Circle onto Cross)How to set icosphere's radiusCreate a railing around a circle?How to make Holes in Walls, connect Joints and make it symmetric / equal sides?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1












$begingroup$


Is there a simple way to create a circle which contains a hole / inner radius. Ideally where I can dynamically set the inner radius when adding (in the same way I can set outer radius when adding a circle mesh).



I can manually create it by adding a circle with no fill, cloning, scaling down, then creating the faces (see attached), but that is tedious and error prone. I could also do it by creating a circle with triangle fan, clone the out edge down, and the delete middle, but again, that is a bit tedious and makes it difficult to get an exact inner radius.



Is there a way to do this natively in Blender, or via an addon?



enter image description here










share|improve this question









$endgroup$







  • 1




    $begingroup$
    From a circle, in edit mode select the vertices, then E+S (to extrude and scale).
    $endgroup$
    – lemon
    9 hours ago










  • $begingroup$
    Good answers below, but for the one-off .. Triangle-filled created to radius, all selected, I Inset region with a numerical entry for thickness. X delete center faces?
    $endgroup$
    – Robin Betts
    8 hours ago

















1












$begingroup$


Is there a simple way to create a circle which contains a hole / inner radius. Ideally where I can dynamically set the inner radius when adding (in the same way I can set outer radius when adding a circle mesh).



I can manually create it by adding a circle with no fill, cloning, scaling down, then creating the faces (see attached), but that is tedious and error prone. I could also do it by creating a circle with triangle fan, clone the out edge down, and the delete middle, but again, that is a bit tedious and makes it difficult to get an exact inner radius.



Is there a way to do this natively in Blender, or via an addon?



enter image description here










share|improve this question









$endgroup$







  • 1




    $begingroup$
    From a circle, in edit mode select the vertices, then E+S (to extrude and scale).
    $endgroup$
    – lemon
    9 hours ago










  • $begingroup$
    Good answers below, but for the one-off .. Triangle-filled created to radius, all selected, I Inset region with a numerical entry for thickness. X delete center faces?
    $endgroup$
    – Robin Betts
    8 hours ago













1












1








1





$begingroup$


Is there a simple way to create a circle which contains a hole / inner radius. Ideally where I can dynamically set the inner radius when adding (in the same way I can set outer radius when adding a circle mesh).



I can manually create it by adding a circle with no fill, cloning, scaling down, then creating the faces (see attached), but that is tedious and error prone. I could also do it by creating a circle with triangle fan, clone the out edge down, and the delete middle, but again, that is a bit tedious and makes it difficult to get an exact inner radius.



Is there a way to do this natively in Blender, or via an addon?



enter image description here










share|improve this question









$endgroup$




Is there a simple way to create a circle which contains a hole / inner radius. Ideally where I can dynamically set the inner radius when adding (in the same way I can set outer radius when adding a circle mesh).



I can manually create it by adding a circle with no fill, cloning, scaling down, then creating the faces (see attached), but that is tedious and error prone. I could also do it by creating a circle with triangle fan, clone the out edge down, and the delete middle, but again, that is a bit tedious and makes it difficult to get an exact inner radius.



Is there a way to do this natively in Blender, or via an addon?



enter image description here







mesh






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 9 hours ago









mikechambersmikechambers

1061 bronze badge




1061 bronze badge







  • 1




    $begingroup$
    From a circle, in edit mode select the vertices, then E+S (to extrude and scale).
    $endgroup$
    – lemon
    9 hours ago










  • $begingroup$
    Good answers below, but for the one-off .. Triangle-filled created to radius, all selected, I Inset region with a numerical entry for thickness. X delete center faces?
    $endgroup$
    – Robin Betts
    8 hours ago












  • 1




    $begingroup$
    From a circle, in edit mode select the vertices, then E+S (to extrude and scale).
    $endgroup$
    – lemon
    9 hours ago










  • $begingroup$
    Good answers below, but for the one-off .. Triangle-filled created to radius, all selected, I Inset region with a numerical entry for thickness. X delete center faces?
    $endgroup$
    – Robin Betts
    8 hours ago







1




1




$begingroup$
From a circle, in edit mode select the vertices, then E+S (to extrude and scale).
$endgroup$
– lemon
9 hours ago




$begingroup$
From a circle, in edit mode select the vertices, then E+S (to extrude and scale).
$endgroup$
– lemon
9 hours ago












$begingroup$
Good answers below, but for the one-off .. Triangle-filled created to radius, all selected, I Inset region with a numerical entry for thickness. X delete center faces?
$endgroup$
– Robin Betts
8 hours ago




$begingroup$
Good answers below, but for the one-off .. Triangle-filled created to radius, all selected, I Inset region with a numerical entry for thickness. X delete center faces?
$endgroup$
– Robin Betts
8 hours ago










3 Answers
3






active

oldest

votes


















3












$begingroup$

Maybe its a good subject for the new 2.8 gyzmos!



Create an edge with two vertices corresponding to the inner and outer part of your disk.



Choose the spin tool.



Rotate as you want.



Tune the result with the operator panel.



enter image description here






share|improve this answer









$endgroup$




















    2












    $begingroup$

    One way to work around it natively is to create a mesh with only two vertex and an edge connecting them.



    Place them strategically like along the X axis so you can control vertex position from the properties panel. Their X coordinate will directly control absolute radius for inner and outer circles quite easily.



    Then just add a screw modifier to the mesh. You can control curve resolution and spin angle non-destructively from there.



    enter image description here



    You can copy this object around instead of adding new ones, for easy duplication






    share|improve this answer









    $endgroup$




















      1












      $begingroup$

      Add new object mesh addon template



      enter image description here



      Quick little addon slapped together using text editor > templates > python > Addon Add Object template.



      • Adds two circles, bridges the edge loops.

      • If ngon fill is chosen, splits one fill edge, dissolves the rest.

      Test addon.



      bl_info = 
      "name": "New 2D Ring",
      "author": "batFINGER",
      "version": (1, 0),
      "blender": (2, 80, 0),
      "location": "View3D > Add > Mesh > New 2D Ring",
      "description": "Adds a 2D ring (circle with hole)",
      "warning": "",
      "wiki_url": "",
      "category": "Add Mesh",

      import bpy
      import bmesh
      from mathutils import Matrix
      from math import asin
      from bpy_extras.object_utils import AddObjectHelper

      from bpy.props import (
      IntProperty,
      BoolProperty,
      EnumProperty,
      FloatProperty,
      FloatVectorProperty,
      )


      class MESH_OT_primitive_ring_add(AddObjectHelper, bpy.types.Operator):
      """Add a 2D filled ring mesh"""
      bl_idname = "mesh.primitive_ring_add"
      bl_label = "Add 2D Filled Ring"
      bl_options = 'REGISTER', 'UNDO'

      inner_radius: FloatProperty(
      name="Inner Radius",
      description="Inner Radius",
      min=0,
      default=1.0,
      )
      outer_radius: FloatProperty(
      name="Outer Radius",
      description="Outer Radius",
      min=0,
      default=2.0,
      )
      segments: IntProperty(
      name="Segments",
      description="Number of Segments",
      min=3,
      default=8,
      )
      ngon_fill: BoolProperty(
      name="Ngon Fill",
      description="Fill with ngon",
      )

      def execute(self, context):

      me = bpy.data.meshes.new("CircleHole")

      bm = bmesh.new()
      bmesh.ops.create_circle(bm, radius=self.inner_radius, segments=self.segments)
      bmesh.ops.create_circle(bm, radius=self.outer_radius, segments=self.segments)

      ret = bmesh.ops.bridge_loops(bm, edges=bm.edges)
      print(ret)
      if self.ngon_fill:
      edges = ret['edges']
      e = edges.pop()
      bmesh.ops.split_edges(bm, edges=[e])
      bmesh.ops.dissolve_edges(bm,
      edges=edges)
      bm.to_mesh(me)
      me.update()

      from bpy_extras import object_utils
      object_utils.object_data_add(context, me, operator=self)

      return 'FINISHED'


      def menu_func(self, context):
      self.layout.operator(MESH_OT_primitive_ring_add.bl_idname, icon='MESH_CUBE')


      def register():
      bpy.utils.register_class(MESH_OT_primitive_ring_add)
      bpy.types.VIEW3D_MT_mesh_add.append(menu_func)


      def unregister():
      bpy.utils.unregister_class(MESH_OT_primitive_ring_add)
      bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)


      if __name__ == "__main__":
      register()

      # test call
      bpy.ops.mesh.primitive_ring_add()


      Add Cone Primitive



      enter image description here



      Though I would add that the functionality is very similar to add cone primitive, with no fill and no height (can scale totally to zero in z and apply)






      share|improve this answer











      $endgroup$












      • $begingroup$
        This is awesome. I was actually starting to build my own but you beat me to it. Do you plan to release it outside of stackoverflow? Seems like it would be super useful.
        $endgroup$
        – mikechambers
        3 hours ago













      Your Answer








      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "502"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: false,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: null,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fblender.stackexchange.com%2fquestions%2f146083%2fcreate-circle-with-inner-radius%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      3 Answers
      3






      active

      oldest

      votes








      3 Answers
      3






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      3












      $begingroup$

      Maybe its a good subject for the new 2.8 gyzmos!



      Create an edge with two vertices corresponding to the inner and outer part of your disk.



      Choose the spin tool.



      Rotate as you want.



      Tune the result with the operator panel.



      enter image description here






      share|improve this answer









      $endgroup$

















        3












        $begingroup$

        Maybe its a good subject for the new 2.8 gyzmos!



        Create an edge with two vertices corresponding to the inner and outer part of your disk.



        Choose the spin tool.



        Rotate as you want.



        Tune the result with the operator panel.



        enter image description here






        share|improve this answer









        $endgroup$















          3












          3








          3





          $begingroup$

          Maybe its a good subject for the new 2.8 gyzmos!



          Create an edge with two vertices corresponding to the inner and outer part of your disk.



          Choose the spin tool.



          Rotate as you want.



          Tune the result with the operator panel.



          enter image description here






          share|improve this answer









          $endgroup$



          Maybe its a good subject for the new 2.8 gyzmos!



          Create an edge with two vertices corresponding to the inner and outer part of your disk.



          Choose the spin tool.



          Rotate as you want.



          Tune the result with the operator panel.



          enter image description here







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 8 hours ago









          lemonlemon

          18.2k1 gold badge19 silver badges55 bronze badges




          18.2k1 gold badge19 silver badges55 bronze badges























              2












              $begingroup$

              One way to work around it natively is to create a mesh with only two vertex and an edge connecting them.



              Place them strategically like along the X axis so you can control vertex position from the properties panel. Their X coordinate will directly control absolute radius for inner and outer circles quite easily.



              Then just add a screw modifier to the mesh. You can control curve resolution and spin angle non-destructively from there.



              enter image description here



              You can copy this object around instead of adding new ones, for easy duplication






              share|improve this answer









              $endgroup$

















                2












                $begingroup$

                One way to work around it natively is to create a mesh with only two vertex and an edge connecting them.



                Place them strategically like along the X axis so you can control vertex position from the properties panel. Their X coordinate will directly control absolute radius for inner and outer circles quite easily.



                Then just add a screw modifier to the mesh. You can control curve resolution and spin angle non-destructively from there.



                enter image description here



                You can copy this object around instead of adding new ones, for easy duplication






                share|improve this answer









                $endgroup$















                  2












                  2








                  2





                  $begingroup$

                  One way to work around it natively is to create a mesh with only two vertex and an edge connecting them.



                  Place them strategically like along the X axis so you can control vertex position from the properties panel. Their X coordinate will directly control absolute radius for inner and outer circles quite easily.



                  Then just add a screw modifier to the mesh. You can control curve resolution and spin angle non-destructively from there.



                  enter image description here



                  You can copy this object around instead of adding new ones, for easy duplication






                  share|improve this answer









                  $endgroup$



                  One way to work around it natively is to create a mesh with only two vertex and an edge connecting them.



                  Place them strategically like along the X axis so you can control vertex position from the properties panel. Their X coordinate will directly control absolute radius for inner and outer circles quite easily.



                  Then just add a screw modifier to the mesh. You can control curve resolution and spin angle non-destructively from there.



                  enter image description here



                  You can copy this object around instead of adding new ones, for easy duplication







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 9 hours ago









                  Duarte Farrajota RamosDuarte Farrajota Ramos

                  36.9k6 gold badges48 silver badges93 bronze badges




                  36.9k6 gold badges48 silver badges93 bronze badges





















                      1












                      $begingroup$

                      Add new object mesh addon template



                      enter image description here



                      Quick little addon slapped together using text editor > templates > python > Addon Add Object template.



                      • Adds two circles, bridges the edge loops.

                      • If ngon fill is chosen, splits one fill edge, dissolves the rest.

                      Test addon.



                      bl_info = 
                      "name": "New 2D Ring",
                      "author": "batFINGER",
                      "version": (1, 0),
                      "blender": (2, 80, 0),
                      "location": "View3D > Add > Mesh > New 2D Ring",
                      "description": "Adds a 2D ring (circle with hole)",
                      "warning": "",
                      "wiki_url": "",
                      "category": "Add Mesh",

                      import bpy
                      import bmesh
                      from mathutils import Matrix
                      from math import asin
                      from bpy_extras.object_utils import AddObjectHelper

                      from bpy.props import (
                      IntProperty,
                      BoolProperty,
                      EnumProperty,
                      FloatProperty,
                      FloatVectorProperty,
                      )


                      class MESH_OT_primitive_ring_add(AddObjectHelper, bpy.types.Operator):
                      """Add a 2D filled ring mesh"""
                      bl_idname = "mesh.primitive_ring_add"
                      bl_label = "Add 2D Filled Ring"
                      bl_options = 'REGISTER', 'UNDO'

                      inner_radius: FloatProperty(
                      name="Inner Radius",
                      description="Inner Radius",
                      min=0,
                      default=1.0,
                      )
                      outer_radius: FloatProperty(
                      name="Outer Radius",
                      description="Outer Radius",
                      min=0,
                      default=2.0,
                      )
                      segments: IntProperty(
                      name="Segments",
                      description="Number of Segments",
                      min=3,
                      default=8,
                      )
                      ngon_fill: BoolProperty(
                      name="Ngon Fill",
                      description="Fill with ngon",
                      )

                      def execute(self, context):

                      me = bpy.data.meshes.new("CircleHole")

                      bm = bmesh.new()
                      bmesh.ops.create_circle(bm, radius=self.inner_radius, segments=self.segments)
                      bmesh.ops.create_circle(bm, radius=self.outer_radius, segments=self.segments)

                      ret = bmesh.ops.bridge_loops(bm, edges=bm.edges)
                      print(ret)
                      if self.ngon_fill:
                      edges = ret['edges']
                      e = edges.pop()
                      bmesh.ops.split_edges(bm, edges=[e])
                      bmesh.ops.dissolve_edges(bm,
                      edges=edges)
                      bm.to_mesh(me)
                      me.update()

                      from bpy_extras import object_utils
                      object_utils.object_data_add(context, me, operator=self)

                      return 'FINISHED'


                      def menu_func(self, context):
                      self.layout.operator(MESH_OT_primitive_ring_add.bl_idname, icon='MESH_CUBE')


                      def register():
                      bpy.utils.register_class(MESH_OT_primitive_ring_add)
                      bpy.types.VIEW3D_MT_mesh_add.append(menu_func)


                      def unregister():
                      bpy.utils.unregister_class(MESH_OT_primitive_ring_add)
                      bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)


                      if __name__ == "__main__":
                      register()

                      # test call
                      bpy.ops.mesh.primitive_ring_add()


                      Add Cone Primitive



                      enter image description here



                      Though I would add that the functionality is very similar to add cone primitive, with no fill and no height (can scale totally to zero in z and apply)






                      share|improve this answer











                      $endgroup$












                      • $begingroup$
                        This is awesome. I was actually starting to build my own but you beat me to it. Do you plan to release it outside of stackoverflow? Seems like it would be super useful.
                        $endgroup$
                        – mikechambers
                        3 hours ago















                      1












                      $begingroup$

                      Add new object mesh addon template



                      enter image description here



                      Quick little addon slapped together using text editor > templates > python > Addon Add Object template.



                      • Adds two circles, bridges the edge loops.

                      • If ngon fill is chosen, splits one fill edge, dissolves the rest.

                      Test addon.



                      bl_info = 
                      "name": "New 2D Ring",
                      "author": "batFINGER",
                      "version": (1, 0),
                      "blender": (2, 80, 0),
                      "location": "View3D > Add > Mesh > New 2D Ring",
                      "description": "Adds a 2D ring (circle with hole)",
                      "warning": "",
                      "wiki_url": "",
                      "category": "Add Mesh",

                      import bpy
                      import bmesh
                      from mathutils import Matrix
                      from math import asin
                      from bpy_extras.object_utils import AddObjectHelper

                      from bpy.props import (
                      IntProperty,
                      BoolProperty,
                      EnumProperty,
                      FloatProperty,
                      FloatVectorProperty,
                      )


                      class MESH_OT_primitive_ring_add(AddObjectHelper, bpy.types.Operator):
                      """Add a 2D filled ring mesh"""
                      bl_idname = "mesh.primitive_ring_add"
                      bl_label = "Add 2D Filled Ring"
                      bl_options = 'REGISTER', 'UNDO'

                      inner_radius: FloatProperty(
                      name="Inner Radius",
                      description="Inner Radius",
                      min=0,
                      default=1.0,
                      )
                      outer_radius: FloatProperty(
                      name="Outer Radius",
                      description="Outer Radius",
                      min=0,
                      default=2.0,
                      )
                      segments: IntProperty(
                      name="Segments",
                      description="Number of Segments",
                      min=3,
                      default=8,
                      )
                      ngon_fill: BoolProperty(
                      name="Ngon Fill",
                      description="Fill with ngon",
                      )

                      def execute(self, context):

                      me = bpy.data.meshes.new("CircleHole")

                      bm = bmesh.new()
                      bmesh.ops.create_circle(bm, radius=self.inner_radius, segments=self.segments)
                      bmesh.ops.create_circle(bm, radius=self.outer_radius, segments=self.segments)

                      ret = bmesh.ops.bridge_loops(bm, edges=bm.edges)
                      print(ret)
                      if self.ngon_fill:
                      edges = ret['edges']
                      e = edges.pop()
                      bmesh.ops.split_edges(bm, edges=[e])
                      bmesh.ops.dissolve_edges(bm,
                      edges=edges)
                      bm.to_mesh(me)
                      me.update()

                      from bpy_extras import object_utils
                      object_utils.object_data_add(context, me, operator=self)

                      return 'FINISHED'


                      def menu_func(self, context):
                      self.layout.operator(MESH_OT_primitive_ring_add.bl_idname, icon='MESH_CUBE')


                      def register():
                      bpy.utils.register_class(MESH_OT_primitive_ring_add)
                      bpy.types.VIEW3D_MT_mesh_add.append(menu_func)


                      def unregister():
                      bpy.utils.unregister_class(MESH_OT_primitive_ring_add)
                      bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)


                      if __name__ == "__main__":
                      register()

                      # test call
                      bpy.ops.mesh.primitive_ring_add()


                      Add Cone Primitive



                      enter image description here



                      Though I would add that the functionality is very similar to add cone primitive, with no fill and no height (can scale totally to zero in z and apply)






                      share|improve this answer











                      $endgroup$












                      • $begingroup$
                        This is awesome. I was actually starting to build my own but you beat me to it. Do you plan to release it outside of stackoverflow? Seems like it would be super useful.
                        $endgroup$
                        – mikechambers
                        3 hours ago













                      1












                      1








                      1





                      $begingroup$

                      Add new object mesh addon template



                      enter image description here



                      Quick little addon slapped together using text editor > templates > python > Addon Add Object template.



                      • Adds two circles, bridges the edge loops.

                      • If ngon fill is chosen, splits one fill edge, dissolves the rest.

                      Test addon.



                      bl_info = 
                      "name": "New 2D Ring",
                      "author": "batFINGER",
                      "version": (1, 0),
                      "blender": (2, 80, 0),
                      "location": "View3D > Add > Mesh > New 2D Ring",
                      "description": "Adds a 2D ring (circle with hole)",
                      "warning": "",
                      "wiki_url": "",
                      "category": "Add Mesh",

                      import bpy
                      import bmesh
                      from mathutils import Matrix
                      from math import asin
                      from bpy_extras.object_utils import AddObjectHelper

                      from bpy.props import (
                      IntProperty,
                      BoolProperty,
                      EnumProperty,
                      FloatProperty,
                      FloatVectorProperty,
                      )


                      class MESH_OT_primitive_ring_add(AddObjectHelper, bpy.types.Operator):
                      """Add a 2D filled ring mesh"""
                      bl_idname = "mesh.primitive_ring_add"
                      bl_label = "Add 2D Filled Ring"
                      bl_options = 'REGISTER', 'UNDO'

                      inner_radius: FloatProperty(
                      name="Inner Radius",
                      description="Inner Radius",
                      min=0,
                      default=1.0,
                      )
                      outer_radius: FloatProperty(
                      name="Outer Radius",
                      description="Outer Radius",
                      min=0,
                      default=2.0,
                      )
                      segments: IntProperty(
                      name="Segments",
                      description="Number of Segments",
                      min=3,
                      default=8,
                      )
                      ngon_fill: BoolProperty(
                      name="Ngon Fill",
                      description="Fill with ngon",
                      )

                      def execute(self, context):

                      me = bpy.data.meshes.new("CircleHole")

                      bm = bmesh.new()
                      bmesh.ops.create_circle(bm, radius=self.inner_radius, segments=self.segments)
                      bmesh.ops.create_circle(bm, radius=self.outer_radius, segments=self.segments)

                      ret = bmesh.ops.bridge_loops(bm, edges=bm.edges)
                      print(ret)
                      if self.ngon_fill:
                      edges = ret['edges']
                      e = edges.pop()
                      bmesh.ops.split_edges(bm, edges=[e])
                      bmesh.ops.dissolve_edges(bm,
                      edges=edges)
                      bm.to_mesh(me)
                      me.update()

                      from bpy_extras import object_utils
                      object_utils.object_data_add(context, me, operator=self)

                      return 'FINISHED'


                      def menu_func(self, context):
                      self.layout.operator(MESH_OT_primitive_ring_add.bl_idname, icon='MESH_CUBE')


                      def register():
                      bpy.utils.register_class(MESH_OT_primitive_ring_add)
                      bpy.types.VIEW3D_MT_mesh_add.append(menu_func)


                      def unregister():
                      bpy.utils.unregister_class(MESH_OT_primitive_ring_add)
                      bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)


                      if __name__ == "__main__":
                      register()

                      # test call
                      bpy.ops.mesh.primitive_ring_add()


                      Add Cone Primitive



                      enter image description here



                      Though I would add that the functionality is very similar to add cone primitive, with no fill and no height (can scale totally to zero in z and apply)






                      share|improve this answer











                      $endgroup$



                      Add new object mesh addon template



                      enter image description here



                      Quick little addon slapped together using text editor > templates > python > Addon Add Object template.



                      • Adds two circles, bridges the edge loops.

                      • If ngon fill is chosen, splits one fill edge, dissolves the rest.

                      Test addon.



                      bl_info = 
                      "name": "New 2D Ring",
                      "author": "batFINGER",
                      "version": (1, 0),
                      "blender": (2, 80, 0),
                      "location": "View3D > Add > Mesh > New 2D Ring",
                      "description": "Adds a 2D ring (circle with hole)",
                      "warning": "",
                      "wiki_url": "",
                      "category": "Add Mesh",

                      import bpy
                      import bmesh
                      from mathutils import Matrix
                      from math import asin
                      from bpy_extras.object_utils import AddObjectHelper

                      from bpy.props import (
                      IntProperty,
                      BoolProperty,
                      EnumProperty,
                      FloatProperty,
                      FloatVectorProperty,
                      )


                      class MESH_OT_primitive_ring_add(AddObjectHelper, bpy.types.Operator):
                      """Add a 2D filled ring mesh"""
                      bl_idname = "mesh.primitive_ring_add"
                      bl_label = "Add 2D Filled Ring"
                      bl_options = 'REGISTER', 'UNDO'

                      inner_radius: FloatProperty(
                      name="Inner Radius",
                      description="Inner Radius",
                      min=0,
                      default=1.0,
                      )
                      outer_radius: FloatProperty(
                      name="Outer Radius",
                      description="Outer Radius",
                      min=0,
                      default=2.0,
                      )
                      segments: IntProperty(
                      name="Segments",
                      description="Number of Segments",
                      min=3,
                      default=8,
                      )
                      ngon_fill: BoolProperty(
                      name="Ngon Fill",
                      description="Fill with ngon",
                      )

                      def execute(self, context):

                      me = bpy.data.meshes.new("CircleHole")

                      bm = bmesh.new()
                      bmesh.ops.create_circle(bm, radius=self.inner_radius, segments=self.segments)
                      bmesh.ops.create_circle(bm, radius=self.outer_radius, segments=self.segments)

                      ret = bmesh.ops.bridge_loops(bm, edges=bm.edges)
                      print(ret)
                      if self.ngon_fill:
                      edges = ret['edges']
                      e = edges.pop()
                      bmesh.ops.split_edges(bm, edges=[e])
                      bmesh.ops.dissolve_edges(bm,
                      edges=edges)
                      bm.to_mesh(me)
                      me.update()

                      from bpy_extras import object_utils
                      object_utils.object_data_add(context, me, operator=self)

                      return 'FINISHED'


                      def menu_func(self, context):
                      self.layout.operator(MESH_OT_primitive_ring_add.bl_idname, icon='MESH_CUBE')


                      def register():
                      bpy.utils.register_class(MESH_OT_primitive_ring_add)
                      bpy.types.VIEW3D_MT_mesh_add.append(menu_func)


                      def unregister():
                      bpy.utils.unregister_class(MESH_OT_primitive_ring_add)
                      bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)


                      if __name__ == "__main__":
                      register()

                      # test call
                      bpy.ops.mesh.primitive_ring_add()


                      Add Cone Primitive



                      enter image description here



                      Though I would add that the functionality is very similar to add cone primitive, with no fill and no height (can scale totally to zero in z and apply)







                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      edited 5 hours ago

























                      answered 5 hours ago









                      batFINGERbatFINGER

                      29.2k5 gold badges31 silver badges80 bronze badges




                      29.2k5 gold badges31 silver badges80 bronze badges











                      • $begingroup$
                        This is awesome. I was actually starting to build my own but you beat me to it. Do you plan to release it outside of stackoverflow? Seems like it would be super useful.
                        $endgroup$
                        – mikechambers
                        3 hours ago
















                      • $begingroup$
                        This is awesome. I was actually starting to build my own but you beat me to it. Do you plan to release it outside of stackoverflow? Seems like it would be super useful.
                        $endgroup$
                        – mikechambers
                        3 hours ago















                      $begingroup$
                      This is awesome. I was actually starting to build my own but you beat me to it. Do you plan to release it outside of stackoverflow? Seems like it would be super useful.
                      $endgroup$
                      – mikechambers
                      3 hours ago




                      $begingroup$
                      This is awesome. I was actually starting to build my own but you beat me to it. Do you plan to release it outside of stackoverflow? Seems like it would be super useful.
                      $endgroup$
                      – mikechambers
                      3 hours ago

















                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Blender Stack Exchange!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      Use MathJax to format equations. MathJax reference.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fblender.stackexchange.com%2fquestions%2f146083%2fcreate-circle-with-inner-radius%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу

                      Israel Cuprins Etimologie | Istorie | Geografie | Politică | Demografie | Educație | Economie | Cultură | Note explicative | Note bibliografice | Bibliografie | Legături externe | Meniu de navigaresite web oficialfacebooktweeterGoogle+Instagramcanal YouTubeInstagramtextmodificaremodificarewww.technion.ac.ilnew.huji.ac.ilwww.weizmann.ac.ilwww1.biu.ac.ilenglish.tau.ac.ilwww.haifa.ac.ilin.bgu.ac.ilwww.openu.ac.ilwww.ariel.ac.ilCIA FactbookHarta Israelului"Negotiating Jerusalem," Palestine–Israel JournalThe Schizoid Nature of Modern Hebrew: A Slavic Language in Search of a Semitic Past„Arabic in Israel: an official language and a cultural bridge”„Latest Population Statistics for Israel”„Israel Population”„Tables”„Report for Selected Countries and Subjects”Human Development Report 2016: Human Development for Everyone„Distribution of family income - Gini index”The World FactbookJerusalem Law„Israel”„Israel”„Zionist Leaders: David Ben-Gurion 1886–1973”„The status of Jerusalem”„Analysis: Kadima's big plans”„Israel's Hard-Learned Lessons”„The Legacy of Undefined Borders, Tel Aviv Notes No. 40, 5 iunie 2002”„Israel Journal: A Land Without Borders”„Population”„Israel closes decade with population of 7.5 million”Time Series-DataBank„Selected Statistics on Jerusalem Day 2007 (Hebrew)”Golan belongs to Syria, Druze protestGlobal Survey 2006: Middle East Progress Amid Global Gains in FreedomWHO: Life expectancy in Israel among highest in the worldInternational Monetary Fund, World Economic Outlook Database, April 2011: Nominal GDP list of countries. Data for the year 2010.„Israel's accession to the OECD”Popular Opinion„On the Move”Hosea 12:5„Walking the Bible Timeline”„Palestine: History”„Return to Zion”An invention called 'the Jewish people' – Haaretz – Israel NewsoriginalJewish and Non-Jewish Population of Palestine-Israel (1517–2004)ImmigrationJewishvirtuallibrary.orgChapter One: The Heralders of Zionism„The birth of modern Israel: A scrap of paper that changed history”„League of Nations: The Mandate for Palestine, 24 iulie 1922”The Population of Palestine Prior to 1948originalBackground Paper No. 47 (ST/DPI/SER.A/47)History: Foreign DominationTwo Hundred and Seventh Plenary Meeting„Israel (Labor Zionism)”Population, by Religion and Population GroupThe Suez CrisisAdolf EichmannJustice Ministry Reply to Amnesty International Report„The Interregnum”Israel Ministry of Foreign Affairs – The Palestinian National Covenant- July 1968Research on terrorism: trends, achievements & failuresThe Routledge Atlas of the Arab–Israeli conflict: The Complete History of the Struggle and the Efforts to Resolve It"George Habash, Palestinian Terrorism Tactician, Dies at 82."„1973: Arab states attack Israeli forces”Agranat Commission„Has Israel Annexed East Jerusalem?”original„After 4 Years, Intifada Still Smolders”From the End of the Cold War to 2001originalThe Oslo Accords, 1993Israel-PLO Recognition – Exchange of Letters between PM Rabin and Chairman Arafat – Sept 9- 1993Foundation for Middle East PeaceSources of Population Growth: Total Israeli Population and Settler Population, 1991–2003original„Israel marks Rabin assassination”The Wye River Memorandumoriginal„West Bank barrier route disputed, Israeli missile kills 2”"Permanent Ceasefire to Be Based on Creation Of Buffer Zone Free of Armed Personnel Other than UN, Lebanese Forces"„Hezbollah kills 8 soldiers, kidnaps two in offensive on northern border”„Olmert confirms peace talks with Syria”„Battleground Gaza: Israeli ground forces invade the strip”„IDF begins Gaza troop withdrawal, hours after ending 3-week offensive”„THE LAND: Geography and Climate”„Area of districts, sub-districts, natural regions and lakes”„Israel - Geography”„Makhteshim Country”Israel and the Palestinian Territories„Makhtesh Ramon”„The Living Dead Sea”„Temperatures reach record high in Pakistan”„Climate Extremes In Israel”Israel in figures„Deuteronom”„JNF: 240 million trees planted since 1901”„Vegetation of Israel and Neighboring Countries”Environmental Law in Israel„Executive branch”„Israel's election process explained”„The Electoral System in Israel”„Constitution for Israel”„All 120 incoming Knesset members”„Statul ISRAEL”„The Judiciary: The Court System”„Israel's high court unique in region”„Israel and the International Criminal Court: A Legal Battlefield”„Localities and population, by population group, district, sub-district and natural region”„Israel: Districts, Major Cities, Urban Localities & Metropolitan Areas”„Israel-Egypt Relations: Background & Overview of Peace Treaty”„Solana to Haaretz: New Rules of War Needed for Age of Terror”„Israel's Announcement Regarding Settlements”„United Nations Security Council Resolution 497”„Security Council resolution 478 (1980) on the status of Jerusalem”„Arabs will ask U.N. to seek razing of Israeli wall”„Olmert: Willing to trade land for peace”„Mapping Peace between Syria and Israel”„Egypt: Israel must accept the land-for-peace formula”„Israel: Age structure from 2005 to 2015”„Global, regional, and national disability-adjusted life years (DALYs) for 306 diseases and injuries and healthy life expectancy (HALE) for 188 countries, 1990–2013: quantifying the epidemiological transition”10.1016/S0140-6736(15)61340-X„World Health Statistics 2014”„Life expectancy for Israeli men world's 4th highest”„Family Structure and Well-Being Across Israel's Diverse Population”„Fertility among Jewish and Muslim Women in Israel, by Level of Religiosity, 1979-2009”„Israel leaders in birth rate, but poverty major challenge”„Ethnic Groups”„Israel's population: Over 8.5 million”„Israel - Ethnic groups”„Jews, by country of origin and age”„Minority Communities in Israel: Background & Overview”„Israel”„Language in Israel”„Selected Data from the 2011 Social Survey on Mastery of the Hebrew Language and Usage of Languages”„Religions”„5 facts about Israeli Druze, a unique religious and ethnic group”„Israël”Israel Country Study Guide„Haredi city in Negev – blessing or curse?”„New town Harish harbors hopes of being more than another Pleasantville”„List of localities, in alphabetical order”„Muncitorii români, doriți în Israel”„Prietenia româno-israeliană la nevoie se cunoaște”„The Higher Education System in Israel”„Middle East”„Academic Ranking of World Universities 2016”„Israel”„Israel”„Jewish Nobel Prize Winners”„All Nobel Prizes in Literature”„All Nobel Peace Prizes”„All Prizes in Economic Sciences”„All Nobel Prizes in Chemistry”„List of Fields Medallists”„Sakharov Prize”„Țara care și-a sfidat "destinul" și se bate umăr la umăr cu Silicon Valley”„Apple's R&D center in Israel grew to about 800 employees”„Tim Cook: Apple's Herzliya R&D center second-largest in world”„Lecții de economie de la Israel”„Land use”Israel Investment and Business GuideA Country Study: IsraelCentral Bureau of StatisticsFlorin Diaconu, „Kadima: Flexibilitate și pragmatism, dar nici un compromis în chestiuni vitale", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 71-72Florin Diaconu, „Likud: Dreapta israeliană constant opusă retrocedării teritoriilor cureite prin luptă în 1967", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 73-74MassadaIsraelul a crescut in 50 de ani cât alte state intr-un mileniuIsrael Government PortalIsraelIsraelIsraelmmmmmXX451232cb118646298(data)4027808-634110000 0004 0372 0767n7900328503691455-bb46-37e3-91d2-cb064a35ffcc1003570400564274ge1294033523775214929302638955X146498911146498911

                      Кастелфранко ди Сопра Становништво Референце Спољашње везе Мени за навигацију43°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.5588543°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.558853179688„The GeoNames geographical database”„Istituto Nazionale di Statistica”проширитиууWorldCat156923403n850174324558639-1cb14643287r(подаци)