acedGetInput

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、一级标题
    • 二级标题
      • 三级标题
        • 四级标题
          • 五级标题
            • 六级标题
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

例如:以下是官方博客例子浅析

先加入相关的头文件和库文件。


提示:以下是本篇文章正文内容,下面案例可供参考

一、一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

示例:是基于的一种工具,该工具是为了解决任务而创建的。

代码如下(示例):
检索AutoCAD用户在调用其中一个用户输入函数(acedGetxxx()、acedEntSel()、acedNEntSelP()、ACEdNEnt塞尔()或acedDragGen())时输入的关键字。

函数acedGetInput()截断用户中超过131个字符的任何字符抯 输入并返回str中最多132个字符(位置132为空字符保留)。

对acedGetInput()的调用是没有意义的,除非它立即跟随对其中一个用户输入函数的调用,否则会失败。即便如此,只有当用户输入函数返回值RTKWORD(或RTSTR,在acedDragGen()的情况下)时,调用才会成功。

在调用acedGetKword()之后,没有必要调用acedGetInput()。

ARX应用程序识别的关键字由之前对acedInitGet()的调用指定。关键词的解释完全取决于应用程序。关键字不应与AutoCAD命令的名称重复。

用户可以缩写关键字,但acedGetInput()总是返回完整的关键字,因为它是在acedInitGet()调用中定义的,具有原始的大写字母,所以应用程序只需要对它定义的每个关键字进行一次字符串比较。

acedGetInput()函数还检索任意输入,如果该输入是由指定RSG_OTHER位的先前acedInitGet()调用启用的。(如果在调用acedDragGen()之前启用了RSG_OTHER,则acedDragGen()通过返回RTSTR而不是RTKWORD来指示它已接收到任意输入。)

如果acedGetInput()成功,则返回RTNORM;否则,返回RTERROR。如果活动命令是使用ACRX_CMD_INTERRUPTIBLE标志注册的,并且文档从对AcApDocManager::sendModelessInterrupt()的调用中接收到无模式中断信号,则返回RTMODELESS。

//添加头文件和库
Retrieves a keyword entered by the AutoCAD user during a call to one of the user-input functions (acedGetxxx(), acedEntSel(), acedNEntSelP(), acedNEntSel(), or acedDragGen()).

Function acedGetInput() truncates any characters beyond 131 characters in the user抯 input and returns at most 132 characters in str (position 132 is reserved for the null character).

A call to acedGetInput() is meaningless and will fail unless it immediately follows a call to one of the user-input functions. Even then, the call will be successful only if the user-input function has returned the value RTKWORD (or RTSTR, in the case of acedDragGen()).

It isn't necessary to call acedGetInput() after a call to acedGetKword().

The keywords recognized by the ARX application are specified by a prior call to acedInitGet(). The interpretation of the keywords is entirely up to the application. Keywords should not duplicate the names of AutoCAD commands.

The user can abbreviate a keyword, but acedGetInput() always returns the full keyword as it was defined in the acedInitGet() call with the original capitalization, so the application needs to do only one string comparison for each keyword it defines.

The acedGetInput() function also retrieves arbitrary input, if that input was enabled by a prior acedInitGet() call that specified the RSG_OTHER bit. (If RSG_OTHER is enabled before an acedDragGen() call, acedDragGen() indicates that it has received arbitrary input by returning RTSTR instead of RTKWORD.)

If acedGetInput() succeeds, it returns RTNORM; otherwise, it returns RTERROR. It returns RTMODELESS, if the active command was registered using the ACRX_CMD_INTERRUPTIBLE flag and the document has received a modeless interrupt signal from a call to AcApDocManager::sendModelessInterrupt().


函数主体
关于acedInitGet方法的使用
描述:

初始化下次调用用户输入函数所使用的选项,例如acedGetXxx()、acedDragGen()、acedEntSel()、acedNEntSelP()或acedNEntSel()。

注意:

