рдорд┐рд▓рд┐рдП: FreeCAD

FreeCAD рдПрдХ рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рдереНрд░реА-рдбрд╛рдпрдореЗрдВрд╢рдирд▓ рдПрдбрд┐рдЯрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рддреАрди-рдЖрдпрд╛рдореА рдореЙрдбрд▓ рдФрд░ рдЙрдирдХреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЗ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
FreeCAD рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг 0.12 рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк 0.13 рдмреАрдЯрд╛ рдХреЛ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

FreeCAD рдЖрдпрд╛рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реНрд╡рд░реВрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ "рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ" (рдкреАрдбреАрдПрдл рдкреНрд░рд╛рд░реВрдк рдореЗрдВ) рднреА рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

FreeCAD рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдХрд╛рдлреА рднрд░рдкреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╣рдо рдЬрд┐рддрдирд╛ рдЪрд╛рд╣реЗрдВ рдЙрддрдирд╛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдЙрддреНрдкрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ FreeCAD рдлреЛрд░рдо рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред




рдбреНрд░рд╛рдЗрдВрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, FreeCAD рдореЗрдВ рдЕрдЬрдЧрд░ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдФрд░ рдЫреЛрдЯреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдк рдЕрдЬрдЧрд░ рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрдВрд╕реЛрд▓ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╣реИ: рдЗрд╕рдХрд╛ рдХреЛрдИ рдЗрддрд┐рд╣рд╛рд╕ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдорд▓реНрдЯреАрд╡реЛрд▓реНрдпреВрдо рдлреНрд░реАрдХрд╛рдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрд╛рдЗрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдВред

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдБ рдХрд┐ FreeCAD рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдкреНрд░рддреНрдпреЗрдХ рд▓реЙрдиреНрдЪ рд╕реЗ рдкрд╣рд▓реЗ, FreeCAD рд╕рд┐рд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде-рд╕рд╛рде ~ / .FreeCAD / Mod / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рд╡рд╣рд╛рдБ рд╕реНрдерд┐рдд рд▓рд┐рдкрд┐рдпреЛрдВ, рд╡рд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

FreeCAD рдореЗрдВ рд▓рд┐рдкрд┐рдпрд╛рдВ рджреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрддреА рд╣реИрдВ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд┐рдиреНрд╣реЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрдиреНрд╣реЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдЬрдЧрд░ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛), рд╕рд╛рде рд╣реА рд╕рд╛рде GUI рд╕реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреАред рдЖрдк рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрджрд┐ рдЖрдкрдиреЗ рд╕реНрд░реЛрдд рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рд╣реИ), рддреЛ рдЖрдкрдХреЛ рдлреНрд░реАрдХрд╛рдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрд╣рд▓реЗ, рдкрд╣рд▓реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╣рдо рдПрдХ "рдкрд╣рд┐рдпрд╛" рдЦреАрдВрдЪрддреЗ рд╣реИрдВ


рдЖрдЗрдП XY рд╕рдорддрд▓ рдореЗрдВ рдПрдХ рд╕реНрдХреЗрдЪ рдмрдирд╛рдПрдВ, рдЙрд╕ рдкрд░ рд╣рдо рдЕрдкрдиреЗ рдкрд╣рд┐рдпреЗ рдХреЗ "рдЖрдзреЗ" рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рдЦреАрдВрдЪреЗрдВрдЧреЗред



рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ, "рдЖрдВрдЦ рд╕реЗ" рд╣рдо рдПрдХ рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЦреНрдп рд░реВрдкреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ ("рдкрдЯреНрдЯрд┐рдХрд╛" рдЙрдкрдХрд░рдг) рдореЗрдВ рдЪрд╛рдорд░ рдХреЛ рдХрд╛рдЯреЗрдВред рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд▓рдВрдЧрд░ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░реЗрдВрдЧреЗред рд╣рдо рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЯрд╛рдИ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░рд╡рд╛рдж рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдФрд░ рдкрдЯреНрдЯрд┐рдХрд╛ рдХреЗ рд░реЗрдбреА рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред



