CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2020 开发者帮助

2024-5-18 18:26| 发布者: admin| 查看: 71| 评论: 0|原作者: admin|来自: AutoCAD

AutoCAD 点定义为以下阵列类型:

typedef ads_real ads_point[3]; 

一个点始终包含三个值。如果点是二维的,则可以忽略数组的第三个元素;将其初始化为 0 是最安全的。

ObjectARX 定义以下点值:

#define X 0 
#define Y 1 
#define Z 2 

与简单的数据类型(或AutoLISP中的点列表)不同,不能用单个语句来分配点。若要分配指针,必须复制数组的各个元素,如以下示例所示:

newpt[X] = oldpt[X]; 
newpt[Y] = oldpt[Y]; 
newpt[Z] = oldpt[Z]; 

您还可以使用宏复制点值。结果是宏的第二个参数。ads_point_set()

以下示例代码将点设置为等于点:tofrom

ads_point to, from; 
 
from[X] = from[Y] = 5.0; from[Z] = 0.0; 
ads_point_set(from, to); 
注意:与宏一样,此宏的定义也不同,具体取决于是否定义了符号(对于标准 C)。标准 C 版本要求程序包含 .ads_name_set()__STDC__ads_point_set()string.h
#include <string.h> 

由于 C 语言的参数传递约定,点是通过引用传递的,而没有地址(间接)运算符。(C 总是通过引用传递数组参数,并带有指向数组第一个元素的指针。&

库函数将一个点作为参数,并返回一个点作为结果。声明如下:acedOsnap()

int acedOsnap(pt, mode, result) 
ads_point pt; 
char *mode; 
ads_point result; 

该函数的行为类似于 AutoLISP 函数。它采用一个点 () 和一些对象捕捉模式(在字符串模式中指定),并返回最近的点 (in )。返回的值是指示成功 () 或失败的状态代码。acedOsnap()osnapptresultintacedOsnap()RTNORM

以下代码片段调用:acedOsnap()

int findendpoint(ads_point oldpt, ads_point newpt) 
{ 
    ads_point ptres; 
    int foundpt; 
    foundpt = acedOsnap(oldpt, "end", ptres); 
    if (foundpt == RTNORM) { 
        ads_point_set(ptres, newpt); 
    } 
    return foundpt; 
} 

因为点是数组,并且通过引用(即作为指向每个数组的第一个元素的指针)而不是按值自动传递。该函数通过设置参数的值来返回其结果(而不是其状态)。oldptptresacedOsnap()acedOsnap()newpt

ObjectARX 定义了一个指针,指向需要指针而不是数组类型的点。

typedef ads_real *ads_pointp; 

父主题:

  1. 一般类型和定义

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1   苏公网安备32011402011833)

GMT+8, 2024-12-15 12:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部