由acedInitGet()建立的控制位和关键字仅应用于下一个用户输入函数调用。它们被立即丢弃。应用程序不需要第二次调用acedInitGet()来清除任何特殊条件。

如果acedInitGet()成功,它返回RTNORM;否则,它返回RTERROR。

用户输入选项:

下表总结了可以由val参数指定的控制位。若要一次设置多个条件,请将这些值相加以创建0到255之间的val值。如果val设置为0,则所有控制条件都不适用于下一个用户输入函数调用。

注意:

未来版本的AutoCAD或ARX可能会使用额外的acinitget()控制位,因此避免设置表中没有显示的位。
Bit value
Code
Description

//数据
 下面的列表更详细地描述了每一个控制Bit。

Bit 0 (= 1 if set)
RSG_NONULL--阻止用户通过只输入[Return]或空格来响应请求。

Bit 1 (= 2 if set)
RSG_NOZERO--通过输入0阻止用户响应请求。

Bit 2 (= 4 if set)
RSG_NONEG--通过输入负值阻止用户响应请求。

Bit 3 (= 8 if set)
RSG_NOLIM--使用户可以在当前绘图限制之外输入一个点。即使当前设置了AutoCAD LIMCHECK系统变量,此条件也适用于下一个用户输入函数。

Bit 4(= 16 if set)
目前未使用。

Bit 5(= 32 if set)
RSG_DASH--对于那些允许用户通过选择图形屏幕上的位置来指定点的功能,使AutoCAD显示的橡皮筋线或框显示为虚线而不是实线。(有些显示驱动程序使用独特的颜色而不是虚线。)如果POPUPS系统变量为0,则AutoCAD忽略此位。

Bit 6 (= 64 if set)
RSG_2D--忽略由acedGetDist()返回的三维点的Z坐标,因此应用程序可以确保该函数返回二维距离。

Bit 7 (= 128 if set)
RSG_OTHER--允许任意键盘输入。函数返回RTKWORD(在本例中acedDragGen()返回RTSTR),应用程序通过调用acedGetInput()来检索值。(因为空格可以终止除acedGetString()以外的所有用户输入函数的输入,由acedgetput()重新检索的任意字符串将不包含空格。)该位优先于位0;如果设置了第7位,并且用户输入[Return],则返回空字符串。

Bit 8 (= 256 if set)
RSG_DDISTFIRST--给予直接距离输入优先于任意输入。对于外部应用程序,默认情况下,任意输入优先于直接距离输入。如果您希望强制AutoCAD将用户输入计算为直接距离输入,请设置此位。注意,来自键盘的合法点输入总是优先于直接距离或任意输入。

Bit 9 (= 512 if set)
RSG_TRACKUCS--如果在调用acedGetPoint()acedGetCorner()函数之前设置RSG_TRACKUCS,则当光标穿过实体的平面面边缘时,将建立一个临时UCS。当光标移离人脸时,临时UCS被重置。当光标移动到另一个面时,它会动态地重新建立。获得该点后,动态UCS将重置为当前UCS。对于非平面面(如圆柱体的侧面)不启用此功能。

Bit 10 (= 1024 if set)
RSG_NOORTHOZ--在调用acedGetDist()acedGetAngle()acedGetOrient()acedGetPoint()acedGetCorner()函数时,您可能不希望距离、角度、方向、点或角受Z方向上的邻位、极坐标或otracking的影响。在调用这些函数之前设置RSG_NOORTHOZ将暂时禁用Z方向上的ortho、polar和otracking。当您创建2D实体(如PLINE、ARC或CIRCLE)或使用ARRAY命令(该命令只创建2D数组)时,这非常有用。在只有2d的命令中,允许进入3D点可能会令人困惑和容易出错

当然,某些控制位只适用于某些函数,这取决于用户被请求输入的值的类型。如果acedInitGet()设置了一个控制位,并且应用程序调用了一个用户输入函数,而该位对该函数没有意义,则该位将被忽略。下表显示了哪些控制位应用于哪些用户输入函数。(控制位选项不应用于acedGetString()acedEntSel()acedNEntSelP()acedNEntSel()函数。)   