рдлрд┐рд░ рд╣рдо рд╕реНрдХреЗрдЪ рдХрд╛ рд╕рдВрдкрд╛рджрди рдкреВрд░рд╛ рдХрд░ рд▓реЗрдВрдЧреЗ, рдЗрд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ (рдмрд╛рдИрдВ рдУрд░) рдЪреБрдиреЗрдВ рдФрд░ "рд░реЛрдЯреЗрдЯ рдЪрдпрдирд┐рдд рд╕реНрдХреЗрдЪ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╣рд┐рдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ:



рдЕрдм "рдбрд┐рд╕реНрдХ" рдореЗрдВ рдПрдХ рдкрд╛рдпрджрд╛рди рдмрдирд╛рдПрдБред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, XZ рд╡рд┐рдорд╛рди рдореЗрдВ рдПрдХ рдФрд░ рд╕реНрдХреЗрдЪ рдмрдирд╛рдПрдВред рдЗрд╕рдореЗрдВ, рд╣рдо рд╕реЗрдЧрдореЗрдВрдЯ рдФрд░ рдЖрд░реНрдХ рд╕реЗ рдХрдЯ рдЖрдЙрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдХреЗрдВрджреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЫреЗрдж рдмрд┐рд▓реНрдХреБрд▓ рд╕рдордорд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рдЕрджреГрд╢реНрдп рд░реЗрдЦрд╛рдУрдВ рдкрд░ рдЭрдкрдЯреЗрдВрдЧреЗред



рд╣рдорд╛рд░реА рд╕реНрдХреЗрдЪ 100 рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдЦреАрдВрдЪреЛ (рддрд╛рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд╣рд┐рдпрд╛ рдХреЛ рдкрд╛рд░ рдХрд░реЗ) рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ (рдкреНрд▓реЗрд╕реЗрдореЗрдВрдЯ.рдкреЛрдЬрд┐рд╢рди) рд╡рд╛рдИ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде 50 рдЗрдХрд╛рдЗрдпрд╛рдБ:



рдЕрдм рд╣рдореЗрдВ "рд╕рд░реНрдХрд▓" рдореЗрдВ рдХрдЯрдЖрдЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрдХрд▓ рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдЖрдХреГрддрд┐ рдХреЛ "рдЧреБрдгрд╛" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред "рдкреНрд░рдЬрдирди" рдХреЗ рд▓рд┐рдП рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ NCopy.py:

import FreeCAD, FreeCADGui, Part from FreeCAD import Base def CopyObj(obj): name = obj.Name shape = obj.Shape newshape = shape.copy() newobject = FreeCAD.ActiveDocument.addObject("Part::Feature",name) newobject.Shape = newshape return newobject def copyCirc(C=Base.Vector(0,0,0), A=Base.Vector(0,0,1), Ang=90, N=4, rot=True, moveOriToGrp=False): Ang %= 360 if (N > 360/Ang or N == 0): N = int(360/Ang) sel = FreeCADGui.Selection.getSelection() if (not sel): FreeCAD.Console.PrintError("Error: you should select some objects") return None doc = FreeCAD.activeDocument() grp = doc.addObject("App::DocumentObjectGroup", "CircularCopy") for Obj in sel: A0 = Ang for i in range (1, N): newobject = CopyObj(Obj) S = newobject.Shape S.rotate(C, A, A0) if (not rot): S.rotate(S.Placement.Base, A, -A0) grp.addObject(newobject) A0 += Ang if (moveOriToGrp): grp.addObject(Obj) return grp 


рдЗрд╕реЗ ~ / .FreeCAD / Mod / рдХреЗ рдХреБрдЫ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред

CopyObj рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕рд╣рд╛рдпрдХ рдорд╛рди рд╣реИ (рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛): рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмрд╕ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИред

CopyCirc рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЫрд╣ рддрд░реНрдХ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рджрд┐рдП рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЙрди рддрд░реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рди рд╣реИрдВред рдЙрд╕рдХреЗ рддрд░реНрдХ рд╣реИрдВ:

