【问题标题】:Show point labels next to them in FreeCAD在 FreeCAD 中在它们旁边显示点标签
【发布时间】:2018-08-21 16:36:14
【问题描述】:

我想在 FreeCAD 中创建一些点,并在它们旁边显示它们的标签。我的最终目标是实现我放在 OpenFOAM 存储库中的 this feature request

我尝试在草稿工作台中创建一些点并将它们标记为:

App.newDocument("test")
Gui.activateWorkbench("DraftWorkbench")
import Draft

point00=Draft.makePoint(0.0,0.0,0.0)
point00.Label = "0"

point01=Draft.makePoint(1.0,0.0,0.0)
point01.Label = "1"

point03=Draft.makePoint(0.0,1.0,0.0)
point03.Label = "2"

现在来自here,如果我添加代码:

a=App.ActiveDocument.addObject("App::AnnotationLabel","Annotation")
a.LabelText=["0"]

它将标记第一个点:

如何对自动创建的所有点执行相同操作?我的目标是在它们旁边显示一些带有标签的点。最好有一个带有 x,y,z 和标签的函数,并自动显示该点,并在其旁边带有标签。

P.S.可以在this GitHub Gist 中找到这项工作的摘要。

【问题讨论】:

  • 嗨,您可以创建一个具有所有必需属性的特殊 python 功能对象。然后在execute方法中编写一个例程定义你的可视化逻辑``` my_point = FreeCAD.ActiveDocument.addObject('Part::FeaturePython', name)
  • 你在尝试编写这样的函数时发现了什么问题?
  • @ArtemZhukov 你能详细说明一下吗?
  • 抱歉,没有足够的时间回复,我建议创建一个单独的 python 功能对象来实现您的自定义逻辑。像这里的东西:``` my_point = FreeCAD.ActiveDocument.addObject('Part::FeaturePython', name) MyPoint(my_point) class MyPoint(object): def __init__(self, obj): """初始化属性。"" " obj.addProperty("App::AnnotationLabel","Y") obj.addProperty("App::AnnotationLabel","Y") obj.addProperty("App::AnnotationLabel","Z") ```
  • 然后添加一个视图提供者并创建一个工厂,在任何坐标中创建你的点

标签: python python-2.7 freecad


【解决方案1】:

一种临时解决方案是使用文本。如果vertices 是一个元组列表(xi, yi, zi) 那么:

for vertexNum, vertex in enumerate(vertices):
    p=Draft.makePoint(vertex[0],vertex[1],vertex[2])
    p.Label=str(vertexNum)
    Draft.makeText([str(vertexNum)],point=FreeCAD.Vector(vertex[0],vertex[1],vertex[2]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    相关资源
    最近更新 更多