测试代码

//如果使用当前数据库,一定要保存文件否则会出错,
//当前数据库有自动保存操作,即使不操作,如果不保存,也会出错。
 关键字的规范

可选的kwl参数指定一个关键字列表,这些关键字将由下一个用户输入(acedGetXxx())函数调用或acedDragGen()acedEntSel()acedNEntSelP()acedNEntSel()调用识别。用户输入的关键字值可以通过后续调用acedGetInput()来检索。(如果用户输入函数是acedGetKword(),则关键字值已经可用。)关键字的含义和对每个关键字执行的操作是ARX应用程序的责任。

kwl参数是一个单一字符串,根据以下规则进行解释:

1.每个关键字与下一个关键字之间用一个或多个空格隔开。例如,“宽度、高度、深度”定义了三个关键字。

2.每个关键字只能包含字母、数字和“-”。

3.每个关键字规范都可以指导AutoCAD识别缩写,方法有两种:

  3.1输入组成所需部分(缩写)的关键字的字母为大写字母,关键字的其余部分为小写字母。例如,如果您希望用户能够输入LT作为ltype的缩写,那么可以使用关键字“ltype”。缩写的字母不需要在关键字的开头。例如,用户可以通过输入eXit或x来选择关键字“eXit”。

  3.2用大写字母输入整个关键字,后面紧跟着一个逗号,然后是缩写。例如,输入LTYPE,LT。这种方法在为不使用罗马字母表风格的大写字母和小写字母的语言开发应用程序时非常有用。

无论使用哪种方法,如果用户输入LT(大写或小写字母),这就足以识别关键字。用户可以输入关键字所需部分后面的字符,只要它们不与规范冲突。在本例中,用户还可以输入LTY或LTYP,但L是不够的,而且像LTSCALE或LTYPEX这样的东西将不匹配关键字的拼写。

1.如果kwl完全用大写或小写字母显示关键字,而没有逗号后接缩写,那么如果用户输入了全部关键字,则AutoCAD只识别该关键字。

acedGetInput()函数总是返回出现在kwl参数中的关键字,大小写相同(但不返回可选字符,如果在逗号后面指定了可选字符)。无论用户如何输入关键字,应用程序都只需要进行一次字符串比较就可以识别关键字。

全局关键字

kwl参数可用于本地和全局语言关键字组合。要关联本地关键字和全局关键字,kwl参数必须由一个或多个本地关键字组成,后跟一个下划线,再后跟相关的全局关键字。在这个例子中,Ja与Yes配对,Nein与No配对:

acedInitGet(RSG_NONULL, "Ja Nein _ Yes No"); 

下划线后面列出的关键字被定义为全局的,并且总是返回的关键字。

用户可以通过输入适当的字符来使用本地关键字。在前面的例子中调用之后,J将返回Yes, N将返回No。要访问全局关键字,用户必须使用前导下划线后跟适当的字符。同样,按照前面例子中的调用,_Y将返回Yes, _N将返回No。函数调用中使用的前导下划线不会成为返回的关键字字符串的一部分。

本地和全局关键字之间不需要一对一匹配(也就是说,如果不匹配,函数调用不会失败),但是:

1.如果本地关键字(下划线之前)多于全局关键字(下划线之后),则接受没有相应全局关键字的本地关键字,但将返回一个空字符串("")2.如果全局关键字(下划线之后)比本地关键字(下划线之前)多,则没有相应本地关键字的全局关键字将被接受(只要包含前面的下划线)并返回。

全局机制适用于两种形式的关键字规范,如下所示:

acedInitGet(RSG_NONULL, "Ja NEIN,N _ YES,Y No"); 

这个调用是完全可以接受的,它将返回YES或No。     

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了的函数和方法。

你可能感兴趣的:(c++,c++)