рд╣рдореЗрдВ рд╕рд░реНрдХрд▓ рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╣рдо рдЙрдиреНрд╣реЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕рд░реНрдХрд▓ рдХреЗ рдХреЗрдВрджреНрд░ рддрдХ рдХреА рджреВрд░реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ [s] рдЪрдпрди рд╕реЗ рд▓реА рдЧрдИ рд╣реИред рдпрджрд┐ рдХреБрдЫ рднреА рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдмрд╕ рддреНрд░реБрдЯрд┐ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ "CircularCopy" рд╕рдореВрд╣ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЪрдпрди рд╕реЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ (рдПрди -1) рдмрд╛рд░ рдПрдХ рд╕рд░реНрдХрд▓ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдм рдЖрдЗрдП рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ: рдЬрд┐рд╕ рд╕рд░реНрдХрд▓ рдХреЗ рд╕рд╛рде рдЖрдк рд╡рд╕реНрддреБрдУрдВ рдХреЛ "рдЧреБрдгрд╛" (0,1,0) рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд╣рдо рдХреЙрдкрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ 30 рдбрд┐рдЧреНрд░реА рдХреЗ рдмрд░рд╛рдмрд░ рдХреЛрдг рдмрдирд╛рдПрдВрдЧреЗ, рдХреЗрдВрджреНрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдореВрд▓ рдкрд░) рд╕реНрдерд┐рдд рд╣реИ, рдкреВрд░реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рднрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЖрдЬреНрдЮрд╛ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

 import NCopy NCopy.copyCirc(A=App.Vector(0,1,0), N=0, Ang=30, moveOriToGrp=True) 


рд╣рдо рдкреНрд░рдХрдЯ рд╣реБрдП рд╕рдореВрд╣ "рд╕рд░реНрдХреБрд▓рд░рдХреЙрдкреА" рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдпреВрдирд┐рдпрди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВ, "рдлреНрдпреВрдЬрди" рдСрдмреНрдЬреЗрдХреНрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЕрдм рд╣рдорд╛рд░реЗ "рд╡реНрд╣реАрд▓" ("рд░реЗрд╡реЛрд▓реНрдпреВрд╢рди") рдФрд░ рдЗрд╕ рдпреВрдирд┐рдпрди рдХреЛ Ctrl рдХреБрдВрдЬреА рджрдмрд╛рдХрд░ рдЪреБрдиреЗрдВ, рдФрд░ рдСрдкрд░реЗрд╢рди "рдЪреМрд░рд╛рд╣реЗ" рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрдЯрдЖрдЙрдЯ рд╣рдорд╛рд░реЗ "рд╡реНрд╣реАрд▓" рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:



рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреАрдбреАрдПрдлрд╝ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП "рдкрд╣рд┐рдпрд╛" рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:


рдЕрдиреЗрдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣


рдореИрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реВрдВрдЧрд╛ред

рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рд╡рд╕реНрддреБ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ (рдПрдорд╡реА рд╢рд┐рдлреНрдЯ рд╡реЗрдХреНрдЯрд░ рд╣реИ, рдХреБрд▓реНрд╣рд╛рдбрд╝реА рд░реЛрдЯреЗрд╢рди рдЕрдХреНрд╖ рд╣реИ, рд░реЛрдЯ рд░реЛрдЯреЗрд╢рди рдХреЛрдг рд╣реИ):

 def CopyObjAt(obj, mv=Base.Vector(0,0,0), axe=Base.Vector(0,0,0), rot=0): obj = CopyObj(obj) obj.Placement = FreeCAD.Placement(mv, axe, rot) return obj 


рд╡реЗрдХреНрдЯрд░ V рдкрд░ N рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ:

 def copyVec(N=2, V=Base.Vector(0,0,1), moveOriToGrp=False): sel = FreeCADGui.Selection.getSelection() if sel: doc = FreeCAD.activeDocument() grp = doc.addObject("App::DocumentObjectGroup", "VectorCopy") for Obj in sel: R0 = V for i in range (1, N): newobject = CopyObj(Obj) newobject.Shape.translate(R0) grp.addObject(newobject) R0 += V if (moveOriToGrp): grp.addObject(Obj) else: FreeCAD.Console.PrintError("Error: you should select some objects") return grp 


рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдПрди рдмрд╛рд░ рдХреЙрдкреА рдХрд░реЗрдВ - рдмреА-рд╕реНрдкрд▓рд╛рдЗрди:

 def copyByTrajectory(N=4): sel = FreeCADGui.Selection.getSelection() def prErr(): FreeCAD.Console.PrintError("Error: you should select a traectory and one object\n") if (not sel): prErr(); return None L = len(sel) if(L != 2): prErr(); return None if(N < 2): FreeCAD.Console.PrintError("Error: N shold be more than 1\n"); return None Traj = sel[0].Shape #(a, b) = Traj.ParameterRange Obj = sel[1] TLen = Traj.Length / (N - 1) curPos = 0 doc = FreeCAD.activeDocument() grp = doc.addObject("App::DocumentObjectGroup", "BSplineCopy") try: for i in range(0, N): v = Traj.valueAt(curPos); curPos += TLen newobj = CopyObjAt(Obj, v) grp.addObject(newobj) except: FreeCAD.Console.PrintError("Error: bad selection\n") return None 


рдПрдХ рдЕрд╕рд░ рдбреНрд░рд╛


рдЕрдм, "рдкрд╣рд┐рдпрд╛" рдХреЗ рд╕рдорд╛рди, рд╣рдо рдПрдХ рдкрд┐рдВрдЬрд░реЗ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрд╕рд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЦреЛрд▓ рдЦреАрдВрдЪреЗрдВред рдлрд┐рд░, "рдЖрдВрдЦ рд╕реЗ" рд╣рдо рдкрд╣рд▓реЗ рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛рдУрдВ рдХреЗ рдЖрдХреГрддрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЙрдирдХреЗ рдмреАрдЪ рд╣рдо рдПрдХ рд╡реГрддреНрдд рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рддреБрд░рдВрдд рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдкрдиреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддреЗ рд╣реИрдВ: рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕реНрдерд┐рддрд┐, рд╡рд░реНрдЧреЛрдВ рдХреА рдКрд░реНрдзреНрд╡рд╛рдзрд░рддрд╛ рдФрд░ рдХреНрд╖реИрддрд┐рдЬрддрд╛, рд╕рдорд╛рди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдорд╛рдирддрд╛, рдЧреЛрд▓реЗ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдЯрд░рди рдХреЗ рдкреНрд░рддрд┐рдмрдВрдзрд╛рддреНрдордХ рдкреНрд░рддрд┐рдмрдВрдз рдФрд░ рдЧреЗрдВрдж рдХреА рд╕рддрд╣, рд╣рдо рдХреБрдЫ рдЖрдпрд╛рдореЛрдВ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВрдЧреЗред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреЗрдЪ рдорд┐рд▓рддреЗ рд╣реИрдВ:



рд╣рдо рд╕реНрдХреЗрдЪ рд╕рдВрдкрд╛рджрди рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рдореЗрдВ рдЪреБрдирддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреЗрдЪ рд░реЛрдЯреЗрд╢рди рдСрдкрд░реЗрд╢рди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдРрд╕реА рдЕрдЪреНрдЫреА рдЪреАрдЬ рдорд┐рд▓рддреА рд╣реИ:



