123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- # Created: 08.04.2018
- # Copyright (c) 2018, Manfred Moitzi
- # License: MIT-License
- from .graphics import ExtendedTags, DXFAttr, DefSubclass, DXFAttributes, XType
- from .graphics import none_subclass, entity_subclass
- from .spline import Spline, spline_subclass
- _HELIX_CLS = """ 0
- CLASS
- 1
- HELIX
- 2
- AcDbHelix
- 3
- ObjectDBX Classes
- 90
- 4095
- 91
- 0
- 280
- 0
- 281
- 1
- """
- _HELIX_TPL = """0
- HELIX
- 5
- 0
- 330
- 0
- 100
- AcDbEntity
- 8
- 0
- 100
- AcDbSpline
- 70
- 0
- 71
- 3
- 72
- 0
- 73
- 0
- 74
- 0
- 100
- AcDbHelix
- 90
- 29
- 91
- 63
- 10
- 0.0
- 20
- 0.0
- 30
- 0.0
- 11
- 1.0
- 21
- 0.0
- 31
- 0.0
- 12
- 0.0
- 22
- 0.0
- 32
- 1.0
- 40
- 1.0
- 41
- 1.0
- 42
- 1.0
- 290
- 1
- 280
- 1
- """
- helix_subclass = DefSubclass('AcDbHelix', {
- 'major_release_number': DXFAttr(90),
- 'maintenance_release_number': DXFAttr(91),
- 'axis_base_point': DXFAttr(10, xtype=XType.point3d),
- 'start_point': DXFAttr(11, xtype=XType.point3d),
- 'axis_vector': DXFAttr(12, xtype=XType.point3d),
- 'radius': DXFAttr(40),
- 'turns': DXFAttr(41),
- 'turn_height': DXFAttr(42),
- 'handedness': DXFAttr(290), # Handedness: 0=left, 1=right
- 'constrain': DXFAttr(280), # Constrain type: 0= Constrain turn height; 1= Constrain turns; 2= Constrain height
- })
- class Helix(Spline):
- # Requires AC1021/R2007
- __slots__ = ()
- TEMPLATE = ExtendedTags.from_text(_HELIX_TPL)
- DXFATTRIBS = DXFAttributes(none_subclass, entity_subclass, spline_subclass, helix_subclass)
- CLASS = ExtendedTags.from_text(_HELIX_CLS)
|