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?

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

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

Recursive search on Node Tree with Linq and Queue

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

Why do we need an estimator to be consistent?

Is it better to merge "often" or only after completion do a big merge of feature branches?

Can I make Ubuntu 18.04 switch between multiple windows of the program by just clicking the icon?

Is there any direct train from LHR Airport to Newcastle Gateshead?

Would using carbon dioxide as fuel work to reduce the greenhouse effect?

Can "Taking algebraic closure" be made into a functor?

Does switching on an old games console without a cartridge damage it?

On a Gameboy, what happens when attempting to read/write external RAM while RAM is disabled?

Is there a guide to help me transition from PSTricks to TikZ?

1025th term of the given sequence.

Why did modems have speakers?

How to handle not being able to attend as often as I'd like

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

Stellen - Putting, or putting away?

Counterexample finite intersection property

Adding gears to my grandson's 12" bike

What is the standard representation of a stop which could be either ejective or aspirated?

Killing a star safely

Can a warlock shoot multiple beams from the Eldritch Blast cantrip with only a single free hand?

Impact of throwing away fruit waste on a peak > 3200 m above a glacier



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
    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

















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
    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













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
    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












  • 1




    $begingroup$
    From a circle, in edit mode select the vertices, then E+S (to extrude and scale).
    $endgroup$
    – lemon
    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







1




1




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




$begingroup$
From a circle, in edit mode select the vertices, then E+S (to extrude and scale).
$endgroup$
– lemon
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




$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 8 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 4 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

                      Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

                      Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

                      Tom Holland Mục lục Đầu đời và giáo dục | Sự nghiệp | Cuộc sống cá nhân | Phim tham gia | Giải thưởng và đề cử | Chú thích | Liên kết ngoài | Trình đơn chuyển hướngProfile“Person Details for Thomas Stanley Holland, "England and Wales Birth Registration Index, 1837-2008" — FamilySearch.org”"Meet Tom Holland... the 16-year-old star of The Impossible""Schoolboy actor Tom Holland finds himself in Oscar contention for role in tsunami drama"“Naomi Watts on the Prince William and Harry's reaction to her film about the late Princess Diana”lưu trữ"Holland and Pflueger Are West End's Two New 'Billy Elliots'""I'm so envious of my son, the movie star! British writer Dominic Holland's spent 20 years trying to crack Hollywood - but he's been beaten to it by a very unlikely rival"“Richard and Margaret Povey of Jersey, Channel Islands, UK: Information about Thomas Stanley Holland”"Tom Holland to play Billy Elliot""New Billy Elliot leaving the garage"Billy Elliot the Musical - Tom Holland - Billy"A Tale of four Billys: Tom Holland""The Feel Good Factor""Thames Christian College schoolboys join Myleene Klass for The Feelgood Factor""Government launches £600,000 arts bursaries pilot""BILLY's Chapman, Holland, Gardner & Jackson-Keen Visit Prime Minister""Elton John 'blown away' by Billy Elliot fifth birthday" (video with John's interview and fragments of Holland's performance)"First News interviews Arrietty's Tom Holland"“33rd Critics' Circle Film Awards winners”“National Board of Review Current Awards”Bản gốc"Ron Howard Whaling Tale 'In The Heart Of The Sea' Casts Tom Holland"“'Spider-Man' Finds Tom Holland to Star as New Web-Slinger”lưu trữ“Captain America: Civil War (2016)”“Film Review: ‘Captain America: Civil War’”lưu trữ“‘Captain America: Civil War’ review: Choose your own avenger”lưu trữ“The Lost City of Z reviews”“Sony Pictures and Marvel Studios Find Their 'Spider-Man' Star and Director”“‘Mary Magdalene’, ‘Current War’ & ‘Wind River’ Get 2017 Release Dates From Weinstein”“Lionsgate Unleashing Daisy Ridley & Tom Holland Starrer ‘Chaos Walking’ In Cannes”“PTA's 'Master' Leads Chicago Film Critics Nominations, UPDATED: Houston and Indiana Critics Nominations”“Nominaciones Goya 2013 Telecinco Cinema – ENG”“Jameson Empire Film Awards: Martin Freeman wins best actor for performance in The Hobbit”“34th Annual Young Artist Awards”Bản gốc“Teen Choice Awards 2016—Captain America: Civil War Leads Second Wave of Nominations”“BAFTA Film Award Nominations: ‘La La Land’ Leads Race”“Saturn Awards Nominations 2017: 'Rogue One,' 'Walking Dead' Lead”Tom HollandTom HollandTom HollandTom Hollandmedia.gettyimages.comWorldCat Identities300279794no20130442900000 0004 0355 42791085670554170004732cb16706349t(data)XX5557367