рдЕрдм рд╣рдореЗрдВ рдЧреЗрдВрджреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд╖реЗрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдПрдХ рдЧреЛрд▓реЗ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВ" рдЖрдЗрдХрди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВред рдЗрд╕реЗ рдЪреБрдиреЗрдВ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рд╣реА рдХрд░реЗрдВ: рд╣рдо рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЛ 15 рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рдХрд░ рджреЗрдВрдЧреЗ, рдФрд░ рд╕реНрдерд┐рддрд┐ (рдкреНрд▓реЗрд╕рдореЗрдВрдЯ.рдкреЛрдЬрд┐рд╢рди) рдореЗрдВ рд╣рдо рдПрдХреНрд╕ рдХреЛ 58 рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╕рдордиреНрд╡рдпрд┐рдд рдХрд░реЗрдВрдЧреЗред рдЧреЗрдВрджреЛрдВ рдХреЛ "рдЧреБрдгрд╛" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдЧреЗрдВрдж рдХреЗ рдХреЛрдгреАрдп рд╡реНрдпрд╛рд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕реНрдХреЗрдЪ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ (рдЕрдм рдпрд╣ "рдХреНрд░рд╛рдВрддрд┐" рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИ)ред рддрд╛рдХрд┐ рд╢реЗрд▓ рд╣рд╕реНрддрдХреНрд╖реЗрдк рди рдХрд░реЗ, рдЗрд╕реЗ рдЪреБрдиреЗрдВ рдФрд░ рд╕реНрдкреЗрд╕рдмрд╛рд░ рдХреЛ рджрдмрд╛рдПрдВ - рдпрд╣ рдЕрджреГрд╢реНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рдореВрд▓ рд╕реЗ рд╣рдорд╛рд░реА рдЧреЗрдВрдж рддрдХ рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдмрдирд╛рдПрдВред рд╣рдо рдкреНрд░рддрд┐рдмрдВрдз рдмрдирд╛рддреЗ рд╣реИрдВ: рд╣рдо рдХрдбрд╝рд╛рдИ рд╕реЗ рдЦрдВрдб рдХреЗ рдПрдХ рдЫреЛрд░ рдХреЛ рдореВрд▓ рдореЗрдВ рдмрд╛рдБрдзрддреЗ рд╣реИрдВ, рдФрд░ рдЧреЗрдВрдж рдХреЗ рджреВрд╕рд░реЗ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХреЛрдиреЗ рдкрд░ рд╕реАрдорд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВ (рдмреЗрд╢рдХ, FreeCAD рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рдХрд╕рдо рдЦрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЗрд╡рд▓ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ)ред рддреЛ, рдпрд╣ рдХреЛрдг 14.9882 рдбрд┐рдЧреНрд░реА рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдмреЛрд▓ - 15 рдбрд┐рдЧреНрд░реАред рдЗрд╕ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рддреБрд░рдВрдд рд╣рдЯрд╛ рджреЗрдВ рддрд╛рдХрд┐ рдлреНрд░реАрдХрд╛рдб рд╢рдкрде рдЧреНрд░рд╣рдг рди рдХрд░реЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдореЗрдврд╝реЗ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯ рдЖрдПред рдЧреЗрдВрдж рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рд╣рд░ 30 рдбрд┐рдЧреНрд░реА рдореЗрдВ рдПрдХ рд╕рд░реНрдХрд▓ рдореЗрдВ рдЗрд╕рдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВред рдПрдХ рдЕрд╕реНрдерд╛рдпреА рджреНрд╡рд╛рд░рд╛, рд╣рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рд╕рдорд╛рди рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

 import NCopy NCopy.copyCirc(A=App.Vector(0,1,0), N=0, Ang=30, moveOriToGrp=True) 


