Başlık: Parametrik grafiklerle Python dosyalarını decompile - AutoCAD Plant 3D

博客封面-反编译.png

Bu makale, buradaki orijinal çevirisidir 

 

Bu makale, yerleşik Python dosyalarının nasıl bulunacağını ve üçüncü parti araçlarla nasıl decompile edileceğini kısaca açıklar. 

  1. Onunla gelen Python dosyasını bulun 

AutoCAD Plant 3D 2025'i örnek alarak, ilgili parametrik grafik dosyası kurulum yolunun altındadır: 

 

C:\Program Files\Autodesk\AutoCAD 2025\PLNT3D\ContentScripts  

 

manon_puel_0-1766570013380.png

 

 

  1. Dosyayı açın 

Dosyaları variants.zip sıkıştırılmış pakette açın 

  

  1.  cpb.pyc dosyasını bulun 
varmain\arcsub\cpbsub  

 

manon_puel_1-1766570013381.png

 

 

  1.  Pyc dosyalarını decompile etmek için üçüncü taraf web sitelerini kullanın 

Python decompilation tool  

  

  1.  Dekompilasyonun sonucu 

 

manon_puel_2-1766570013381.png

 

 

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.11

from aqa.math import *
from varmain.arcsub.cpb_util import *
from varmain.primitiv import *
from varmain.var_basic import *

def CPB(s, D, D2, R, L2, L1, A, OF, ID = (114.3, 0, 175, 0, 0, 90, -1, 'CPB'), **kw):
    if R <= D / 2:
        R = D / 2 + 0.0001
    if D2 <= 0:
        D2 = D
    o0 = ARC3D2(s, D = D / 2, D2 = D2 / 2, R = R, A = A)
    Pts = CPB_CalcPts(o0, A, None, None)
    a1 = Pts[1]
    a0 = Pts[0]
    Pts4 = Pts[4]
    Pts5 = Pts[5]
    Pts6 = Pts[6]
    Pts7 = Pts[7]
    Pts = CPB_CalcPts(o0, A, L1 + a1 - a1, L2 + a0 - a0)
    HLeft = L2
    HRight = L1
    if HLeft <= R:
        Pts[5] = Pts5
        Pts[7] = Pts7
        HLeft = R * 0.01
        arc3d2TMP = CYLINDER(s, R = D * 0.01 / 2, H = R * 0.01).rotateY(-90).translate(Pts[8])
        arc3d2TMP.uniteWith(o0)
        o0.erase()
        o0 = arc3d2TMP
    else:
        arc3d2TMP = CYLINDER(s, R = D2 / 2, H = HLeft - a1).rotateX(-90).rotateZ(90 - A).translate(Pts[9])
        arc3d2TMP.uniteWith(o0)
        o0.erase()
        o0 = arc3d2TMP
    if HRight <= R:
        Pts[4] = Pts4
        Pts[6] = Pts6
        HRight = R * 0.01
    else:
        arc3d2TMP = CYLINDER(s, R = D / 2, H = HRight - a0).rotateY(90).translate(Pts[8])
        arc3d2TMP.uniteWith(o0)
        o0.erase()
        o0 = arc3d2TMP
    OF = getThickness(D = D, OF = OF)
    if OF > 0:
        O1 = getInsideDiameter(D = D, OF = OF)
        O2 = getInsideDiameter(D = D2, OF = OF)
        o1 = ARC3D2(s, D = O1 / 2, D2 = O2 / 2, R = R, A = A)
        o0.subtractFrom(o1)
        o1.erase()
    s.setPoint(Pts[4], Pts[6], 0)
    s.setPoint(Pts[5], Pts[7], 0)

activate(CPB, '\n[Type AQA-VCPB]\nVID=STRING,32\nDN=STRING\nD=LENGTH\nD2=LENGTH\nR=LENGTH\nA=ANGLE\nOF=LENGTH\nUnits=STRING,8\n;\nuniqId=CALC =$self.VID$ $self.DN$ $self.D2$ $self.A$\n;\nboltCalcVal=CALC CPB_GetNeededBoltParam(B1=0.0, B2=0.0, L1=-2, L2=-2)\n;\n@key=VID,DN\n', '@VarDataDefault0')

 

Bu makale, buradaki orijinal çevirisidir