3D মডেলিং ও ডেটা এক্সচেঞ্জের জন্য ওপেন সোর্স পাইথন লাইব্রেরি
3D মডেলিং এবং ডেটা এক্সচেঞ্জ হ্যান্ডলিংয়ের জন্য ফ্রি পাইথন লাইব্রেরি। এটি পাইথন API ব্যবহার করে অনলাইনে 3D CAD, BIM, PLM এবং CAM ফাইল ফরম্যাটের সঙ্গে কাজ করতে দেয়।
PythonOCC-Core লাইব্রেরি কি?
PythonOCC-Core একটি ফ্রি 3D মডেলিং এবং CAD অটোমেশন লাইব্রেরি। এটি Python ব্যবহার করে, যা একটি ব্যাপকভাবে ব্যবহৃত প্রোগ্রামিং ভাষা, OpenCASCADE Technology (OCCT) কের্নেলের উপরে। এই সমন্বয় জটিল 3D আকৃতি তৈরি, পরিবর্তন এবং অধ্যয়নের জন্য একটি শক্তিশালী ভিত্তি প্রদান করে। Python-এর সহজতা এবং OCCT-এর শক্তিশালী মডেলিং টুলগুলিকে একত্রিত করে, আপনার হাতে একটি বহুমুখী এবং কার্যকরী টুল আসে। এর স্বজ্ঞাত Python ইন্টারফেস এবং বিস্তৃত কার্যকারিতা সেটের মাধ্যমে, লাইব্রেরি ক্ষেত্রের নবীন এবং অভিজ্ঞ ডেভেলপার উভয়ের জন্য একটি নিরবচ্ছিন্ন অভিজ্ঞতা প্রদান করে। এটি আপনাদের মতো স্থপতি এবং প্রকৌশলীদের প্যারামেট্রিক মডেল তৈরি, বিল্ডিং লেআউট উৎপাদন এবং কাঠামোগত বিশ্লেষণ পরিচালনা করতে সক্ষম করে। এই টুলটি ডিজাইন ওয়ার্কফ্লো উন্নত করে, সুনির্দিষ্ট ভিজ্যুয়ালাইজেশন এবং কার্যকরী টিমওয়ার্ককে সম্ভব করে। এটি অটোমোটিভ, এয়ারস্পেস এবং প্রোডাক্ট ডিজাইনসহ বিভিন্ন সেক্টরে জনপ্রিয়, জটিল 3D মডেল বিকাশ এবং পরিমার্জনের জন্য। এই লাইব্রেরি ব্যবহার করে আপনি প্রোটোটাইপিং, সিমুলেশন এবং ডিজাইন বিশ্লেষণ দ্রুত করতে পারেন, ফলে পণ্য উন্নয়নের প্রক্রিয়া সহজ হয়।
PythonOCC-Core-এর ভিজ্যুয়ালাইজেশন ফিচারগুলি গেম এবং ভার্চুয়াল রিয়েলিটি অভিজ্ঞতা তৈরি করার জন্য পারফেক্ট। এই টুলের সাহায্যে আপনি আকর্ষণীয় পরিবেশ, বাস্তবসম্মত সিমুলেশন এবং ইন্টারেক্টিভ অ্যাডভেঞ্চার তৈরি করতে পারেন। এর বাইরে, লাইব্রেরিটি মেডিক্যাল ইমেজিং নিয়ে কাজ করা, 3D জ্যামিতি ম্যানিপুলেট করা, CAD ডেটা ইম্পোর্ট ও এক্সপোর্ট করা, 3D মডেলে উন্নত সিমুলেশন চালানো, ওয়েব ব্রাউজারে 3D কন্টেন্ট ভিজ্যুয়ালাইজ করা, এবং জনপ্রিয় Python GUI-গুলোর মাধ্যমে 3D ভিজ্যুয়াল প্রদর্শন করার মতো অপরিহার্য ফাংশন সরবরাহ করে। লাইব্রেরিটি কম্পিউটেশনাল ফিজিক্স, মেটেরিয়াল সায়েন্স এবং বায়োমেডিক্যাল ইঞ্জিনিয়ারিংয়ের মতো বৈজ্ঞানিক গবেষণার ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে। বিভিন্ন শিল্পের অনেক সফটওয়্যার পেশাজীবী ও ডেভেলপাররা PythonOCC-Core-কে আকর্ষণীয় মনে করেন কারণ এটি Python-এর সহজতা এবং OCCT-এর শক্তি একত্রিত করে। PythonOCC-Core দিয়ে আপনি আপনার সৃজনশীলতা বাড়াতে এবং জটিল CAD প্রক্রিয়াগুলোকে সহজ করতে পারেন। এটি 3D মডেলিং এবং ডিজাইনে নতুন উদ্ভাবন ও উৎপাদনশীলতার সম্ভাবনা উন্মুক্ত করে।
PythonOCC-Core দিয়ে শুরু করা
PythonOCC-Core স্থিতিশীল রিলিজ ইনস্টল করার সবচেয়ে সহজ উপায় হল pip ব্যবহার করা। মসৃণ ইনস্টলেশনের জন্য দয়া করে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।
pip দিয়ে PythonOCC-Core ইনস্টল করুন
pip install pythonocc-coreConda দিয়ে PythonOCC-Core ইনস্টল করুন
conda install -c conda-forge pythonocc-coreআপনি নিম্নলিখিত কমান্ড ব্যবহার করে Conda এর মাধ্যমে PythonOCC-Core ইনস্টল করতে পারেন।
conda install -c 1adrianb face_alignmentআপনি কম্পাইল করা শেয়ার্ড লাইব্রেরি Github রিপোজিটরি থেকে ডাউনলোড করতে পারেন।
Python ব্যবহার করে 3D জ্যামিতি তৈরি ও পরিচালনা করুন
ওপেন সোর্স PythonOCC-Core লাইব্রেরি পাইথন অ্যাপ্লিকেশনের মধ্যে 3D মডেল তৈরি ও পরিচালনার জন্য সম্পূর্ণ সমর্থন অন্তর্ভুক্ত করেছে। এছাড়াও, লাইব্রেরিটি পয়েন্ট, কার্ভ, পৃষ্ঠ এবং সলিডসহ 3D জ্যামিতিক আকার তৈরি ও পরিবর্তনের জন্য বিস্তৃত টুলসের সেট প্রদান করে। এটি বুলিয়ান অপারেশন, ফিলেটিং এবং চ্যামফারিংয়ের মতো জটিল অবজেক্ট নির্মাণ ও পরিবর্তনের জন্য বিস্তৃত অ্যালগরিদম সরবরাহ করে। নিম্নলিখিত উদাহরণটি দেখায় কীভাবে সফটওয়্যার ডেভেলপাররা পাইথন কমান্ড ব্যবহার করে মূল জ্যামিতির বাউন্ডিং বক্স তৈরি করতে পারেন।
Python অ্যাপের মধ্যে বাউন্ডিং বক্স কীভাবে গণনা এবং প্রদর্শন করবেন?
def get_boundingbox(shape, tol=1e-6, use_mesh=True):
bbox = Bnd_Box()
bbox.SetGap(tol)
if use_mesh:
mesh = BRepMesh_IncrementalMesh()
mesh.SetParallelDefault(True)
mesh.SetShape(shape)
mesh.Perform()
if not mesh.IsDone():
raise AssertionError("Mesh not done.")
brepbndlib_Add(shape, bbox, use_mesh)
xmin, ymin, zmin, xmax, ymax, zmax = bbox.Get()
return xmin, ymin, zmin, xmax, ymax, zmax, xmax - xmin, ymax - ymin, zmax - zmin
print("Box bounding box computation")
box_shape = BRepPrimAPI_MakeBox(10.0, 20.0, 30.0).Shape()
bb1 = get_boundingbox(box_shape)
print(bb1)
print("Cylinder bounding box computation")
cyl_shape = BRepPrimAPI_MakeCylinder(10.0, 20.0).Shape()
bb2 = get_boundingbox(cyl_shape)
print(bb2)
print("Torus bounding box computation")
torus_shape = BRepPrimAPI_MakeCylinder(15.0, 5.0).Shape()
bb3 = get_boundingbox(torus_shape)
print(bb3)
Python API ব্যবহার করে CAD অটোমেশন
ওপেন সোর্স PythonOCC-Core লাইব্রেরি CAD ডায়াগ্রামের সাথে সম্পর্কিত বিভিন্ন কাজ পরিচালনার জন্য খুবই উপযোগী ফিচার প্রদান করেছে। এই লাইব্রেরি CAD-এ সাধারণত ব্যবহৃত বিভিন্ন ফাইল ফরম্যাট সমর্থন করে, যার মধ্যে STEP, IGES, STL, এবং BREP অন্তর্ভুক্ত। লাইব্রেরি ডেভেলপারদের পুনরাবৃত্ত CAD কাজ স্বয়ংক্রিয় করতে সক্ষম করে, যেমন প্যারামেট্রিক ডিজাইন তৈরি, জ্যামিতিক রূপান্তর সম্পাদন, এবং জ্যামিতিক বিশ্লেষণ করা। এটি একটি উচ্চ-স্তরের API প্রদান করে যা CAD ওয়ার্কফ্লো বাস্তবায়নকে সহজ করে, ফলে CAD অটোমেশন টুল তৈরি করার জন্য এটি আদর্শ পছন্দ।
Python API ব্যবহার করে শেপ তৈরি ও CAD STEP ফাইল ফরম্যাটে রপ্তানি কীভাবে করবেন?
from __future__ import print_function
from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox
from OCC.Core.STEPControl import STEPControl_Writer, STEPControl_AsIs
from OCC.Core.Interface import Interface_Static_SetCVal
from OCC.Core.IFSelect import IFSelect_RetDone
# creates a basic shape
box_s = BRepPrimAPI_MakeBox(10, 20, 30).Shape()
# initialize the STEP exporter
step_writer = STEPControl_Writer()
dd = step_writer.WS().TransferWriter().FinderProcess()
print(dd)
Interface_Static_SetCVal("write.step.schema", "AP203")
# transfer shapes and write file
step_writer.Transfer(box_s, STEPControl_AsIs)
status = step_writer.Write("box.stp")
if status != IFSelect_RetDone:
raise AssertionError("load failed")