コード例 #1
0
def draw_pad(d,center=(0,0),front=True):
    layer='B.Mask'
    color=2
    if front:
        layer='F.Mask'
        color=3
    x,y=center
    w=0.5*PAD_WIDTH_X
    h=0.5*PAD_HEIGHT_Y
    points=[
    (x-w,y-h),
    (x-w,y+h),
    (x+w,y+h),
    (x+w,y-h)
    ]
    solid = dxf.solid(
    points,
    layer=layer,
    color=color)
    d.add(solid)
コード例 #2
0
def out_dxf(png_path):
    # 用opencv 读取png颜色
    _img = cv.imread(png_path)
    gray = cv.cvtColor(_img, cv.COLOR_RGB2GRAY)
    box_hex = []
    for row in range(25):
        box_col_hex = []
        for col in range(25):
            px = gray[row * 20 + 12, col * 20 + 12]
            if px > 200:
                box_col_hex.append(0)
            else:
                box_col_hex.append(1)
        box_hex.append(box_col_hex)

    # print(box_hex)

    # 父目录的父目录
    dxf_dir = os.path.dirname(os.path.dirname(png_path))
    name = os.path.basename(png_path)[:-4]
    dxf_path = os.path.join(dxf_dir, 'dxf', f'{name}.dxf')

    print(f'正在生成{dxf_path}')
    drawing = dxf.drawing(dxf_path)

    ## box_size = 7.5/25 二维码总宽度/格子数
    box_size = 0.3
    for i, box_row in enumerate(box_hex):
        for j, box_col in enumerate(box_row):
            if box_col > 0:
                solid = dxf.solid([(box_size * i, box_size * (25 - j)), (box_size * (i + 1), box_size * (25 - j)),
                                   (box_size * (i + 1), box_size * (26 - j)), (box_size * i, box_size * (26 - j))],
                                  color=7)
                solid['layer'] = 'solids'
                solid['color'] = 7
                drawing.add(solid)
    drawing.save()
コード例 #3
0
ファイル: DrawFMCv15.0.py プロジェクト: hegemon70/DFX-FILES
def drawSolidTriangleFMC(draw, Ax, Ay, Bx, By, Cx, Cy, colorT):
    solid = dxf.solid([(Ax, Ay), (Bx, By), (Cx, Cy)])
    solid["color"] = colorT
    draw.add(solid)
    draw.add_layer(currentLayer, color=colorT)
コード例 #4
0
def drawSolidTriangleFMC(draw, Ax, Ay, Bx, By, Cx, Cy, colorT):
    solid = dxf.solid([(Ax, Ay), (Bx, By), (Cx, Cy)])
    solid['color'] = colorT
    draw.add(solid)
    draw.add_layer(currentLayer, color=colorT)
コード例 #5
0
# add LINE-entity
drawing.add(dxf.line((0, 0), (10, 0), color=dxfwrite.BYLAYER,
                     layer='dxfwrite'))

# add a CIRCLE-entity
drawing.add(dxf.circle(center=(5, 0), radius=5))

# add an ARC-entity
drawing.add(dxf.arc(center=(5, 0), radius=4, startangle=30, endangle=150))

#add a POINT-entity
drawing.add(dxf.point(point=(1, 1)))

# add a SOLID-entity with 4 points
drawing.add(dxf.solid([(0, 0), (1, 0), (1, 1), (0, 1)], color=2))

# add a SOLID-entity with 3 points
drawing.add(dxf.solid([(0, 1), (1, 1), (1, 2)], color=3))

# add a 3DFACE-entity
drawing.add(dxf.face3d([(5, 5), (6, 5), (6, 6), (5, 6)], color=3))

# add a Trace-entity
drawing.add(dxf.trace([(7, 5), (8, 5), (8, 6), (7, 6)], color=4))

# add a TEXT-entity
drawing.add(dxf.text("Manfred"))

