3D CAD ফাইল ফর্ম্যাটের জন্য ওপেন সোর্স পাইথন লাইব্রেরি
প্যারামেট্রিক 3D CAD মডেল তৈরি করতে বিনামূল্যে পাইথন CAD লাইব্রেরি। এটি ঐতিহ্যগত STL ছাড়াও STEP, AMF এবং 3MF এর মতো উচ্চ মানের CAD ফর্ম্যাট তৈরি করে
ওপেন সোর্স পাইথন লাইব্রেরি CadQuery হল প্যারামেট্রিক 3D CAD মডেল তৈরির জন্য একটি সহজে ব্যবহারযোগ্য পাইথন লাইব্রেরি। লাইব্রেরিটি খুবই শক্তিশালী এবং ছোট স্ক্রিপ্ট লিখে পাইথন অ্যাপ্লিকেশনের মধ্যে উচ্চ মানের CAD মডেল তৈরি করতে পারে। স্ক্রিপ্ট কাস্টমাইজ করা এবং একটি একক স্ক্রিপ্ট ব্যবহার করে বিভিন্ন বস্তু তৈরি করাও সম্ভব। CadQuery স্ক্রিপ্টগুলি খুব দ্রুত এবং অন্যান্য উপলব্ধ লাইব্রেরির তুলনায় দ্রুত STL, STEP, AMF এবং 3MF তৈরি করতে পারে৷
লাইব্রেরি উন্নত মডেলিং ক্ষমতা যেমন ফিললেট, কার্ভিলিনিয়ার এক্সট্রুডস, প্যারামেট্রিক কার্ভ এবং লফ্ট অফার করে। এটি একটি স্ক্রিপ্ট-ভিত্তিক লাইব্রেরি যা একটি প্যারামেট্রিক মডেল তৈরি করতে পারে যা শেষ ব্যবহারকারীদের দ্বারা সহজেই কাস্টমাইজ করা যায়। এটি স্ক্রিপ্ট সহ 3D মডেল তৈরি করে যা আপনি কীভাবে একজন মানুষের কাছে বস্তুটি বর্ণনা করবেন তার যতটা সম্ভব কাছাকাছি। CadQuery অ্যাপাচি পাবলিক লাইসেন্স, সংস্করণ 2.0 এর শর্তাবলীর অধীনে লাইসেন্সপ্রাপ্ত।
সেই CadQuery লাইব্রেরিটি ইচ্ছাকৃতভাবে GUI-হীন হওয়ার জন্য ডিজাইন করা হয়েছে, যাতে এটি প্রোগ্রামেটিকভাবে 3D মডেল তৈরির জন্য ইঞ্জিনিয়ারিং এবং বৈজ্ঞানিক অ্যাপ্লিকেশনগুলির মধ্যে ব্যবহার করা যেতে পারে। আপনি যদি একটি GUI ব্যবহার করতে চান, আপনি Qt-ভিত্তিক GUI CQ-সম্পাদক বা Jupyter এক্সটেনশন jupyter-cadquery বিবেচনা করতে পারেন। অন্যান্য পাইথন লাইব্রেরির সাথে লাইব্রেরি ব্যবহার করাও সম্ভব।
CadQuery দিয়ে শুরু করা
CadQuery স্থিতিশীল রিলিজ ইনস্টল করার সবচেয়ে সহজ উপায় হল পিপ ব্যবহার করা। একটি মসৃণ ইনস্টলেশনের জন্য অনুগ্রহ করে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।
Pip এর মাধ্যমে CadQuery ইনস্টল করুন
pip install cadquery
আপনি Github সংগ্রহস্থল থেকে সংকলিত শেয়ার্ড লাইব্রেরি ডাউনলোড করতে পারেন।
Python 3D লাইব্রেরির মাধ্যমে বহুভুজের সাথে কাজ করুন
বহুভুজ হল একটি দ্বি-মাত্রিক আকৃতি যার বাহু সোজা। বহুভুজ মডেলিং হল বহুভুজ জাল ব্যবহার করে বস্তুর পৃষ্ঠতলের প্রতিনিধিত্ব বা আনুমানিক মডেলিং করার একটি পদ্ধতি। ওপেন সোর্স পাইথন লাইব্রেরি CadQuery সফ্টওয়্যার ডেভেলপারদের পাইথন কোডের মাত্র কয়েকটি লাইন দিয়ে প্রতিটি স্ট্যাক পয়েন্টের জন্য বহুভুজ তৈরি করতে সক্ষম করে। এটি 3d প্রিন্টারে খুব উপকারী যার ফার্মওয়্যার ছোট গর্তের আকারের জন্য সঠিক হয় না।
Python 3D লাইব্রেরির মাধ্যমে মুখে ওয়ার্কপ্লেন তৈরি করুন
ওপেন সোর্স পাইথন লাইব্রেরি ক্যাডকুয়েরি পাইথন অ্যাপ্লিকেশনের ভিতরে ফেসে ওয়ার্কপ্লেন তৈরি করার জন্য সম্পূর্ণ সমর্থন প্রদান করেছে। এইভাবে ওয়ার্কপ্লেন ব্যবহার করা CadQuery-এর একটি মূল বৈশিষ্ট্য। এটি ব্যবহারকারীদের ভেরিয়েবলের বিভিন্ন বৈশিষ্ট্যের অবস্থান অনুসন্ধান করা থেকে মুক্ত করে এবং মডেলটিকে অপ্রয়োজনীয় মাত্রাগুলি মুছে ফেলতে সক্ষম করে। ব্যবহারকারীরা Workplane.faces () পদ্ধতিতে কল করে ফলস্বরূপ কঠিনের মুখগুলি নির্বাচন করতে পারেন। অনুগ্রহ করে মনে রাখবেন যে ডিফল্টরূপে একটি নতুন ওয়ার্কপ্লেনের উৎপত্তি নির্বাচিত মুখ থেকে একটি সমতল তৈরি করে এবং সেই সমতলে পূর্বের উত্স প্রজেক্ট করে গণনা করা হয়।
পাইথনের মাধ্যমে মুখের উপর ওয়ার্কপ্লেন তৈরি করা
result = cq.Workplane("front").box(2, 3, 0.5) # make a basic prism
result = result.faces(">Z").workplane().hole(0.5) # find the top-most face and make a hole
পাইথনের মাধ্যমে 3D লেগো ব্রিকসের সাথে কাজ করা
CadQuery লাইব্রেরি পাইথন কমান্ড ব্যবহার করে বিভিন্ন আকারের লেগো ইটগুলির প্রতিনিধিত্ব করে 3D অ্যানিমেশন তৈরি করার জন্য সম্পূর্ণ সমর্থন প্রদান করেছে। বেশ কয়েকটি কিউব এবং সিলিন্ডার একসাথে যুক্ত করে ইট পুনরায় তৈরি করাও সম্ভব। আমরা একটি যৌগিক বস্তু তৈরি করতে পারি এই 3D আকারগুলিকে একটি একক বস্তুতে (ইট) যোগ করার জন্য। নিচের উদাহরণটি দেখায় কিভাবে যে কোন আকারের নিয়মিত আয়তক্ষেত্রাকার Lego(TM) ইট তৈরি করতে হয়। ইটের নীচের অংশ সম্পর্কিত যুক্তির কারণে এটি কেবল জটিল।
পাইথনের মাধ্যমে 3D লেগো ইট তৈরি করুন
#####
# Inputs
######
lbumps = 6 # number of bumps long
wbumps = 2 # number of bumps wide
thin = True # True for thin, False for thick
#
# Lego Brick Constants-- these make a lego brick a lego :)
#
pitch = 8.0
clearance = 0.1
bumpDiam = 4.8
bumpHeight = 1.8
if thin:
height = 3.2
else:
height = 9.6
t = (pitch - (2 * clearance) - bumpDiam) / 2.0
postDiam = pitch - t # works out to 6.5
total_length = lbumps*pitch - 2.0*clearance
total_width = wbumps*pitch - 2.0*clearance
# make the base
s = cq.Workplane("XY").box(total_length, total_width, height)
# shell inwards not outwards
s = s.faces("Z").workplane(). \
rarray(pitch, pitch, lbumps, wbumps, True).circle(bumpDiam / 2.0) \
.extrude(bumpHeight)
# add posts on the bottom. posts are different diameter depending on geometry
# solid studs for 1 bump, tubes for multiple, none for 1x1
tmp = s.faces(" 1 and wbumps > 1:
tmp = tmp.rarray(pitch, pitch, lbumps - 1, wbumps - 1, center=True). \
circle(postDiam / 2.0).circle(bumpDiam / 2.0).extrude(height - t)
elif lbumps > 1:
tmp = tmp.rarray(pitch, pitch, lbumps - 1, 1, center=True). \
circle(t).extrude(height - t)
elif wbumps > 1:
tmp = tmp.rarray(pitch, pitch, 1, wbumps - 1, center=True). \
circle(t).extrude(height - t)
else:
tmp = s
# Render the solid
build_object(tmp)