Example #1
0
def test_is_one_of():
    _validator = is_one_of({1, 3, 5})
    assert _validator(0) is False
    assert _validator(2) is False
    assert _validator(4) is False
    assert _validator(1) is True
    assert _validator(3) is True
    assert _validator(5) is True
Example #2
0
    'style': DXFAttr(7, default='Standard', optional=True),

    # Relative X scale factor—width (optional)
    # This value is also adjusted when fit-type text is used
    'width': DXFAttr(
        41, default=1, optional=True,
        validator=validator.is_greater_zero,
        fixer=RETURN_DEFAULT,
    ),

    # Text generation flags (optional)
    # 2 = backward (mirror-x),
    # 4 = upside down (mirror-y)
    'text_generation_flag': DXFAttr(
        71, default=0, optional=True,
        validator=validator.is_one_of({0, 2, 4, 6}),
        fixer=RETURN_DEFAULT,
    ),

    # Horizontal text justification type (optional) horizontal justification
    # 0 = Left
    # 1 = Center
    # 2 = Right
    # 3 = Aligned (if vertical alignment = 0)
    # 4 = Middle (if vertical alignment = 0)
    # 5 = Fit (if vertical alignment = 0)
    # This value is meaningful only if the value of a 72 or 73 group is nonzero
    # (if the justification is anything other than baseline/left)
    'halign': DXFAttr(
        72, default=0, optional=True,
        validator=validator.is_in_integer_range(0, 6),
Example #3
0
     283,
     default=0,
     validator=validator.is_in_integer_range(0, 101),
     fixer=validator.fit_into_integer_range(0, 101),
 ),
 # Hard reference to image def reactor object, not required by AutoCAD
 "image_def_reactor_handle":
 DXFAttr(360),
 # Clipping boundary type:
 # 1 = Rectangular
 # 2 = Polygonal
 "clipping_boundary_type":
 DXFAttr(
     71,
     default=1,
     validator=validator.is_one_of({1, 2}),
     fixer=RETURN_DEFAULT,
 ),
 # Number of clip boundary vertices that follow
 "count_boundary_points":
 DXFAttr(91),
 # Clip mode:
 # 0 = outside
 # 1 = inside mode
 "clip_mode":
 DXFAttr(
     290,
     dxfversion=DXF2010,
     default=0,
     validator=validator.is_integer_bool,
     fixer=RETURN_DEFAULT,
Example #4
0
        'm_smooth_density':
        DXFAttr(73, default=0, optional=True),
        'n_smooth_density':
        DXFAttr(74, default=0, optional=True),

        # Curves and smooth surface type:
        # 0 = No smooth surface fitted
        # 5 = Quadratic B-spline surface
        # 6 = Cubic B-spline surface
        # 8 = Bezier surface
        'smooth_type':
        DXFAttr(
            75,
            default=0,
            optional=True,
            validator=validator.is_one_of({0, 5, 6, 8}),
            fixer=RETURN_DEFAULT,
        ),
        'thickness':
        DXFAttr(39, default=0, optional=True),
        'extrusion':
        DXFAttr(
            210,
            xtype=XType.point3d,
            default=Z_AXIS,
            optional=True,
            validator=validator.is_not_null_vector,
            fixer=RETURN_DEFAULT,
        ),
    })
acdb_polyline_group_codes = group_code_mapping(acdb_polyline, ignore=(66, ))
Example #5
0
        dxfversion=const.DXF2010,
        optional=True,
        validator=validator.is_integer_bool,
        fixer=RETURN_DEFAULT,
    ),
    # Attribute type:
    # 1 = single line
    # 2 = multiline ATTRIB
    # 4 = multiline ATTDEF
    "attribute_type":
    DXFAttr(
        71,
        default=1,
        dxfversion=const.DXF2018,
        optional=True,
        validator=validator.is_one_of({1, 2, 4}),
        fixer=RETURN_DEFAULT,
    ),
}

# ATTDEF has an additional field: 'prompt'
# DXF attribute definitions are immutable, a shallow copy is sufficient:
attdef_fields = dict(attrib_fields)
attdef_fields["prompt"] = DXFAttr(
    3,
    default="",
    validator=validator.is_valid_one_line_text,
    fixer=validator.fix_one_line_text,
)

acdb_attdef = DefSubclass("AcDbAttributeDefinition", attdef_fields)