рдЕрдм рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд░рдВрдЧ рджреЗрдВред рдЧреЗрдВрджреЛрдВ рдХреЛ рд░рдВрдЧрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдорд┐рд▓рд╛рдПрдВред "рд╕реМрдВрджрд░реНрдп" рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЛ "рд╕рдкрд╛рдЯ рд░реЗрдЦрд╛рдУрдВ" рд╕реЗ "рдЫрд╛рдпрд╛рдВрдХрд┐рдд" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рд╢реИрд▓реА рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЧреЗрдВрджреЛрдВ рдХрд╛ рд░рдВрдЧ "рд╕реЛрдирд╛" (255, 214, 0) рдерд╛, рдФрд░ рдЦреЛрд▓ рдХрд╛ рд░рдВрдЧ "рдЪрд╛рдВрджреА" (192, 192, 192) рдерд╛ред рдЖрдк GUI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рдВрдЧ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ (рдХреЗрд╡рд▓ RGB рдШрдЯрдХреЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдпрджрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ "рдЕрд╕рд░" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

 FreeCADGui.getDocument("bearing").getObject("Fusion").ShapeColor = (1.00,0.84,0.00) FreeCADGui.getDocument("bearing").getObject("Revolution").ShapeColor = (0.75,0.75,0.75) 


рдЙрд╕реА рддрд░рд╣, рдЖрдк рдЙрдирдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

 FreeCADGui.getDocument("bearing").getObject("Revolution").DisplayMode = "Shaded" FreeCADGui.getDocument("bearing").getObject("Fusion").DisplayMode = "Shaded" 




рдФрд░ рдЖрдк рдПрдХ рдбреНрд░рд╛рдЗрдВрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрд╕рд╡реАрдЬреА рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рдкрдЯрдХрдерд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛, рдлреНрд░реАрдХрд╛рдб рдХрдВрд╕реЛрд▓ рд╕реЗ рдЕрдкрдиреА рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдЗрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ (рдЕрдЬрдЧрд░ рдореЙрдбреНрдпреВрд▓) рдХреЛ ~ / .FreeCAD / Mod / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдпрд╛ рдЗрд╕рдХреЗ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, GUI ("рдмрдЯрди", "рдореЗрдиреВ", рдЖрджрд┐) рд╕реЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдПрдХ рдЗрдирд┐рд╢рд┐рдЯрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ InitGui.py рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдиреЗ рдкрд░ рдпрд╣ FreeCAD рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓реЗрдЧреАред

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рдиреНрдпреВрдирддрдо рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 class MyWorkbench ( Workbench ): import   Icon =     () MenuText = " " ToolTip = "   " def Initialize(self): # ToolBar list = [     ] self.appendToolbar("  ",list) # Menu list = [     ] self.appendMenu(" ",list) Gui.addWorkbench(MyWorkbench()) 


"рдЖрдЗрдЯрдо рдХреА рд╕реВрдЪреА" рд╕реВрдЪреА рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рд╣рдорд╛рд░реЗ рдЯреВрд▓рдХрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдирд╛рдоред рддрджрдиреБрд╕рд╛рд░, рдЗрди рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдХрдорд╛рдВрдб рдпрд╛ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЬрдм рдЯрд╛рд╕реНрдХрдмрд╛рд░ рдпрд╛ рдореЗрдиреВ рдЖрдЗрдЯрдо рдкрд░ рдПрдХ рдердВрдмрдиреЗрд▓ рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдиреНрдпреВрдирддрдо рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 class OneAction: def Activated(self): #Initialize import   ,        def GetResources(self): import   IconPath =     (  ) MenuText = "   " ToolTip = "" return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} FreeCADGui.addCommand(' ', OneAction()) 


рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ FreeCAD рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд▓рд╛рдЗрди "рдЖрдЗрдЯрдо рдХрд╛ рдирд╛рдо" рд╣рдорд╛рд░реЗ OneAction рд╡рд░реНрдЧ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ (рддрджрдиреБрд╕рд╛рд░, рд╣рдо рдЗрд╕ рдЯреВрд▓ рдХреЛ рд╣рдорд╛рд░реЗ рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рд╢реБрд░реБрдЖрддреА рд╡рд░реНрдЧ рдХреА рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдбрд╛рд▓ рджреЗрдВрдЧреЗ)ред

рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдиреНрдпреВрдирддрдо рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 class MyObject: def __init__(self, obj, ): ''' Add new properties to partfeature ''' obj.addProperty(" "," ","","").= obj.Proxy = self obj.Shape =    -(obj.ViewObject) def onChanged(self, obj, prop): ,     prop, obj -   -(obj.ViewObject) def execute(self, obj): ,   ""  -(obj.ViewObject) 


рдкреНрд░рджрд╛рддрд╛ рд╡рд░реНрдЧ рд╕рдВрд╕рд╛рдзрди (рдЪрд┐рд╣реНрди, рдЖрджрд┐) рдХреЗ рд╕рд╛рде рдЬреАрдпреВрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг FreeCAD рд╕рдВрд╕рд╛рдзрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдХрдорд╛рдВрдб рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдорджрдж рд╕реЗ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд▓реЗрдВрд╕ рдЦреАрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ, рдЬрд╣рд╛рдВ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, "рдПрдХ рджрд┐рди рдЦреЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рдЙрдбрд╝рдирд╛ рд╣реИред" рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ:

 import Lens a=[[8,6,1,6,3], [10,-15,2.5,8,5], [-16,10,0.5,6,7], [-8,-6,0.5,4,3], [3,3,0.2,2,1], [0,0,0.1,1,0.1], [0,3,.3,1]] Lens.makeLensBench(a) b=[[-10,8,0.1,6], [8,16,0.5,6], [16,-9,1,6]] Lens.makeLensBench(b,App.Vector(0,10,0)) 


рдЖрдкрдХреЛ рдпрд╣ рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:



рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдореЙрдбрд▓ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдЬрд╛рдиреЗ рдФрд░ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

рдпреВрдкреАрдбреА: рдпрд╣рд╛рдВ рдПрдХ рдлреНрд░реАрдХреЗрдб (рдХреНрд░рд╛рдпреЛрд╕реНрдЯреЗрдЯ) рдореЗрдВ рдХрд┐рдП рдЧрдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ ред

Source: https://habr.com/ru/post/In145985/


All Articles