我正在尝试创建一个"平行"贝塞尔曲线.在我的尝试中,我已经接近但没有雪茄.我试图在2条曲线(红色,蓝色)之间保持稳定的1px偏移.
我的主要目标是使用边缘偏离algorythm来扩展/缩小svg路径.
解
对于正在寻找解决方案的其他人,我创建了一个AS3版本.
http://seant23.wordpress.com/2010/11/12/offset-bezier-curves/
我有一个关于如何在pythonOCC中使用样条线的两部分问题.
首先,我知道我可以创建样条曲线
array = []
array.append(gp_Pnt2d (0,0))
array.append(gp_Pnt2d (1,2))
array.append(gp_Pnt2d (2,3))
array.append(gp_Pnt2d (4,3))
array.append(gp_Pnt2d (5,5))
pt2d_list = point2d_list_to_TColgp_Array1OfPnt2d(array)
SPL1 = Geom2dAPI_PointsToBSpline(pt2d_list).Curve()
display.DisplayShape(make_edge2d(SPL1) , update=True)
Run Code Online (Sandbox Code Playgroud)
我希望bspline可以通过计算得出
BSPL1 = Geom2dAPI_PointsToBSpline(pt2d_list)
Run Code Online (Sandbox Code Playgroud)
但我怎么得到:
如何删除或添加bspline的结?
其次,在pythonOCC中加载CAD绘图.stp文件时,如下所示:
from OCC import TopoDS, StlAPI
shape = TopoDS.TopoDS_Shape()
stl_reader = StlAPI.StlAPI_Reader()
stl_reader.Read(shape,str(filename))
display.DisplayShape(shape)
Run Code Online (Sandbox Code Playgroud)
如何从knot,bspline和coefficient等形状中获取数据.
我正在寻找一个用于python的CAD模块.这就是我发现的,如果我错了,请纠正我:
好吧,似乎FreeCad的python绑定是最好的,但还有其他东西吗?
我正在寻找一个可以将CAD文件(DWG,DXF)转换为SVG格式的库.该库应该能够在Linux平台上运行.谁能告诉我哪个库可以做到这一点?
我想在WPF中开发一个新的CAD软件而不是使用WPF 3D,是否可以使用Unity3D作为我的图形引擎,它能够根据WPF中的数据对象旋转,平移,缩放和查看3D图形对象?
我问这个问题的原因是,Unity是一个游戏引擎,它使用C#作为脚本,但它不提供WPF应用程序的任何集成(将Unity嵌入到WPF中).
我在团结论坛上问了这个问题,找不到任何好的答案,所以要求更多的观众.
我有3D CAD模型,我想在网页上显示.我希望以类似<img>
标签的形式显示它(例如内联其他所有内容而不是单独的页面)我希望访问者能够旋转模型以从不同的角度查看它.
我有什么选择?
我正在考虑/看的事情
编辑: 模型不是很复杂,因此perf不是主要问题.
我正在制作一个程序来查看3D CAD模型,并希望构建自动爆炸视图.将要查看的所有装配都是轴对称的.有些可能不是,但大多数是.我想找出一种算法,用于将装配体中的零件自动移动到爆炸视图位置.这是我想通过算法实现的一个例子(当然减去标签):
我必须使用的唯一值是每个部分的边界框的中心.如果需要更多信息,我可以计算更多信息,但似乎它应该足够了.我想到的粗略方法是计算从组件原点到轴对称轴每个零件中心的矢量,然后计算相对于中心轴到零件中心的径向矢量.从那里开始,我需要找出一些能够沿着这两个向量的某种组合来缩放每个部分位置的计算.那是我不太确定这个方向的部分.我包含的图像显示了我想要的确切功能,但我希望能够通过任何浮点值缩放位置以展开或收缩爆炸视图,其中1.0是原始的组装模型.有任何想法吗?
我的最终目标如下:
我有一个巨大的点数据集,表示一个部件将如何逐层3D打印.我需要通过这些点创建一条直线并沿着这条直线挤出一个圆(所以重建部件,因为它将在以后打印).
我最初尝试使用样条曲线,但是这会尝试创建一条平滑线并且根本不遵循这些点.我尝试更改minDeg和maxDeg选项,但这仍然没有足够的帮助来创建我需要的实际曲线.
所以我一次尝试在两个点之间创建一个样条线,然后在创建一条线时将它们全部加在一起.这看起来很有希望,因为现在我确实得到了实际的尖角和线条通过精确点.但是,现在当我尝试沿着它挤出时,挤出型材的法线不会随着钢丝的角度而变化.
我花了最近4天的时间来解决这个问题,尝试了很多论坛和问题,但感觉完全迷失在pythonocc(opencascade)的世界里.
我的代码如下:
from __future__ import print_function
from OCC.gp import gp_Pnt, gp_Ax2, gp_Dir, gp_Circ
from OCC.GeomAPI import GeomAPI_PointsToBSpline
from OCC.TColgp import TColgp_Array1OfPnt
from OCC.BRepBuilderAPI import BRepBuilderAPI_MakeEdge,
BRepBuilderAPI_MakeWire, BRepBuilderAPI_MakeFace
from OCC.BRepOffsetAPI import BRepOffsetAPI_MakePipe
from OCC.Display.SimpleGui import init_display
display, start_display, add_menu, add_function_to_menu = init_display()
def pipe():
# the bspline path, must be a wire
# This will later be in a for loop but this is merely to validate the method
using three different points.
array …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为原理图,布局,绘图材料设计桌面UI.只是寻找实际软件设计师的高级建议.
假设一个内存中的"数据库",(所有用户数据的任意深度的clojure映射,以及可能的另一个用于应用程序首选项的等等),我正在研究如何在这些上执行模型 - 视图 - 控制器的事情,其中数据可以通过以下任何一个或多个来呈现和修改:
修改其中任何一个应立即显示在每个其他活动视图中,包括文本和图形,而不是在单击"确定"后...因此不允许使用模式框.如果出于某种原因,表视图,检查器视图和图形渲染都在视图中,以图形方式拖动框的角应立即显示在文本中等.
有问题的平台是JavaFX,但我想在UI和其他所有内容之间进行清晰的分离,所以我想避免bind
使用JFX,因为这会将我的设计数据与JFX Properties紧密联系起来,增加了模型的颗粒感,并迫使我在标准的clojure函数之外工作以处理数据,和/或大量处理整个getValue
/ setValue
世界.
我仍然假设至少有一些有状态/可变性,并使用内置的Clojure功能,例如add-watch
对atom/var/ref 的能力,并让运行时信号依赖于函数.
特定于平台的交互将与实际的UI紧密相关,例如reifying ActionListener
s和处理ObservableValue
s等,并将尝试最小化对JavaFX Property
等实际应用程序数据的依赖.我不是为了这个而招待FRP.
我不介意扩展JFX接口或构建我自己的协议来使用特定于应用程序的协议defrecord
,但我更喜欢将应用程序数据保留为直接的Clojure数据,而不受平台的影响.
问题是如何设置这一切,最接近不可变模型.我看到几个选项:
(deref...)
垃圾.我相信这就是JFX想要这样做的方式,在叶子节点等处有巨大的Properties数组,感觉很臃肿.使用这种方法,它似乎没有比用Java/C++编写代码好多少.我还需要能够多次实例化一个数据模板.因此,例如,如果用户更改在多个位置使用的符号或形状,则将在任何地方应用单个编辑.我相信这也需要某种类型的"指针"式行为.我想我可以将一个原子存储到模型中,然后根据需要进行实例化,并且它可以在任何上述粒度模型中工作.
还有其他方法吗?试图用函数式语言做一个类似GUI编辑器的工具只是愚蠢吗?谢谢