2016-08-19 43 views
0

我从CAD数据中获取图形,并在MATLAB中打开它。我想要做的事情是旋转90度的数字,并如图所示更改轴。更改预定义轴

enter image description here

我保存在STL格式的图形,并在下面的链接我打开它作为一个matlab图使用的代码。

https://de.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-m

问题:

  1. 我没有任何功能或M档再生的身影。我怎样才能旋转图中的轴?

  2. 如何获得图中的所有点位置?

在此先感谢。

+0

这完全取决于格式。你需要给我们比你害怕的更多。 – patrik

+0

我有一个追踪.stl格式的轨迹,我使用https://de.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-m – user70299

+1

中的代码将其转换为matlab文件好吧,试着把它放在题。此外,我不想跟随一个MATLAB文件交换的链接,只是为了知道你试图做什么,所以没有人想要。这就是为什么你有三张选票关闭。 – patrik

回答

0

如果您没有办法重新生成图形数据,但仍然有一个MATLAB数字和其中的数据,您可以检索它们。

我先创建一个样本图形对象(patch,通过你链接的函数返回):

R = 3 ; nFaces = 5 ; 
tt = linspace(0,2*pi,nFaces+1).' ; tt(end) = [] ; 

[x,y] = pol2cart(tt,zeros(nFaces,1)+R) ; 
hp = patch(x,y,'b') ; 
axis equal 

pentagon


现在,所提供的数字是活跃的身影(点击如果你想确定的话,在图上给它焦点),你可以查询里面绘制的数据。

首先,我们需要获得当前图形的显示axes所有的图形对象的句柄:

% get handle of all graphic objects in the current axes 
hlist = get(gca,'Children') 

hlist = 
    Patch with properties: 

    FaceColor: [0 0 1] 
    FaceAlpha: 1 
    EdgeColor: [0 0 0] 
    LineStyle: '-' 
     Faces: [1 2 3 4 5] 
    Vertices: [5x2 double] 

在我的情况下,只有一个对象,所以不会产生歧义。如果返回了多个句柄,请在patch对象中进行选择(与每个对象一起玩并找出哪个对象)。

一旦访问你想要的对象是确定的,是很容易地转动:

% only one object in this case but if there was several in the list I 
% would isolate the object I want to manipulate. 
hp = hlist(1) ; 

% to rotate the graphic object "hp", around axis Z ([0 0 1]), by 90 degrees. 
rotate(hp ,[0 0 1] , 90) 

pentagon rotated

或检索点的坐标:

% to get the points coordinates: 
pc = get(hp,'Vertices') 

pc = 
    0.286474508437579 2.713525491562421     0 
    -2.566695040447882 0.640576474687264     0 
    -1.476881248439841 -2.713525491562421     0 
    2.049830265314998 -2.713525491562421     0 
    3.139644057323040 0.640576474687263     0 

只是要小心,我检索到的坐标,5点(线)用X,YZ坐标(柱ns)的坐标的旋转。如果您需要原始坐标,则必须在将旋转应用到对象之前查询它们。


更多读数: