オリジナル
Part Cylinder¥Scripting
cylinder.Radius
以下で十分のような気もします。
日本語フォーラムより
sympy入力とFreeCAD作図で
sympyだと、√や分数のままで計算できます。ただし、出力時に、float変換必要です。
座標を文字出力しています。
import FreeCAD
import Part
import Draft
import Mesh
import FreeCAD as App
# 入力 ############################################################################
from sympy import *
C=Point(5,10,15)
cylinder_Radius,cylinder_Height=20/2,50
Rx,Ry,Rz =75,60,210
# 作図 ############################################################################
def my_Cylinder(cylinder_Radius,cylinder_Height,A,Rx,Ry,Rz):
print(A)
Vx=float(A.x)
Vy=float(A.y)
Vz=float(A.z)
cylinder = doc.addObject("Part::Cylinder", "myCylinder")
cylinder.Radius = cylinder_Radius
cylinder.Height = cylinder_Height
cylinder.Placement = App.Placement(App.Vector(Vx,Vy,Vz), App.Rotation(Rx,Ry,Rz))
def myXYZ2Txt(A):
return '(' + str(A.x) + ',' + str(A.y) + ',' + str(A.z) + ')'
def myTxt_XYZ(A,myWedgei):
P5x=float(A.x)
P5y=float(A.y)
P5z=float(A.z)
print(P5x,P5y,P5z)
p5 = FreeCAD.Vector(P5x, P5y, P5z)
myText = Draft.makeText(myWedgei, p5)
myText.Label = myWedgei
FreeCADGui.ActiveDocument.ActiveObject.FontSize = '5'
doc = App.activeDocument()
my_Cylinder(cylinder_Radius,cylinder_Height,C,Rx,Ry,Rz)
myTxt_XYZ(C,"C"+myXYZ2Txt(C))
App.ActiveDocument.addObject("App::Origin", "Origin")
App.ActiveDocument.getObject('Origin').Visibility = True
doc.recompute()
参考