我需要这些信息来创建过滤器。
因此,假设我将网格设置为1,然后将其捕捉为1,然后将原点放置在UCS中。
然后我以中心5, 0
画一个圆。
这是我得到的:
(
(-1 . <Entity name: 1f3dbb9d580>)
(0 . "CIRCLE")
(330 . <Entity name: 1f3dbba51f0>)
(5 . "270")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "0")
(100 . "AcDbCircle")
(10 2495.0 1180.0 0.0)
(40 . 3.16228)
(210 0.0 0.0 1.0)
)
为什么10号我有这些数字?
应该不是(10 5.0 0.0 0.0)
吗?
定义大多数平面实体(例如弧,圆,2D折线等)的几何形状的坐标是相对于称为对象坐标系(OCS)的坐标系定义的。
OCS与世界坐标系(WCS)共享其原点,其Z轴对应于与实体(由DXF组210
表示)的法向矢量(aka挤压矢量),以及其X和Y Arbitary Axis Algorithm定义的轴应用于法向矢量。
[任意轴算法是在标准的AutoLISP trans
功能中实现的,该功能可以方便地将点从一个坐标系转换为另一个坐标系。
在您的特定示例中,法向矢量为trans
,它等于WCS平面的法向矢量,因此对于此特定示例,OCS等于WCS。
但是,通常,要将点从任意OCS转换为WCS或活动用户坐标系(UCS),您需要为(0.0 0.0 1.0)
函数提供OCS法向矢量或实体中的实体名称。问题。
例如,使用OCS法向向量从OCS转换为活动UCS:
trans
或者,使用实体名称从OCS转换为活动UCS:
trans
在示例程序中实现,可能是:
(trans (cdr (assoc 10 <dxf-data>)) (cdr (assoc 210 <dxf-data>)) 1)
在此列表中,坐标在WCS中。因此,如果您使用命令绘制圆并且活动的UCS与WCS是不同的,则一切正常,结果与预期相同。在坐标系之间转换坐标您可以使用
(trans (cdr (assoc 10 <dxf-data>)) (cdr (assoc -1 <dxf-data>)) 1)