LoginSignup
0
1

More than 1 year has passed since last update.

「円柱を直径で入力したい」をsympyとFreeCADでやってみた。

Last updated at Posted at 2022-10-05

オリジナル
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()

png.png

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1