# add a TEXT-entity with more properties
drawing.add(
コード例 #6
0
ファイル: simple_drawing.py プロジェクト: CoffenHu/dxfwrite
drawing.add(dxf.line((0,0),( 10,0),
    color=dxfwrite.BYLAYER,
    layer='dxfwrite'
))

# add a CIRCLE-entity
drawing.add(dxf.circle(center=(5,0), radius=5))

# add an ARC-entity
drawing.add(dxf.arc(center=(5,0), radius=4, startangle=30, endangle=150))

#add a POINT-entity
drawing.add(dxf.point(point=(1,1)))

# add a SOLID-entity with 4 points
drawing.add(dxf.solid([(0,0), (1,0), (1,1), (0,1)], color=2))

# add a SOLID-entity with 3 points
drawing.add(dxf.solid([(0,1), (1,1), (1,2)], color=3))

# add a 3DFACE-entity
drawing.add(dxf.face3d([(5,5), (6,5), (6,6), (5,6)], color=3))

# add a Trace-entity
drawing.add(dxf.trace([(7,5), (8,5), (8,6), (7,6)], color=4))

# add a TEXT-entity
drawing.add(dxf.text("Manfred"))

# add a TEXT-entity with more properties
drawing.add(dxf.text(
コード例 #7
0
ファイル: fileHandler.py プロジェクト: rfleissner/ChEsher
def writeCSDXF(fname, nameCS, nodeIDsCS, nodesCS, valuesCS, decFlow, scale, prefix, suffix):
    
    from dxfwrite.const import TOP, BOTTOM, LEFT, CENTER, RIGHT
    
    dwg = dxf.drawing(fname)

    # create block for symbol on left side of CS

    arrowLeft = [(0.0,0.25), (1.0, 0.25), (0.5, 1.1160), (0.0,0.25)]

    symbolLeft = dxf.block(name='symbolLeft')
    symbolLeft.add( dxf.solid(arrowLeft, color=0) )

    symbolLeft.add( dxf.attdef(insert=(0, -0.25), tag='CS', height=1.0, color=0, halign=LEFT, valign=TOP ))

    # create block for symbol on right side of CS

    arrowRight = [(0.0,0.25), (-1.0, 0.25), (-0.5, 1.1160), (0.0,0.25)]

    symbolRight = dxf.block(name='symbolRight')
    symbolRight.add( dxf.solid(arrowRight, color=0) )

    symbolRight.add( dxf.attdef(insert=(0, -0.25), tag='CS', height=1.0, color=0, halign=RIGHT, valign=TOP ))
    
    # create block for symbol on center of CS
    
    symbolCenter = dxf.block(name='symbolCenter')
    symbolCenter.add( dxf.attdef(insert=(0.0, 0.03), tag='MAX', height=0.75, color=0, halign=CENTER, valign=BOTTOM) )
    symbolCenter.add( dxf.attdef(insert=(0.0, -0.25), tag='MIN', height=0.75, color=0, halign=CENTER, valign=TOP) )

    # add block definitions to the drawing
    dwg.blocks.add(symbolLeft)
    dwg.blocks.add(symbolCenter)
    dwg.blocks.add(symbolRight)
    
    for csID in nodeIDsCS:
        x1 = nodesCS[nodeIDsCS[csID][0]][0]
        x2 = nodesCS[nodeIDsCS[csID][1]][0]
        y1 = nodesCS[nodeIDsCS[csID][0]][1]
        y2 = nodesCS[nodeIDsCS[csID][1]][1]
    
        p1 = (x1, y1)
        p2 = (x2, y2)
        dx = x2 - x1
        dy = y2 - y1
        phi = math.atan2(dy,dx)*180.0/math.pi
        pm = ((x1+x2)/2.0, (y1+y2)/2.0)

        valMin = valuesCS[csID][0]
        valMax = valuesCS[csID][1]

        dwg.add(dxf.polyline((p1, p2)))
        
        values = {'CS': "{0}".format(nameCS[csID])}
        
        dwg.add(dxf.insert2(blockdef=symbolLeft, insert=p1,
                    attribs=values,
                    xscale=scale,
                    yscale=scale,
                    layer='0',
                    rotation = phi))
                    
        dwg.add(dxf.insert2(blockdef=symbolRight, insert=p2,
                    attribs=values,
                    xscale=scale,
                    yscale=scale,
                    layer='0',
                    rotation = phi))
                    
        valuesCenter = {'MIN': "{0}%.{1}f{2} (min)".format(prefix, decFlow, suffix) % valMin, 'MAX': "{0}%.{1}f{2} (max)".format(prefix, decFlow, suffix) % valMax}
        
        dwg.add(dxf.insert2(blockdef=symbolCenter, insert=pm,
                    attribs=valuesCenter,
                    xscale=scale,
                    yscale=scale,
                    layer='0',
                    rotation = phi))
    dwg.save()