4/27/2023

Generate random DXF and cad image, python example

 

refer to code:

.

import ezdxf
import random
import matplotlib.pyplot as plt

# Random DXF file generator
def random_point():
return (random.uniform(-100, 100), random.uniform(-100, 100))

def add_random_line(msp):
start = random_point()
end = random_point()
msp.add_line(start, end)

def add_random_circle(msp):
center = random_point()
radius = random.uniform(1, 10)
msp.add_circle(center, radius)

def add_random_arc(msp):
center = random_point()
radius = random.uniform(1, 10)
start_angle = random.uniform(0, 360)
end_angle = random.uniform(start_angle, start_angle + 360)
msp.add_arc(center, radius, start_angle, end_angle)

def create_random_dxf(filename):
doc = ezdxf.new()
msp = doc.modelspace()

num_lines = 10
num_circles = 10
num_arcs = 10

for _ in range(num_lines):
add_random_line(msp)

for _ in range(num_circles):
add_random_circle(msp)

for _ in range(num_arcs):
add_random_arc(msp)

doc.saveas(filename)

# DXF to image conversion
def draw_entities(msp):
for entity in msp:
if entity.dxftype() == 'LINE':
x = [entity.dxf.start[0], entity.dxf.end[0]]
y = [entity.dxf.start[1], entity.dxf.end[1]]
plt.plot(x, y, 'k-')

elif entity.dxftype() == 'CIRCLE':
circle = plt.Circle((entity.dxf.center[0], entity.dxf.center[1]), entity.dxf.radius, edgecolor='k', facecolor='none')
plt.gca().add_patch(circle)

elif entity.dxftype() == 'ARC':
arc = plt.Arc((entity.dxf.center[0], entity.dxf.center[1]), 2 * entity.dxf.radius, 2 * entity.dxf.radius, theta1=entity.dxf.start_angle, theta2=entity.dxf.end_angle, edgecolor='k')
plt.gca().add_patch(arc)

# Add more entity types if needed

def dxf_to_image(dxf_file, image_file):
doc = ezdxf.readfile(dxf_file)
msp = doc.modelspace()
draw_entities(msp)

plt.gca().set_aspect('equal', adjustable='box')
plt.axis('off')
plt.savefig(image_file, dpi=300, bbox_inches='tight', pad_inches=0)

# Main program
random_dxf_file = 'random_dxf_file.dxf'
output_image_file = 'output_image.png'

create_random_dxf(random_dxf_file)
dxf_to_image(random_dxf_file, output_image_file)

..


This script first creates a random DXF file using the create_random_dxf function and saves it with the specified filename. Then, it reads the generated DXF file using the dxf_to_image function, draws the entities, and saves the result as a PNG image with the specified filename.

Thank you.
www.marearts.com
πŸ™‡πŸ»‍♂️


No comments:

Post a Comment