明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2916|回复: 4

高手请看:用相对坐标还是坐标平移旋转?

[复制链接]
发表于 2004-9-6 12:10:00 | 显示全部楼层 |阅读模式
小弟是一名业余的vba爱好者,在学习过程中遇到点问题,自己想了好久也没有解决


只好向各位高手请教


小弟要绘制回旋曲线,由曲线公式可以绘制出起始位置切线方向为水平时的曲线图(曲线上各点的坐标均为相对与曲线起点的坐标),但当曲线起点切线方向不水平时(即起点切线方向平移旋转之后),不知道如何解决,


思路一:


利用CAD里的新建ucs,利用3点建立,可以指定新的坐标系,但由vba里边给定坐标绘制均为世界坐标系,是否有办法给出相对于曲线起点的相对坐标进行绘图?


思路二:


将曲线上各点的相对坐标由经坐标平移旋转后得到世界UCS,由此可以绘制出曲线,但小弟查了好久也没有查找到坐标平移旋转公式,只好向各位大侠求助,还请各位高手给个公式:)


以上思路是否可行,请不吝赐教!还有更好的解决办法没有?
发表于 2004-9-6 13:37:00 | 显示全部楼层

RetVal = object.TranslateCoordinates(OriginalPoint, From, To, Disp[, OCSNormal])

Object

Utility
使用该方法的对象。

OriginalPoint

Variant[变体] (三元素双精度数组); 仅用于输入
The 3D WCS coordinates specifying the original coordinates to be translated. This parameter can be treated as a point or a displacement vector depending on the value of Disp.

From

AcCoordinateSystem 常数; 仅用于输入
The coordinate system from which the point originates.

acWorld

acUCS

acOCS

acDisplayDCS

acPaperSpaceDCS

To

AcCoordinateSystem 常数; 仅用于输入
The coordinate system to which the point will be converted.

acWorld

acUCS

acOCS

acDisplayDCS

acPaperSpaceDCS

Disp

Integer[整数]; 仅用于输入
A displacement vector flag.

TRUE: OriginalPoint is treated as a displacement vector.

FALSE: OriginalPoint is treated as a point.

OCSNormal

Variant[变体] (三元素双精度数组); 仅用于输入;可选项
The normal for the OCS.

RetVal

Variant[变体] (三元素双精度数组)
The translated 3D coordinate.

说明

You cannot directly translate a coordinate from one OCS to another OCS. To do this, first translate the coordinate from one OCS to an intermediary coordinate system such as the WCS. Then translate that coordinate into the second OCS.

To translate a point on a Polyline or LightWeightPolyline object from OCS to WCS:

1. Get the X and Y coordinates of the OCS point from the Coordinate or Coordinates property.

2. Get the Z coordinate of the OCS point from the Elevation property.

3. Get the Normal for the polyline from the Normal property.

4. Call TranslateCoordinates using the X, Y, Z coordinates and the Normal.

 楼主| 发表于 2004-9-7 09:09:00 | 显示全部楼层
lzh741206斑竹: OSC坐标,必须知道法线,在帮助上的 Dim plineNormal(0 To 2) As Double
plineNormal(0) = 1#
plineNormal(1) = 1#
plineNormal(2) = 0#
plineObj.Normal = plineNormal 1。似乎这个法线只有一个点,是否默认是(1,1,0)于(0,0,0)的连线? 2。其余的Pline上各点的坐标均相对于(0,0,0),plineNormal垂直整个Z平面,Pline的方向如何确定?听说是什么右手定则,不知确切? 3。当我只知道曲线起点的切线方向以及切点坐标时,我如何得到法线方程或法线上任意2各点的坐标(因为需要指定法线)? 4。而法线若如上述1条所述总是有一点为(0,0,0)时,这样在计算法线时不是很麻烦,因为法线可能离我的曲线非常远,如何解决?
发表于 2004-9-7 10:38:00 | 显示全部楼层
法线只是一个向量,实际上你可以不考虑UCS,直接给定起始点和终点的向量为0,即自由向量
 楼主| 发表于 2004-9-7 13:01:00 | 显示全部楼层
斑竹能够说得清楚些吗?小弟还是不明就里


请指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 02:53 , Processed in 0.165945 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表